SDRAM控制器的设计与验证(野火学习笔记)

打印 上一主题 下一主题

主题 625|帖子 625|积分 1885

        SDRAM发展至今已历经五代,以其单元存储量大、高数据带宽、读写速率快、价格相对自制等长处吸引了大批客户,占领市场较大份额。同时,作为内存条中不可缺少的有一部分,SDRAM在盘算机领域也占据一席之地。
1 理论介绍

1.1 SDRAM基本概念

        SDRAM英文全称“Synchronous Dynamic Random Access Memory”,译为“同步动态随机存取内存”或“同步动态随机存储器”,是动态随机存储器(Dynamic Random Access Memory,简称DRAM)眷属的一份子。同步、动态、随机是其性能特点的外在说明,也是其区别其他存储器的特色标签。这三个概念性的标签,我们要好好理解掌握。
        同步(Synchronous):与通常的异步DRAM差别, SDRAM存在一个同步接口,其工作时钟的时钟频率与对应控制器(CPU/FPGA)的时钟频率相同,并且SDRAM内部的下令发送与数据传输均以此时钟为基准,实现指令或数据的同步操纵;
        动态(Dynamic): SDRAM需要不断的革新来包管存储阵列内数据不丢失;
        随机(Random):数据在SDRAM中并不是按照线性依次存储,而是可以自由指定地点进行数据的读写。
        空间存储量大、读写速率快以及价格相对自制等长处使其在存储界屹立不倒、耐久不衰,广泛应用在盘算机中。随着期间的不断发展、技术的不断更新,SDRAM使用至今已过数十载,产品更新历经五代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM,第五代,DDR4 SDRAM。
        第一代SDR SDRAM接纳单端时钟信号,SDRAM只在时钟的上升沿进行数据采样;而背面的四代SDRAM由于工作频率比较快,以是接纳可低沉干扰的差分时钟信号作为同步时钟,双沿采样,速率更快,且功耗更低。同时技术的不断发展、制造工艺的不断提高,使得五代SDRAM的更新过程中,集成度越来越高、内核电压越来越低(SDR:3.3V 、DDR:2.5V、DDR2:1.8V、DDR3:1.5V、DDR4:1.2V),这也是SDRAM速率提高、功耗低沉的重要原因。
        经历多次更新换代,使得SDRAM速率越来越快,功耗越来越低,性能更加优良,但其内部架构相差无几。后文中的相干讲解与设计实验均是以第一代SDR SDRAM为例,读者若对五代SDRAM有相识兴趣,可自行查阅相干资料。
        任何事物的存在都具有有两面性,SDRAM因其空间存储量大、读写速率快以及价格相对自制等长处使SDRAM在存储界占据一席之地,但由于SDRAM需要不断革新来包管数据的可靠性,以及行列地点线分时复用等原因,使其对操纵时序的要求较为严酷,进而导致控制逻辑较为复杂。
