【Vivado那些事兒】MicroBlaze最小系統(tǒng)搭建及程序固化
MicroBlaze是AMD-Xilinx提供的一個(gè)可以在FPGA中運(yùn)行的嵌入式軟核IP,其本質(zhì)是一個(gè)32位RISC處理器軟核,可以在150MHz時(shí)鐘下,提供125 D-MIPS性能,具有運(yùn)行速度快、占用資源少、可配置性強(qiáng)等優(yōu)點(diǎn)。
今天主要是搭建一個(gè)通用MicroBlaze最小系統(tǒng)+一個(gè)外設(shè),最后固化程序到FPGA。
整體難度★不到
縮略詞索引:
MB-MicroBlaze
環(huán)境平臺(tái)
win10 vivado 2020
Vitis 2020
FPGA部分搭建
一個(gè)完整的MB系統(tǒng),包括四個(gè)方面:CPU、時(shí)鐘、 DDR 和外設(shè),其中CPU不用說(shuō)就是MB,DDR不是必須的,根據(jù)硬件選擇,如果沒(méi)有DDR時(shí)候選擇內(nèi)部RAM使用需要選擇大一點(diǎn),所以下面分成兩種情況建立最小系統(tǒng)。
不帶DDR的MB最小系統(tǒng)-通用系統(tǒng)
第1步
搭建Vivado系統(tǒng),不過(guò)多贅述了!
第2步
點(diǎn)擊 Create Block Design,創(chuàng)建一個(gè) BD 文件,并命名為MB_block。

第3步
單擊添加 IP 圖標(biāo),然后輸入關(guān)鍵字 MicroBlaze。

雙擊將MB添加到 BD 文件中:

第4步
添加時(shí)鐘,在添加IP圖標(biāo)位置輸入關(guān)鍵字Clocking Wizard。

雙擊將Clocking Wizard添加到BD文件中。
第5步-此步可不加
時(shí)鐘設(shè)置,雙擊Clocking Wizard對(duì)時(shí)鐘進(jìn)行配置。

輸入時(shí)鐘根據(jù)硬件進(jìn)行選擇,我的硬件是一個(gè)單端50MHz時(shí)鐘,輸出時(shí)鐘參數(shù)如下:

clk_out1作為MB的運(yùn)行時(shí)鐘,這里設(shè)置為100MHz,而clk_out2的200MHz是作為DDR控制器的運(yùn)行時(shí)鐘。
勾選locked作為后續(xù)電路的復(fù)位信號(hào)。
其他頁(yè)面默認(rèn)即可,點(diǎn)擊【OK】完成設(shè)置。

第6步
MB設(shè)置,在 BD 文件中,雙擊 MB 圖標(biāo),對(duì)其進(jìn)行配置,第一頁(yè)配置參數(shù)如下圖所示:

注意圖中圓圈是需要勾選的,允許外部存儲(chǔ) BRAM 作為程序運(yùn)行緩沖區(qū),方框部分是軟核的頻率、面積和性能三方面的綜合結(jié)果(三方不可同時(shí)兼得)。
點(diǎn)擊【Next】,進(jìn)行下一界面進(jìn)行設(shè)置:


界面默認(rèn),點(diǎn)擊【Next】:

按照上圖設(shè)置,點(diǎn)擊【Next】:

界面默認(rèn),點(diǎn)擊【Next】:

按照上圖設(shè)置,允許 AXI 數(shù)據(jù)流。修改完成之后點(diǎn)擊 【OK】 ?即可。
上面主要修改三個(gè)部分:第一頁(yè)允許外部存儲(chǔ) BRAM 作為程序運(yùn)行緩沖區(qū);第三頁(yè)設(shè)置Cache基地址和長(zhǎng)度;第五頁(yè)是允許AXI數(shù)據(jù)流,用來(lái)訪問(wèn)外部DDR。
第7步
讓BD自動(dòng)完成設(shè)置,點(diǎn)擊Run Block Automation完成剩下的設(shè)置。

彈出的界面默認(rèn)即可,時(shí)鐘使我們上面第4步Clocking Wizard生成的,Local Memory 選擇 32KB,因?yàn)闆](méi)有外部存儲(chǔ)器。

第8步
引出相關(guān)引腳。
組合鍵 【Ctrl+T】 引出引腳。
第9步
驗(yàn)證目前設(shè)計(jì)的正確性:

