{"id":10818,"date":"2025-11-25T22:29:50","date_gmt":"2025-11-25T14:29:50","guid":{"rendered":"http:\/\/www.hellofpga.com\/?p=10818"},"modified":"2025-11-25T22:30:21","modified_gmt":"2025-11-25T14:30:21","slug":"ddr3_test","status":"publish","type":"post","link":"http:\/\/www.hellofpga.com\/index.php\/2025\/11\/25\/ddr3_test\/","title":{"rendered":"\u57fa\u4e8eSmart Artix \u7684FPGA\u5b9e\u9a8c\u5341\u516d \u57fa\u4e8eFPGA\u7684DDR3\u5185\u5b58\u8bfb\u5199\u5b9e\u9a8c"},"content":{"rendered":"\n<p>\u672c\u7ae0\u8282\u5c06\u6f14\u793a\u5982\u4f55\u901a\u8fc7FPGA\u7684MIG\u6a21\u5757\u5b9e\u73b0DDR3\u5185\u5b58\u7684\u8bfb\u5199\uff0c\u4ece\u800c\u5b9e\u73b0FPGA\u7aef\u7684\u5927\u89c4\u6a21\u6570\u636e\u7f13\u5b58\u529f\u80fd\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6b64\u7ae0\u8282\u5185\u5bb9\u9002\u7528\u4e8eSmart Artix \u7684\u4e3b\u677f \uff0c\u5982\u662f\u672c\u7ad9\u5176\u4ed6\u677f\u5b50\u8bf7\u770b\u5bf9\u5e94\u677f\u5b50\u76ee\u5f55<\/strong><\/li>\n\n\n\n<li><strong>\u672c\u6587\u5728 vivado2018.3\u7248\u672c\u4e0a\u6f14\u793a<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-0601e0a65a6e3febe696a4482df6a40a\"><strong>\u5907\u6ce8\uff1a\u672c\u6587\u4e2d\u7684\u90e8\u5206\u5185\u5bb9\u53ca\u4ee3\u7801\u4f7f\u7528\u548c\u53c2\u8003\u4e86\u9ed1\u91d1FPGA\u7684\u6559\u7a0b\uff08\u5305\u62ecmem_burst.v \u548c mem_test.v\u90e8\u5206\u7684\u4ee3\u7801\u53ca\u5bf9\u5e94\u7684\u8bf4\u660e\u90e8\u5206\uff09\uff0c\u4e5f\u5728\u6b64\u8bf4\u660e<\/strong>\u3002<\/p>\n\n\n\n<p>\u5728\u505aFPGA\u9879\u76ee\u7684\u65f6\u5019\uff0c\u6211\u4eec\u7ecf\u5e38\u4f1a\u9047\u5230\u9700\u8981\u5c06\u5927\u91cf\u7684\u4e34\u65f6\u6570\u636e\u8fdb\u884c\u6682\u5b58\u7684\u60c5\u51b5\uff0c\u6570\u636e\u91cf\u8f83\u5c11\u7684\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u7247\u5185BRAM\u7684\u8d44\u6e90\u6765\u8fdb\u884c\u6682\u5b58\uff0c\u4f46\u662f\u7247\u5185BRAM\u8d44\u6e90\u4e00\u822c\u90fd\u975e\u5e38\u6709\u9650\uff0c\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u5c31\u9700\u8981\u8003\u8651\u5c06\u6570\u636e\u6682\u5b58\u5230\u5916\u90e8ram\uff0csdram\uff0c\u6216\u8005ddr\u4e0a\u4e86\uff0cram\u548csdram\u7684\u5b58\u50a8\u5bb9\u91cf\u901a\u5e38\u6709\u9650\uff0c\u5982\u679c\u8981\u5b58\u50a8\u7684\u6570\u636e\u6bd4\u8f83\u591a\uff0c\u5c31\u8be5ddr\u4e0a\u573a\u4e86\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e00\u3001\u5b9e\u9a8c\u5185\u5bb9\uff1a<\/strong><\/h2>\n\n\n\n<p>\u672c\u5b9e\u9a8c\u65e8\u5728\u901a\u8fc7FPGA\u7684MIG\u6a21\u5757\u5b9e\u73b0DDR3\u5185\u5b58\u7684\u8bfb\u5199\u64cd\u4f5c\uff0c\u4ece\u800c\u5b9e\u73b0FPGA\u7aef\u7684\u5927\u89c4\u6a21\u6570\u636e\u7f13\u5b58\u529f\u80fd\u3002\u5b9e\u9a8c\u5185\u5bb9\u5305\u62ec\u914d\u7f6eMIG\u6a21\u5757\u4e0eDDR3\u5185\u5b58\u7684\u8fde\u63a5\uff0c\u8fdb\u884c\u6570\u636e\u7684\u8bfb\u53d6\u4e0e\u5199\u5165\u64cd\u4f5c\uff0c\u5e76\u901a\u8fc7\u5b9e\u9a8c\u9a8c\u8bc1DDR3\u5728FPGA\u7cfb\u7edf\u4e2d\u7684\u6570\u636e\u5b58\u53d6\u6548\u7387\u4e0e\u7a33\u5b9a\u6027\u3002\uff08\u672c\u8282\u7684\u4fa7\u91cd\u70b9\u653e\u5728\u5982\u4f55\u901a\u8fc7MIG\u6a21\u5757\u53bb\u8c03\u7528DDR3\u82af\u7247\uff0c\u81f3\u4e8e\u66f4\u6df1\u7684\u539f\u7406\u548c\u7ec6\u8282\u5927\u5bb6\u6709\u5174\u8da3\u53ef\u4ee5\u81ea\u884c\u7814\u7a76\uff09<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e8c\u3001\u786c\u4ef6\u4ecb\u7ecd\uff1a<\/strong><\/h2>\n\n\n\n<p>\u6211\u4eec\u7684Smart Artix \u6700\u5c0f\u7cfb\u7edf\u677f\u4e0a\u4f7f\u7528\u4e86\u4e00\u7247Micron \u7684DDR3\u9897\u7c92 MT41K256M16TW\uff0cDDR\u5bb9\u91cf\u662f256Mx16bit  \u5373512MB\u3002 \u4f4d\u5bbd\u662f16\u4f4d\u7684\uff0c\u4e0eFPGA\u7684BANK34\u76f8\u8fde\u3002\u7535\u8def\u8bbe\u8ba1\u4e0a\u5df2\u4e25\u683c\u6309\u7167DDR3\u7684\u8bbe\u8ba1\u89c4\u8303\u505a\u4e86\u7b49\u957f\u63a7\u5236\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e09\u3001\u5de5\u7a0b\u521b\u5efa\uff1a<\/strong><\/h2>\n\n\n\n<p><strong>\u5de5\u7a0b\u521b\u5efa\u7684\u8fc7\u7a0b\u53ef\u4ee5\u53c2\u8003\u5b9e\u9a8c\u4e00\u4e2d\u7684\u5185\u5bb9\uff0c\u8fd9\u91cc\u4e0d\u8be6\u7ec6\u63cf\u8ff0\u4e86\u3002<a href=\"http:\/\/www.hellofpga.com\/index.php\/2023\/04\/27\/smart-zynq_sp_sl_01_led\/\"><\/a><a href=\"http:\/\/www.hellofpga.com\/index.php\/2025\/11\/14\/led_test\/\">\u57fa\u4e8eSmart Artix \u7684FPGA\u5b9e\u9a8c\u4e00 \u7528FPGA\u8d44\u6e90\u70b9\u4eae\u4e00\u4e2aLED\uff08\u5b8c\u6574\u56fe\u6587\uff09<\/a>&nbsp;(\u82af\u7247\u578b\u53f7\u9009XC7A50TFGG484-2)<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u56db\u3001\u6dfb\u52a0MIG\u6a21\u5757<\/strong><\/h2>\n\n\n\n<p>MIG IP&nbsp;\u63a7\u5236\u5668\u662f Xilinx \u4e3a\u7528\u6237\u63d0\u4f9b\u7684\u4e00\u4e2a DDR \u63a7\u5236\u7684 IP, \u8fd9\u6837\u7528\u6237\u5373\u4f7f\u4e0d\u4e86\u89e3 DDR \u7684\u63a7\u5236\u548c<br>\u8bfb\u5199\u65f6\u5e8f\u4e5f\u80fd\u901a\u8fc7 DDR \u63a7\u5236\u5668\u65b9\u4fbf\u7684\u8bfb\u5199 DDR \u5b58\u50a8\u5668\u30027 \u7cfb\u5217\u7684 DDR \u63a7\u5236\u5668\u7684\u89e3\u51b3\u65b9\u6848\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"665\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-40-1024x665.png\" alt=\"\" class=\"wp-image-10824\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-40-1024x665.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-40-300x195.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-40-768x499.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-40-1536x997.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-40.png 1548w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DDR3 \u63a7\u5236\u5668\u5305\u542b 3 \u90e8\u5206:<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u7528\u6237\u63a5\u53e3\u6a21\u5757(User interface Block),<\/li>\n\n\n\n<li>\u5b58\u50a8\u5668\u63a7\u5236\u6a21\u5757(MemoryController)<\/li>\n\n\n\n<li>DDR3 \u7684\u7269\u7406\u63a5\u53e3(Physical Layer)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\u6211\u4eec\u53ea\u9700\u8981\u5b66\u4f1a\u8c03\u5ea6\u4f7f\u7528MIG\u5c31\u80fd\u63a7\u5236DDR3\u7684\u6570\u636e\u8bfb\u5199\u4e86\uff0c \u5173\u4e8eMIG\u7684\u8be6\u7ec6\u5185\u5bb9\u53ef\u4ee5\u67e5\u770bxilinx\u5b98\u65b9\u7684\u6587\u6863 UG586\u3002<\/p>\n\n\n\n<p>1) \u7b2c\u4e00\u6b65\uff0c\u70b9\u51fbIP Catalog \u6253\u5f00\u6a21\u5757\u9009\u62e9\u5668\uff0c \u5728\u91cc\u9762\u7684\u641c\u7d22\u680f\u8f93\u5165MIG \uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u8df3\u51fa\u7b26\u5408\u7684 Memory Interface Generator \uff08MIG 7 Series)\u9009\u9879\uff0c\u53cc\u51fb\u5b83<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"390\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-41-1024x390.png\" alt=\"\" class=\"wp-image-10827\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-41-1024x390.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-41-300x114.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-41-768x293.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-41.png 1446w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>2) \u8fd9\u4e00\u9875\u4f1a\u663e\u793a\u5de5\u7a0b\u7684\u4e00\u4e9b\u4fe1\u606f\uff0c\u6211\u4eec\u76f4\u63a5\u70b9NEXT<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"753\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-42-1024x753.png\" alt=\"\" class=\"wp-image-10829\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-42-1024x753.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-42-300x221.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-42-768x565.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-42-1536x1130.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-42.png 1557w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>3\uff09\u9009\u62e9Create Design   \u4f60\u4e5f\u53ef\u4ee5\u5728\u8fd9\u4e2a\u9875\u9762\u6539\u53d8\u540d\u79f0\uff0c\u8fd9\u91cc\u6211\u4fdd\u7559\u9ed8\u8ba4\u7684\u5143\u4ef6\u540d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"751\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-43-1024x751.png\" alt=\"\" class=\"wp-image-10830\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-43-1024x751.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-43-300x220.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-43-768x563.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-43-1536x1127.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-43.png 1554w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>4\uff09 \u7b2c\u56db\u6b65\u9009\u62e9\u517c\u5bb9\u82af\u7247\uff0c \u8fd9\u91cc\u6839\u636e\u5b9e\u9645\u7684\u9700\u6c42\u6765\uff0c\u8fd9\u91cc\u6211\u4eec\u9ed8\u8ba4\u4e0d\u9009\uff0c\u76f4\u63a5NEXT<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"752\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-44-1024x752.png\" alt=\"\" class=\"wp-image-10831\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-44-1024x752.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-44-300x220.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-44-768x564.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-44-1536x1128.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-44.png 1553w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>5\uff09 \u82af\u7247\u7c7b\u578b \u9009\u62e9DDR3  \u7136\u540e\u76f4\u63a5\u4e0b\u4e00\u6b65NEXT<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"753\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-45-1024x753.png\" alt=\"\" class=\"wp-image-10832\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-45-1024x753.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-45-300x221.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-45-768x565.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-45-1536x1129.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-45.png 1563w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>6) Smart Artix \u7684Memory Part \u9009\u62e9\u6211\u4eec\u7684DDR3\u578b\u53f7&#8221;MT41K256M16XX-107&#8243;, Data Width\u6570\u636e\u5bbd\u5ea6\u9009\u62e916\u4f4d\u3002\u901f\u5ea6\u8303\u56f4\u6211\u4eec\u53ef\u4ee5\u4fdd\u7559\u9ed8\u8ba4\uff0c\u4e5f\u53ef\u4ee5\u6839\u636e\u7ed9\u51fa\u7684\u8303\u56f4\u8fdb\u884c\u8c03\u6574\uff0c \u8fd9\u91cc\u6211\u4eec\u6539\u62102500ps \u5bf9\u5e94400MHz<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"912\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-46-1024x912.png\" alt=\"\" class=\"wp-image-10833\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-46-1024x912.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-46-300x267.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-46-768x684.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-46.png 1530w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>7) \u9009\u62e9PLL\u8f93\u5165\u65f6\u949f\u7684\u9891\u7387\u4e3a200Mhz,  Controller Chip Select Pin \u6539\u6210Disable \uff08\u786c\u4ef6\u7535\u8def\u4e0a\u5df2\u7ecf\u4e0a\u62c9\u4f7f\u80fd\u4e86\uff09\uff0c\u5176\u4ed6\u8bbe\u7f6e\u4fdd\u6301\u9ed8\u8ba4\u4e0d\u53d8\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"895\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-48-1024x895.png\" alt=\"\" class=\"wp-image-10837\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-48-1024x895.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-48-300x262.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-48-768x671.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-48-1536x1343.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-48.png 1548w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>&nbsp;8\uff09 System&nbsp;Clock \u9009\u62e9\u5dee\u5206&#8221;No Buffer&#8221;,\uff08\u56e0\u4e3asys_clk\u4f7f\u7528\u5185\u90e8\u65f6\u949f\u6240\u4ee5\u4f7f\u7528no buffer\uff09Reference Clock \u56e0\u4e3a\u5f00\u53d1\u677f\u4e0a\u6ca1\u6709\u63d0\u4f9b\u5355\u72ec\u7684 DDR \u53c2\u8003\u65f6\u949f\uff0c\u8fd9\u91ccUse System Clock\u3002System Reset Polarity \u9009\u62e9 ACTIVE LOW \u4f4e\u7535\u5e73\u590d\u4f4d\u3002  <strong>\u8fd9\u91cc\u4e00\u5b9a\u8981 \u5f00\u542f\u82af\u7247\u5185\u90e8\u7684Vref <\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"942\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-51-1024x942.png\" alt=\"\" class=\"wp-image-10850\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-51-1024x942.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-51-300x276.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-51-768x706.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-51-1536x1413.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-51.png 1548w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>9\uff09BANK \u7684\u5185\u90e8\u7aef\u63a5\u963b\u6297\uff0c\u8fd9\u91cc\u4e3a50 ohms\uff0c\u4e0d\u7528\u4fee\u6539\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"231\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-49-1024x231.png\" alt=\"\" class=\"wp-image-10847\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-49-1024x231.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-49-300x68.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-49-768x173.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-49.png 1290w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>10\uff09 \u9009\u62e9Fixed Pin Out<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"918\" height=\"306\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-50.png\" alt=\"\" class=\"wp-image-10849\" style=\"width:525px;height:auto\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-50.png 918w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-50-300x100.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-50-768x256.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>11\uff09\u5728\u8fd9\u4e2a\u754c\u9762\u91cc\u8bbe\u7f6eDDR3\u7684\u6570\u636e\u3001\u5730\u5740\u548c\u63a7\u5236\u4fe1\u53f7\u7684FPGA\u7ba1\u811a\u5206\u914d\u548cIO\u7535\u5e73\u3002\u6211\u4eec\u53ef\u4ee5\u9009\u62e9\u624b\u52a8\u5206\u914d\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u70b9\u51fbRead XDC\/UCF \u6309\u952e\u76f4\u63a5\u5bfc\u5165\u6211\u4eec\u9884\u5148\u5206\u914d\u597d\u7684\u7ba1\u811a\u3002\uff08DDR\u7ba1\u811a\u5bf9\u5e94\u6587\u4ef6\uff1a<a href=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/Smart_Artix_DDRPIN.zip\" data-type=\"link\" data-id=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/Smart_Artix_DDRPIN.zip\">Smart_Artix_DDRPIN<\/a>\uff0c\u8bb0\u5f97\u8981\u89e3\u538b\u7f29\uff09 <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"745\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-52-1024x745.png\" alt=\"\" class=\"wp-image-10855\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-52-1024x745.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-52-300x218.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-52-768x559.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-52-1536x1118.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-52.png 1542w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>12\uff09\u6309\u4e0b Validate \u5bf9\u7ba1\u811a\u8bbe\u7f6e\u8fdb\u884c\u68c0\u67e5\uff0c \u5982\u679c\u6ca1\u6709\u9519\u8bef\u7684\u8bdd  \u4f1a\u663e\u793aCurrent Pinout is valid  \uff0c\u70b9OK \u5e76\u70b9NEXT \u7ee7\u7eed<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"738\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-53-1024x738.png\" alt=\"\" class=\"wp-image-10859\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-53-1024x738.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-53-300x216.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-53-768x554.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-53-1536x1107.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-53.png 1559w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>13\uff09\u8fd9\u91cc\u4f1a\u63d0\u793a\u4e00\u4e9b\u5176\u4ed6\u4fe1\u53f7\u7684\u8bbe\u7f6e\uff0c\u8fd9\u91cc\u4e0d\u7ba1\uff0c\u76f4\u63a5\u70b9\u51fbNext\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"734\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-54-1024x734.png\" alt=\"\" class=\"wp-image-10861\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-54-1024x734.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-54-300x215.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-54-768x551.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-54.png 1535w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>14\uff09\u663e\u793addr3 IP\u914d\u7f6e\u7684\u6982\u51b5\uff0c\u53ef\u5927\u81f4\u770b\u4e00\u4e0b\uff0c\u6ca1\u6709\u95ee\u9898\u5c31\u70b9\u51fbNext<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"751\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-55-1024x751.png\" alt=\"\" class=\"wp-image-10862\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-55-1024x751.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-55-300x220.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-55-768x563.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-55-1536x1126.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-55.png 1539w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>15\uff09\u9009\u62e9Accept\uff0c \u70b9\u51fbNext\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"740\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-56-1024x740.png\" alt=\"\" class=\"wp-image-10864\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-56-1024x740.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-56-300x217.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-56-768x555.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-56-1536x1111.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-56.png 1560w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>16\uff09 \u9009\u62e9NEXT<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"745\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-57-1024x745.png\" alt=\"\" class=\"wp-image-10865\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-57-1024x745.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-57-300x218.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-57-768x559.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-57-1536x1118.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-57.png 1542w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>17) \u9009\u62e9Generate \u751f\u6210\u6211\u4eec\u7684 DDR\u63a7\u5236\u6a21\u5757<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"735\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-58-1024x735.png\" alt=\"\" class=\"wp-image-10866\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-58-1024x735.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-58-300x215.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-58-768x551.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-58-1536x1102.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-58.png 1560w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>18\uff09\u4e4b\u540e\u6211\u4eec\u7684\u5de5\u7a0b\u91cc\u5c31\u591a\u4e86\u4e00\u4e2a DDR\u63a7\u5236\u5668\u7684IP<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"524\" height=\"426\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-59.png\" alt=\"\" class=\"wp-image-10868\" style=\"width:408px;height:auto\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-59.png 524w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-59-300x244.png 300w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e94\u3001\u6dfb\u52a0\u65f6\u949f\u6a21\u5757<\/strong><\/h2>\n\n\n\n<p>\u56e0\u4e3a\u6211\u4eec\u7684DDR MIG\u6a21\u5757\u9700\u8981\u4e00\u4e2a200M\u7684\u65f6\u949f\u6765\u9a71\u52a8\uff0c\u800c\u6211\u4eec\u677f\u5b50\u4e0a\u710a\u63a5\u7684\u6709\u6e90\u6676\u4f53\u662f50MHZ\uff0c\u8fd9\u91cc\u5c31\u9700\u8981\u7528\u65f6\u949f\u7ba1\u7406\u6a21\u5757MMCM\u6765\u751f\u6210\u6211\u4eec\u8981\u7684200Mhz\u9891\u7387<strong>\u3002<\/strong><\/p>\n\n\n\n<p>1)\u7b2c\u4e00\u6b65\uff0c\u70b9\u51fbIP Catalog \u6253\u5f00\u6a21\u5757\u9009\u62e9\u5668\uff0c \u5728\u91cc\u9762\u7684\u641c\u7d22\u680f\u8f93\u5165 CLOCKING \uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u8df3\u51fa\u7b26\u5408\u7684 Clocking Wizard\u9009\u9879\uff0c\u53cc\u51fb\u5b83<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"354\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-3.png\" alt=\"\" class=\"wp-image-138\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-3.png 791w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-3-300x134.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-3-768x344.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>2\uff09\u5728\u5f39\u51fa\u7684\u7a97\u53e3\u4e2d\u6211\u4eec\u5c06input Frequence \u8f93\u5165\u9891\u7387\u4fee\u6539\u4e3a\u677f\u5b50\u4e0a\u710a\u63a5\u768450M\u65f6\u949f\uff0c \u53f3\u8fb9\u6539\u4e3a\u5355\u7aef\u8f93\u5165<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"660\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-11-1024x660.png\" alt=\"\" class=\"wp-image-139\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-11-1024x660.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-11-300x193.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-11-768x495.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2021\/07\/image-11.png 1342w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>3\uff09\u5728output Clocks\u9009\u9879\u4e2d \u5c06clk_out1\u6539\u6210200m<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"780\" height=\"639\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-33.png\" alt=\"\" class=\"wp-image-10793\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-33.png 780w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-33-300x246.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-33-768x629.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>4\uff09\u5c06\u754c\u9762\u6258\u5230\u6700\u4e0b\u9762\uff0c\u56e0\u4e3a\u6211\u4eec\u8fd9\u91cc\u7684\u8981\u6c42\u5e76\u4e0d\u9ad8\uff0c\u6240\u4ee5\u628alocked\u9009\u9879\u53bb\u9664\uff0c\u8fd9\u91cc\u4fdd\u7559reset\u529f\u80fd\uff0c\u4f46\u662f\u5c06reset \u529f\u80fd\u6539\u6210\u4f4e\u7535\u5e73\u590d\u4f4d\uff08Active Low\uff09\u6700\u540e\u70b9\u51fbok\u751f\u6210\u6a21\u5757<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"924\" height=\"171\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-38.png\" alt=\"\" class=\"wp-image-10806\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-38.png 924w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-38-300x56.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-38-768x142.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u516d \u3001\u6dfb\u52a0DDR burst \u6a21\u5757<\/strong><\/h2>\n\n\n\n<p>\u867d\u8bf4\u6211\u4eec\u5728vivado\u4e2d\u914d\u7f6e\u5e76\u751f\u6210\u597d\u4e86mig\u6a21\u5757\uff0c\u4f46\u662fmig\u6a21\u5757\u91cc\u7559\u7ed9\u7528\u6237\u90e8\u5206\u7684\u63a5\u53e3\u4ecd\u7136\u8fc7\u4e8e\u590d\u6742\uff0c\u8bfb\u5199\u6570\u636e\u65f6\u7528\u7684\u63a5\u53e3\u4fe1\u53f7\u4e5f\u6bd4\u8f83\u591a\u3002\u8fd9\u91cc\u6211\u4eec\u6211\u4eec\u589e\u52a0\u4e00\u4e2amen_burst\u6a21\u5757\u6765\u5c01\u88c5\u6211\u4eec\u7684ddr\u529f\u80fd\uff0c\u8ba9\u7528\u6237\u63a5\u53e3\u66f4\u4e3a\u901a\u7528\u548c\u7b80\u5355\u3002<\/p>\n\n\n\n<p>\u901a\u8fc7mem_burst\u7a0b\u5e8f, \u7528\u6237\u8bfb\u5199DDR3\u6570\u636e\u5c31\u53d8\u5f97\u7b80\u5355\u3002\u5199\u5165\u6570\u636e\u7684\u65f6\u5019\uff0c\u53ea\u8981\u63a7\u5236\u5199\u8bf7\u6c42\u4fe1\u53f7wr_burst_req, \u5199\u957f\u5ea6wr_burst_len\uff0c\u5199\u5730\u5740wr_burst_add\u548c\u5199\u6570\u636ewr_burst_data\u3002\u540c\u6837\uff0c\u8bfb\u6570\u636e\u7684\u65f6\u5019\uff0c\u53ea\u8981\u63a7\u5236\u8bfb\u8bf7\u6c42\u4fe1\u53f7rd_burst_req, \u8bfb\u957f\u5ea6rd_burst_len\uff0c\u8bfb\u5730\u5740rd_burst_add,\u8bfb\u6570\u636e\u6709\u6548rd_burst_data_valid\u548c\u8bfb\u6570\u636erd_burst_data\u3002<\/p>\n\n\n\n<p><strong>\u4e0b\u5217mem_burst.v \u51fa\u5904 \uff1a\u9ed1\u91d1FPGA\u6559\u7a0b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><br>module mem_burst<br>#(<br>\tparameter MEM_DATA_BITS = 64,<br>\tparameter ADDR_BITS = 24<br>)<br>(<br>\tinput rst,                       <br>\tinput mem_clk,                          <br>\tinput rd_burst_req,                    <br>\tinput wr_burst_req,                  <br>\tinput[9:0] rd_burst_len,               <br>\tinput[9:0] wr_burst_len,                 <br>\tinput[ADDR_BITS - 1:0] rd_burst_addr,        <br>\tinput[ADDR_BITS - 1:0] wr_burst_addr,     <br>\toutput rd_burst_data_valid,                <br>\toutput wr_burst_data_req,                  <br>\toutput[MEM_DATA_BITS - 1:0] rd_burst_data,   <br>\tinput[MEM_DATA_BITS - 1:0] wr_burst_data,   <br>\toutput rd_burst_finish,                      <br>\toutput wr_burst_finish,                     <br>\toutput burst_finish,                       <br>\t<br>\t\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<br>   output[ADDR_BITS-1:0]                       app_addr,<br>   output[2:0]                                 app_cmd,<br>   output                                      app_en,<br>   output [MEM_DATA_BITS-1:0]                  app_wdf_data,<br>   output                                      app_wdf_end,<br>   output [MEM_DATA_BITS\/8-1:0]                app_wdf_mask,<br>   output                                      app_wdf_wren,<br>   input [MEM_DATA_BITS-1:0]                   app_rd_data,<br>   input                                       app_rd_data_end,<br>   input                                       app_rd_data_valid,<br>   input                                       app_rdy,<br>   input                                       app_wdf_rdy,<br>   input                                       ui_clk_sync_rst,  <br>   input                                       init_calib_complete<br>);<br><br>assign app_wdf_mask = {MEM_DATA_BITS\/8{1'b0}};<br><br>localparam IDLE = 3'd0;<br>localparam MEM_READ = 3'd1;<br>localparam MEM_READ_WAIT = 3'd2;<br>localparam MEM_WRITE  = 3'd3;<br>localparam MEM_WRITE_WAIT = 3'd4;<br>localparam READ_END = 3'd5;<br>localparam WRITE_END = 3'd6;<br>localparam MEM_WRITE_FIRST_READ = 3'd7;<br><br>reg[2:0] state;\t<br>reg[9:0] rd_addr_cnt;<br>reg[9:0] rd_data_cnt;<br>reg[9:0] wr_addr_cnt;<br>reg[9:0] wr_data_cnt;<br><br>reg[2:0] app_cmd_r;<br>reg[ADDR_BITS-1:0] app_addr_r;<br>reg app_en_r;<br>reg app_wdf_end_r;<br>reg app_wdf_wren_r;<br>assign app_cmd = app_cmd_r;<br>assign app_addr = app_addr_r;<br>assign app_en = app_en_r;<br>assign app_wdf_end = app_wdf_end_r;<br>assign app_wdf_data = wr_burst_data;<br>assign app_wdf_wren = app_wdf_wren_r &amp; app_wdf_rdy;<br>assign rd_burst_finish = (state == READ_END);<br>assign wr_burst_finish = (state == WRITE_END);<br>assign burst_finish = rd_burst_finish | wr_burst_finish;<br><br>assign rd_burst_data = app_rd_data;<br>assign rd_burst_data_valid = app_rd_data_valid;<br><br>assign wr_burst_data_req = (state == MEM_WRITE) &amp; app_wdf_rdy ;<br><br>always@(posedge mem_clk or posedge rst)<br>begin<br>\tif(rst)<br>\tbegin<br>\t\tapp_wdf_wren_r &lt;= 1'b0;<br>\tend<br>\telse if(app_wdf_rdy)<br>\t\tapp_wdf_wren_r &lt;= wr_burst_data_req;<br>end<br><br>always@(posedge mem_clk or posedge rst)<br>begin<br>\tif(rst)<br>\tbegin<br>\t\tstate &lt;= IDLE;<br>\t\tapp_cmd_r &lt;= 3'b000;<br>\t\tapp_addr_r &lt;= 0;<br>\t\tapp_en_r &lt;= 1'b0;<br>\t\trd_addr_cnt &lt;= 0;<br>\t\trd_data_cnt &lt;= 0;<br>\t\twr_addr_cnt &lt;= 0;<br>\t\twr_data_cnt &lt;= 0;<br>\t\tapp_wdf_end_r &lt;= 1'b0;<br>\tend<br>\telse if(init_calib_complete ===  1'b1)<br>\tbegin<br>\t\tcase(state)<br>\t\t\tIDLE:<br>\t\t\tbegin<br>\t\t\t\tif(rd_burst_req)<br>\t\t\t\tbegin<br>\t\t\t\t\tstate &lt;= MEM_READ;<br>\t\t\t\t\tapp_cmd_r &lt;= 3'b001;<br>\t\t\t\t\tapp_addr_r &lt;= {rd_burst_addr,3'd0};<br>\t\t\t\t\tapp_en_r &lt;= 1'b1;<br>\t\t\t\tend<br>\t\t\t\telse if(wr_burst_req)<br>\t\t\t\tbegin<br>\t\t\t\t\tstate &lt;= MEM_WRITE;<br>\t\t\t\t\tapp_cmd_r &lt;= 3'b000;<br>\t\t\t\t\tapp_addr_r &lt;= {wr_burst_addr,3'd0};<br>\t\t\t\t\tapp_en_r &lt;= 1'b1;<br>\t\t\t\t\twr_addr_cnt &lt;= 0;<br>\t\t\t\t\tapp_wdf_end_r &lt;= 1'b1;<br>\t\t\t\t\twr_data_cnt &lt;= 0;<br>\t\t\t\tend<br>\t\t\tend<br>\t\t\tMEM_READ:<br>\t\t\tbegin<br>\t\t\t\tif(app_rdy)<br>\t\t\t\tbegin<br>\t\t\t\t\tapp_addr_r &lt;= app_addr_r + 8;<br>\t\t\t\t\tif(rd_addr_cnt == rd_burst_len - 1)<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\tstate &lt;= MEM_READ_WAIT;<br>\t\t\t\t\t\trd_addr_cnt &lt;= 0;<br>\t\t\t\t\t\tapp_en_r &lt;= 1'b0;<br>\t\t\t\t\tend<br>\t\t\t\t\telse<br>\t\t\t\t\t\trd_addr_cnt &lt;= rd_addr_cnt + 1;<br>\t\t\t\tend<br>\t\t\t\t<br>\t\t\t\tif(app_rd_data_valid)<br>\t\t\t\tbegin<br>\t\t\t\t\tif(rd_data_cnt == rd_burst_len - 1)<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\trd_data_cnt &lt;= 0;<br>\t\t\t\t\t\tstate &lt;= READ_END;<br>\t\t\t\t\tend<br>\t\t\t\t\telse<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\trd_data_cnt &lt;= rd_data_cnt + 1;<br>\t\t\t\t\tend<br>\t\t\t\tend<br>\t\t\tend<br>\t\t\tMEM_READ_WAIT:<br>\t\t\tbegin<br>\t\t\t\tif(app_rd_data_valid)<br>\t\t\t\tbegin<br>\t\t\t\t\tif(rd_data_cnt == rd_burst_len - 1)<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\trd_data_cnt &lt;= 0;<br>\t\t\t\t\t\tstate &lt;= READ_END;<br>\t\t\t\t\tend<br>\t\t\t\t\telse<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\trd_data_cnt &lt;= rd_data_cnt + 1;<br>\t\t\t\t\tend<br>\t\t\t\tend<br>\t\t\tend<br>\t\t\tMEM_WRITE_FIRST_READ:<br>\t\t\tbegin<br>\t\t\t\tapp_en_r &lt;= 1'b1;<br>\t\t\t\tstate &lt;= MEM_WRITE;<br>\t\t\t\twr_addr_cnt &lt;= 0;<br>\t\t\tend<br>\t\t\tMEM_WRITE:<br>\t\t\tbegin<br>\t\t\t\tif(app_rdy)<br>\t\t\t\tbegin<br>\t\t\t\t\tapp_addr_r &lt;= app_addr_r + 'b1000;<br>\t\t\t\t\tif(wr_addr_cnt == wr_burst_len - 1)<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\tapp_wdf_end_r &lt;= 1'b0;<br>\t\t\t\t\t\tapp_en_r &lt;= 1'b0;<br>\t\t\t\t\tend<br>\t\t\t\t\telse<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\twr_addr_cnt &lt;= wr_addr_cnt + 1;<br>\t\t\t\t\tend<br>\t\t\t\tend<br>\t\t\t\t\t<br>\t\t\t\tif(wr_burst_data_req)<br>\t\t\t\tbegin<br>\t\t\t\t\t<br>\t\t\t\t\tif(wr_data_cnt == wr_burst_len - 1)<br>\t\t\t\t\tbegin\t<br>\t\t\t\t\t\tstate &lt;= MEM_WRITE_WAIT;<br>\t\t\t\t\tend<br>\t\t\t\t\telse<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\twr_data_cnt &lt;= wr_data_cnt + 1;<br>\t\t\t\t\tend<br>\t\t\t\tend<br>\t\t\t\t<br>\t\t\tend<br>\t\t\tREAD_END:<br>\t\t\t\tstate &lt;= IDLE;<br>\t\t\tMEM_WRITE_WAIT:<br>\t\t\tbegin<br>\t\t\t\tif(app_rdy)<br>\t\t\t\tbegin<br>\t\t\t\t\tapp_addr_r &lt;= app_addr_r + 'b1000;<br>\t\t\t\t\tif(wr_addr_cnt == wr_burst_len - 1)<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\tapp_wdf_end_r &lt;= 1'b0;<br>\t\t\t\t\t\tapp_en_r &lt;= 1'b0;<br>\t\t\t\t\t\tif(app_wdf_rdy) <br>\t\t\t\t\t\t\tstate &lt;= WRITE_END;<br>\t\t\t\t\tend<br>\t\t\t\t\telse<br>\t\t\t\t\tbegin<br>\t\t\t\t\t\twr_addr_cnt &lt;= wr_addr_cnt + 1;<br>\t\t\t\t\tend<br>\t\t\t\tend<br>\t\t\t\telse if(~app_en_r &amp; app_wdf_rdy)<br>\t\t\t\t\tstate &lt;= WRITE_END;<br>\t\t\t\t<br>\t\t\tend<br>\t\t\tWRITE_END:<br>\t\t\t\tstate &lt;= IDLE;<br>\t\t\tdefault:<br>\t\t\t\tstate &lt;= IDLE;<br>\t\tendcase<br>\tend<br>end<br>endmodule <\/pre>\n\n\n\n<p>mem_burst.v\u7a0b\u5e8f\u7684\u529f\u80fd\u5c31\u662f\u628a\u5916\u90e8\u7684burst\u8bfb\u8bf7\u6c42\u548c\u5199\u8bf7\u6c42\u8f6c\u5316\u6210DDR3 IP\u7528\u6237\u63a5\u53e3\u7684\u6240\u9700\u7684\u4fe1\u53f7\u548c\u65f6\u5e8f\u3002\u4e0b\u9762\u5206\u522b\u662f\u8bfb\u548c\u5199\u7684\u6d41\u7a0b:<\/p>\n\n\n\n<p>DDR Burst\u8bfb:<br>\u5f53\u7a0b\u5e8f\u5728IDLE\u72b6\u6001\u63a5\u6536\u5230\u8bfb\u8bf7\u6c42(rd_burst_req\u4e3a\u9ad8)\u65f6, \u4f1a\u5411DDR3 IP\u7684\u7528\u6237\u63a5\u53e3\u53d1\u9001\u7b2c\u4e00\u4e2a\u6570\u636e\u8bfb\u547d\u4ee4\uff08\u8bfb\u547d\u4ee4\u3001\u5730\u5740\u3001\u547d\u4ee4\u6709\u6548\uff09\u4fe1\u53f7\u3002\u5e76\u4f1a\u8fdb\u5165MEM_READ\u72b6\u6001\uff0c \u5728MEM_READ\u72b6\u6001\u91cc\uff0c\u5982\u679c\u5224\u65adDDR3 IP\u7684\u7528\u6237\u63a5\u53e3\u7a7a\u95f2\u7684\u8bdd\uff0c\u4f1a\u53d1\u9001\u5269\u4f59\u7684\u6570\u636e\u8bfb\u547d\u4ee4\uff08\u5730\u5740\u589e\u52a0\uff09\uff0c\u53d1\u9001\u5b8c\u6210\u8f6c\u5230MEM_READ_WAIT\u72b6\u6001\u3002\u53e6\u5916\u5728\u8fd9\u4e2aMEM_READ\u72b6\u6001\u91cc\uff0c\u8fd8\u9700\u8981\u5224\u65adDDR3 IP\u4eceDDR3\u91cc\u8bfb\u51fa\u7684\u6570\u636e\u662f\u5426\u6709\u6548\u6765\u7edf\u8ba1\u8bfb\u51fa\u7684\u6570\u636e\u662f\u5426\u4e3a\u8bfbburst\u957f\u5ea6\u3002\u5728MEM_READ_WAIT\u72b6\u6001\u91cc\u8bfb\u53d6\u8bfbburst\u957f\u5ea6\u7684DDR3\u7684\u6570\u636e\u3002\u6570\u636e\u5168\u90e8\u8bfb\u51fa\u5b8c\u6210\u540e\u8fdb\u5165READ_END\u72b6\u6001\uff0c\u518d\u8fd4\u56deIDLE\u72b6\u6001\u3002<\/p>\n\n\n\n<p>DDR Burst\u5199:<br>\u5f53\u7a0b\u5e8f\u5728IDLE\u72b6\u6001\u63a5\u6536\u5230\u5199\u8bf7\u6c42(wr_burst_req\u4e3a\u9ad8)\u65f6, \u4f1a\u5411DDR3 IP\u7684\u7528\u6237\u63a5\u53e3\u53d1\u9001\u7b2c\u4e00\u4e2a\u6570\u636e\u5199\u547d\u4ee4\uff08\u5199\u547d\u4ee4\u3001\u5730\u5740\u3001\u547d\u4ee4\u6709\u6548\uff09\u4fe1\u53f7\u3002\u5e76\u4f1a\u8fdb\u5165MEM_WRITE\u72b6\u6001, \u5728MEM_WRITE\u72b6\u6001\u91cc\uff0c\u5982\u679c\u5224\u65adDDR3 IP\u7684\u7528\u6237\u63a5\u53e3\u7a7a\u95f2\u7684\u8bdd\uff0c\u4f1a\u53d1\u9001\u5269\u4f59\u7684\u6570\u636e\u5199\u547d\u4ee4\uff08\u5730\u5740\u589e\u52a0\uff09\uff0c\u540c\u65f6\u5728\u8fd9\u4e2aMEM_WRITE\u72b6\u6001\u91cc\uff0c\u8fd8\u4f1a\u5411DDR3 IP\u7684\u6570\u636eFIFO\u91cc\u5199\u5165\u8981\u5199\u5230DDR\u7684\u6570\u636e\u3002\u5f53\u5199\u5165\u5230DDR3 IP\u7684FIFO\u7684\u6570\u636e\u957f\u5ea6\u957f\u5ea6\u4e3a\u5199burst\u957f\u5ea6\u65f6\u8f6c\u5230MEM_WRITE_WAIT\u72b6\u6001\u3002\u5728MEM_WRITE_WAIT\u72b6\u6001\uff0c\u5224\u65adDDR\u6570\u636e\u5199\u547d\u4ee4\u662f\u5426\u53d1\u9001\u5b8c\u6210\uff0c\u53d1\u9001\u5b8c\u6210\u5c31\u8fdb\u5165WRITE_END\u72b6\u6001\uff0c\u518d\u8fd4\u56deIDLE\u72b6\u6001\u3002<br>\u8fd9\u91cc\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5411DDR3 IP\u7684\u7528\u6237\u63a5\u53e3\u53d1\u9001\u5199\u547d\u4ee4\u548c\u5199\u5165DDR\u7684\u6570\u636e\u662f\u72ec\u7acb\u7684\uff0c\u56e0\u4e3a\u5199\u5165\u5230DDR\u7684\u6570\u636e\u662f\u9700\u8981\u5148\u5b58\u50a8\u5230DDR3 IP\u7684FIFO\u4e2d\u3002\u53ea\u8981app_wdf_rdy\u6709\u6548\uff0c\u5c31\u53ef\u4ee5\u5f80DDR3 IP\u91cc\u5199\u5165\u6570\u636e\u3002\u5199\u5165\u5230DDR3\u7684\u6570\u636e\u9700\u8981\u63d0\u524d\u51c6\u5907\u597d\uff0c\u8fd9\u91cc\u6709\u4e00\u4e2awr_burst_data_req\u4fe1\u53f7\u6765\u8bf7\u6c42\u7528\u6237\u63d0\u524d\u51c6\u5907\u8981\u5199\u5165\u7684DDR3\u7684\u6570\u636e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e03\u3001\u6dfb\u52a0 DDR3\u7684\u6d4b\u8bd5\u7a0b\u5e8f<\/strong><\/h2>\n\n\n\n<p><strong>\u4e0b\u5217mem_test.v \u51fa\u5904 \uff1a\u9ed1\u91d1FPGA\u6559\u7a0b<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">module mem_test<br>#(<br>\tparameter MEM_DATA_BITS = 64,<br>\tparameter ADDR_BITS = 24<br>)<br>(<br>\tinput rst,        <br>\tinput mem_clk,                  <br>\toutput reg rd_burst_req,                     <br>\toutput reg wr_burst_req,                     <br>\toutput reg[9:0] rd_burst_len,                  <br>\toutput reg[9:0] wr_burst_len,                <br>\toutput reg[ADDR_BITS - 1:0] rd_burst_addr,     <br>\toutput reg[ADDR_BITS - 1:0] wr_burst_addr,      <br>\tinput rd_burst_data_valid,                <br>\tinput wr_burst_data_req,                   <br>\tinput[MEM_DATA_BITS - 1:0] rd_burst_data,  <br>\toutput[MEM_DATA_BITS - 1:0] wr_burst_data,    <br>\tinput rd_burst_finish,                     <br>\tinput wr_burst_finish,                      <br><br>\toutput reg error<br>);<br>localparam IDLE = 3'd0;<br>localparam MEM_READ = 3'd1;<br>localparam MEM_WRITE  = 3'd2;<br><br>reg[2:0] state;<br>reg[7:0] wr_cnt;<br>reg[MEM_DATA_BITS - 1:0] wr_burst_data_reg;<br>assign wr_burst_data = wr_burst_data_reg;<br>reg[7:0] rd_cnt;<br><br>always@(posedge mem_clk or posedge rst)<br>begin<br>\tif(rst)<br>\t\terror &lt;= 1'b0;<br>\telse<br>\t    if(error==0)begin<br>\t\t      error &lt;= (state == MEM_READ) &amp;&amp; rd_burst_data_valid &amp;&amp; (rd_burst_data != {(MEM_DATA_BITS\/8){rd_cnt}});<br>\t\tend<br>end<br>always@(posedge mem_clk or posedge rst)<br>begin<br>\tif(rst)<br>\tbegin<br>\t\twr_burst_data_reg &lt;= {MEM_DATA_BITS{1'b0}};<br>\t\twr_cnt &lt;= 8'd0;<br>\tend<br>\telse if(state == MEM_WRITE)<br>\tbegin<br>\t\tif(wr_burst_data_req)<br>\t\t\tbegin<br>\t\t\t\twr_burst_data_reg &lt;= {(MEM_DATA_BITS\/8){wr_cnt}};<br>\t\t\t\twr_cnt &lt;= wr_cnt + 8'd1;<br>\t\t\tend<br>\t\telse if(wr_burst_finish)<br>\t\t\twr_cnt &lt;= 8'd0;<br>\tend<br>end<br><br>always@(posedge mem_clk or posedge rst)<br>begin<br>\tif(rst)<br>\tbegin<br>\t\trd_cnt &lt;= 8'd0;<br>\tend<br>\telse if(state == MEM_READ)<br>\tbegin<br>\t\tif(rd_burst_data_valid)<br>\t\t\tbegin<br>\t\t\t\trd_cnt &lt;= rd_cnt + 8'd1;<br>\t\t\tend<br>\t\telse if(rd_burst_finish)<br>\t\t\trd_cnt &lt;= 8'd0;<br>\tend<br>\telse<br>\t\trd_cnt &lt;= 8'd0;<br>end<br><br>always@(posedge mem_clk or posedge rst)<br>begin<br>\tif(rst)<br>\tbegin<br>\t\tstate &lt;= IDLE;<br>\t\twr_burst_req &lt;= 1'b0;<br>\t\trd_burst_req &lt;= 1'b0;<br>\t\trd_burst_len &lt;= 10'd128;<br>\t\twr_burst_len &lt;= 10'd128;<br>\t\trd_burst_addr &lt;= 0;<br>\t\twr_burst_addr &lt;= 0;<br>\tend<br>\telse<br>\tbegin<br>\t\tcase(state)<br>\t\t\tIDLE:<br>\t\t\tbegin<br>\t\t\t\tstate &lt;= MEM_WRITE;<br>\t\t\t\twr_burst_req &lt;= 1'b1;<br>\t\t\t\twr_burst_len &lt;= 10'd128;<br>\t\t\tend<br>\t\t\tMEM_WRITE:<br>\t\t\tbegin<br>\t\t\t\tif(wr_burst_finish)<br>\t\t\t\tbegin<br>\t\t\t\t\tstate &lt;= MEM_READ;<br>\t\t\t\t\twr_burst_req &lt;= 1'b0;<br>\t\t\t\t\trd_burst_req &lt;= 1'b1;<br>\t\t\t\t\trd_burst_len &lt;= 10'd128;<br>\t\t\t\t\trd_burst_addr &lt;= wr_burst_addr;<br>\t\t\t\tend<br>\t\t\tend<br>\t\t\tMEM_READ:<br>\t\t\tbegin<br>\t\t\t\tif(rd_burst_finish)<br>\t\t\t\tbegin<br>\t\t\t\t\tstate &lt;= MEM_WRITE;<br>\t\t\t\t\twr_burst_req &lt;= 1'b1;<br>\t\t\t\t\twr_burst_len &lt;= 10'd128;<br>\t\t\t\t\trd_burst_req &lt;= 1'b0;<br>\t\t\t\t\twr_burst_addr &lt;= wr_burst_addr + 128;<br>\t\t\t\tend<br>\t\t\tend<br>\t\t\tdefault:<br>\t\t\t\tstate &lt;= IDLE;<br>\t\tendcase<br>\tend<br>end<br><br>endmodule<\/pre>\n\n\n\n<p>mem_test.v\u6d4b\u8bd5\u7a0b\u5e8f\u91cc\u4e3b\u8981\u5b9e\u73b0ddr\u7684burst\u8bfb\u548cburst\u5199\u7684\u529f\u80fd, \u7a0b\u5e8f\u91cc\u4ea7\u751f\u8bfb\u5199\u8bf7\u6c42\u4fe1\u53f7, \u5730\u5740\u548c\u6d4b\u8bd5\u6570\u636e\u5e76\u6821\u9a8c\u8bfb\u548c\u5199\u7684\u6570\u636e\u662f\u5426\u6b63\u786e, \u8fd9\u91ccburst\u7684\u6570\u636e\u957f\u5ea6\u662f128\u3002\u5982\u679cDDR\u7684\u8bfb\u5199\u6570\u636e\u9519\u8bef(\u5199\u5165\u7684\u6570\u636e\u548c\u8bfb\u51fa\u7684\u6570\u636e\u4e0d\u4e00\u81f4\uff09\uff0cerror\u4fe1\u53f7\u4f1a\u8f93\u51fa\u9ad8\u7535\u5e73\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u516b\u3001\u6dfb\u52a0\u9876\u5c42\u6a21\u5757top.v<\/strong><\/h2>\n\n\n\n<p><strong>1)  \u6dfb\u52a0top.v\u9876\u5c42\u6a21\u5757<\/strong><\/p>\n\n\n\n<p><strong>\u4e0b\u5217top.v \u51fa\u5904 \uff1a\u9ed1\u91d1FPGA\u6559\u7a0b<\/strong>, \u4fee\u6539\u5176\u4e2d\u7684\u5730\u5740\u4f4d\u4ece28\u4f4d\u4fee\u6539\u621029\u4f4d\uff0c\u4ee5\u652f\u6301256Mx16bit\uff08512MB\uff09\u7684DDR<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">`timescale 1ps\/1ps<br><br>module top<br>(<br>   \/\/ Inouts<br>   inout [15:0]                       ddr3_dq,<br>   inout [1:0]                        ddr3_dqs_n,<br>   inout [1:0]                        ddr3_dqs_p,<br><br>   \/\/ Outputs<br>   output [14:0]                     ddr3_addr,<br>   output [2:0]                      ddr3_ba,<br>   output                            ddr3_ras_n,<br>   output                            ddr3_cas_n,<br>   output                            ddr3_we_n,<br>   output                            ddr3_reset_n,<br>   output [0:0]                      ddr3_ck_p,<br>   output [0:0]                      ddr3_ck_n,<br>   output [0:0]                      ddr3_cke,<br>   <br>   output [1:0]                      ddr3_dm,<br>   <br>   output [0:0]                      ddr3_odt,<br>   <br><br>   \/\/system clock 50Mhz on board<br>   input                             sys_clk, <br>   output                           init_calib_complete,<br>   output                           error,<br>   input                           rst_n<br> );<br><br>  localparam nCK_PER_CLK           = 4;<br>  localparam DQ_WIDTH              = 16;<br>  localparam ADDR_WIDTH            = 29;<br>  localparam DATA_WIDTH            = 16;<br>  localparam PAYLOAD_WIDTH         = 16;<br><br>  localparam APP_DATA_WIDTH        = 2 * nCK_PER_CLK * PAYLOAD_WIDTH;<br>  localparam APP_MASK_WIDTH        = APP_DATA_WIDTH \/ 8;<br><br>      <br><br>  \/\/ Wire declarations<br>      <br>  wire [ADDR_WIDTH-1:0]                 app_addr;<br>  wire [2:0]                            app_cmd;<br>  wire                                  app_en;<br>  wire                                  app_rdy;<br>  wire [APP_DATA_WIDTH-1:0]             app_rd_data;<br>  wire                                  app_rd_data_end;<br>  wire                                  app_rd_data_valid;<br>  wire [APP_DATA_WIDTH-1:0]             app_wdf_data;<br>  wire                                  app_wdf_end;<br>  wire [APP_MASK_WIDTH-1:0]             app_wdf_mask;<br>  wire                                  app_wdf_rdy;<br>  wire                                  app_sr_active;<br>  wire                                  app_ref_ack;<br>  wire                                  app_zq_ack;<br>  wire                                  app_wdf_wren;<br><br>  wire                                  clk;<br>  wire                                  rst;<br><br><br>  wire clk_200Mhz;<br> clk_wiz_0 clk_refm0<br> (<br>    \/\/ Clock out ports<br>    .clk_out1(clk_200Mhz),         \/\/ output clk_out1<br>    \/\/ Status and control signals<br>    .resetn(rst_n),             \/\/ input reset<br>   \/\/ Clock in ports<br>    .clk_in1(sys_clk)        \/\/ input clk_in1<br>  ); <br><br><br> mig_7series_0 u_ddr3<br> (  <br>    \/\/ Memory interface ports<br>    .ddr3_addr                      (ddr3_addr),<br>    .ddr3_ba                        (ddr3_ba),<br>    .ddr3_cas_n                     (ddr3_cas_n),<br>    .ddr3_ck_n                      (ddr3_ck_n),<br>    .ddr3_ck_p                      (ddr3_ck_p),<br>    .ddr3_cke                       (ddr3_cke),<br>    .ddr3_ras_n                     (ddr3_ras_n),<br>    .ddr3_we_n                      (ddr3_we_n),<br>    .ddr3_dq                        (ddr3_dq),<br>    .ddr3_dqs_n                     (ddr3_dqs_n),<br>    .ddr3_dqs_p                     (ddr3_dqs_p),<br>    .ddr3_reset_n                   (ddr3_reset_n),<br>    .init_calib_complete            (init_calib_complete),<br>    <br>    .ddr3_dm                        (ddr3_dm),<br>    .ddr3_odt                       (ddr3_odt),<br>    \/\/ Application interface ports<br>    .app_addr                       (app_addr),<br>    .app_cmd                        (app_cmd),<br>    .app_en                         (app_en),<br>    .app_wdf_data                   (app_wdf_data),<br>    .app_wdf_end                    (app_wdf_end),<br>    .app_wdf_wren                   (app_wdf_wren),<br>    .app_rd_data                    (app_rd_data),<br>    .app_rd_data_end                (app_rd_data_end),<br>    .app_rd_data_valid              (app_rd_data_valid),<br>    .app_rdy                        (app_rdy),<br>    .app_wdf_rdy                    (app_wdf_rdy),<br>    .app_sr_req                     (1'b0),<br>    .app_ref_req                    (1'b0),<br>    .app_zq_req                     (1'b0),<br>    .app_sr_active                  (app_sr_active),<br>    .app_ref_ack                    (app_ref_ack),<br>    .app_zq_ack                     (app_zq_ack),<br>    .ui_clk                         (clk),<br>    .ui_clk_sync_rst                (rst),<br>    <br>    .app_wdf_mask                   (app_wdf_mask),<br>    <br>    <br>    \/\/ System Clock Ports<br>    .sys_clk_i                    (clk_200Mhz),<br>    <br>    .sys_rst                        (rst_n)<br>);<br>\/\/ End of User Design top instance<br><br><br>wire wr_burst_data_req;<br>wire wr_burst_finish;<br>wire rd_burst_finish;<br>wire rd_burst_req;<br>wire wr_burst_req;<br>wire[9:0] rd_burst_len;<br>wire[9:0] wr_burst_len;<br>wire[28:0] rd_burst_addr;<br>wire[28:0] wr_burst_addr;<br>wire rd_burst_data_valid;<br>wire[48* 8 - 1 : 0] rd_burst_data;<br>wire[48* 8 - 1 : 0] wr_burst_data;<br> mem_burst<br>#(<br>\t.MEM_DATA_BITS(APP_DATA_WIDTH),<br>\t.ADDR_BITS(ADDR_WIDTH)<br>)<br>mem_burst_m0<br>(<br>    .rst(rst),                                <br>    .mem_clk(clk),                          <br>    .rd_burst_req(rd_burst_req),              <br>    .wr_burst_req(wr_burst_req),               <br>    .rd_burst_len(rd_burst_len),              <br>    .wr_burst_len(wr_burst_len),             <br>    .rd_burst_addr(rd_burst_addr),             <br>    .wr_burst_addr(wr_burst_addr),              <br>    .rd_burst_data_valid(rd_burst_data_valid),  <br>    .wr_burst_data_req(wr_burst_data_req),      <br>    .rd_burst_data(rd_burst_data),              <br>    .wr_burst_data(wr_burst_data),             <br>    .rd_burst_finish(rd_burst_finish),         <br>    .wr_burst_finish(wr_burst_finish),         <br>    .burst_finish(),                             <br>    <br>    \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<br>    .app_addr(app_addr),<br>    .app_cmd(app_cmd),<br>    .app_en(app_en),<br>    .app_wdf_data(app_wdf_data),<br>    .app_wdf_end(app_wdf_end),<br>    .app_wdf_mask(app_wdf_mask),<br>    .app_wdf_wren(app_wdf_wren),<br>    .app_rd_data(app_rd_data),<br>    .app_rd_data_end(app_rd_data_end),<br>    .app_rd_data_valid(app_rd_data_valid),<br>    .app_rdy(app_rdy),<br>    .app_wdf_rdy(app_wdf_rdy),<br>    .ui_clk_sync_rst(),  <br>    .init_calib_complete(init_calib_complete)<br>);<br> mem_test<br>#(<br>\t.MEM_DATA_BITS(APP_DATA_WIDTH),<br>\t.ADDR_BITS(ADDR_WIDTH)<br>)<br> mem_test_m0<br>(<br>\t.rst(rst),                                <br>\t.mem_clk(clk),                               <br>\t.rd_burst_req(rd_burst_req),                       <br>\t.wr_burst_req(wr_burst_req),                         <br>\t.rd_burst_len(rd_burst_len),                   <br>\t.wr_burst_len(wr_burst_len),                     <br>\t.rd_burst_addr(rd_burst_addr),        <br>\t.wr_burst_addr(wr_burst_addr),        <br>\t.rd_burst_data_valid(rd_burst_data_valid),                 <br>\t.wr_burst_data_req(wr_burst_data_req),                    <br>\t.rd_burst_data(rd_burst_data),  <br>\t.wr_burst_data(wr_burst_data),    <br>\t.rd_burst_finish(rd_burst_finish),                    <br>\t.wr_burst_finish(wr_burst_finish),                     <br><br>\t.error(error)<br>);<br><br>wire probe0;<br>wire probe1;<br>wire probe2;<br>wire probe3;<br>wire probe4;<br>wire probe5;<br>wire probe6;<br>wire probe7;<br>wire [127 : 0] probe8;<br>wire [127 : 0] probe9;<br>wire [27 : 0] probe10;<br><br><br>ila_0 u_ila_0(<br>    .clk(clk),<br>    .probe0(probe0),<br>    .probe1(probe1),<br>    .probe2(probe2),<br>    .probe3(probe3),<br>    .probe4(probe4),<br>    .probe5(probe5),<br>    .probe6(probe6),<br>    .probe7(probe7),<br>    .probe8(probe8),<br>    .probe9(probe9),<br>    .probe10(probe10)\t\t\t\t\t\t<br>);<br>assign probe0 = rd_burst_req;<br>assign probe1 = wr_burst_req;<br>assign probe2 = rd_burst_data_valid;<br>assign probe3 = wr_burst_data_req;<br>assign probe4 = rd_burst_finish;<br>assign probe5 = wr_burst_finish;<br>assign probe6 = error;<br>assign probe7 = init_calib_complete;<br>assign probe8 = wr_burst_data[127:0];<br>assign probe9 = rd_burst_data[127:0];<br>assign probe10 = app_addr[27:0];<br><br><br>endmodule<br><\/pre>\n\n\n\n<p>top.v\u7a0b\u5e8f\u91cc\u4f8b\u5316mem_burst\u6a21\u5757\u3001mem_test\u6a21\u5757\u548cDDR3 IP\u6a21\u5757\uff0c \u65f6\u949f\u6a21\u5757\uff0c\u53e6\u5916\u5b9e\u4f8b\u5316\u4e86\u4e00\u4e2aila_0 IP\uff0c\u7528\u6765\u89c2\u5bdfDDR Burst\u8bfb\u548cBurst\u5199\u7684\u6570\u636e\u3001\u5730\u5740\u548c\u63a7\u5236\u4fe1\u53f7\u3002<\/p>\n\n\n\n<p><strong>2. \u4e3a\u4e86\u65b9\u4fbf\u89c2\u5bdf\u7ed3\u679c\uff0c\u6240\u4ee5\u6211\u4eec\u8fd8\u9700\u8981\u5411\u5de5\u7a0b\u4e2d\u518d\u6dfb\u52a0\u4e00\u4e2aila\u7684IP\u3002<\/strong><\/p>\n\n\n\n<p> \u5728vivado\u8f6f\u4ef6\u4e2d\uff0c\u6253\u5f00IP\u6838\u76ee\u5f55\uff08IP Catalog\uff09\uff0c\u641c\u7d22ILA\uff0c\u5982\u4e0b\u56fe\u6240\u793a<br><img loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"508\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2022\/10\/image-76.png 937w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2022\/10\/image-76-300x163.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2022\/10\/image-76-768x416.png 768w\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2022\/10\/image-76.png\" alt=\"\"><\/p>\n\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<p>Probe\u7684\u6570\u91cf\u4e3a11\uff0c\u5c31\u662f11\u4e2a\u91c7\u6837\u901a\u9053\uff0c\u91c7\u6837\u7684\u6570\u636e\u6df1\u5ea6\u4e3a4096, \u91c7\u6837\u6df1\u5ea6\u8d8a\u6df1\uff0c\u91c7\u6837\u7684\u6570\u636e\u91cf\u8d8a\u5927\uff0c\u4f46\u4f1a\u6d88\u8017\u66f4\u591a\u7684FPGA\u903b\u8f91\u8d44\u6e90\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"727\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-73-1024x727.png\" alt=\"\" class=\"wp-image-10931\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-73-1024x727.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-73-300x213.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-73-768x545.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-73-1536x1090.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-73.png 1554w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>\u518d\u5bf9\u524d\u97628\u4e2a\u901a\u9053\u8bbe\u7f6e\u6570\u636e\u5bbd\u5ea6\uff0c\u8fd9\u91cc\u56e0\u4e3a\u6211\u4eec\u6bcf\u4e2a\u901a\u9053\u53ea\u662f\u91c7\u6837\u4e00\u4e2abit\u7684\u4fe1\u53f7\uff0c\u6240\u4ee5\u6570\u636e\u5bbd\u5ea6\u90fd\u4e3a1\u3002<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"537\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-74-1024x537.png\" alt=\"\" class=\"wp-image-10932\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-74-1024x537.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-74-300x157.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-74-768x403.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-74.png 1086w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>\u518d\u8bbe\u7f6e\u540e\u97628~10\u901a\u9053\u7684\u6570\u636e\u5bbd\u5ea6\uff0c8\u901a\u9053\u548c9\u901a\u9053\u8bbe\u7f6e\u6210128\u6570\u636e\u5bbd\u5ea6\uff0c\u7528\u6765\u91c7\u6837DDR \u8bfb\u5199\u6570\u636e\uff0c 10\u901a\u9053\u8bbe\u7f6e\u621028\uff0c\u7528\u6765\u91c7\u6837DDR\u7684\u5730\u5740\u3002\u70b9\u51fbOK\u5b8c\u6210\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"327\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-75-1024x327.png\" alt=\"\" class=\"wp-image-10933\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-75-1024x327.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-75-300x96.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-75-768x245.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-75.png 1062w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p><strong>3\uff09\u6dfb\u52a0XDC\u7ba1\u811a\u7ea6\u675f<\/strong><\/p>\n\n\n\n<p>\u5728\u7ea6\u675f\u4e2d\u628aerror\u4fe1\u53f7\u8fde\u63a5\u5230\u5f00\u53d1\u677f\u7684LED1\u4e0a\uff0c\u5982\u679cerror\u4e3a\u9ad8\u7535\u5e73\uff0c\u8bf4\u660e\u6570\u636e\u51fa\u9519\uff0c\u5982\u679cerror\u4e3a\u4f4e\u7535\u5e73\uff0cLED1\u7184\u706d\uff0c\u8bf4\u660eDDR3\u8bfb\u5199\u6b63\u5e38\u3002\u53e6\u5916\u8bbe\u7f6e\u7cfb\u7edf\u7684\u590d\u4f4d\u4fe1\u53f7rst_n\u548cFPGA\u65f6\u949f\u8f93\u5165sys_clk\uff0c\u8be6\u7ec6\u7ea6\u675f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Clock Constraints<br>set_property PACKAGE_PIN Y18 [get_ports sys_clk]<br>set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]<br># Define the clock period for 50 MHz<br>create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports sys_clk]<br><br># Reset Constraints (active-low reset)<br>set_property PACKAGE_PIN T20 [get_ports rst_n]<br>set_property IOSTANDARD LVCMOS33 [get_ports rst_n]<br><br># LED Constraints<br>set_property PACKAGE_PIN R17 [get_ports error]<br>set_property IOSTANDARD LVCMOS33 [get_ports error]<br>set_property PACKAGE_PIN P16 [get_ports init_calib_complete]<br>set_property IOSTANDARD LVCMOS33 [get_ports init_calib_complete]<br><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e5d\u3001\u4e0b\u8f7d\u548c\u6d4b\u8bd5<\/h2>\n\n\n\n<p>\u6700\u540e\u6211\u4eec\u7f16\u8bd1\u7a0b\u5e8f\u751f\u6210\u548c\u7efc\u5408\u5de5\u7a0b\uff0c\u7136\u540e\u4e0b\u8f7dbit\u6587\u4ef6\u5230FPGA\uff0c\u89c2\u5bdf\u7ed3\u679c<\/p>\n\n\n\n<p>\u4e0b\u8f7d\u540evivado\u4f1a\u81ea\u52a8\u6253\u5f00ila\u7684\u6ce2\u5f62\u8c03\u8bd5\u754c\u9762\uff0c\u70b9\u51fb\u201cRun trigger for ILA core\u201d \u6309\u94ae\u8fd0\u884cila\u91c7\u96c6\u6570\u636e\u3002\u53ef\u4ee5\u4ece\u4e2d\u770b\u5230write \u548cread \u7684\u7ed3\u679c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-76-1024x429.png\" alt=\"\" class=\"wp-image-10937\" srcset=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-76-1024x429.png 1024w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-76-300x126.png 300w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-76-768x321.png 768w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-76-1536x643.png 1536w, http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/image-76.png 1749w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53e6\u5916\u6211\u4eec\u4e5f\u53ef\u4ee5\u68c0\u67e5\u5f00\u53d1\u677f\u4e0a\u7684LED1\u548cLED2\u662f\u5426\u70b9\u4eae\uff0c\u6765\u5224\u65ad\u7cfb\u7edf\u7684\u5de5\u4f5c\u72b6\u6001\uff1a\n<ul class=\"wp-block-list\">\n<li>LED1\u4eae\u8bf4\u660eerror\u4fe1\u53f7\u4e3a\u9ad8\u8bc1\u660e\u8bfb\u5199\u51fa\u95ee\u9898\u4e86\uff0c\u5982\u679cLED1\u7184\u706d\u8bf4\u660eDDR3\u8bfb\u5199\u6570\u636e\u6b63\u786e\u3002<\/li>\n\n\n\n<li>LED2\u4eae\u8bf4\u660eDDR\u521d\u59cb\u5316\u6210\u529f<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u5982\u679c\u5de5\u4f5c\u90fd\u662f\u6b63\u5e38\u7684 \u90a3\u4e48LED1\u5e94\u8be5\u662f\u4e00\u76f4\u7184\u706d\u7684\u72b6\u6001\uff0cLED2\u662f\u70b9\u4eae\u7684\u72b6\u6001<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u8fd9\u91cc\u7b80\u5355\u8bf4\u660e\u4e00\u4e0b\u51e0\u4e2a\u9ed1\u91d1\u6559\u7a0b\u4e2d\u6ca1\u6709\u63d0\u5230\u7684\u70b9\uff1a<\/strong><\/h2>\n\n\n\n<p><strong>1\uff09DDR\u6570\u636e\u4f4d\u5bbd\u4e0eMIG\u7684\u4f20\u8f93\u5173\u7cfb<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6211\u4eec\u786c\u4ef6\u7684DDR\u6570\u636e\u4f4d\u5bbd\u662f16-bit\uff0c\u4f46\u7531\u4e8eMIG\uff08\u7684\u5de5\u4f5c\u65b9\u5f0f\uff0c\u5b9e\u9645\u6bcf\u4e2a\u65f6\u949f\u5468\u671f\u4f20\u8f93\u7684\u6570\u636e\u662f\uff1a\n<ul class=\"wp-block-list\">\n<li><code>nCK_PER_CLK = 4<\/code>\uff08\u6bcf\u65f6\u949f\u5468\u671f\u4f20\u8f934\u6b21\u6570\u636e\uff09<\/li>\n\n\n\n<li>\u53cc\u8fb9\u6cbf\u91c7\u6837\uff1a\u6bcf\u4e2a\u65f6\u949f\u5468\u671f\u4e24\u6b21\u91c7\u6837\uff08\u4e0a\u5347\u6cbf\u548c\u4e0b\u964d\u6cbf\uff09<\/li>\n\n\n\n<li>16-bit\u5b9e\u9645\u4f4d\u5bbd\uff08DDR\u63a5\u53e3\u7684\u786c\u4ef6\u5bbd\u5ea6\uff09<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6240\u4ee5\uff0c\u6700\u7ec8\u6bcf\u4e2a\u65f6\u949f\u5468\u671f\u5b9e\u9645\u4f20\u8f93\u7684\u6570\u636e\u4f4d\u5bbd\u662f\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>4 (nCK_PER_CLK) * 2 (\u53cc\u8fb9\u6cbf) * 16 bits = 128 bits<\/code>\uff08\u537316\u4e2a\u5b57\u8282\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2\uff09\u5730\u5740\u7684\u7a81\u53d1\u8d77\u59cb\u5730\u5740\u8981\u6c42<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5730\u5740\u6b65\u957f\u4e3a8\u5b57\u8282\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u56e0\u4e3a\u6bcf\u4e2a\u65f6\u949f\u5468\u671f\u4f20\u8f9316\u4e2a\u5b57\u8282\uff0c\u6240\u4ee5\u7a81\u53d1\u8bfb\u5199\u64cd\u4f5c\u7684\u5730\u5740\u6700\u597d\u662f8\u5b57\u8282\u5bf9\u9f50\u7684\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u5730\u5740\u4e0d\u662f8\u5b57\u8282\u5bf9\u9f50\uff0c\u4f1a\u5bfc\u81f4\uff1a\n<ul class=\"wp-block-list\">\n<li>\u8bfb\u64cd\u4f5c\u9700\u8981\u505a\u989d\u5916\u7684\u9996\u5b57\u8282\u5904\u7406\u3002<\/li>\n\n\n\n<li>\u5199\u64cd\u4f5c\u9700\u8981\u505a\u5b57\u8282\u63a9\u7801\u5904\u7406\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u8bbe\u8ba1\u4e0a\u7684\u8981\u6c42\uff1a<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u786e\u4fdd\u7a81\u53d1\u5730\u5740\u8d77\u59cb\u4e3a8\u5b57\u8282\u7684\u500d\u6570\uff0c\u4e14\u6bcf\u6b21\u5730\u5740\u9012\u589e8\u5b57\u8282\u3002<\/li>\n\n\n\n<li>\u9ed1\u91d1\u4ee3\u7801\u4e2d\u7684\u5e95\u5c42burst\u5730\u5740\u8bbe\u8ba1\u5373\u6309\u71678\u5b57\u8282\u5bf9\u9f50\uff0c\u5373\u6bcf\u6b21\u52a08\u5b57\u8282\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3\uff09mem_test\u6a21\u5757\u7684\u8bfb\u5199\u6d4b\u8bd5\u6570\u636e<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>mem_test<\/strong>\u6a21\u5757\u4e2d\uff0c\u6bcf\u4e2a\u65f6\u949f\u5468\u671f\u91cc16\u4e2a\u5b57\u8282\u4f20\u8f93\u7684\u5185\u5bb9\u90fd\u662f\u76f8\u540c\u7684\uff0c\u5373 \u4ece\u8ba1\u6570\u5668\u768400-01\u52307e\uff0c\u521a\u597d128\u4e2a\u6570\u636e\uff0c\u5bf9\u5e94\u7684\u6570\u636e\u5982\u4e0b\uff1a\n<ul class=\"wp-block-list\">\n<li>00000000000000000000000000000000<\/li>\n\n\n\n<li>01010101010101010101010101010101    <\/li>\n\n\n\n<li>&#8230;&#8230;&#8230;<\/li>\n\n\n\n<li>7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4\uff09\u6570\u636e\u5199\u5165\u4e0e\u9519\u8bef\u68c0\u6d4b<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6bcf\u6b21\u5199\u5165128\u5b57\u8282\u6570\u636e\u540e\uff0cmem_test\u6a21\u5757\u4f1a\u7acb\u5373\u5c06\u8fd9\u4e9b\u6570\u636e\u8bfb\u56de\u5e76\u8fdb\u884c\u9a8c\u8bc1\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u53d1\u73b0\u6570\u636e\u9519\u8bef\uff0c<code>error<\/code>\u4fe1\u53f7\u4f1a\u88ab\u62c9\u9ad8\u3002\n<ul class=\"wp-block-list\">\n<li><strong>\u6ce8\u610f<\/strong>\uff1a\u4e00\u65e6<code>error<\/code>\u4fe1\u53f7\u88ab\u62c9\u9ad8\uff0c\u540e\u7eed\u7684\u4efb\u4f55\u6570\u636e\u90fd\u4f1a\u88ab\u8ba4\u4e3a\u6709\u95ee\u9898\uff0c\u4e14<code>error<\/code>\u4fe1\u53f7\u4f1a\u4fdd\u6301\u9ad8\u7535\u5e73\uff0c\u8fd9\u548c\u9ed1\u91d1\u539f\u4ee3\u7801\u6709\u6240\u4e0d\u540c\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5)\u7a81\u53d1\u5730\u5740\u9012\u589e\u4e0e\u5faa\u73af\u8bbf\u95ee\u5185\u5b58\u7a7a\u95f4<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6bcf\u5b8c\u6210\u4e00\u6b21128\u5b57\u8282\u7684\u5199\u8bfb\u6821\u9a8c\u540e\uff0cmem_test\u6a21\u5757\u4f1a\u5c06<strong>\u7a81\u53d1\u7684\u8d77\u59cb\u5730\u5740<\/strong>\u589e\u52a0128\u5b57\u8282\uff0c\u7136\u540e\u5f00\u59cb\u4e0b\u4e00\u8f6e\u7684\u8bfb\u5199\u6821\u9a8c\u3002<\/li>\n\n\n\n<li>\u8fd9\u6837\u4e0d\u65ad\u904d\u5386\u6574\u4e2aDDR\u7684\u5185\u5b58\u5730\u5740\u7a7a\u95f4\uff0c\u5b9e\u73b0\u5bf9DDR\u82af\u7247\u7684\u5168\u8303\u56f4\u8bfb\u5199\u6d4b\u8bd5\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6\uff09mem_test\u4e2d\u7684\u5730\u5740\u4e0eMIG\u5730\u5740\u7684\u5173\u7cfb<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5728mem_test\u4e2d\u4f7f\u7528\u7684\u5730\u5740\u4e0e\u6700\u7ec8\u9001\u7ed9MIG\u7684\u5730\u5740\u5e76\u4e0d\u76f8\u540c\u3002\u5177\u4f53\u6765\u8bf4\uff1a\n<ul class=\"wp-block-list\">\n<li>\u5728\u8fd9\u4e2a\u4ee3\u7801\u4e2dMIG\u5730\u5740\u7684\u5b9a\u4e49\u662f\uff1a <code>app_addr_r &lt;= {rd_burst_addr, 3'd0};<\/code><\/li>\n\n\n\n<li>\u8fd9\u91cc\u7684<code>3'd0<\/code>\u8868\u793a3\u4e2a\u6700\u4f4e\u6709\u6548\u4f4d\u4e3a0\u3002\u8fd9\u4e2a\u504f\u79fb\u91cf\u662f\u4e3a\u4e86\u5bf9\u9f508\u5b57\u8282\u6570\u636e\u4f20\u8f93\uff0c\u786e\u4fdd\u6bcf\u6b21\u6570\u636e\u64cd\u4f5c\u90fd\u4ee58\u4e3a\u6b65\u957f\u3002<\/li>\n\n\n\n<li>\u8fd9\u548c\u6211\u4eec\u63d0\u5230\u7684128\u5b57\u8282\u4f20\u8f93\u662f\u76f8\u5173\u7684\uff1a\u6bcf\u6b21\u64cd\u4f5c\u7684\u5730\u5740\u63098\u5bf9\u9f50\uff0c\u4fdd\u8bc1\u6570\u636e\u5728MIG\u4f20\u8f93\u65f6\u80fd\u591f\u6b63\u786e\u5bf9\u63a5\u3002\uff088&#215;16=128\uff09<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u5341\u3001VIVADO\u5b98\u65b9\u7684DDR demo<\/strong><\/h2>\n\n\n\n<p>\u5176\u5b9eVIVADO \u5b98\u65b9\u6709\u51c6\u5907\u4e00\u4e2aDDR EXAMPLE demo\uff0c \u8fd9\u4e2ademo\u4f1a\u6bd4\u672c\u5de5\u7a0b\u66f4\u590d\u6742\u4e00\u4e9b\uff0c\u5927\u5bb6\u5982\u679c\u611f\u5174\u8da3\u53ef\u4ee5\u81ea\u884c\u6253\u5f00\u67e5\u770b\uff0c <\/p>\n\n\n\n<p>\u5728\u6211\u4eec\u5de5\u7a0b\u4e2d\u53f3\u952emig\u7684IP\u6a21\u5757\uff0c\u5728\u5f39\u51fa\u7684\u4e0b\u62c9\u83dc\u5355\u91cc\u9009\u62e9Open IP Example Design\u5373\u53ef\u6253\u5f00\u65b0\u7684\u53c2\u8003\u5de5\u7a0b\uff0c\u8f6f\u4ef6\u5df2\u7ecf\u81ea\u52a8\u7f16\u5199\u4e86ddr\u7684\u6d4b\u8bd5\u7a0b\u5e8f\u3001\u7ba1\u811a\u5b9a\u4e49\u6587\u4ef6xdc\u6587\u4ef6\u548c\u4eff\u771f\u7a0b\u5e8f\u3002\u5927\u5bb6\u611f\u5174\u8da3\u7684\u53ef\u4ee5\u81ea\u884c\u7814\u7a76\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e0b\u5217\u662f\u672c\u6b21\u5b9e\u9a8c\u7684\u5b8c\u6574\u5de5\u7a0b\uff1a<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u672c\u6587\u7684\u5b8c\u6574\u5de5\u7a0b\u4e0b\u8f7d:<a href=\"http:\/\/www.hellofpga.com\/wp-content\/uploads\/2025\/11\/16_DDR3_TEST.zip\">16_DDR3_TEST<\/a> Smart Artix 50T\uff09<\/strong><\/li>\n\n\n\n<li><strong>VIVADO\u7684\u7248\u672c\uff1a2018.3<\/strong><\/li>\n\n\n\n<li><strong>\u5de5\u7a0b\u521b\u5efa\u76ee\u5f55\uff1aE:\\Smart_Artix\\4_Code\\16_DDR3_TEST<\/strong><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u7ae0\u8282\u5c06\u6f14\u793a\u5982\u4f55\u901a\u8fc7FPGA\u7684MIG\u6a21\u5757\u5b9e\u73b0DDR3\u5185\u5b58\u7684\u8bfb\u5199\uff0c\u4ece\u800c\u5b9e\u73b0FPGA\u7aef\u7684\u5927\u89c4\u6a21\u6570\u636e\u7f13\u5b58\u529f\u80fd\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-10818","post","type-post","status-publish","format-standard","hentry","category-smart-artix"],"views":469,"_links":{"self":[{"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/posts\/10818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/comments?post=10818"}],"version-history":[{"count":46,"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/posts\/10818\/revisions"}],"predecessor-version":[{"id":10947,"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/posts\/10818\/revisions\/10947"}],"wp:attachment":[{"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/media?parent=10818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/categories?post=10818"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.hellofpga.com\/index.php\/wp-json\/wp\/v2\/tags?post=10818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}