1.2 SDRAM存储原理

        SDRAM内部可以理解为一个存储阵列,这是SDRAM区别于管道式存储,实现随机地点存取的布局特点。我们将SDRAM内部存储阵列类比于一张表格,表格中的每一个单元格可以类比为存储阵列的单个存储单元。若想要实现存储阵列中的某一存储单元的数据读写操纵,我们要通过行地点(Row Address)和列地点(Column Address)(先行后列)精确定位到这一存储单元,进而进行数据的读写操纵,这就是所谓的随机地点存取。SDRAM存储阵列类比图,具体见图:

        对于SDRAM,我们将类比于单元格的存储空间称之为存储单元,N(行列个数乘积)个存储单元构成一个存储阵列,这个存储阵列我们称之为一个逻辑Bank(Logical Bank,简称L-Bank、Bank)。SDRAM内部并不是一个全容量的L-Bank,而是分割为若干个L- Bank,现在大多为4个。若干L-Bank的分割,原因有二,一是技术、成本等诸多因素;二是由于SDRAM的工作原理限制,单一L-Bank可能会造成非常严峻的寻址冲突,大幅度低沉内存效率。
        在对SDRAM进行数据存取时,要先确定L-Bank地点,定位到指定逻辑Bank,再依次确定行地点和列地点,选中存储单元,进而进行数据的存取操纵,而且一次只能对一个L-Bank的一个存储单元进行操纵。
        SDRAM的基本存储单元是存储单元,而一个存储单元的容量为若干个Bit,对于SDRAM而言就是芯片的位宽,每个Bit存放于一个单独的存储体中,存储体是使用电容可以或许保持电荷以及可充放电的特性制成,主要由行选通三极管、列选通三极管、存储电容以及革新放大器构成。电容所存储的电荷会随时间慢慢释放,这就需要不断革新为电容充电,以包管存储数据可靠性。存储体表示图,具体见图:

        将每个存储单元简化为单Bit的存储体,再将若干存储体分列为矩阵,同一行将行地点线相连,同一列将列地点线相连,就构成了一个存储阵列的简化模型。SDRAM内部存储阵列的简化模型,具体见图 :

 1.3 SDRAM器件引脚说明

        SDRAM有着较为复杂的操纵时序,且输入输出信号较多,在进行SDRAM操纵指令和操纵时序之前,先对芯片的输入输出引脚、引脚功能以及内部功能框图做一下介绍,SDRAM引脚表示图,具体见图:

注:x4、x8、x16分别表示位宽4bit、8bit、16bit;#符号表示信号为低电平有效;短划线 - 表示x8和x4引脚功能与x16引脚功能相同。
        由于SDRAM在容量、位宽以及生产厂家存在差异,以是SDRAM在Bank地点、地点总线、数据总线和数据掩码可能存在位宽的差异,但各输入输出管脚的名称和实现功能并无出入。上图已较为详细展示差别位宽的SDRAM 芯片的引脚表示图,针对其中较为重要的输入输出引脚,以镁光公司生产的、容量为4 Meg x 16 x 4 Banks的SDRAM芯片为例,对其做一下功能介绍。SDRAM引脚功能形貌,具体见表格。
引脚 
位宽类型
功能形貌

