欢迎光临散文网 会员登陆 & 注册

12.2内存控制器与SDRAM_不同位宽设备的连接

2020-08-19 18:52 作者:韦东山  | 我要投稿


视频教程👇 

韦东山升级版全系列嵌入式免费视频_快速入门篇


参考2440芯片手册,可以看到内存接口与8-bit ROM连接时,2440的A0与外部芯片的A0相连。

Chapter12 lesson2 001.png


当与两个8-bit ROM拼接成的一个16-bit ROM连接时,2440的A1与外部芯片的A0相连。

Chapter12 lesson2 002.png


当与四个8-bit ROM拼接成的一个32-bit ROM连接时,2440的A2与外部芯片的A0相连。

Chapter12 lesson2 003.png


当与一个16-bit ROM连接时,2440的A1与外部芯片的A0相连。

Chapter12 lesson2 004.png


可以看出外接芯片的位宽有变化时,地址线的接法也会有变化。那这个变化有什么规律呢?

假设CUP执行: 

如图有8bitROM、16bitROM、32bitROM。

Chapter12 lesson2 005.jpg

8个bit组成一个字节,字节是计算机的最小的存储单位,因此我们读取数据肯定都是8bit的倍数。 

  • 对于8bitROM ,8bit是一次读写的最小单位,即0地址是第一个8bit,1地址是第二个8bit;CPU发出的命令是读取地址为3上的数据,即A0和A1都为1,8bitROM的A0和A1收到的也都是1,于是找到了ROM上地址为3的8bit数据,包含了我们需要的数据。

  • 对于16bitROM ,16bit是一次读写的最小单位,即0地址是第一个16bit,里面有两个8bit数据;CPU发出的命令是读取地址为3上的数据,即A0和A1都为1,16bitROM的A0和A1分别收到的是1和0,于是找到了ROM上地址为1的16bit数据,包含了我们需要的数据,最后内存控制器再帮我们挑选出所需的8bit数据。

  • 对于32bitROM ,32bit是一次读写的最小单位,即0地址是第一个32bit,里面有四个8bit数据;CPU发出的命令是读取地址为3上的数据,即A0和A1都为0,32bitROM的A0和A1收到的都是0,于是找到了ROM上地址为0的32bit数据,包含了我们需要的数据,最后内存控制器再帮我们挑选出所需的8bit数据。

接到芯片上的引脚用来确定读取芯片上的哪一个单元的数据,把这个单元的数据返回给内存控制器,内存控制器会根据没有连接芯片的引脚,来确定返回哪一个单元的数据给CPU,

再举一个例子: 假如传递一个32位的数据时 

执行过程如下:

  • 8bitROM: 当CPU发出地址(000100),内存控制器会把000100,000101,000110,000111处的地址转发给ROM,ROM会把得到的地址000100,000101,000110,000111,上的数据返回给内存控制器,内存控制器会把得到的4个8bit的数据组装成一个32位的数据返回给CPU。

  • 16bitROM: 当CPU发出地址(000100),内存控制器会把00010,00011处的地址转发给ROM,ROM会把得到的地址00010,00011,上的数据返回给内存控制器,内存控制器会把得到的2个16bit的数据组装成一个32位的数据返回给CPU。

  • 32bitROM: 当CPU发出地址(000100),内存控制器会把0001处的地址发送给ROM,ROM会把得到的地址0001上的数据返回给内存控制器,内存控制器会把得到的1个32bit数据返回给CPU。

怎样确定芯片的访问地址: 

  1. 根据片选信号确定基地址,

  2. 根据芯片所接地址线确定范围

实例: Nor Flash 使用的是片选0(nGCS0),基地址为0,用到A20,A19......A1,A0共21条地址线,所以地址范围为0x00000000 ~ 0x1FFFFF也就是2M的空间大小。 网卡(Net)使用的是片选4(nGCS4),基地址为0x20000000,用到A2,A0共2根地址线,所以地址范围为0x20000000 ~ 0x20000005。 SDRAM使用的是片选6(nGCS6),基地址为0x30000000。 

视频教程👇

韦东山升级版全系列嵌入式免费视频_快速入门篇


12.2内存控制器与SDRAM_不同位宽设备的连接的评论 (共 条)

分享到微博请遵守国家法律