1. 程式人生 > 其它 >自定義axi4_lite IP核封裝

自定義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下顯示的結果