关于DDR3时钟和时钟与数据格式的经典分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxs13551803230/article/details/81539238

<时钟篇>

前述:对于DDR3的时钟说明,在做DDR3的存储之前有必要把各个时钟说明白搞明白,下面我讲的是对MIG(Xilinx)的时钟操作使用;

  clock period时钟:在例化K7系列的MIG核时,作者通过仿真发现并且很明确的告诉你,这个时钟就是DDR3物理层的DDR3_CLK_P和DDR3_CLK_N的时钟,这个时钟的选择决定了DDR3存入和读取的带宽,一般根据项目的数据带宽需求进行选择。

   UI_clk用户时钟:这个时钟频率的大小和PHY to controller clock ratio有关,当选择为2:1模式是,那么用户层的UI_clk就是clock period的一半,如在作者工程中clock period=400M, UI_clk=200M,用户时钟很关键,它为用户读写地址,用户读写命令,用户读写使能(MIG的用户层)提供了一个时域。

  input clock period这个时钟决定了例化原语中的.ddr3_sys_clk_i  (clk_200M),这个时钟是由外部PLL或MMCM时钟进行输入,本作者发现MIG对这个输入时钟的要求很严格,同样的200M时钟由PLL输出和MMCM输出都能使得DDR3颗粒初始化不成功关键;

 

 

   上面的分析是基于MIG的物理与用户层来讲的时钟架构,调试过DDR3的工作者,应该很清楚。但是市面上对DDR3存储产品有如下几个频率术语:核心频率,工作频率;

    核心频率:说的就是上面的物理层时钟clock period。在本工程中最大能设定为800MHz,这与FPGA所选者等级有关与DDR3颗粒选型有关。

    工作频率:核心频率*2(双沿),这就是有的广告写DDR3_1600后面;

所以遇到这种情况就可以一一对应了。

总结一点:核心频率就是DDR3的直接输入CLK_P频率。                        

<时钟与数据格式篇>

   DDR是动态双沿速率存储;

    动态:所谓动态就只要自动刷新的过程,在DDR3中,存储数据的有效保持时间上限为64ms,固定的每一行的刷新周期为64ms,此外还有一个刷新速度=64ms/每个bank的行数(rows),这个参数根据DDR3颗粒的选型有关有的,有的芯片每个bank有4K和8K,从而得到刷新速度,但是正是因为这样的刷新,使得DDR3颗粒存在着一个效率的问题。

     双沿:double rate :内存带宽=核心频率*2*位宽;在作者的工程中使用的就是400M*2*8(单位空间bits)=6400Mbps=800MB/s;

  在用户层的接口中有如下接口信号:

控制线

  app_cmd//读写操作

  app_en//读写使能

数据线

  app_wdf_wren//标记写入的数据有效

  app_wdf_data//要写入的数据

  app_wdf_end//帧尾标志,因为是突发写操作,用此信号标记是各个完整的突发数据

 

  app_rd_data//读出来的数据

  app_rd_data_valid//读出来的数据有效位

  app_rd_data_end//标记着一个突发数据的到来

地址线

  app_addr//写或读的地址

反馈信号线

  app_rdy//核准备好信号

  app_wdf_rdy//核准备接受数据的信号

  在物理层的接口中有如下接口信号:

控制类:

  ddr_cas_n//列选通

  ddr_ras_n//行选通

  ddr_we_n//写使能

  ddr_ba//ddrbank选择信号

  ddr_cke//时钟使能

数据总线

  ddr_dq

地址总线

  ddr_addr

    在实际的例化工程中,选择4:1还是2:1模式将决定app_wdf_data的位宽。

 

   下面讲解一下物理层内存带宽与用户层内存带宽与写入数(app_wdf_data)关系;

     上面就准确的说明物理层时钟与用户层时钟和物理层数据位宽与用户层数据位宽与等之间关系。

猜你喜欢

转载自blog.csdn.net/hxs13551803230/article/details/81539238
今日推荐