逸江南

学习FPGA驱动DDR时的相关笔记

2
阅读(2288)

   1、DDR2和DDR3内建了终结电阻器(即ODT),在SDRAM颗粒工作时把终结电阻器关掉,而对于不工作的DRAM颗粒则打开终结电阻,减少来自总线信号的反射。ODT至少为DDR2和DDR3带来了两个好处,一个是去掉了主板上的终结电阻器使主板的成本降低,也使PCB板的设计更加容易。第二个好处是终结电阻器可以和内存颗粒的"特性"相符,使SDRAM处于最佳状态。

   在使用FPGA控制DDR2、DDR3时,要保证ODT正确设置,否则DDR读写可能不成功或不正确。

   2、在使用FPGA驱动DDR2时,如果使用IP核例化接口驱动,需了解以下数据关系:

    如果DDR2的驱动时钟是200MHz,则DDR2实际工作在400MHZ,如果IP核(DDR控制器)数据接口工作时钟是100MHz,那么IP核(DDR控制器)接口数据宽度是DDR2颗粒数据宽度的4倍。例如,如果DDR2颗粒是16bit,那么DDR控制器数据接口就是64bit。从这里也可以得出DDR2的突发长度为4,同样的道理可以得出DDR3的突发长度一般是8。

    在altera FPGA中,使用IP核时,相关设置如下:

    在图中,DDR2的数据位宽是32bit,则根据相关关系自动算出的DDR2控制器的接口数据宽度是128bit,突发长度是4。

所谓突发读写是指,当给DDR指定一个地址以后,随着clock的增加和突发长度(Burst Length)的设置,DDR的内部会自动递增被指定的地址。

   3、DDR2和DDR3使用了预存取(prefetch)技术,这种技术决定了DDR2和DDR3的预取位宽,也就直接决定了DDR2和DDR3的突发长度。这种技术的原理和FPGA中实现串行数据转并行数据接口接收或并行数据转串行数据接口发送是一样的。在这个过程中,都遵循了发送方的时钟速率与发送方的数据位宽的乘积,等于接收方的时钟速率与接收方的数据位宽的乘积。在这里,乘积是一定的,数据速率和数据位宽是反比的关系。

   4、存储芯片有SDRAM(也就是SDR SDRAM)、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM。

   5、DDR3常用的参数有四个:CL,tRCD,tRP,tRAS。四个参数的单位都是时钟周期,这四个参数一般都是由四个数字组成,数字之间由横线分开。例如 7-8-8-24。第四个参数(tRAS)经常被省略。

   CL: CAS Latency。表示了column地址输入到数据响应的时间。(列寻址所需要的时钟周期)

   tRCD: ROW address to Column address delay。表明从打开内存的ROW到访问column的时间间隔。(行寻址和列寻址时钟周期的差值)

   tRP:Row Precharge Time。表明了输入precharge命令到打开下一个ROW之间的时间间隔。(下一个存储周期到来前,预充电需要的时钟周期)

   tRAS:Row Active Time。 表明了输入bank active command到输入precharge命令之间的时间间隔。(对某行的数据进行存储时,从操作开始到寻址结束需要的总时间周期)


   PS:基于FPGA的视频编解码QQ群:623495899 ,有兴趣的可以进来交流学习哈。