数据总线串联,累加
地址总线并联
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 低电平写, 高电平读 数据