用ISE XPS玩一玩Zynq---用於PL側的和AXI_GP接口的DMA

前言

寫這個文檔的目的有兩個:

1、目前Zyqn7000系列開發大多數都是基於Xilinx的Vivado,網上很少有ISE相關的例子,個人費了不少時間才摸索出在ISE上Zyqn相關開發流程,希望記錄下來給有需求的童鞋參考;

2、目前關於DMA的使用大多數場景是用於PS裏面數據的搬運,即使有用在PL裏的場景,也大多數是通過AXI_HP口然後例化一個DMA_FIFO進行數據搬運,而在ISE裏又恰恰缺少這個IP,這邊採用了更爲簡單的直通方式進行AXI_GP口的驗證。如果大家要熟悉DMA接口和AXI_GP接口,這個demo比網上大多數例程要簡單。當然,將AXI_GP口換成AXI_HP口即可操作DDR裏的地址空間。

 

demo的開發環境:

軟件環境:ISE14.7

硬件環境:Zyqnxc7z010clg400-3,ALINX黑金AX7010開發板

 

1.     驗證方案

驗證需求:測試AXI_GP作爲PS-PL接口時的master和slave功能。

方案分析:

1、在PL側例化一個DMA IP,然後M_AXI_GP爲master,DMA的S_AXI_LITE爲slave,通過AXI_interconnect連接,這樣PS即可配置DMA中的Register Module,進而配置DMA模塊。如圖一中的藍色數據標識所示,這樣即可驗證master功能。

2、PS配置完DMA的Register Module後,DMA的M_AXI_MM2S和M_AXI_S2MM即可作爲master,S_AXI_GP爲slave,通過AXI_interconnect,這樣DMA即可控制DataMover將PS中SRAM地址1的數據搬運到SRAM的地址2,具體數據流如圖一中的紅色數據標識所示,從而達到驗證AXI_GP的slave功能。

圖1  驗證方案框圖

2.     工程步驟

2.1 建立XPS工程

步驟1---打開XPS工具

步驟2---新建工程,記得填寫好工程路徑。

步驟3---選取好相關平臺和器件,我們這裏先選ZC702平臺,下面自動會選定xc7z020,沒關係,後面我們可以手動修改到xc7z010

步驟4---把所有的外設都remove,點Finish,得到一個乾淨的PS系統。

步驟5---修改器件,把7020修改爲7010,一個基本的工程即建立好了。

2.2 製作demo

步驟1---去除多餘的IO外設,這裏保留SD0和UART1。

步驟2 ---添加AXI_GP的master和slave

 

步驟3---添加DMA IP,記得如下圖④的一樣,勾選自動連線(因爲自動連線只能連AXI_HP或者AXI_ACP模式,我們這個demo是要用AXI_GP模式,但是沒辦法,這個工具相對較傻,我們不勾選自動連的話後面生成的AXI interconnect ip將master側信號分成兩組分別連接M_AXI_MM2S和M_AXI_S2MM,我們只能採用這樣傻瓜式的方式生成好後再去修改)。

步驟4---如下圖所示,我們可以看到已經生成了兩個axi_interconnect,PS裏面也自動幫你生成了S_AXI_HP0口,我們需要在PS裏刪除這個口。

步驟5---修改DMA IP,將GS模式改爲普通模式。

步驟6 ---連線。這是最重要的一步,ISE比較傻,不像Vivado一樣可以自動去勾選連線,這裏只能對着信號來連,時鐘一般都是勾選到PS7_FCLK_CLK0。其餘的則根據需求來連。我的demo連線如下:

步驟7---連線後的Design View大概如下面幾個圖所示(局部放大DMA模塊)。我們可以看到DMA的M_AXIS_MM2S是直接連接的S_AXIS_S2MM,相當於直接打了個loop,就不需要dma fifo了。


步驟8---檢查DRCS、綜合生成網表、生成位流。注意這階段耗時可能會比較緊,需要耐心等待,如果DRCS報錯,肯定是上面步驟連線出問題了。

步驟9---Export Design,導出SDK工程。

2.3 SDK調試

步驟1---新建helloworld工程

步驟2---編輯測試代碼,helloworld.c爲主測試代碼,需要對其進行修改。

步驟3---代碼編譯無錯誤。具體的代碼詳見附錄1。

步驟4---加載位流。如果遇到加載問題,請檢查board的sw開關是否正確,還有jtag驅動是否正確安裝。

步驟5---開始調試

步驟6---打開UART顯示。運行的時候會報下面的告警,是因爲沒有設置UART串口打開。

這時候,需要在Run -- Run Configurations裏面設置好STDIO Connection才行,將串口顯示。

步驟7---再次運行,得到最終結果。下面爲串口的打印結果。

END。

3.附錄

3.1附錄1---測試C代碼

3.2附錄2---整個demo工程

附錄1和2的附件詳見https://download.csdn.net/download/xinxulsq/10493236


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章