CLK
1Bit
Input
体系时钟:SDRAM由体系时钟驱动,所有SDRAM输入信号都在时钟上升沿采样,同时CLK还递增内部突发计数器并控制输出寄存器。 
CKE
1Bit
Input
时钟使能:屏蔽体系时钟,冻结当前操纵,高电平有效,信号有效时,所有信号才华被精确送入SDRAM。 
CS#(CS_N)
1Bit
Input
片选信号:屏蔽和使能所有输入输出端口,CLK、CKE、DQM除外,低电平有效。为高电平时,屏蔽所有下令,但已经突发的读/写操纵不受影响。 
CAS#(CAS_N)
1Bit
Input
列选通讯号:低电平有效,为低电平时,A[8:0]输入的为列地点。 
RAS#(RAS_N)
1Bit
Input
行选题信号:低电平有效,为低电平时,A[12:0]输入的为行地点。 
WE#(WE_N)
1Bit
Input
写使能信号,低电平有效,为低电平时,使能写操纵和预充电。 
{CS#  、CAS#、RAS#、WE#}构成SDRAM操纵下令。 
DQM[1:0]
1Bit
Input
数据掩码:DQML(H),低(高)字节掩码,  若信号为高电平,在下一个时钟周期的时钟上升沿,数据总线的低(高)字节为高阻态。 
BA[1:0]
2Bit
Input
L-Bank地点 :选择差别的逻辑Bank进行相干数据操纵。 
A[12:0]
13Bit
Input
地点总线:差别下令下寄义差别,后文中会有详细介绍。
DQ[15:0]
16Bit
Inout
数据总线:数据输入/输出复用。
 注:表格中某些信号只介绍了后文设计实验中所涉及到的功能,更多功能介绍请查阅芯片对应数据手册。
上文中对SDRAM各引脚进行了简要功能形貌,接下来简朴说明一下SDRAM内部功能框图。SDRAM内部功能框图:

        由图可知,SDRAM内部包含一个逻辑控制单元,内部包含模式寄存器和下令解码器。外部通过CS_N、RAC_N、CAS_N、WE_N以及地点总线向逻辑控制单元输入下令,下令经过下令解码器进行译码后,将控制参数保存到模式寄存器中,逻辑控制单元进而控制逻辑运行。
        外部通过地点总线输入地点信息,地点信息在逻辑控制单元进行逻辑控制时起到辅助作用,除此之外,复用的地点总线与Bank控制逻辑、行地点复用器、列地点计数锁存器、列地点解码器等内部器件共同作用,精确选定存储阵列中与行列地点相对应的存储单元,进而进行数据存取操纵。
1.4 SDRAM的存储容量和速率品级

        以镁光公司生产的3款SDRAM芯片为例,为读者说明一下SDRAM芯片存储容量相干参数寄义,以及存储容量盘算方法。SDRAM存储容量参数截图 ,具体见图:

        图中列举了镁光公司的3款SDRAM芯片。例“MT48LC16M16A2”,由图可知,“Micron”“MT48LC16M16A2”分别表示此SDRAM芯片的生产商和产品型号。“4Meg × 16 × 4Banks”才是表示SDRAM存储容量的具体参数,其中“4Meg”表示单个L-Bank包含的存储单元的个数,盘算方法为单个存储阵列行地点数和列地点数的乘积,以此芯片为例,行地点总线为A0-A12,行地点位宽为13位,行地点数为 8192 (2^13)行,列地点位宽为9位,列地点数为512(2^9)列,单个L-Bank中包含的存储单元个数为行地点数(8192)与列地点数(512)相乘,乘积为4M(8192 × 512 = 4194306); “16”表示数据位宽,即每个存储单元存储数据的bit数;4Meg与16相乘表示单个L- Bank中可存储的Bit数;“4BANKS”表示一片SDRAM中包含的L-Bank个数,此SDRAM芯片包含4个L-Bank;由此可得SDRAM芯片的存储容量为:256MBit(4Meg × 16 × 4BANKS)。
容量盘算方法可简化为:
        存储容量(Bit) = L-Bank存储单元数 ×数据位宽(Bit) × L-Bank个数
        同理,读者可根据此盘算方法盘算其他SDRAM芯片的存储容量。
        接下来我们来说明一下SDRAM芯片的另一个概念:速率品级。SDRAM速率品级相干参数截图,具体见图 :

        上图列举了包括速率品级在内的6个相干参数。时钟频率(Clock Frequency),单元MHz,所列举的具体参数为SDRAM正常工作的最高时钟频率,SDRAM工作时只能便是或低于这一时钟频率;tRCD表示写入自激活下令到开始进行数据读写,中间所需的等待时间,列举的数值表示等待时间的最小值,单元为ns; tRP表示自预充电指令写入到预充电完成所需的等待时间,列举的数值表示等待时间的最小值,单元为ns;CL(CAS(READ) latency)列选通埋伏期,表示自数据读指令写入到第一个有效数据输出所需等待时间,单元ns;Target tRCD-tRP-CL表示最大工作频率下,tRCD、tRP、CL等待的最小时钟周期数。
        以是相同型号的SDRAM芯片被分为差别的速率品级,这与FPGA速率品级的分别颇为雷同,因此在挑选或使用SDRAM芯片时,要注意这些参数,以免出现题目。
1.5 SDRAM的操纵指令

        合理使用操纵指令可以控制SDRAM实现特定功能。在前文SDRAM的引脚功能介绍的表格中,本文提到CS_N、RAS_N、CAS_N、WE_N 四路控制信号构成SDRAM指令集。除构成指令集的4路信号之外,CKE、BA[1:0]、A[12:0]等信号,在SDRAM的操纵中,也起到辅助作用。
        接下来我们介绍一下常用的SDRAM操纵指令。SDRAM操纵指令集截图,具体见图:

注:H表示高电平;L表示低电平;X表示无需关心。
根据上图,我们分条列举一下SDRAM常用的操纵指令,并对各操纵指令做详细说明,说明如下;
1.5.1 克制下令(Command Inhibit)

         克制下令(Command Inhibit),其他数据手册也称为取消装备选择下令(Device Deselect)控制指令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b1XXX。不论SDRAM处于何种状态,此下令均可被执行,无需顾及CKE是否有效,即CLK是否使能,无需关心DQM、ADDR、DQ的信号输入;执行此下令后,SDRAM芯片不被选择,新的下令无法写入,但已经执行的下令不受影响。
1.5.2. 无操纵下令(No-operation)

        无操纵下令(No-operation),也可称为空下令,简称为NOP下令,控制指令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0111。不论SDRAM处于何种状态,此下令均可被写入,该下令给被选中的SDRAM芯片传递一个空操纵信息,目的是为了防止SDRAM处于空闲或等待状态时,其他下令被写入,此下令对正在执行的下令无影响。
1.5.3. 配置模式寄存器下令(Load Mode Register)

        配置模式寄存器下令(Load Mode Register),也被称为Mode Reigister Set,简称LMR下令,控制指令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0000此下令只有所有L- Bank均处于空闲状态时才可被写入,否则配置出错,而且在执行此下令后,SDRAM必须等待相应的相应时间tRSC(Register Set Cycle),模式寄存器配置周期)后,才可写入新的下令。
        在写入此下令对SDRAM进行模式寄存器配置时,需要地点总线A0-A11辅助寄存器的模式设置,A0-A11赋值差别对应寄存器配置差别模式,未使用的地点总线设置为低电平。下面介绍一下A0-A11的差别赋值所对应的寄存器差别模式,具体见图:

