S03_CH02_AXI_DMA PL發送數據到PS


S03_CH02_AXI_DMA PL發送數據到PS

1.1概述

本課程的設計原理分析。

本課程循序漸進,承接《S03_CH01_AXI_DMA_LOOP 環路測試》這一課程,在DATA FIFO端加入FPGA代碼,通過verilog 代碼對FIFO寫。其他硬件構架和《S03_CH01_AXI_DMA_LOOP 環路測試》一樣。

《S03_CH01_AXI_DMA_LOOP 環路測試》課程中,詳解講解了工程步驟的創建,本章開始,一些簡單的操作步驟將會省去。

1.2系統構架框圖

wpsB595.tmp

在上圖中,紅色標記部分是和前面課程有稍微差異的部分。讀者需要好好注意下。

下面看下關鍵模塊的設置

1.2.1 ZYNQ IP的設置

增一路FCK_CLK1 為100MHZ(也可以設置其他頻率)並且引出到外部提供verilog編程時鍾。

wpsB596.tmp

雙擊S_AXIS設置參數

wpsB5A7.tmp

設置如下

wpsB5A8.tmp

雙擊FIFO 進行如下設置

wpsB5A9.tmp

由於只有寫DMA通道,因此不用勾選讀DMA通道

wpsB5B9.tmp

既然只用到了DMA寫通道,也就只要使用1路中斷資源。

wpsB5BA.tmp

1.3 PS部分

相對於《S03_CH01_AXI_DMA_LOOP 環路測試》中的代碼,本章代碼只有DMA的接收部分。在main.c源碼中,實現了數據DMA的測速,並且通過OLED顯示出來。為了實現測試,有增加了定時間中斷,定時器每過0.5S中斷一次。

中斷初始化函數,如下

表1-3-1 init_intr_sys函數

int init_intr_sys(void)

{

DMA_Intr_Init(&AxiDma,0);//initial interrupt system

Timer_init(&Timer,TIMER_LOAD_VALUE,0);

Init_Intr_System(&Intc); // initial DMA interrupt system

Setup_Intr_Exception(&Intc);

DMA_Setup_Intr_System(&Intc,&AxiDma,TX_INTR_ID,RX_INTR_ID);//setup dma interrpt system

Timer_Setup_Intr_System(&Intc,&Timer,TIMER_IRPT_INTR);

DMA_Intr_Enable(&Intc,&AxiDma);

}

DMA讀測速的部分的原理是計數DMA讀傳輸的次數,然后每過2秒,計算一次速度。通過OLED顯示測速。

表1-3-2 測試代碼

if(RxDone)

{

RxDone=0;

RX_ready=1;

RX_success++;

}

if(TxDone)

{

TxDone=0;

TX_ready=1;

TX_success++;

}

if(usec==2)

{

usec=0;

sprintf(oled_str,"RX_cnt=%d",RX_success);

xil_printf("%s\r\n",oled_str);

print_message(oled_str,0);

speed_rx = MAX_PKT_LEN*RX_success/1024/1024;

sprintf(oled_str,"RX_sp=%.2fMB/S",speed_rx);

xil_printf("%s\r\n",oled_str);

print_message(oled_str,1);

sprintf(oled_str,"TX_cnt=%d",TX_success);

xil_printf("%s\r\n",oled_str);

print_message(oled_str,2);

speed_tx = (MAX_PKT_LEN)*TX_success/1024/1024;

sprintf(oled_str,"TX_sp=%.2fMB/S",speed_tx);

xil_printf("%s\r\n",oled_str);

print_message(oled_str,3);

RX_success=0;

TX_success=0;

}

定時器中斷在第二季《S02_CH08_ ZYNQ 定時器中斷實驗》已經詳細講解過,至於DMA中斷《S03_CH01_AXI_DMA_LOOP 環路測試》中也已經詳細講解,不在過多復述。

1.4 測試結果

wpsB5BB.tmp

wpsB5CC.tmp

wpsB5CD.tmp

wpsB5CE.tmp

wpsB5DF.tmp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM