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信號用來指示每個讀指令的突發的結束,對於用戶來說沒啥用。

 

 

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