DDR2 MIG核与DDR3 MIG核使用区别

本文中所讲DDR2 MIG核是V5芯片的MIG核,DDR3 MIG核是K7芯片的MIG核。

一、建核区别

DDR2 MIg核的建立过程与DDR3 Mig核的建立过程基本内容都是一致。具体建核教程在相应的datasheet(ug086(DDR2 mig)、ug586(DDR3 mig))中都有说明。

这里具体说一下DDR3 Mig核的特有属性。

  1. clock period时钟周期,这个时钟周期跟DDR2 Mig核中的Frequency一样,都是DDR2的核心频率。建立DDR3mig核是我们选用400MHz
  2. PHY to Controller Clock Ratio:该选项的意思是物理接口时钟周期与控制器时钟周期(指的是用户时钟)之比,有2:1和4:1两种选择方案。我们选用4:1的方案。DDR2 Mig核不具备该选项。
  3. Input Clock Period 这个时钟周期指的是输入给DDR3 mig核的输入时钟周期,该时钟经过mig核中的PLL分频和倍频后分别作为用户时钟和接口时钟。假如我们选用200MHz的输入时钟,那么经过PLL分频后用户侧时钟接口就是100Mhz,DDR3物理接口时钟就是400MHz。
  4. DDR3 Mig核主要的用户接口及其含义如下:

二、仿真区别

在我们建立mig核之后,我们一般都会使用mig核自带的example design进行仿真,观察mig核能否正常工作。我们在建立核之后,在这个工程D:\isefile\DDR2_Mig_Core\ipcore_dir\Mig_core路径下(其中DDR2_Mig_Core是自定义的工程名字,Mig_core是自定义的mig核的名字),会有docs(里面主要是mig核的数据手册)、example design(用来测试仿真)、user design(用户使用)三个文件夹。在DDR2mig核中的example design和user design中的rtl和sim文件夹中都包含了仿真所用的.v,只不过example design中仿真数据的产生是在rtl文件下,而user design中仿真数据的产生是在sim文件夹下。因此,example design中所有的.v文件加入工程后可以进行仿真;user design中所有的.v文件加入工程后也可进行仿真。

而DDR3的mig核中的example design和user design中所包含的文件与DDR2中mig核包含的文件情况不太一样。在做DDR3 mig核仿真时,发现DDR3mig核中的example design下的rtl文件夹只包含数据产生部分和example_top.v,并不包含mig的核心控制部分,sim文件夹中内容基本一致;而user design文件夹下只有rtl文件夹,并没有sim文件夹,rtl文件夹下主要是mig的核心控制.v,因此在做仿真时,这example design和user design中的所有.v必须同时加入工程中,才能进行仿真。单独加载example design或user design中的.v是做不了仿真的。(使用ISIM做仿真等init_calib_complete拉高大概用时一个半小时左右,使用Modesim-Se做仿真只需要等待二十分钟左右)。初步仿真完成,证明该mig核就是这样使用的。仿真结果如下图所示:

三、时序区别

3.1 DDR2 SDRAM写时序

Figure1 DDR2 SDRAM Write Burst for Four Burst(BL = 4)

 

图1是DDR2 SDRAM的写时序,由写时序图可以看出在reset_tb信号为低,地址FIFO满信号(app_af_afull)和数据FIFO满信号(app_wdf_afull)均为低,初始化完成信号(phy_init_done)为高情况下,就可以进行DDR2 SDRAM写操作。DDR2 SDRAM写操作包括写地址和写数据两个操作过程,其中写地址由app_af_cmd(指令信号)、app_af_wren(地址有效信号)和app_af_addr(地址信号)这三个信号共同控制;写数据由app_af_cmd(指令信号)、app_wdf_wren(数据有效信号)和app_wdf_data(数据信号)这三个信号共同控制。从图1可以看出,每隔两个clk_tb写一个地址app_af_addr,app_af_wren有效一次,地址变化是按4递增(A1 = A0 + 4、A2 = A1 + 4)。每个clk_tb写两个数据(app_wdf_data,时钟上升沿和下降沿均写入数据),这是因为突发长度是4,所以写一个地址,就需要写四个数据,app_wdf_wren有效长度必须跟有效数据长度保持一致。地址和数据是相互对齐的。

3.2 DDR2 SDARM读时序

Figure2 DDR2 SDRAM Read Burst(BL = 4)for Four Burst

 

DDR2 SDRAM的控制本身是比较难的,但是由于有专用的Mig核,这就使得DDR2 SDRAM的控制就跟BRAM基本一样(其实还是比BRAM难一些的)。无非就是在写的时候给写地址给写数据;在读的时候给读地址,然后从DDR2 SDRAM中读出数据。

图2是DDR2 SDRAM的读时序图,在读的时候,在地址FIFO满信号app_af_afull为低的情况下,每个clk_tb给一个读指令信号app_af_cmd、读地址有效信号app_af_wren和读地址app_af_addr。由于突发长度为4,所以读地址的递增也是以4为单位进行递增的(A1=A0+4、A2=A1+4)。

 3.3 DDR3 SDRAM写时序

DDR3 SDRAM在写入数据的过程,也像DDR2 SDRAM一样,需要先写地址,然后再写入数据,唯一不同的是DDR2 SDRAM在写地址和数据必须严格对齐,而DDR3 SDRAM写地址和写数据没有完全对齐的要求。

 

Figure3 4:1 Mode UI Interface Write Timing Diagram (BL = 8)

 

图3给出了写地址与写数据的三种对应情况:

  1. 写数据和写地址完全对齐;
  2. 写数据超前一个时钟周期;
  3. 写数据延迟了三个时钟周期(写数据可以出现在写地址之后,但是不能超过两个时钟周期)。

单独把写时序拉出来看,时序图如下:

Figur4 4:1 Mode UI Interface Write Timing Diagram (BL = 8)

通过上图可知,app_en与app_rdy同时有效时,地址才被写入;app_wdf_rdy与app_wdf_wren同时有效时数据才被写入。所以app_rdyapp_wdf_rdy这两个信号可以类比DDR2 SDRAM写时序中的app_af_afullapp_wdf_afull

再来分析一下不是说好的突发长度为8吗。为什么上图时序图中是每个时钟周期给一个地址和数据呢?

这是因为在设置mig核时,设置了物理接口与用户接口时钟比为4:1,即当物理接口使用400MHz的时钟时,用户接口clk = 100MHz。

时钟关系图

 由于在时钟的上升沿和下降沿都进行数据的发送,所以每个CLK时钟周期实际上是传送8次数据。

3.3 DDR3 SDRAM读时序

Figur5 4:1 Mode UI Interface Read Timing Diagram (BL = 8)

 读数据时,在app_en和app_rdy有效时将地址app_addr和命令app_cmd同时写入。app_rd_data_end信号用来指示每个读指令的突发的结束,对于用户来说没啥用。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章