目前這一步已經(jīng)完成了最小系統(tǒng)設(shè)計(jì)。
第10步
修改引腳名稱。




第11步
導(dǎo)出BD,按照下圖位置:

設(shè)置路徑,設(shè)置BD名稱:

路徑下就生成了一個(gè)tcl文件,同理也可以使用下面命令實(shí)現(xiàn)相同功能:
write_bd_tcl [你的路徑]/xxx_bd.tcl
第16步
上面就完成了整個(gè)最小系統(tǒng)搭建,接下來(lái)搭建帶帶DDR的MB最小系統(tǒng),然后我們以這個(gè)最小系統(tǒng)為例說(shuō)明其為什么具有通用性。
帶DDR的MB最小系統(tǒng)
第1步
搭建Vivado系統(tǒng),不過(guò)多贅述了!
第2步
點(diǎn)擊 Create Block Design,創(chuàng)建一個(gè) BD 文件,并命名為MB_block。

第3步
單擊添加 IP 圖標(biāo),然后輸入關(guān)鍵字 MicroBlaze。

雙擊將MB添加到 BD 文件中:

第4步
添加時(shí)鐘,在添加IP圖標(biāo)位置輸入關(guān)鍵字Clocking Wizard。

雙擊將Clocking Wizard添加到BD文件中。
第5步
時(shí)鐘設(shè)置,雙擊Clocking Wizard對(duì)時(shí)鐘進(jìn)行配置。

輸入時(shí)鐘根據(jù)硬件進(jìn)行選擇,我的硬件是一個(gè)單端50MHz時(shí)鐘,輸出時(shí)鐘參數(shù)如下:

clk_out1作為MB的運(yùn)行時(shí)鐘,這里設(shè)置為100MHz,而clk_out2的200MHz是作為DDR控制器的運(yùn)行時(shí)鐘。
勾選locked作為后續(xù)電路的復(fù)位信號(hào)。
其他頁(yè)面默認(rèn)即可,點(diǎn)擊【OK】完成設(shè)置。

第6步
MB設(shè)置,在 BD 文件中,雙擊 MB 圖標(biāo),對(duì)其進(jìn)行配置,第一頁(yè)配置參數(shù)如下圖所示:

注意圖中圓圈是需要勾選的,允許外部存儲(chǔ) BRAM 作為程序運(yùn)行緩沖區(qū),方框部分是軟核的頻率、面積和性能三方面的綜合結(jié)果(三方不可同時(shí)兼得)。
點(diǎn)擊【Next】,進(jìn)行下一界面進(jìn)行設(shè)置:


界面默認(rèn),點(diǎn)擊【Next】:

按照上圖設(shè)置,點(diǎn)擊【Next】:

界面默認(rèn),點(diǎn)擊【Next】:

按照上圖設(shè)置,允許 AXI 數(shù)據(jù)流。修改完成之后點(diǎn)擊 【OK】 ?即可。
上面主要修改三個(gè)部分:第一頁(yè)允許外部存儲(chǔ) BRAM 作為程序運(yùn)行緩沖區(qū);第三頁(yè)設(shè)置Cache基地址和長(zhǎng)度;第五頁(yè)是允許AXI數(shù)據(jù)流,用來(lái)訪問(wèn)外部DDR。
第7步
讓BD自動(dòng)完成設(shè)置,點(diǎn)擊Run Block Automation完成剩下的設(shè)置。

彈出的界面默認(rèn)即可,時(shí)鐘使我們上面第4步Clocking Wizard生成的。

第8步
引出相關(guān)引腳。
上圖界面選擇clk_in1,組合鍵 【Ctrl+T】 引出引腳:

第9步
驗(yàn)證目前設(shè)計(jì)的正確性:

目前這一步已經(jīng)完成了最小系統(tǒng)設(shè)計(jì),下面開始DDR設(shè)計(jì)。
第10步
添加DDR控制器:
添加IP界面,輸入關(guān)鍵字memory interface generator

雙擊memory interface generator后再BD中添加MIG:

第11步
設(shè)置MIG IP。
雙擊 mig_7series_0,進(jìn)行如下配置:








注:如果system clock的頻率在199-201MHz之間,這里會(huì)出現(xiàn)一個(gè)use system clock 的選項(xiàng),意思就是用系統(tǒng)時(shí)鐘作為參考時(shí)鐘






