1. 程式人生 > >Lattice DDR3 ip核仿真過程中的一些問題總結

Lattice DDR3 ip核仿真過程中的一些問題總結

font 問題 命令 cti 疑問 波形 總結 8bit 16bit

在官網下載DDR3 Demo後regenerate IP核,使用Active HDL對demo進行仿真,觀察波形,發現cmd_burst_cnt設置為0(突發長度32)時,每個寫命令會寫64個write_data,對此產生了疑問,印象中使用ISE 編寫XILINX SP6 DDR3的用戶邏輯時,突發長度為32會寫32個用戶數據進DDR。為了弄明白Lattice DDR3的這個問題,反復設置了幾次IP。

實驗一

1.當bl=8,DQ位寬設置為16,cmd_burst_cnt=0時;write_data位寬為64。

  觀察仿真波形可以看出,每發1次WRITE_CMD命令,write_data發送了64個64位的數據,發送的數據量為64*64bit。

                        em_ddr_addr增加了32*8=256(個)。

    (64*64= 16 * 256.)

2.當bl=8,DQ位寬設置為32,cmd_burst_cnt=0時;write_data位寬為128。

  觀察仿真波形可以看出,每發1次WRITE_CMD命令,write_data發送了64個128位的數據,發送的數據量為64*128bit。

                        em_ddr_addr增加了32*8=256(個)。

    (64*128= 32 * 256.)

3.當bl=8,DQ位寬設置為8,cmd_burst_cnt=0時;write_data位寬為32。

  觀察仿真波形可以看出,每發1次WRITE_CMD命令,write_data發送了64個32位的數據,發送的數據量為64*32bit。

                        em_ddr_addr增加了32*8=256(個)。

    (64*32= 8 * 256.)

通過以上實驗總結出:DQ位寬為8時,em_ddr_addr增加1,存入8bit數據;

          DQ位寬為16時,em_ddr_addr增加1,存入16bit數據;

          DQ位寬為32時,em_ddr_addr增加1,存入32bit數據;

        也就是DQ位寬是多少,Lattice DDR3的每個物理地址存入的數據就是多少bit。

  以上實驗弄明白了,Lattice DDR3的每個物理地址存多少bit數據的問題,以及cmd_burst_cnt=32時,為什麽每發一次WRITE_CMD就要發送64個數據(發64個數據才能將此次增加的DDR3的物理地址剛好寫滿)。 

接下來還有一個問題,就是設置IP核的時候有一個BL選項,可以設置為BL=8和BL=4.想弄明白不同的BL值有什麽影響,於是繼續做實驗。 

實驗二

1.設置BL=4,cmd_burst_cnt=0,DQ位寬=16.

  觀察仿真波形看到,每發一次WRITR_CMD,em_ddr_addr增加32*4=128個。說明BL=4時一個突發長度地址增加4,BL=8時一個突發長度地址增加8.

  從仿真波形也可以看到,datain_rdy是交替置1的,雖然write_data發送了64個64位的數據,但寫入DDR的只有32個。

  寫入DDR的數據量=32*64bit = 16*128,這與實驗一的結論是吻合的。

Lattice DDR3 ip核仿真過程中的一些問題總結