网站允许flash,企业建设网站的需求分析,微信小商店如何推广,灰色推广引流联系方式DDR协议基础进阶#xff08;三#xff09;——#xff08;基本功能、初始化、MR寄存器#xff09;
一、DDR基本功能
DDR基本功能主要包括#xff1a;
8-bit prefetch预取——8-bit#xff0c;是指8位数据#xff0c;即8倍芯片位宽的数据。由于DDR内部数据传输是32bit…DDR协议基础进阶三——基本功能、初始化、MR寄存器
一、DDR基本功能
DDR基本功能主要包括
8-bit prefetch预取——8-bit是指8位数据即8倍芯片位宽的数据。由于DDR内部数据传输是32bit外部pin口DQ位宽4bit存储单元数据位宽在发起读数据写同理操作时会先从bank中取出32bit数据存入寄存器中然后再将32bit数据由并转串发出去完成读数据操作相当于一次性从bank中获取了8倍的DDR数据接口位宽的数据放入寄存器中这种存取数方式即为8bit prefecth预取。实际上DDR内部一次性获取了大量数据而只是将DDR接口处时钟进行倍频以便做并转串或串转并操作从而达到高速访问的效果。双沿采样——DDR接口处时钟会在上下边沿进行采样一个时钟周期内会采到两倍于DDR接口位宽的数据。Burst传输——可以是常规的burst length为8bit的传输也可以是burst chop length4bit的传输。必须先Power up和初始化操作——在对DDR进行操作之前需要先对其中的目标颗粒进行ACTIVE激活操作在激活颗粒之前必须先对颗粒进行上电初始化才可进行正常访问。
——————————————————————————————————————————————————————————————
1.1、什么是Prefetch
DDR核心技术点就在于1双沿传输。2预取prefetch。
实际上Prefetch并不是什么新技术在DDR1就开始应用了我们以前经常能看到这样描述DDR“在时钟周期的上沿和下沿都能传输数据所以传输率比SDRAM快了一倍”这就说上沿传输一位数据下沿传输一位数据在一个时钟周期内一共传输两位数据(2-bit)但这2-bit数据得先从存储单元预取出来才行一个时间周期。换句话说一次读2-bit的数据然后在I/O时钟上升沿和下降沿传输出去这就是2-bit Prefetch技术。当然这只是表面的解释实际情况要比这复杂得多要注意是这儿的2-bit是指2位数据即2倍芯片位宽的数据。
在DDR2时代使用了4-bit预取技术一次从存储单元预取4-bit的数据然后在I/O时钟上升沿和下降沿传输出去由于4-bit需要2个时钟周期才能完成传输这就是为什么DDR2的I/O时钟频率为存储单元频率两倍的原因。
到了DDR38-bit预取技术也自然水到渠成**一次从存储单元预取8-bit的数据在I/O端口处上下沿触发传输8-bit需要4个时钟周期完成所以DDR3的I/O时钟频率是存储单元核心频率的4倍由于是上下沿都在传输数据所以实际有效的数据传输频率达到了核心频率的8倍。**比如核心频率为200MHz的DDR3-1600其I/O时钟频率为800MHz有效数据传输频率为1600MHz。
显然通过使用Prefetch架构可以解决存储单元内部数据总线频率核心频率较低的瓶颈。8-bit预取正是DDR3提升带宽的关键技术。同样的核心频率DDR3能提供两倍于DDR2的带宽。
总结 DDR SDRAM内部存储单元的核心频率提高比较困难且成本较高为了解决外部数据传输率和核心速度之间的矛盾DDR3引进了8-bit Prefetch数据预取架构技术它能够提供比DDR2更高的数据传输率。
1.2、时钟频率关系
DDR的频率1核心频率、2时钟频率、3数据传输频率核心频率就是内存的工作频率DDR1内存的核心频率是和时钟频率相同的到了DDR2和DDR3时才有了时钟频率的概念就是将核心频率通过倍频技术得到的一个频率。数据传输频率就是传输数据的频率。DDR1预读取是2位DDR2预读取是4位DDR3预读取是8位… 表中的I/O频率即为时钟频率如下图所示 二、DDR状态转换流程
DDR的状态转换基本流程如下图所示包括从“上电复位 — 初始化 —…—数据读写访问”整个流程。仅供学习参考 在实际的DDR访问过程中考虑到DDR的效率一般并不会按照上图流程进行访问而是会预先在DDR Controller中规划好Bank的访问流程从而实现更为高效的DDR mem颗粒访问。
DDR状态转换过程中的刷新
DRAM之所以称为动态随机存取存储器就是因为它要不断进行刷新Refresh才能保留住数据因此它是DRAM最重要的操作。DDR的刷新操作分为两种自动刷新Auto Refresh简称ASR与自刷新Self Refresh简称SR。
对于ASR SDRAM内部有一个行地址生成器也称刷新计数器用来自动的依次生成行地址。由于刷新是针对一行中的所有存储体进行所以无需列寻址或者 说CAS在RAS之前有效。所以ASR又称CBRCAS Before RAS列提前于行定位式刷新。由于刷新涉及到所有L-Bank因此在刷新过程中所有L-Bank都停止工 作而每次刷新所占用的时间为9个时钟周期PC133标准之后就可进入正常的工作状态也就是说在这9个时钟期间内所有工作指令只能等待而无法执行。 一段时间之后则再次对同一行进行刷新如此周而复始进行循环刷新。显然刷新操作肯定会对SDRAM的性能造成影响但这是没办法的事情也是DRAM相对于 SRAM静态内存无需刷新仍能保留数据取得成本优势的同时所付出的代价。 SR则主要用于休眠模式低功耗状态下的数据保存这方面最著名的应用就是STRSuspend to RAM休眠挂起于内存。在发出AR命令时将CKE置于无效 状态就进入了SR模式此时不再依靠系统时钟工作而是根据内部的时钟进行刷新操作。在SR期间除了CKE之外的所有外部信号都是无效的无需外部提供刷新 指令只有重新使CKE有效才能退出自刷新模式并进入正常操作状态。
三、DDR的初始化
DDR的初始化分为上电Power up初始化和复位Reset初始化两种二者过程基本相同。不同之处在于电压VDD稳定后Reset#信号拉低所持续的时间DDR3要求上电初始化过程的Reset#至少持续200us而复位初始化要求Reset#至少持续100us。 实际上真正的DDR初始化过程就是对MR寄存器按照特定顺序进行配置的过程DDR3要求MR寄存器的配置顺序为MR2 - MR3 - MR1 - MR0。
3.1、Power up initialization tXPR DDR上电复位后从CKE拉高到发出第一个有效的命令MRS之间的最小时间间隔tMRDDDR初始化过程中两个连续的MRS命令之间持续的最小时间间隔tMODMRS命令发送完毕后让所有寄存器生效需要等待的时间ZQCL上电初始化之后对DDR内部的ODT打开进行信号校准操作属于长延时的操作tZQinit等待ZQCL校准完成的时间至少需要512个clocktDLLK在MR0配置时同时需要使能DLL让颗粒中的DLL开始工作而使能DLL至少需要保持的时间即为tDLLK.
3.2、Reset initialization
复位初始化可以在任意状态执行之后可以继续进行状态跳转。需要说明的是复位初始化并不会改变mem颗粒的中的数据内容而只是改变和初始化相关的寄存器值但这并不代表复位完后寄存器的值和原来一样这是由于复位需求的时间较长可能由于没有及时刷新而导致原来的寄存器值被丢弃。所以复位完后依然需要进行正常的状态跳转而不能认为复位后原来的寄存器中的值任然被保存。 四、MR寄存器
DDR3 SDRAM共有4个模式寄存器分别为MR2、MR3、MR1、MR0。 上述的Mode Register不存在default value因此在DDR初始化过程中必须对MR寄存器进行配置其每一bit都有其特定的作用。这些MR寄存器除了在DDR初始化过程中进行配置在正常访问过程中也可以通过进入DDR的Idle状态进行配置见第二部分DDR的状态图。
DDR中的MR寄存器的配置不会影响到Mem颗粒中的数据内容但有可能会影响时序导致DDR mem读写数据不一致。。
MR2用来存储控制更新的特性 Rtt_WR阻抗和CAS写长度。MR3用来控制MPR。MR1用来存储是否使能DLL、输出驱动长度、Rtt_Nom、额外长度、写电平使能等。MR0用来存储DDR3的不同操作模式的数据包括突发长度、读取突发种类、CAS长度、测试模式、DLL复位等。
4.1、MR2/MR3 definition
MR2寄存器信息如下表不同厂商提供的DDR MR寄存器表格信息有所不同 A[2:0]Partial Array Self Refresh有目的的选择某一个或者某几个Bank进行自刷新self Refresh该bit位信号一般直接刷新所有的BankA[5:3]CAS Write LatencyCWL, 指从发起写命令到实际写数据进DDR颗粒之间延迟时间A[6]Auto Self Refresh选择DDR的刷新模式Self RefreshSR 和 Auto Self RefreshASRA[7]Self Refresh Temperature选择自刷新的温度范围与A[6]配合使用A[8]RFU空白保留域A[10:9]RTT_WR选择ODT的阻值不常使用
MR3寄存器信息如下图 A0-A15寄存器地址信号在配置MR寄存器时并不是通过DQ来实现而是通过地址来实现相应配置BA0-BA1Bank地址用来选择具体配置哪一个MR寄存起然后通过地址A0-A15来实现该寄存器具体配置A0-A1MPR地址Multi-purpose register address. 多用途寄存器的地址A2MPR操作模式。MPR的功能是读出一个预先设定的系统时序校准比特序列当打开MPR模式时在读取颗粒中的数据时数据将会从MPR地址处读出预设的pattern而非来自mem阵列。
4.2、MR1/MR0 definition
MR1寄存器信息如下图 A[0]DLL Enable颗粒中存在DLL若让DDR实现高速访问则需打开DLLA[4:3]Additive Latency (AL)命令真正传递到寄存器中存在的延迟时间A[5,1]Output Driver Impedance Control (DIC) , 输出驱动阻抗控制用来调节I/O输出驱动能力A[7]Write Leveling Enable控制写training的功能A[9, 6, 2]RTT_NOM可认为是一个标准的ODT阻值通常情况下都会用到此ODT常用60ΩA[11]TDQS通常Disable状态与DM信号互斥二者只能有一个起作用A[12]QoffOutput Driver, 通常Enable状态若disable掉则会变成纯输入模式没有输出负载一般只在测试时会用到
MR0寄存器信息如下图 A[1:0]Burst length可以是固定长度8固定长度4也可是动态的切换长度8/4A[3]Burst Type通常选择sequential类型A[6:4, 2]CAS Read Latency指从发起读命令被颗粒接收到实际数据从DDR颗粒读出之间延迟时间具体的选择需要根据不同频率来选择A[7]Test mode厂商自测用通常置0A[8]DLL Reset初始化的最后一步需要进行DLL Reset一般配为1A[11:9]Write Recovery for Auto Precharge写数据之后要进行Auto Precharge而从发出Auto-precharge命令到真正完成precharge所需的时间需要通过该bit域进行配置根据不同频率进行配置A[12]DLL Control for Precharge Power Down选择Precharge Power Down的退出模式通常选择Fast exit。
4.3、Burst类型及顺序 可以发现Column Address的**A2A1A0三位被用于Burst Order功能并且A3也被用于Burst Type功能**。由于一般情况我们采用的都是顺序读写模式即{A2,A1,A0}{0,0,0}所以此时的A3的取值并无直接影响。 CA[2:0]的值决定了一次Burst sequence的读写地址顺序。
比如一次Burst Read的时候如果CA[2:0]3’b001表示低三位从地址1开始读取CA30的时候按顺序读取12305674CA31的时候交错 读取10325476。 对于Prefetch而言正好是8-bit Prefetch对于Burst而言对应BL8。 BC4其实也是一次BL8的操作只是丢弃了后一半的数据。
参考https://www.expreview.com/168-5.html 参考https://www.sohu.com/a/126626646_463982 参考https://www.cnblogs.com/zhongguo135/p/8483346.html