找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 6512|回復(fù): 4
收起左側(cè)

FPGA控制DDR2 Verilog HDL程序代碼

[復(fù)制鏈接]
ID:391745 發(fā)表于 2018-8-30 20:04 | 顯示全部樓層 |閱讀模式
FPGA控制DDR2程序代碼   讀寫數(shù)據(jù)
0.png

源程序如下:
  1. //---------------------------------------------------------------------------
  2. //--        文件名                :        Project_Ddr2.v
  3. //--        作者                :        ZIRCON
  4. //--        描述                :        DDR2讀寫測試模塊
  5. //--        修訂歷史        :        2017-01-01
  6. //---------------------------------------------------------------------------
  7. `include "Ddr2_Param.v"

  8. module Project_Ddr2
  9. (
  10.         /* 時(shí)鐘和復(fù)位信號 */
  11.         CLK_50M,RST_N,
  12.         /* DDR2接口 */
  13.         DDR2_ODT,DDR2_CS_N,DDR2_RAS_N,DDR2_CKE,DDR2_ADDR,DDR2_CLK,
  14.         DDR2_BA,DDR2_CAS_N,DDR2_WE_N,DDR2_CLK_N,
  15.         DDR2_DM,DDR2_DQ,DDR2_DQS
  16. );

  17. //---------------------------------------------------------------------------
  18. //--        外部端口聲明
  19. //---------------------------------------------------------------------------
  20. input                                                                                        CLK_50M;                                //時(shí)鐘信號
  21. input                                                                                        RST_N;                                //復(fù)位信號
  22. output                                                                                  DDR2_ODT;                        //DDR2片上終結(jié)信號
  23. output                                                                                  DDR2_CS_N;                        //DDR2片選信號
  24. output                                                                                  DDR2_CKE;                        //DDR2時(shí)鐘使能信號
  25. output        [        `MEM_ADDRWIDTH-1:0]                DDR2_ADDR;                        //DDR2地址總線
  26. output        [          `MEM_BAWIDTH-1:0]                DDR2_BA;                                //DDR2BANK信號
  27. output                                                                                DDR2_RAS_N;                        //DDR2行地址選擇信號
  28. output                                                                                DDR2_CAS_N;                        //DDR2列地址選擇信號
  29. output                                                                                DDR2_WE_N;                        //DDR2寫使能信號
  30. output        [          `MEM_DMWIDTH-1:0]                DDR2_DM;                                //DDR2數(shù)據(jù)掩膜信號
  31. inout                                                                                         DDR2_CLK;                        //DDR2時(shí)鐘信號
  32. inout                                                                                          DDR2_CLK_N;                        //DDR2時(shí)鐘反相信號
  33. inout                [          `MEM_DQWIDTH-1:0]                DDR2_DQ;                                //DDR2數(shù)據(jù)總線
  34. inout                [         `MEM_DQSWIDTH-1:0]                DDR2_DQS;                        //DDR2數(shù)據(jù)源同步信號

  35. //---------------------------------------------------------------------------
  36. //--        內(nèi)部端口聲明
  37. //---------------------------------------------------------------------------
  38. wire                                                                                        CLK_100M;                        //時(shí)鐘信號
  39. wire                                                                                        RST_B;                                //復(fù)位信號
  40. wire                                                                                        CLK_25M;                                //25MHz寫時(shí)鐘
  41. wire                                                                                        CLK_30M;                                //30MHz讀時(shí)鐘
  42. wire                                                                                        user_init_done;        //初始化完成信號
  43. wire                                                                                        user_phyclk;                //DDR2 IP核輸出時(shí)鐘,166.7MHz
  44. wire                                                                                        user_phyrst_n;                //DDR2 IP核同步后的復(fù)位信號
  45. wire                                                                                        user_wren;                        //寫使能信號
  46. wire                                                                                        user_wrreq;                        //寫FIFO請求信號
  47. wire                                                        [12:0]                user_wrdata;                //寫數(shù)據(jù)總線
  48. wire                                                                                        user_wrfull;                //寫FIFO滿標(biāo)志
  49. wire                                                                                        user_wrdone;                //寫完成標(biāo)志,只有一拍
  50. wire                                                                                        user_rden;                        //讀使能信號
  51. wire                                                                                        user_rdreq;                        //讀FIFO請求信號
  52. wire                                                        [15:0]                user_rddata;                //讀數(shù)據(jù)總線
  53. wire                                                                                        user_rdempty;                //讀FIFO空信號
  54. wire                                                                                        user_rddone;                //讀完成標(biāo)志,只有一拍

  55. //---------------------------------------------------------------------------
  56. //--        邏輯功能實(shí)現(xiàn)
  57. //---------------------------------------------------------------------------
  58. /* PLL IP核控制模塊 */
  59. Pll_Control                                                Pll_Control_Init
  60. (
  61.         .CLK_50M                                         (CLK_50M                                        ),                //時(shí)鐘輸入端口
  62.         .RST_N                                                (RST_N                                        ),                //復(fù)位輸入端口
  63.         .CLK_100M                                     (CLK_100M                                ),                //100M時(shí)鐘輸出
  64.         .CLK_25M                                                (CLK_25M                                        ),                //25M時(shí)鐘輸出
  65.         .CLK_30M                                                (CLK_30M                                        ),                //30M時(shí)鐘輸出
  66.         .RST_B                                                (RST_B                                        )                //復(fù)位輸出端口
  67. );

  68. /* 封裝了Ddr2 Ip核和Fifo Ip核的DDR2控制器模塊 */
  69. Fifo_Ddr2_Fifo fifo_ddr2_fifo_inst
  70. (
  71.         /* 時(shí)鐘和復(fù)位信號 */
  72.         .CLK_DDR2                                        (CLK_100M                                ),                //時(shí)鐘信號
  73.         .RST_N                                                (RST_B                                        ),                //復(fù)位信號
  74.         /* DDR2存儲器接口 */
  75.         .mem_odt                                                (DDR2_ODT                                ),                //DDR2片上終結(jié)信號
  76.         .mem_cs_n                                        (DDR2_CS_N                                ),                //DDR2片選信號
  77.         .mem_cke                                                (DDR2_CKE                                ),                //DDR2時(shí)鐘使能信號
  78.         .mem_addr                                        (DDR2_ADDR                                ),                //DDR2地址總線
  79.         .mem_ba                                                (DDR2_BA                                        ),                //DDR2BANK信號
  80.         .mem_ras_n                                        (DDR2_RAS_N                                ),                //DDR2行地址選擇信號
  81.         .mem_cas_n                                        (DDR2_CAS_N                                ),                //DDR2列地址選擇信號
  82.         .mem_we_n                                        (DDR2_WE_N                                ),                //DDR2寫使能信號
  83.         .mem_dm                                                (DDR2_DM                                        ),                //DDR2數(shù)據(jù)掩膜信號
  84.         .mem_clk                                                (DDR2_CLK                                ),                //DDR2時(shí)鐘信號
  85.         .mem_clk_n                                        (DDR2_CLK_N                                ),                //DDR2時(shí)鐘反相信號
  86.         .mem_dq                                                (DDR2_DQ                                        ),                //DDR2數(shù)據(jù)總線
  87.         .mem_dqs                                                (DDR2_DQS                                ),                //DDR2數(shù)據(jù)源同步信號
  88.         /* DDR2用戶接口 */
  89.         .user_init_done                        (user_init_done                ),                //初始化完成信號
  90.         .user_phyclk                                (user_phyclk                        ),                //DDR2 IP核輸出時(shí)鐘,166.7MHz
  91.         .user_phyrst_n                                (user_phyrst_n                        ),                //DDR2 IP核同步后的復(fù)位信號
  92.         .user_wrclk                                        (CLK_25M                                        ),                //寫數(shù)據(jù)進(jìn)FIFO工作時(shí)鐘
  93.         .user_rdclk                                        (CLK_30M                                        ),                //從FIFO讀數(shù)據(jù)工作時(shí)鐘
  94.         .user_wrdone                                (user_wrdone                        ),                //寫完成標(biāo)志,只有一拍
  95.         .user_rddone                                (user_rddone                        ),    //讀完成標(biāo)志,只有一拍
  96.         .user_wren                                        (user_wren                                ),                //寫使能信號
  97.         .user_rden                                        (user_rden                                ),                //讀使能信號
  98.         .user_wrfreq                                (user_wrreq                                ),                //寫FIFO請求信號
  99.         .user_wrffull                                (user_wrfull                        ),    //寫FIFO滿標(biāo)志
  100.         .user_wrfusedw                                (),                                                                //寫FIFO中的數(shù)據(jù)個(gè)數(shù)
  101.         .user_rdfreq                                (user_rdreq                                ),                //讀FIFO請求信號
  102.         .user_rdfempty                                (user_rdempty                        ),                //讀FIFO空信號
  103.         .user_rdfusedw                                (),                        //讀FIFO中的數(shù)據(jù)個(gè)數(shù)
  104.         .user_wrdata                                (user_wrdata                        ),                //寫數(shù)據(jù)總線
  105.         .user_rddata                                (user_rddata                        ),                //讀數(shù)據(jù)總線
  106.         .user_wrlen                                        (10'd256                                        ),                //寫突發(fā)長度
  107.         .user_rdlen                                        (10'd256                                        ),                //讀突發(fā)長度
  108.         .user_wrheadaddr                        (25'h0                                        ),                //寫操作首地址
  109.         .user_wrendaddr                        (25'd25                                        ),                //寫操作尾地址
  110.         .user_rdheadaddr                        (25'h0                                        ),                //讀操作首地址
  111.         .user_rdendaddr                        (25'd25                                        ),                //讀操作尾地址
  112.         .user_pingpongen                        (25'd0                                        )                //乒乓操作使能信號
  113. );

  114. Ddr2_Control                                        Ddr2_Control_Init
  115. (
  116.         .CLK_25M                                                (CLK_25M                                        ),                //時(shí)鐘端口
  117.         .CLK_30M                                                (CLK_30M                                        ),                //時(shí)鐘端口
  118.         .RST_B                                                (RST_B                                        ),                //復(fù)位端口
  119.         .user_phyclk                                (user_phyclk                        ),                //DDR2 IP核輸出時(shí)鐘,166.7MHz
  120.         .user_phyrst_n                                (user_phyrst_n                        ),                //DDR2 IP核同步后的復(fù)位信號
  121.         .user_wren                                        (user_wren                                ),                //寫使能信號
  122.         .user_wrreq                                        (user_wrreq                                ),                //寫FIFO請求信號
  123.         .user_wrdata                                (user_wrdata                        ),                //寫數(shù)據(jù)總線
  124.         .user_wrfull                                (user_wrfull                        ),                //寫FIFO滿標(biāo)志
  125.         .user_wrdone                                (user_wrdone                        ),                //寫完成標(biāo)志,只有一拍
  126.         .user_rden                                        (user_rden                                ),                //讀使能信號               
  127.         .user_rdreq                                        (user_rdreq                                ),                //讀FIFO請求信號
  128.         .user_rddata                                (user_rddata                        ),                //讀數(shù)據(jù)總線
  129.         .user_rdempty                                (user_rdempty                        ),                //讀FIFO空標(biāo)志
  130.         .user_rddone                                (user_rddone                        ),                //讀完成標(biāo)志
  131.         .rddata_cnt                                        (rddata_cnt                                )                //讀數(shù)據(jù)計(jì)數(shù)
  132. );

  133. endmodule
復(fù)制代碼

所有資料51hei提供下載:
Project_Ddr2.zip (52.11 KB, 下載次數(shù): 55)


回復(fù)

使用道具 舉報(bào)

ID:223257 發(fā)表于 2018-9-12 16:32 | 顯示全部樓層
,
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:92829 發(fā)表于 2018-9-21 06:02 | 顯示全部樓層
贊一個(gè)!!贊一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:499649 發(fā)表于 2019-3-28 10:01 | 顯示全部樓層
謝謝�。。�!
回復(fù)

使用道具 舉報(bào)

ID:670755 發(fā)表于 2019-12-22 22:12 | 顯示全部樓層
贊一個(gè)�。�!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表