突发长度(Burst Length)
        突发(Burst)是指在同一行中相邻的存储单元一连进行数据传输的方式,一连传输所涉及到存储单元(列)的数量就是突发长度(Burst Length,简称 BL)。
        地点总线的低三位A0-A2是突发长度的控制位,SDRAM芯片的突发长度可设置为1、2、4、8和整页,单元为字节,整页表示一次突发传输一整行的数据量,具体数值视芯片而定。
        若在数据读/写操纵时不使用突发传输,此时可等效为突发长度为1字节,每次读/写数据时,都要对存储单元进行寻址,假如要实现一连的读/写操纵,就要不断地发送列地点和读/写下令,这种方法控制资源占用极大,效率较低。非突发一连读操纵时序图,具体见图 

        若使用突发传输,只要指定起始列地点和突发长度,内存就会依次地主动对背面相应数量的存储单元进行读/写操纵而不再需要控制器一连地提供列地点,这样,除了第一笔数据传输需要若干个周期外,其后的每个数据只要一个周期即可获得。突发的数据长度一样寻常是4或8,假如传输时实际需要的数据长度小于设定的BL值,则调用“突发 制止”下令竣事传输。突发一连度操纵时序图,具体见图  :

突发类型
        突发类型的设置位为A3,可将突发类型设置为两类,次序和隔行。一样寻常将A3设置为低电平,选择次序类型,但也要结合实际情况进行选择。差别突发类型所对应的情况,具体见图:

列选通埋伏期(CAS Latency)
        列选通埋伏期是指从读下令被寄存到数据总线上到出现第一个有效数据之间的时钟周期隔断,列选通埋伏期可被设置为2个或3个时钟周期,设置位为A6,A5,A4,当{ A6A5A4}=3’b010时,埋伏期为2个时钟周期;当{ A6A5A4}=3’b011时,埋伏期为3个时钟周期,时序图具体见图

运行模式(Operating Mode)
        运行模式设置位为A7,A8,SDRAM存在尺度模式、测试模式等多种模式,但对于平凡用户,只开放了尺度模式,在使用SDRAM时只需将A7,A8设置为低电平进入尺度模式即可。
写模式
        写模式设置位为A9,控制SDRAM的写模式。当A9为低电平时,SDRAM的读/写操纵均接纳突发方式,突发长度由突发长度寄存器(A0-A2)设定;当A9位高电平时,SDRAM的读操纵依然接纳突发方式,突发长度由突发长度寄存器(A0-A2)设定,但SDRAM的写操纵不在使用突发方式,每一个写下令只能写入 一个数据。
        A10-A12为保留位,对模式寄存器的配置不起作用,赋值为0即可。
持续更新中。。。。
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表