寫在前面
模塊復(fù)用是邏輯設(shè)計(jì)人員必須掌握的一個(gè)基本功,通過(guò)將成熟模塊打包成IP核,可實(shí)現(xiàn)重復(fù)利用,避免重復(fù)造輪子,大幅提高我們的開發(fā)效率。
接下來(lái)將之前設(shè)計(jì)的串口接收模塊和串口發(fā)送模塊打包成IP核,再分別調(diào)用這兩個(gè)IP核,構(gòu)成串口接收--發(fā)送循回,依次驗(yàn)證IP核打包及調(diào)用是否成功。
源碼在這:串口(UART)的FPGA實(shí)現(xiàn)
Vivado版本:Vivado 2019.2
開發(fā)板:xc7a35tfgg484-2
打包
打包串口發(fā)送模塊uart_tx
1、首先打開發(fā)送模塊的VIVADO工程,確保其編譯無(wú)誤(最好進(jìn)行仿真驗(yàn)證、上板驗(yàn)證保證其功能正確性),如下:
2、點(diǎn)擊Tools-----create and package new ip
3、點(diǎn)擊Next
4、選擇選項(xiàng)1,點(diǎn)擊Next,各選項(xiàng)含義:
1---將當(dāng)前工程打包為IP核
2----將當(dāng)前工程的模塊設(shè)計(jì)打包為IP核
3----將一個(gè)特定的文件夾目錄打包為IP核
4----創(chuàng)建一個(gè)帶AXI接口的IP核
5、選擇IP存放路徑,建議專門建一個(gè)文件夾來(lái)管理所有建立的IP核,然后點(diǎn)擊Next
6、點(diǎn)擊OK,然后點(diǎn)擊NEXT,會(huì)自動(dòng)創(chuàng)建一個(gè)新工程,用來(lái)生成IP核
7、新生成的IP核打包工程如下:
在右邊的界面可以配置一系列參數(shù):
Identification:主要是一系列信息,如IP名字,開發(fā)者、版本號(hào)等。因?yàn)楸疚膬H作示范,所以我這邊所有信息都沒改
compatibility:兼容的系列,這里根據(jù)自己需求添加所需要的系列芯片就好了。我這邊保持默認(rèn)
file groups:IP核的文件架構(gòu),可以添加或刪除文件。比如添加仿真文件、例化文件,說(shuō)明文件等。我這邊保持默認(rèn)
Customization Parameters:定制化參數(shù)??蓪?duì)參數(shù)進(jìn)行自己的配置,如參數(shù)名稱啊,類型啊,自定義區(qū)間,可選列表等。
點(diǎn)擊BPS----edit parameter,對(duì)參數(shù)進(jìn)行配置(該參數(shù)為串口模塊的波特率)
將格式Format改為long類型,再勾上Specify Range,Type改成List of values,再添加3個(gè)參數(shù)(僅作示范)--4800、9600、115200。再將默認(rèn)值Default value改為9600。這樣就將該參數(shù)配置成了可選參數(shù),默認(rèn)9600,可選值:4800、9600、115200。
再使用同樣的方法將參數(shù)CLK_FRE(模塊時(shí)鐘頻率)改為long類型,默認(rèn)50000000.
Ports and Interfaces:這里展示了IP的接口,可根據(jù)需求添加、刪除接口或者總線。
需要說(shuō)明的是,這里很容易報(bào)警告:
這個(gè)警告是因?yàn)镮P核打包器在設(shè)計(jì)中推斷出了時(shí)鐘端口或是復(fù)位端口。例如:如果信號(hào)名稱包含以下任何一種:[ ]clk,[ ]clkin, [ ]clock[ ], [ ]aclk 或 [ ]aclkin,那么IP打包器就會(huì)為將其判斷成為時(shí)鐘接口。被自動(dòng)判斷出的接口,IP打包器會(huì)傾向于認(rèn)為你使用AXI接口來(lái)處理這個(gè)信號(hào),因?yàn)镮P打包器工具主要是針對(duì)于AXI接口。所以如果你的IP中并不使用AXI總線,這兩條警告可以直接忽略,在實(shí)際的IP中不會(huì)有任何的影響。
Addressing and Memory:地址分配和儲(chǔ)存映射。本設(shè)計(jì)用不到,直接跳過(guò),感興趣的可以看XILINX的手冊(cè)UG1118。
Customization GUI:參數(shù)設(shè)置的GUI界面??梢詫?duì)以后配置IP核的界面做一個(gè)修改??梢钥吹?,紅框內(nèi)的參數(shù)都是我設(shè)置好的默認(rèn)值。
Review and Package:IP核總覽及生成界面。點(diǎn)擊Package IP完成IP打包
IP核成功打包,如下:
打包串口接收模塊uart_rx
使用同樣的方法把串口接收模塊也打包成IP。
調(diào)用
接下來(lái)分別調(diào)用這兩個(gè)IP核,構(gòu)成串口接收--發(fā)送循回,依次驗(yàn)證IP核打包及調(diào)用是否成功。
首先新建一個(gè)工程,點(diǎn)擊Settings----IP----Repository, 添加IP核所在路徑:
點(diǎn)擊 create block design,新建一個(gè)BD模塊,建議名稱與項(xiàng)目名稱一致。
在BD編輯窗口添加IP,搜uart就出現(xiàn)了我們打包的兩個(gè)IP核:
分別添加串口發(fā)送模塊和串口接收模塊:
把對(duì)外的四個(gè)端口(clk,rst,txd,rxd)引出來(lái),右擊sys_clk,點(diǎn)擊make external ,其他三個(gè)端口操作一致;再把對(duì)應(yīng)的線連接,然后點(diǎn)擊regenerate layout:
這里我們的 Block Design 就設(shè)計(jì)完成了,在 Diagram 窗口空白處右擊,然后選擇“Validate Design” 驗(yàn)證設(shè)計(jì)。驗(yàn)證完成后彈出對(duì)話框提示“Validation Successful”表明設(shè)計(jì)無(wú)誤,點(diǎn)擊“OK”確認(rèn)。最后按 快捷鍵“Ctrl+S”保存設(shè)計(jì)。
接下來(lái)在 Source 窗口中右鍵點(diǎn)擊 Block Design 設(shè)計(jì)文件“system.bd”,然后依次執(zhí)行“Generate Output Products”和“Create HDL Wrapper”。
然后添加管腳約束,生成bit流文件。
測(cè)試
下載bit流文件,使用串口調(diào)試助手發(fā)送一包數(shù)據(jù)給FPGA,理論上FPGA馬上回相同的信息給串口調(diào)試助手(此時(shí)串口波特率9600):
返回設(shè)計(jì)階段,點(diǎn)擊IP核框圖,將波特率改為115200,如下:
重新生成并下載bit流文件,使用串口調(diào)試助手發(fā)送一包數(shù)據(jù)給FPGA,理論上FPGA馬上回相同的信息給串口調(diào)試助手(此時(shí)串口波特率115200):
參考資料:
UG1118----Creating and Packaging Custom IP
米聯(lián)客----XILINX 7 系列 FPGA 基礎(chǔ)入門
審核編輯:符乾江
-
IP核
+關(guān)注
關(guān)注
4文章
326瀏覽量
49384 -
Vivado
+關(guān)注
關(guān)注
19文章
806瀏覽量
66246
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論