S3C2440 SDRAM原理到驱动解释完整版(3)
- UID
- 1066743
|
S3C2440 SDRAM原理到驱动解释完整版(3)
这个单元格(存储阵列)就叫逻辑
Bank(Logical Bank,下文简称
L-Bank)。
由于技术、成本等原因,不可能只做一个全容量的
L-Bank,而且最重要的是,由于
SDRAM的工作原理限制,单一的
L-Ban k将会造成非常严重的寻址冲突,大幅降低内存效率。所以人们在
SDRAM内部分割成多个
L-Bank,目前基本都是
4个(这也是SDRAM规范中的最高L-Bank数量),由此可见,在进行寻址时就要先确定是哪个
L-Bank,然后在这个选定的
L-Bank中选择相应的行与列进行寻址。因此对内存的访问,一次只能是一个
L-Bank工作。如图2-50:
图2-50内存存储单元
当对内存进行操作时(见下图),先要确定操作L-Bank,因此要对L-Bank进行选择。在内存芯片的外部管脚上多出了两个管脚BA0, BA1,用来片选4个L-Bank。如前所述,
32位的地址长度由于其存储结构特点,分成了行地址和列地址。通过下面的内存结构图可知,内存外接管脚地址线只有13根地址线A0~A12,它最多只能寻址8M内存空间,到底使用什么机制来实现对64M内存空间进行寻址的呢?SDRAM的行地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址(nSRAS行有效操作),再送出列地址(nSCAS列有效操作)。这样,可以大幅度减少地址线的数目,提高器件的性能和制作工艺复杂度。但寻址过程也会因此而变得复杂。实际上,现在的SDRAM一般都以L-Bank为基本寻址对象的。由L-Bank地址线BAn控制L-Bank间的选择,行地址线和列地址线贯穿连接所有的L-Bank,每个L-Bank的数据的宽度和整个存储器的宽度相同,这样,可以加快数据的存储速度。同时,BAn还可以使未被选中的L-Bank工作于低功耗的模式下,从而降低器件的功耗。
图2-51 HY57561620内部结构图
开发板内存控制器管脚接线(以MINI2440开发板为例):
(1)确定BA0、BA1的接线
表2-15 BA0、BA1接线
Bank Size:
外接内存容量大小(HY57561620是4Mbit*16bit*4Bank*2Chips/8=64MB)
Bus Width:
总线宽度 (两片16位HY57561620,并联成32位)
Base Component:单个芯片容量(bit)(256Mb)
Memory Configration:内存配置
((4M*16*4banks)*2Chips )
由硬件手册Bank Address管脚连接配置表可知,使用A[25:24]两根地址线作为Bank片选信号,正好两根接线可以片选每个存储单元的4个BANKS。
(2)确定其它接线
SDRAM内存是焊接在BANK6~BANK7上的,其焊接管脚,如图2-52:
图2-52 S3C2440 16位宽内存芯片
上图是S3C2440提供的两片16位芯片并联连接示意图,An是CPU地址总线,其中A2~A14为内存芯片寻址总线,之所以地址寻址总线从A2开始是因为内存地址都是按字节对齐的,,A24,A25为L-Bank片选信号,Dn为CPU数据总线,其它为对应控制信号线。
表2-16
内存芯片各管脚说明
外接管脚名
| 内接管脚名
| 全称
| 描述
| A2~A14 | A0~A12 | Address
| 地址线
| D0 ~D31 | DQ0~DQ31 | Data Input/Output
| 数据线
| A24,A25 | BA0,BA1 | Bank Address
| L-BANK片选信号
| DQM0~DQM3 | LDQM, UDQM | Data Input/Output Mask
| 高,低字节数据掩码信号
| SCKE | SCKE | Clock
Enable
| 输入时钟有效信号
| SCLK | SCLK | Clock
| 输入时钟
| nSCS0 | nSCS | General Chip Select
| 片选信号(它与nGCS6是同一管脚的两个功能)
| nSRAS | nSRAS | Row Address Strobe
| 行地址选通信号
| nSCAS | nSCAS | Column Address Strobe
| 列地址选通信号
| nWE | newnWE | Write Enable
| 写入有效信号
| 我们通过S3C2440 16位宽内存芯片接线图可以看出,两片内存芯片只有两个地方不一样,LDQM, UDQM和数据总线DQn接线方式不一样。
由于存储芯片位宽为16位,一次可以进行两个字节的读取。但是,通常操作系统里最小寻址单位是1字节,因此内存控制器必须要保证可以访问内存里每一个字节。UDQM
,LDQM分别代表16位数据的高,低字节读取信号,当读取数据时,LDQM /UDQM分别用来控制16位数据中高低字节能否被读取,当LDQM /UDQM为低电平时,对应的高/低字节就可以被读取,如果LDQM /UDQM为高电平时,对应的高/低字节就不能被读取。当向内存里写入数据时,LDQM /UDQM控制数据能否被写入,当LDQM /UDQM为低电平时,对应的高/低字节就可以被写入,如果LDQM /UDQM为高电平时,对应的高/低字节就不能被写入。通过对LDQM /UDQM信号的控制可以控制对两个存储芯片存储数据,由于两个存储单元的地址线是通用的,他们都能接收到CPU发出的地址信号,但是,发给两个存储单元的LDQM /UDQM信号是不同的,以此来区分一个字的高低字节。
S3C2440A为32位CPU,也就是说其数据总线和地址总线宽度都是32位(可以理解为32根线一端连接CPU内部,另外一端连接向内存控制器),那么内存数据的输入/输出端也要保证是32位总线,MINI2440上采用两片16位宽总线内存芯片并联构成32位总线。其中一个芯片连接到CPU数据总线的低16位,另外一个芯片连接到数据总线上的高16位,并联成32位总线,因此两个芯片的输入/输出总线连接到CPU总线上的不同管脚上。 |
|
|
|
|
|