SDRAM的作业原理、操控时序、及相关操控器的装备办法一向是嵌入式体系学习、开发进程中的一个难点。把握SDRAM的常识对硬件规划、编写体系发动代码、进步体系存取功率、电源办理都有必定的意义。本文想经过:
1.SDRAM的作业原理。
2.HY57V561620 SDRAM介绍。
3.S3C2410和HY57V561620的接线办法。
4.S3C2410 SDRAM操控器的装备办法。
5.SDRAM操控时序剖析
这5个方面来协助初学者了解SDRAM。文章分为2篇,第1篇解说前3个常识点,第2篇解说后2个。
一、SDRAM的作业原理
SDRAM之所以成为DRARM便是由于它要不断进行改写(Refresh)才干保存住数据,因而它是DRAM最重要的操作。
那么要隔多长时刻重复一次改写呢?现在公认的标准是,存储体中电容的数据有用保存期上限是64ms(毫秒,1/1000秒),也便是说每一行改写的循环周期是64ms。这样改写速度便是:行数量/64ms。咱们在看内存标准时,常常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这儿的4096与8192就代表这个芯片中每个Bank的行数。改写指令一次对一行有用,发送距离也是随总行数而改变,4096行时为15.625μs(微秒,1/1000毫秒),8192行时就为7.8125μs。HY57V561620为8192 refresh cycles / 64ms。
SDRAM是多Bank结构,例如在一个具有两个Bank的SDRAM的模组中,其间一个Bank在进行预充电期间,另一个Bank却立刻能够被读取,这样当进行一次读取后,又立刻去读取现已预充电Bank的数据时,就无需等候而是能够直接读取了,这也就大大进步了存储器的拜访速度。
为了完结这个功用,SDRAM需求增加对多个Bank的办理,完结操控其间的Bank进行预充电。在一个具有2个以上Bank的SDRAM中,一般会多一根叫做BAn的引脚,用来完结在多个Bank之间的挑选。
SDRAM具有多种作业形式,内部操作是一个杂乱的状况机。SDRAM器材的引脚分为以下几类。
(1)操控信号:包含片选、时钟、时钟使能、队伍地址挑选、读写有用及数据有用。
(2)地址信号:时分复用引脚,依据队伍地址挑选引脚,操控输入的地址为行地址或列地址。。
(3)数据信号:双向引脚,受数据有用操控。
SDRAM的一切操作都同步于时钟。依据时钟上升沿操控管脚和地址输入的状况,能够发生多种输入指令。
形式存放器设置指令。
激活指令。
预充指令。
读指令。
写指令。
带预充的读指令。
带预充的写指令。
主动改写指令。
自我改写指令。
突发停指令。
空操作指令。
依据输入指令,SDRAM状况在内部状况间搬运。内部状况包含形式存放器设置状况、激活状况、预充状况、写状况、读状况、预充读状况、预充写状况、主动改写状况及自我改写状况。
SDRAM支撑的操作指令有初始化装备、预充电、行激活、读操作、写操作、主动改写、自改写等。一切的操作指令经过操控线CS#、RAS#、CAS#、WE#和地址线、体选地址BA输入。
1、行激活
行激活指令挑选处于闲暇状况存储体的恣意一个行,使之进入预备读/写状况。从体激活到答应输入读/写指令的距离时钟节拍数取决于内部特征延时和时钟频率。HY57V561620内部有4个别,为了削减器材门数,4个别之间的部分电路是共用的,因而它们不能一起被激活,而且从一个别的激活过渡到另一个别的激活也有必要确保有必定的时刻距离。
2、预充电
预充电指令用于对已激活的行进行预充电即结束活动状况。预充电指令能够效果于单个别,也能够一起效果于一切体(经过一切体预充电指令)。关于猝发写操作有必要确保在写入预充电指令前写操作现已完结,并运用DQM制止持续写入数据。预充电结束后回到闲暇状况,也能够再次被激活,此刻也能够输入进入低功耗、主动改写、自改写和形式设置等操作指令。
预充电中重写的操作与改写操作相同,只不过预充电不是定时的,而仅仅在读操作今后履行的。由于读取操作会损坏内存中的电荷。因而,内存不但要每64ms改写一次,而且每次读操作之后还要改写一次。
3、主动预充电
假如在猝发读或猝发写指令中,A10/AP方位为“1”,在读写操作完结后主动附加一个预充电动作。操作行结束活动状况,但在内部状况机回到闲暇态之前不能给器材发送新的操作指令。
4、猝发读
猝发读指令答应某个别中的一行被激活后,接连读出若干个数据。第一个数据在经过指定的CAS延时节拍后出现在数据线上,今后每个时钟节拍都会读出一个新的数据。猝发读操作能够被同体或不同体的新的猝发读/写指令或同一体的预充电指令及猝发间断指令间断。
5、猝发写
猝发写指令与猝发读指令相似,答应某个别中的一行被激活后,接连写入若干个数据。第一个写数据与猝发写指令一起在数据线上给出,今后每个时钟节拍给出一个新的数据,输入缓冲在猝发数据量满足要求后间断承受数据。猝发写操作能够被猝发读/写指令或DQM数据输入屏蔽指令和预充电指令或猝发间断指令间断。
6、主动改写
由于动态存储器存储单元存在漏电现象,为了坚持每个存储单元数据的正确性,HY57V561620有必要确保在64ms内对一切的存储单元改写一遍。一个主动改写周期只能改写存储单元的一个行,每次改写操作后内部改写地址计数器主动加“1”。只要在一切体都闲暇(由于4个别的对应行一起改写)而且未处于低功耗形式时才干发动主动改写操作,改写操作履行期间只能输入空操作,改写操作履行结束后一切体都进入闲暇状况。该器材能够每距离7.8μs履行一次主动改写指令,也能够在64ms内的某个时刻段对一切单元会集改写一遍。
7、自改写
自改写是动态存储器的另一种改写办法,一般用于在低功耗形式下坚持SDRAM的数据。在自改写办法下,SDRAM制止一切的内部时钟和输入缓冲(CKE在外)。为了下降功耗,改写地址和改写时刻悉数由器材内部发生。一旦进入自改写办法只要经过CKE变低才干激活,其他的任何输入都将不起效果。给出退出自改写办法指令后有必要坚持必定节拍的空操作输入,以确保器材完结从自改写办法的退出。假如在正常作业期间选用会集式主动改写办法,则在退出自改写形式后有必要进行一遍(关于HY57V561620来说,8192个)会集的主动改写操作。
8、时钟和时钟屏蔽
时钟信号是一切操作的同步信号,上升沿有用。时钟屏蔽信号CKE决议是否把时钟输入施加到内部电路。在读写操作期间,CKE变低后的下一个节拍冻住输出状况和猝发地址,直到CKE变高停止。在一切的体都处于闲暇状况时,CKE变低后的下一个节拍SDRAM进入低功耗形式并一向坚持到CKE变高停止。
9、DQM操作
DQM用于屏蔽输入输出操作,关于输出相当于开门信号,关于输入制止把总线上的数据写入存储单元。对读操作DQM推迟2个时钟周期开端起效果,对写操作则是当拍有用。
HY57V561620指令表如下图所示:
二、HY57V561620 SDRAM介绍
1、HY57V561620的结构
HY57V561620存储容量为4M×4bank×16位(32M字节),作业电压为3.3V,常见封装为54脚TSOP,兼容LVTTL接口,支撑主动改写(Auto-Refresh)和自改写(Self-Refresh),16位数据宽度。
HY57V561620引脚散布如图2-1所示。
HY57V561620引脚信号描绘
更具体的内容可参阅HY57V561620的用户手册。
三、S3C2410和HY57V561620的接线办法
华清远见教育用的S3C2410开发板上运用的SDRAM的类型是HY57561620。标准是:
4Banks*4M*16Bit。选用两片SDRAM组成32位64M的内存空间。
1、承认BA0、BA1的接线
在S3C2410的Table 5-2. SDRAM Bank Address Configuration给出了SDRAM接线的参阅办法。
上表中各段意义及和咱们渠道的对应:
Bank Size: 每个Bank的巨细 (HY57561620是4M*16=64MB)Bus Width: 总线宽度 (两颗HY57561620,32位)
Base Component:个别容量 (256Mb)
Memory Configration:内存装备 ((4M*16*4banks)*2ea )
所以Bank Address对应A[25:24],此处承认了HY57561620的BA0和BA1和S3C2410之间的接线。
2、承认其它接线
上图是S3C2410手册中给出的参阅接线,经过这个图能够承认HY57561620和S3C2410之间除BA0、BA1的一切其它接线。本例中,具体的接线办法如“接线原理图”末节。
3、接线原理图
引脚描绘如下:
nSRAS:SDRAM行地址选通信号
nSCAS:SDRAM列地址选通信号
nGCS6:SDRAM芯片挑选信号(选用Bank6作为sdram空间,也能够挑选Bank7)
nWBE[3:0]:SDRAM数据屏蔽信号
SCLK0[1]:SDRAM时钟信号
SCKE:SDRAM时钟答应信号
DATA[0:31]:32位数据信号
ADDR[2:14]:队伍地址信号
ADDR[25:24]:bank挑选线
四、S3C2410 SDRAM操控器的装备办法
在体系运用SDRAM之前,需求对S3C2410X的存储器操控器进行初始化。其间对与SDRAM(Bank6)相关的存放器进行了特别的设置,以使SDRAM能够正常作业。由于C言语程序运用的数据空间和仓库空间都定位在SDRAM上,因而,假如没有对SDRAM(Bank6)的正确初始化,体系就无法正确发动。下面介绍与SDRAM相关的存放器设置。
1、BWSCON存放器
BWSCON存放器首要用来设置外接存储器的总线宽度和等候状况。在BWSCON中,除了Bank0,其他7个bank都各对应4个相关位的设置,别离为STn,WSn和DWn。这儿只需求对DWn进行设置,例如SDRAM(Bank6)选用32位总线宽度,因而,DW6=10,其他2位选用缺省值。BWSCON存放器在Bank6上的位界说如表4-1所示。
表4-1 BWSCON存放器在Bank6上的位界说
BWSCON |
位 |
描绘 |
初始化状况 |
ST6 |
27 |
这个位决议SRAM在Bank6上是否选用UB/LB |
0 |
WS6 |
26 |
这个位决议Bank6的WAIT状况 |
0 |
DW6 |
25~24 |
这2位决议Bank6的数据总线宽度 |
0 |
2、BANKCONn存放器的设置
S3C2410X有8个BANKCONn存放器,别离对应着Bank0~Bank7。由于Bank6~Bank7能够作为FP/EDO/SDRAM等类型存储器的映射空间,因而与其他bank的相应存放器有所不同,其间MT位界说了存储器的类型。BANKCONn存放器在Bank6和Bank7上的位界说如表4-2所示。
表4-2 BANKCONn存放器在Bank6和Bank7上的位界说
BANKCONn |
位 |
描绘 |
开始状况 |
MT |
16~15 |
这2位决议了Bank6和Bank7的存储器类型 |
11 |
MT的取值又界说该存放器余下几位的效果。当MT=11(即SDRAM型存储器)时,BANKCONn存放器余下的几位界说如表4-3所示。
表4-3 BANKCONn存放器在MT=11时的相关位界说
Trcd是从行使能到列使能的推迟,依据S3C2410X的HCLK频率(100M)及HY57V561620T-H的特性(见下图),此项取01,即3CLKS。SCAN为列地址线数量,此项依据HY57V561620特性取01,即9位(A0~A8)。
3、REFRESH存放器
REFRESH存放器是DRAM/SDRAM的改写操控器。位界说如表4-4所示。
表4-4 REFRESH存放器位界说
4.BANKSIZE存放器
表4-5 BANKSIZE存放器界说
BANKSIZE |
位 |
描绘 |
初始状况 |
BURST_EN |
[7] |
ARM 内核猝发操作使能 |
0 |
保存 |
[6] |
不运用 |
0 |
SCKE_EN |
[5] |
SCKE 使能操控 |
0 |
SCLK_EN |
[4] |
只要在SDRAM拜访周期期间,SCLK才使能,这样 |
0 |
保存 |
[3] |
未用 |
0 |
BK76MAP |
[2:0] |
BANK6/7的存储空间散布 |
010 |
初始化时,BURST_EN能够取0或1,为了进步功率,最好设置为1。SCKE_EN设置为1。SCLK_EN设置为1。BK76MAP设置为2。
5、MRSR存放器
MRSR存放器有2个,别离对应MRSRB6和MRSRB7,对应着Bank6和Bank7。见表4-6。
表4-6 MRSRn存放器界说
此存放器S3C2410只答应CL能够设置,参照HY57V561620T-H手册,取011,即3CLKs。
猝发长度的具体值在程序中没有给出,依据后边触发时序猜测应该是8,HY57V561620T支撑1、2、4、8、page猝发长度。
参照前面的HY57V561620指令表,写Mode存放器用的是Mode register指令。其间的OP CODE参照下图:
留意:当代码在SDRAM中运行时,绝不能够重新装备MRSR存放器。
五、SDRAM的操控时序剖析
下面列出SDRAM的状况机及几种SDARM操控指令的时序。我们把握了今后能够试着剖析其它的指令时序。
1、SDRAM的状况机
SDRAM的完好状况机由多个状况构成,且状况搬运对错随机的(如图5-1所示)。
正是如此很多的状况及其杂乱的转化联系,导致SDRAM的操控较为杂乱。一般FPGA开发人员在规划SDRAM操控器IP时需求具体了解这些状况机的进程。而一般开发人员以了解为主。
图5-1 SDRAM状况机
下面将结合上图及SDRAM的指令来剖析SDRAM的操控时序
2、SDRAM single形式读时序
SDRAM初始化首要是由设置S3C2410 SDRAM操控器的形式存放器(MRSR)完结的。首要设定了SDRAM的burst长度、CAS延时时刻、突发类型等。然后就能够进行读写操作了。
下图是S3C2410以single办法读SDRAM时的时序。
对照HY57V5620的指令表,列出single read 指令完结进程。
CLK |
SCKE |
A10/AP |
nGCSx |
nSRAS |
nSCAS |
nWE |
指令 |
补白 |
1 |
1 |
X |
1 |
1 |
1 |
1 |
空操作(NOP) |
|
2 |
1 |
0 |
0 |
0 |
1 |
0 |
预充电选定bank(PRE) |
Trp=2 |
3 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
4 |
1 |
X |
0 |
0 |
1 |
1 |
Bank激活指令(ACT) |
Trcd=2 |
5 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
6 |
1 |
0 |
0 |
1 |
0 |
1 |
读操作(READ) |
Tcl=3 |
7 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
8 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
9 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
数据有用 |
3、SDRAM burst形式读时序
对照HY57V5620的指令表,列出burst read 指令完结进程。
CLK |
SCKE |
A10/AP |
nGCSx |
nSRAS |
nSCAS |
nWE |
指令 |
补白 |
1 |
1 |
X |
1 |
1 |
1 |
1 |
空操作(NOP) |
|
2 |
1 |
0 |
0 |
0 |
1 |
0 |
预充电选定bank(PRE) |
Trp=2 |
3 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
4 |
1 |
X |
0 |
0 |
1 |
1 |
Bank激活指令(ACT) |
Trcd=2 |
5 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
6 |
1 |
0 |
0 |
1 |
0 |
1 |
读操作(READ) |
Tcl=2 |
7 |
1 |
0 |
0 |
1 |
0 |
1 |
读操作(READ) |
|
8~13 |
1 |
0 |
0 |
1 |
0 |
1 |
读操作(READ) |
数据有用 |
14~15 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
数据有用 |
4、SDRAM Self Refresh时序
SDRAM 的Self Refresh功用在电源电源办理时常常运用,如:在主控器进入sleep状况时,会先让SDRAM作业在Self Refresh状况。下图为S3C2410宣布Self Refresh指令时的时序图。
对照HY57V5620的指令表,列出进入Self Refresh的进程。
CLK |
SCKE |
A10/AP |
nGCSx |
nSRAS |
nSCAS |
nWE |
指令 |
补白 |
1 |
1 |
X |
1 |
1 |
1 |
1 |
空操作(NOP) |
|
2 |
1 |
1 |
0 |
0 |
1 |
0 |
预充电一切bank(PRE) |
Trp=2 |
3 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
4 |
0 |
X |
0 |
0 |
0 |
1 |
Self Refresh指令(REFS) |
结合CKE的真值表 |
5 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
5、S3C2410 BUS Request时SDRAM操控时序
我曾经在做一个项目时涉及到两个主控器同享一个SDRAM的状况。现象是另一个主控器能够经过BUS Request功用获取到总线的操控权。当S3C2410的总线操控权被获取后,SDRAM操控不会再宣布操控时钟信号。但SDRAM并没有由于失掉时钟而丢掉数据。猜测必定是S3C2410在BUS Request时让SDRAM进入自改写状况(就和S3C2410睡觉前要让SDRAM进入自改写状况相同)、POWER DOWN状况、或许SUSPEND状况。下面就依据S3C2410 BUS Request时SDRAM操控时序图去承认一下到底是哪种。
对照HY57V5620的指令表,列出S3C2410 BUS Request时SDRAM时序进程。
CLK |
SCKE |
A10/AP |
nGCSx |
nSRAS |
nSCAS |
nWE |
指令 |
补白 |
1 |
1 |
X |
1 |
1 |
1 |
1 |
空操作(NOP) |
|
2 |
1 |
0 |
0 |
0 |
1 |
0 |
预充电(PRE) |
Trp=2 |
3 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
4 |
1 |
X |
0 |
0 |
1 |
1 |
Bank激活指令(ACT) |
Trcd=2 |
5 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
6 |
1 |
0 |
0 |
1 |
0 |
1 |
读操作(READ) |
Tcl=2 |
7 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
8 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
9 |
1 |
X |
1 |
1 |
1 |
1 |
空操作 |
|
10 |
HZ |
HZ |
HZ |
HZ |
HZ |
HZ |
进入Clock suspend |
Note 1 |
Note1:在第10个时钟周期时,SKE从1变为’HZ’(高阻)。我想此刻SCKE从1变为高阻关于SDRAM来说相当于从1->0吧,看了一遍HY57V5620手册,这个主意没有得到承认。但也只能这么了解了,否则后边都说不通了。我想之所以变为高阻而不是低电平,是由于S3C2410要抛弃自己对总线操控。
结合HY57V5620手册剖析一下此刻SDRAM会进入什么状况。
下图是CKE Enable(CKE) 真值表。
在第10个时钟周期时,SDRAM处于行激活状况。此刻SCKE由1->0, 依据真值表能够得出体系会进入Clock suspend状况
六、总结
本文剖析了SDRAM的作业原理、介绍了HY57V561620及其与S3C2410的接线原理、S3C2410 SDRAM操控器的装备办法、及部分SDRAM的操控时序剖析。有些当地了解的不行深入,欢迎我们纠正。
本文剖析了SDRAM的作业原理、介绍了HY57V561620及其与S3C2410的接线原理、S3C2410 SDRAM操控器的装备办法、及部分SDRAM的操控时序剖析。有些当地了解的不行深入,欢迎我们纠正。