- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S3C2440與SDRAM连接浅析
S3C2440与SDRAM连接浅析2011年12月19日 ? 嵌入式 ? 评论数 1 ? 被围观 13,650+
我们知道,S3C2440对外引出了27根地址线 ADDR0~ADDR26,如下图左侧所示,是不是只有27根? 27根地址线所能寻址的最大范围为2^27=128MB。
仅仅128MB显然是不够的,所以又有了BANK,什么是BANK,按我个人的理解,就是分块或者是分页,当然这种说法可能不是太严谨,你只要能明白大概意思就可以了。
显然,对应上面我们应该也可以猜到,每个BANK的大小为128MB。有多少个BANK呢?8个,对应的CPU又引出了8根片选信号nGCS0~nGCS7。当访问某个BANKx的时候,相应的nGCSx的引脚设为低电平,选中外设,如下图所示:
128MB * 8 = 1 GB,于是有了这1GB的连接外设的地址空间。但是S3C2440是一个32位的CPU,理论上可以使用的地址范围可以达到4GB,剩余的3G的空间除了部分用于CPU内部寄存器地址外,其余均未使用。
市面上很少有32位宽度的单片SDRAM,一般选择2片16位SDRAM 扩展得到32位SDRAM。我的开发板TQ2440就是采用了两片32Mbyte的H57V2562GTR-60C(4Banks * 4MB * 16)并联组成。
先来了解下SDRAM的寻址原理:
SDRAM 内部是一个存储阵列。可以把它想象成一个表格。和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。这个表格我们称之为逻辑BANK(Logical Bank,简称L-Bank)。目前的SDRAM 基本都是4 个L-Bank。寻址的流程就是先选中L-Bank,再指定行地址,最后指定列地址。这就是SDRAM 的寻址原理。可见对内存的访问,一次只能是一个L-Bank工作。存储阵列示意图如下:
下面的相关讲解以我的H57V2562GTR-60C为例。查询其datasheet,截图如下:
RA0~RA12,共13根行地址线。
CA0~CA8,共9根列地址线。
BA0,BA1,2根L-Bank选择线。
从上表中我们能够看出,SDRAM的地址引脚是复用的,行、列地址共用A0~A12这13根地址线。在每次操作存储单元时,操作过程是将读写的地址分两次输入到芯片中,每一次都由同一组地址线输入。两次送到芯片上去的地址分别称为行地址和列地址。它们被锁存到芯片内部的行地址锁存器和列地址锁存器。到这里有些同学可能会有疑问,CPU怎么知道该地址是行地址还是列地址呢?我们先来看一张图,来自于TQ2440核心板原理图:
内存芯片型号上稍有差别,我们不去理会。
看图左上角,A0~A12与CPU的ADDR2~ADDR14相接,做为地址线。BA0、BA1与ADDR24、ADDR25连接,做为L-Bank的选择线。注意nSCS,通过连线LnSCS0我查到了与之连接的是CPU的nGCS6引脚,证明该SDRAM芯片是接在BANK6上的。
好了,回到我们刚才那个问题。图中的nSRAS、nSCAS便是用来标记一个地址是行地址还是列地址的。当nSRAS信号有效时,LADDR2~LADDR14上发出的是行地址信号,它对应32位地址空间的bit[23:11];当nSCAS信号有效时,LADDR2~LADDR10上发出的是列地址信号,他对应32位地址空间的bit[10:2]。
读到此时,又可引申出两个问题:
1.为什么与A0连接的是LADDR2而不是LADDR0?
答:首先我们需要知道,在CPU的寻址空间中,是按8bits即1字节为单位的。并且我们的S3C2440以32位的宽度外接SDRAM,故最小操作单位为32bits即4字节。比如当A0=1时,对应的LADDR[2:0]=100。不管地址是多少,LADDR[1:0]恒为0,所以A0接LADDR2。
同理,如果我们只有1片SDRAM,所以是16位的宽度,那么最小操作单位为2字节,对应的A0应该接LADDR1。
所以说,A0接哪根地址线是根据SDRAM的数据位宽度来定的。
2.根据什么原理判定与BA0、BA1连接的是LADDR24、LADDR25?
答:在搞清楚问题1的情况下,再来分析问题2。与BA0、BA1相连的两根地址线是寻址地址中的最高两位,故可以得出,连接LADDR24和LADDR25后,CPU总寻址2^26=64Mbyte,我的SDRAM是64Mbyte,刚刚好。
所以说,BA0、BA1接哪根地址线是根据SDRAM的容量大小来定的。
还要补充一点,首先我们将两片SDRAM看做一个整体,那么64Mbyte的SDRAM每个L-Bank大小应该为16Mbyte,怎样推算出来?每个L-Bank上有13根行地址线,9根列地址线,可寻址2^22=4M
文档评论(0)