自定义AXI外设IP核实现流水灯
軟件:Vivado2018.2 + Win10
1 設計
功能:流水燈
語言:Verilog + C
流程:創建工程->創建AXI外設IP核->IP Integrator->綜合、實現、生成Bitstream->SDK
功能圖如下,圖中的GPIO IP使用自定義的AXI外設,而不使用AXI_GPIO
2 流程
2.1 創建工程
參考ZedBoard+Vivado(一)
2.2 創建AXI外設IP核
點擊Tools->Create and Package New IP
點擊Next
選擇Create a new AXI4 peripheral
默認或者手動輸入相關描述
使用AXI-Lite,Slave模式
選Add IP to the repository,以便我們后續添加該IP核,點Finish
2.2 IP Integrator
IP INTEGRATOR->Create Block Design,在add IP中輸入myip和ZYNQ7 Processing System,并其加入到Diagram中
對ZYNQ7 Processing System進行Run Block Automation(在ZedBoard+Vivado(二)中介紹過)
右鍵自定義的IP核myip_0,選擇Edit in IP Packager
為該次編輯指定name和存儲location,直接OK就行
現在在Source->Design Sources下能看到myip_v1_0和myip_v1_0_S00_AXI_inst:myip_v1_0_S00_AXI,其中myip_v1_0是該IP核的頂層模塊,myip_v1_0_S00_AXI是實際內在邏輯
首先修改頂層模塊,雙擊myip_v1_0,在紅框位置添加以下代碼(注意最后的逗號)
繼續在紅框位置添加以下代碼(注意最后的逗號)
- 1
接下來修改內部邏輯,雙擊myip_v1_0_S00_AXI_inst:myip_v1_0_S00_AXI,同上,添加
- 1
繼續在紅框位置添加
修改完成后保存,然后點擊Package IP
除最后的Review and Package外,在沒有打勾的位置,點右邊的Merge changes from XXX
最后點Review and Package->Re-Package IP
Yes即可
現在發現在Diagram里myip_0沒有我們手動添加的LED端口,把它刪了,重新添加
新添加的myip_0,就有輸出端口LED[7:0]了
接下來添加外接端口,右鍵LED[7:0]->Make External(注意不要右鍵整個模塊選擇Make External,那樣會為所有端口添加外接端口)
這樣就出現了與LED[7:0]相連的端口LED_0[7:0],為方便寫constraint文件,我們手動將名字由LED_0改為LED
不必擔心它與已有的LED重名,然后點擊Run Connection Automation
OK就行
這樣就自動完成了連線
現在還沒有為創建的外部端口LED[7:0] (原本叫LED_0[7:0])指定constraint,點Add Sources->Add or create constraints。在ZedBoard+Vivado(一)中有介紹,不贅述
在constraint文件中添加如下代碼
之后的過程是 Validate Design->Gerate Out products->Create HDL Wrapper
至此,IP Integrator里需要完成的操作就全部結束了。順便一提,如果我們下次還想用這個創建的AXI外設IP,應在Settings->Project Settings->IP->Repository->IP Repositories里添加IP核的路徑
2.3 綜合、實現、生成Bitstream
直接點Generate Bitstream
2.4 SDK
操作與ZedBoard+Vivado(二)相同,直接貼代碼
#include <stdio.h> #include "xparameters.h" #include "sleep.h" #include "xil_io.h"int main() {/*\ Loop forever run the LED*/while(1){int i;for(i=0;i<8;i++){Xil_Out32(XPAR_MYIP_0_S00_AXI_BASEADDR, 1<<i); sleep(1);}}return 0; }注意先燒寫FPGA再運行arm程序,詳情見ZedBoard+Vivado(二),運行成功后便可看到流水燈現象。
總結
以上是生活随笔為你收集整理的自定义AXI外设IP核实现流水灯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVC jQuery表单验证
- 下一篇: selenium执行click报错的解决