内存芯片接发

数据总线串联,累加
地址总线并联

8位 ROm , cpu A0 接芯片 A0,
16位 cpu A1 接芯片 A0 , 使用2个8位ROM 拼接成一个16位ROM的时候
32位 cpu A2 接芯片rom的 A0
外界芯片位宽变化,
为什么这样接, 芯片内部保存结构:
8位ROM, 数据8位最小单位
16为ROM

 1.  8 16 32 位 内存芯片 和cpu接法, 案例1 和 cpu 内存控制器  rom 地址数据线交互流程

①。8位ROM:  对于8 bit ROM , 数据是8Bit 最小单位保存的

看芯片手册201页:

8位 ROm , cpu A0 接芯片 A0, 此时数据总线有8条,一次只能读取8bit数据

②。使用2个8位芯片,变成一个16位芯片的时候, CPU A1 节芯片 A0地址角公用的、 数据角 累加

16位 cpu A1 接芯片 A0 , 使用2个8位ROM 拼接成一个16位ROM的时候

此时数据总线有16条, 一个可以读取2个字节

下图,2个ROM , 数据线是串联 , 地址线是并联 

③。使用4个芯片,编程一个32位的大芯片

32位 cpu A2 接芯片rom的 A0 , 一次可以读取4个字节数据

 外接芯片位宽有变化, 地址线接法也有变化

cpu 和外部内存控制器解法,  cpu只管发地址,发数据,收数据,其他的数据组装都是内存控制器去做!

  cpu  内存控制器  rom 通信流程

mov R0,#3 
LDRB R1,[R0]    读地址3的1个字节
1. cpu 和 内存控制器连接, 32 根地址线 , cpu 发出地址   0000,0011    32位到 内存控制器,  
内存控制器根据地址范围, 片选SDRAM, 发送 0000,0001 到ROM, r如果16位ROM
ROM收到 0000,0001, 从芯片中取出第一个16bit 数据, 16位的ROM, 地址0有16bit数据,16根数据线,
即使读取8个字节,也是传输16个bit 一次

, 返回给内存控制器, 内存控制要从16bit里面取出  地址3的数据 , 
   内存控制器根据A0=1  从16bit 中调出 1 返回给cpu  【一次流程】 

 cpu  外接8位 ROM 16位 ROM 32 位ROM  从地址3读取字节流程     通信交互流程

 执行过程: 

 2.  案例2分析, cpu 内存控制器  rom 地址数据线交互流程

 mov R0,#4 
 LDR R1,[R0]   从4地址读取4个字节, 4,5,6,7 这4个字节,   程序案例分析: 

比如 c语言的 int a= 100; 

总结: cpu 发出地址通过地址线到内存控制器, 32位,  
内存控制器 发出地址到  ROM,   ROM返回数据到内存控制器,通过数据线, 
内存控制器组装,通过数据线返回到 CPU上图

上图总结: 如果是8位ROM, cpu需要发送4次地址, 内存控制负责组装4次得到的数据,然后组装为int类型给cpu 

如果是32位rom, cpu 发送 100即可,返回4字节数据给内存控制器,内存控制器给cpu一次搞定

3. 如何确定芯片访问实际地址, nor,net,sdram地址,数据确定

1. 确定基地址
2. 根据原理图确定 接了哪几根线 确定地址范围

数据手册【195页】

nor: nGCS0 片选0 SROM地址范围 0x0000_0000 0x0800_0000

网卡: 片选4

sram: 片选6

NorFlash 使用  nGCS0     网卡 nGCS4    SDRAM  使用  nGCS6

Nor基地址 0 , 最大支持128M 地址空间

下图 cpu LADDR1接在nor 的 A0上面 

 -cpu 发送  LADDR0- LADDR20  对应芯片上的 A0-A20  , A0 给内存控制器使用的, 数据为是低8位置还是高8位

就是 2^21 次方 地址范围  ,21调数据线, 实际使用,不是32的32条数据线都用来传递地址,

范围 0- 0x1fffff    ff 就是 2^8 =  256  , 就是 2 M    2^20 次方是 M    地址范围:0  ~ 0x1fffffff

网卡 nGCS4 , 基地址  0x2000,000 

16位数据线

只接了ADDRES2 ,其实address1 address0也接了

 网卡只接了address2 ,  address0 用于分辨读取的数据是低8位还是高8位

基地址  0x2000,000         0x2000,000+ 0b1_1       就是     0x2000,000  --  0x2000,005  访问DM900

SDRAM  使用  nGCS6, 基地址,0x3000,0000  

 2^17 = 128K ,   SDRAM是 64M,  为什么不是 128K, 应为这里发出的列地址、行地址来访问SDRAM

如何确定数据CPU从 DDR中读取 还是写入:

看 LnOE 低电平 读数据 LnWR 低电平 写数据

如果只有 LnWE 低电平写, 高电平读 数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值