DDR2控制器的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DDR2控制器的设计
1 引言
为了适应更高速度的数据处理需求,JEDEC-79-2C定义了一种新生代内存技术标准,这就是DDR2 SDRAM(Double Data Rate 2 SDRAM)。

相对于DDR,DDR2拥有更少的能耗和发热量,更高的密度和频率,数据传输更达到了400MHz以上。

DDR2不但可以在时钟的上升沿和下降沿采样,而且可以进行4bit预读取,两倍于DDR的2bit预读取,因此,在同样的核心频率(内部存储单元阵列时钟)下,DDR2的实际传输速率是DDR的两倍。

简单来说,当核心频率为100MHz时,DDR的实际传输速率为200MHz,而DDR2的实际传输速率可以达到400MHz。

除了4bit预读取之外,DDR2还采用了三项新技术:(1)离线驱动调整(OCD,Off-Chip Driver);(2)片内终结器ODT(On-Die Termination);(3)前置CAS(Post Column Address Strobe)。

2 DDR2 SDRAM的控制指令
DDR2与DDR在指令系统上的重要区别在于增加了对OCD校准、ODT参数的设定和前置CAS的设置,这些设置都通过Load Mode指令配置模式寄存器进行加载。

2.1 OCD校准的配置
OCD技术用来在DDR2芯片之外调整“差动电压信号”波形交叉点,以平衡上升与下降信号的波形,提升信号品质,强化噪音抵抗能力,进而提升整体效能。

2.2 ODT的参数设定
在并行总线中,信号传输到一端尽头之后不会自动消失,而会被反射回去,这样就会与后面传送的信号发生碰撞,导致数据传输出错。

DDR2通过截断、抑制来自线路终端信号反射所造成的信号干扰现象,比起DDR必须在主机板上设计的阻抗所搭配的终端阻绝电阻,ODT的设计更能提高信号终结的质量。

2.3 CAS后附加延迟(AL,Additive Latency)的设定
前置CAS是为了提高DDR2的存取效率而设计的。

在前置CAS操作中,CAS信号能够被插到RAS (Row Address Strobe)信号后一个时钟周期,这使得CAS信号可以在AL后面若干个周期仍保持有效,AL的值可以设定为0 ,1 ,2 ,3或4。

由于将CAS信号设置在RAS信号后一个时钟周期,因此ACT(激活)和CAS 信号始终不会产生冲突,从而简化了控制电路的设计,避免总线上的冲突,提升DDR2的读写访问效率。

但是该参数的设置也会给数据的实际读写增加相应的延迟,即:
WL(Write Latency,写延迟)= AL + CL – 1;
RL(Read Latency,读延迟)= AL + CL;
其中CL为列选择到数据输出的延迟。

2.4 访问操作指令
DDR2的访问操作主要通过片选信号CS#、行地址选择信号RAS#、列地址选择信号CAS#、写使能信号WE#和时钟使能信号CKE的组合来实现。

DDR2的主要操作指令及其控制信号真值表如表1所示。

图1给出了DDR2内存标准的读/写时序图。

(a)读操作:RL =4 ( AL = 1,CL = 3,BL = 4)
(b)写操作:WL = 2,BL = 4
图1 DDR2读/写操作时序
3 DDR2 SDRAM控制器的设计
DDR2 SDRAM控制器的主要功能是完成DDR2的初始化,将DDR2复杂的读写时序转化为用户简单的读写时序,以及将DDR2的双时钟沿数据转换为用户的单时钟沿数据;同时,控制器产生周期性的刷新命令维持DDR2内的数据。

3.1 DDR2控制器的逻辑框图
DDR2控制器主要包括了DDR2控制模块(controller)、指令调度与重排序模块(schedule & reorder)、接口模块(interface)、数据通道模块(user path)、ECC校验模块(ECC)和初始化模块(initialization),分别实现控制器的指令译码、指令调度与优化排序、控制信号的产生与反馈、接口时序匹配、数据调制与解调、数据传输校验和DDR2的初始化等。

DDR2控制器的结构框图如图2所示。

图2 DDR2控制器的结构框图
3.2 DDR2控制器的控制模块和状态机设计
DDR2控制模块主要的功能是:在系统上电或复位时,与初始化模块配合,完成控制器和所控制的DDR2的初始化工作;在系统正常工作时,进行系统读写请求指令的接收与应答,对系统访问的地址采样与同步,完成所需状态的转换、时序同步,产生相应的控制信号和状态指示信号,调用指令调度与重排序模块,实现指令的优化排序,节约段转换的时间开销,以提高指令的执行速度。

控制器的状态机结构如图3所示。

图3 DDR2控制器状态机
3.2.1 初始化模块的设计
在复位之后,控制器立即进行一系列的初始化操作,在初始化模块的配合下完成对控制器和DDR2的初始化操作。

在上电之后,初始化模块将设置控制器的初始化参数,进行初始化操作,包括200us的上电等待、所有段预充电400ns、并且在8个刷新周期之后完成寄存器参数的装载,ODT参数的设置,DLL(Delay Locked Loop,延时锁定循环电路)重置,OCD校准等操作。

3.2.2 数据通道模块的设计
数据通道模块负责对系统写入/读出的数据进行调制/解调。

当执行写操作时,64位的输入数据由线性反馈移位寄存器(LFSR,Linear Feedback Shift Register)模块随机产生。

数据在模块内按高32位和低32位两个数据通道分别进行同步锁存,在写时钟(clk)的上升沿,将低32位数据调制到数据总线上(mem_wdata[31:0]),在写时钟的下降沿调制高32位数据,在调制数据的同时生成DQS信号。

当执行读操作时,使用DDR2输出的DQS信号作为采样参考时钟,对读出的数据进行双沿采样、锁存,经同步后完成数据的解调,传输到总线上。

3.2.3 ECC校验模块的设计
ECC错误校验模块具有发现错误、纠正错误的功能。

以往使用的奇偶校验,只可以检测出错误而无法对其进行修正,且无法检测出双位错误,而ECC校验可以检测出双位错位并且修正单位错误。

ECC校验和奇偶校验一样通过在数据位后增加额外的位来存储数据加密的代码。

在该模块中,通过将64位数据位(d[63:0])异或,产生8位校验位(s[7:0]),作为ECC校验码,校验位与数据位互为满射关系。

当数据被写入内存的时候,相应的ECC校验码同时被保存下来。

当重新读回该数据时,保存的ECC 校验码和读数据时产生的ECC校验码进行比较。

如果两次的校验码不一致,就会解码以确定是数据中的哪一位出错,然后这一错误位被抛弃,控制器则再度发出正确的数据。

相关文档
最新文档