自定義axi4_lite IP核封裝
首先開啟vivado新建一個簡單得工程,按以下步驟,我用的vivado版本是2020.1的,但所有版本的vivado大體流程差別不大。
建立新的工程,點選next
根據實際情況起專案名稱及專案存放地址,這裡是對上一篇的GPIO進行封裝,就取GPIO的名稱。
預設選項一路Next
選擇對應的晶片,我用的晶片是xczu3eg-sfvc784-1-i ,選好Next
再次確認資訊,然後點選finish
到這步之後工程已經建立,一般有兩種方式對自定義的AXI4_Lite IP進行封裝。第一種是先用官方的AXI4_Lite,然後新增自己寫好的程式碼,把原來官方生成的axi4_lite程式碼的刪除。第二種就是直接自定義封裝,把程式碼都加進去,相對會簡單些。
點選Tools,選擇Create and Package New IP...
點選Next
方法一:
修改IP核的名稱,Next
選擇Type為Lite,interface Mode 選擇slave,點選Next。
選擇Edit IP,點選finish。
接著新增已經完成的程式碼,點選next
匯入檔案完成,可以把原來生成的程式碼刪除,如下圖:
然後觀察Packaging Steps,前兩項已經有綠勾,我們直接點選File Groups,然後點選紅框下的Merge changes from File Groups Wizard
然後接著點選下一項,對藍框的內容進行刪除。
上述步驟完成之後,會出現報錯,可以先不管,然後點選下一項,把S00_AXI介面及相關的S00_AXI_RST和S00_AXI_CLK刪除。
刪除之後,發現錯誤消失了
然後對埠進行編輯如下:
把1,2步驟先勾選,然後把介面名稱與實際程式碼介面名稱相匹配,完成第三步,依次把實際程式碼的介面匹配成功
匹配完成之後如下:
為了保住連線自動完成,最好把AXI4_Lite_slave介面與時鐘相關聯:
接著回到Customization Parameter,對裡頭的引數進行重新編輯對暫存器地址的引數進行隱藏,IO_NUM視覺化操作,完成後的結果如下:
最後要保證Addressing and Memory 的AXI4_Lite的地址跟介面對應得上,我的axi4_lite介面的名稱是AXI4_Lite_slave,具體如何操作如下:
1.選中Addressing and Memory項,在右邊空白處右鍵,點選紅框項
點選next
選擇匹配的AXI4_lite介面名稱,我這已經選過了。
之後一直Next直到finish,把原來的S00_AXI介面的地址刪除,就得到下圖警告也沒了:
最後的步驟就是封裝IP核,點選左邊最後一項Review and Package,點選Package IP則完成此次操作。
方法二:
工程上先把需要封裝的程式碼新增完成,然後點選封裝IP
選擇紅框的封裝當前程式碼
此時IP核編輯的頁面跳出來了,跟方法一類似:
選中Ports and Interfaces,新增相應的S_AXI匯流排,並與實際介面匹配:
接著是關聯時鐘,對GPIO的三態口新增介面,完成後如下圖:
接著是最關鍵的一步,選中Addressing and Memory項,點選又框中的Addressing and Memory
這時我們選中S_AXI4_Lite
完成以上操作之後,IP核的編輯基本已完成,可以通過Customization GUI檢視IP核的圖形化介面。之後點選左邊最後一項Review and Package,點選Package IP就完成IP的自定義過程。
以上便是對自定義AXI4_lite從機IP的封裝方式,相對來說方法二更加簡單些,下圖是在新增Create block design下顯示的結果