在研究2440开发板的时候,通过对2440芯片的和各种存储芯片的理解,略有感悟。本贴主要是关于s3c2440硬件平台设计,从事嵌入式软件的朋友可以当做参考,同时欢迎各路硬件牛人多提建议。S3C2440A是三星推出的16/32bit的RISC MPU(RISC微处理器。RISC:educed instruction set computer,精简指令集计算机,是一种执行较少类型计算机指令的微处理器);2440具有1G byte的寻址空间(8banks,128M/bank)。2440芯片所有引脚中分配了27根地址线(A0~A26),换言之,也就128的地址空间。同时,在2440芯片中提供了nGCS0~nGCS7 8路片选信号线,分别对应芯片中的8个bank,8*128M=1G(具体情况是否如此有待考证,但在本贴开始的参考帖子中是这样说明的)。
本人手头有一块mini友善之臂的学习板,开始对2440与SDRAM(HY57V561620)的接线中有点很是迷糊(也是开始研究2440存储空间的初衷),2440的地址线A2连接SDRAM的A0,想必对硬件稍有了解的人都会对此多少有些疑惑,为什么地址线没有按位对齐。在这里我们分析一下HY57V561620芯片,4banks*4M*16bit,也就是说按字(16bit)存取内部数据,但是在友善之臂的硬件平台中是通过两片HY57V561620芯片扩展成了32位的数据宽度,同时,2440也配置成32位访问模式 ,这样可以加快访问速度。由于在市场上的存储芯片中有数据宽度为8位、16位和32位的,在2440中,就增加了nWBE[3:0]这四个引脚,来识别这些芯片的的数据宽度,这样便可以不至于局限于某一类存储芯片。
(下面的分析与参考贴中有所出入,个人觉得参考贴中的分析有不妥)
回到上文提出的地址按位对齐的问题,由于这个时候数据宽度为32位,在存储芯片中的存储单位都通过字节(8bit)来实现,也就是说寻址的时候需要按双字来对齐地址,所以A0、A1就不需要与 HY57V561620的地址总线对齐 。在这里一个新的问题出现了, HY57V561620的存储空间为64M,但是地址线宽度为13位(A0~A12),在友善之臂学习板中2440中的A2~A14分别接 HY57V561620种的A0~A12,13位地址线不够分配64M的地址空间,但是在 HY57V561620是通过分别访问行地址和列地址来存取内部数据的,行地址和列地址公用这13位的地址线(其中行地址共用A0~A12这13位地址线,列地址共用A0~A8这9位地址线),2^13*2^9*16bit=4M*16bit,但是这只是 HY57V561620中每个bank的大小, HY57V561620中含有4个bank,同时它还提供了BA0~BA1来选择寻址时访问的bank号,在友善之臂学习板中2440的A24~A25分别 HY57V561620中的BA0~BA1,在每次访问 HY57V561620时2440先根据A24~A25判断 HY57V561620中将要访问的bank号,再行、列地址访问 HY57V561620中的16bit数据(这里是分析单片 HY57V561620,没有将两片放在一起分析),如此便可完成单片32M地址的寻址(为什么不是64M因为每次从单片中存取的数据为16bit)。
mini2440原理图
上一篇:关于存储器与ARM连线方式及地址的确定
下一篇:关于S3C2440存储器地址分配和启动流程分析
推荐阅读最新更新时间:2024-03-16 16:04