閱讀本文前,請先閱讀:
(1)【教程】Xilinx Vivado/Vitis 2020.1創建最簡單的MicroBlaze工程運行Hello World C語言程序(不使用外部DDR3內存),并固化到SPI Flash
https://blog.csdn.net/ZLK1214/article/details/111824576
(2)Xilinx 2020.1 MIG核讀寫DDR3內存,新建工程時配置MIG核的完整步驟
https://blog.csdn.net/ZLK1214/article/details/111349678
添加了DDR3內存以后,程序既可以運行在BRAM里面,也可以運行在DDR3內存里面。但如果運行在DDR3內存里面,固化起來會比較麻煩,需要借助SREC SPI Bootloader。
建立帶DDR3內存的MicroBlaze工程的方法很簡單:以不帶DDR3的工程(1)為基礎,只需要在Clocking Wizard和Processor System Reset之間插入一個MIG IP核就可以了。
![poYBAGIMpkCARqygAAKR15cvwcw769.png](https://file.elecfans.com/web2/M00/30/CE/poYBAGIMpkCARqygAAKR15cvwcw769.png)
原本,Clocking Wizard輸出的時鐘是100MHz,是直接接到Processor System Reset上的。
修改后,兩者中間插入了一個MIG。Clocking Wizard的時鐘輸出變成了200MHz,給MIG提供時鐘。在MIG的內部由PLL倍頻到400MHz驅動外部DDR3內存,然后再分頻到100MHz從ui_clk引腳輸出出來,給Processor System Reset提供時鐘。
修改后,MicroBlaze的運行頻率沒有變,仍然是100MHz。
建立工程的時候一定要小心使用Vivado的自動連線的功能,操作不當的話很容易產生兩個Processor System Reset。
下面詳細說明一下工程的建立步驟。
首先在空白Block Design里面添加Clocking Wizard和MIG IP核:
![poYBAGIMpkGAR328AABGZ1HHdO0264.png](https://file.elecfans.com/web2/M00/30/CE/poYBAGIMpkGAR328AABGZ1HHdO0264.png)
修改Clocking Wizard的配置:
![pYYBAGIMpkOAU62sAAEQHRPvHsY680.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpkOAU62sAAEQHRPvHsY680.png)
MIG的詳細配置請參考上面的文章(2),關鍵配置單獨挑出來說明一下:
![poYBAGIMpkWACjr5AAIa-A20Ydk009.png](https://file.elecfans.com/web2/M00/30/CE/poYBAGIMpkWACjr5AAIa-A20Ydk009.png)
![pYYBAGIMpkaAc_EBAACgta7GR24335.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpkaAc_EBAACgta7GR24335.png)
現在可以添加MicroBlaze核了,添加后點擊Run Block Automation,請注意時鐘的選擇:
![pYYBAGIMpkiAe9bNAAINzfM07EA633.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpkiAe9bNAAINzfM07EA633.png)
![poYBAGIMpkqAFY2JAAFqNTj8Z-Y373.png](https://file.elecfans.com/web2/M00/30/CE/poYBAGIMpkqAFY2JAAFqNTj8Z-Y373.png)
點擊Run Connection Automation,通過一個新建的AXI SmartConnect將MIG的S_AXI和MicroBlaze連接起來:
![pYYBAGIMpk2AQK7LAAFIsfmJ1No020.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpk2AQK7LAAFIsfmJ1No020.png)
自動連接剩余的接口:
![poYBAGIMplGAcAI9AAFbT5hAWDU717.png](https://file.elecfans.com/web2/M00/30/CE/poYBAGIMplGAcAI9AAFbT5hAWDU717.png)
![pYYBAGIMplSAGFXkAAGkJ3l4nd4042.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMplSAGFXkAAGkJ3l4nd4042.png)
添加AXI Uartlite串口,用于printf打?。?/p>
![pYYBAGIMplWAJaSOAAG6n8o5fIc509.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMplWAJaSOAAG6n8o5fIc509.png)
Run Connection Automation,將Uartlite與MicroBlaze連在一起:
![poYBAGIMpleAL18mAAD-3WnCWCA451.png](https://file.elecfans.com/web2/M00/30/CE/poYBAGIMpleAL18mAAD-3WnCWCA451.png)
最終連線結果:
![pYYBAGIMplqAAR57AAHvKU1DdII940.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMplqAAR57AAHvKU1DdII940.png)
地址分配:
![poYBAGIMplyAXOkKAAEWpxuS6kQ525.png](https://file.elecfans.com/web2/M00/30/CF/poYBAGIMplyAXOkKAAEWpxuS6kQ525.png)
引腳配置:
![pYYBAGIMpl2AYcRsAAEADikOE14680.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpl2AYcRsAAEADikOE14680.png)
綜合時會提示BANKBONE錯誤:
![poYBAGIMpl-AUdDVAAFdeUMQX44786.png](https://file.elecfans.com/web2/M00/30/CF/poYBAGIMpl-AUdDVAAFdeUMQX44786.png)
[Place 30-575] Sub-optimal placement for a clock-capable IO pin and MMCM pair. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
design_1_i/clk_wiz_0/inst/clkin1_ibufg (IBUF.O) is locked to IOB_X1Y26
design_1_i/clk_wiz_0/inst/mmcm_adv_inst (MMCME2_ADV.CLKIN1) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
The above error could possibly be related to other connected instances. Following is a list of
all the related clock rules and their respective instances.
Clock Rule: rule_mmcm_bufg
Status: PASS
Rule Description: An MMCM driving a BUFG must be placed on the same half side (top/bottom) of the device
design_1_i/clk_wiz_0/inst/mmcm_adv_inst (MMCME2_ADV.CLKFBOUT) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
and design_1_i/clk_wiz_0/inst/clkf_buf (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y31
將錯誤信息中提示的代碼加入xdc文件就可以屏蔽掉此錯誤:
![pYYBAGIMpmCAfqu5AAFFEFvOfBo501.png](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpmCAfqu5AAFFEFvOfBo501.png)
![poYBAGIMpmKAQiV3AAKlWVadyVw422.png](https://file.elecfans.com/web2/M00/30/CF/poYBAGIMpmKAQiV3AAKlWVadyVw422.png)
審核編輯:符乾江
-
DDR3
+關注
關注
2文章
276瀏覽量
42394 -
MicroBlaze
+關注
關注
3文章
68瀏覽量
21595
發布評論請先 登錄
相關推薦
使用MCUXpresso for VS Code插件開發Zephyr的hello world
![使用MCUXpresso for VS Code插件開發Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>](https://file1.elecfans.com/web3/M00/04/A6/wKgZPGd3PBeAcAcFAABDETVNApk954.png)
Xilinx_Vivado_SDK的安裝教程
![<b class='flag-5'>Xilinx_Vivado</b>_SDK的安裝教程](https://file1.elecfans.com/web2/M00/0C/A0/wKgaomc3-3OAI9TSAAAeI4NiXA0715.png)
C語言中的socket編程基礎
使用Vivado通過AXI Quad SPI實現XIP功能
![使用<b class='flag-5'>Vivado</b>通過AXI Quad SPI實現XIP功能](https://file1.elecfans.com/web1/M00/F3/E2/wKgZoWcggI2Ady3sAAAcY8ufVo8103.png)
如何在i2c中將hello world發送到LCD屏幕?
esp32運行make flash燒寫hello world遇到的疑問求解
鴻蒙OpenHarmony【輕量系統 編寫“Hello World”程序】 (基于Hi3861開發板)
![鴻蒙OpenHarmony【輕量系統 編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3861開發板)](https://file1.elecfans.com/web2/M00/E6/F1/wKgaomZF3JuAZ8IMAAAxJKnBYwA272.png)
鴻蒙OpenHarmony【小型系統 編寫“Hello World”程序】 (基于Hi3516開發板)
![鴻蒙OpenHarmony【小型系統 編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3516開發板)](https://file1.elecfans.com/web2/M00/E3/EA/wKgZomY92mCAOpDmAABBE-im69c216.png)
鴻蒙OpenHarmony【標準系統 編寫“Hello World”程序】(基于RK3568開發板)
![鴻蒙OpenHarmony【標準系統 編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】(基于RK3568開發板)](https://file1.elecfans.com/web2/M00/E4/5A/wKgaomY8nl-ALH4oAAA3gQX5Lbg184.png)
鴻蒙OpenHarmony【標準系統編寫“Hello World”程序】 (基于RK3568開發板)
![鴻蒙OpenHarmony【標準系統編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于RK3568開發板)](https://file1.elecfans.com/web2/M00/C5/CD/wKgZomYCdwyAIFf5AAB_7E1pFms943.jpg)
鴻蒙OpenHarmony【小型系統編寫“Hello World”程序】 (基于Hi3516開發板)
![鴻蒙OpenHarmony【小型系統編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3516開發板)](https://file1.elecfans.com/web2/M00/C5/CD/wKgZomYCdwyAIFf5AAB_7E1pFms943.jpg)
鴻蒙OpenHarmony【輕量系統編寫“Hello World”程序】 (基于Hi3861開發板)
![鴻蒙OpenHarmony【輕量系統編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3861開發板)](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
全志D1s開發板軟件入門之Hello World演示
用于EK-RA8D1 MIPI LCD顯示器的GUIX Hello World
![用于EK-RA8D1 MIPI LCD顯示器的GUIX <b class='flag-5'>Hello</b> <b class='flag-5'>World</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論