后面全部默認(rèn)點(diǎn)擊【NEXT】即可。
將MIG的線按照下圖進(jìn)行連接:

第12步
添加外設(shè),我們主要添加串口,負(fù)責(zé)調(diào)試。

雙擊 UART,將波特率改為 115200:

第13步
再點(diǎn)擊 Run connection Automation,再?gòu)棾鰜?lái)的窗口中把所有選項(xiàng)勾選上,再點(diǎn)擊【OK】 即可。

驗(yàn)證設(shè)計(jì):

第14步
修改引腳名稱,因?yàn)檫@部分將作為一個(gè)最小系統(tǒng)供后續(xù)使用。


第15步
導(dǎo)出BD,按照下圖位置:

設(shè)置路徑,設(shè)置BD名稱:

路徑下就生成了一個(gè)tcl文件,同理也可以使用下面命令實(shí)現(xiàn)相同功能:
write_bd_tcl [你的路徑]/xxx_bd.tcl
測(cè)試及固化程序
第1步
建立一個(gè)新的Vivado工程。
第2步
導(dǎo)入上一節(jié)生成的最小系統(tǒng):

選擇tcl文件,確定即可

這樣就生成了一個(gè)最小系統(tǒng):

第3步
添加Clocking Wiard,按照下圖進(jìn)行設(shè)置


第4步
添加一個(gè)AXI-GPIO,按照下圖設(shè)置:

后面控制三個(gè)LED等。
第5步
點(diǎn)擊 Run connection Automation,再?gòu)棾鰜?lái)的窗口中把所有選項(xiàng)勾選上,再點(diǎn)擊【OK】 即可。

第6步
導(dǎo)出硬件
將 bd 文件導(dǎo)出為 tcl 腳本之后,繼續(xù)對(duì)工程進(jìn)行完善。
選中 xxx.bd,右單擊然后選擇 Generate Output Products。

第7步
在彈出來(lái)的窗口中,如下圖所示,然后單擊【OK】。

第8步
選中 XXX.bd,右單擊然后選擇 Create HDL Wrapper,在彈出來(lái)的窗口中直接點(diǎn)擊【OK】。


第9步
添加一個(gè)名為 mb_test.xdc 的約束文件,并添加約束(物理約束需要根據(jù)自己硬件選擇)。
第12步
單擊下列圖標(biāo)產(chǎn)生 Bit 文件。

第13步
生成 Bit 文件之后,單擊 File-Export-Export Platform...

第14步
TOOLs-->Launch Vitis IDE

選擇工作文件夾。

創(chuàng)建Platform

選擇上一步生成的Platform(XSA文件)

右擊,build project

無(wú)問(wèn)題后繼續(xù)后面步驟。
第15步
創(chuàng)建App

【NEXT】

【NEXT】

輸入App名稱:

【NEXT】

選擇Hello World模板。

【FINISH】

第16步
helloworld.c源碼我們先不修改。
右擊 HelloWorld-->Debug As-->Debug Configurations
設(shè)置好參數(shù),使用Vitis自帶的串口工具,運(yùn)行后即可看到打印信息。

接下來(lái)就是添加GPIO驅(qū)動(dòng),和上面操作一樣,這里有個(gè)小技巧,在建立完App后,點(diǎn)擊下圖位置:

導(dǎo)入官方提供的歷程就可以了。
同樣HelloWorld-->Debug As-->Debug Configurations后進(jìn)行調(diào)試即可。
下面說(shuō)明固化過(guò)程。
第17步
固化第一步,生成bit文件,點(diǎn)擊XIlinx-->Program Device

記住箭頭部分生成的bit文件,同時(shí)選擇方框內(nèi)編譯出的elf文件。

固化第二步,下載固化FLASH,點(diǎn)擊XIlinx-->Program Flash

箭頭選擇板卡上FLASH的FLASH,方框選擇上一步生成的bit文件(默認(rèn)dowload.bit)。

點(diǎn)擊【Program】,完成后重新上電即可。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-430356.html
總結(jié)
今天簡(jiǎn)單演示了一個(gè)MB小例子。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-430356.html
到了這里,關(guān)于【Vivado那些事兒】MicroBlaze最小系統(tǒng)搭建及程序固化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!