基于DMA的大批量數(shù)據(jù)快速傳輸模塊設(shè)計
對于與NiosⅡ處理器交互的Avalon—MM從端口,從NiosⅡ處理器的角度看,這個端口是一些寄存器的映射,即NiosⅡ?qū)υ撃K的操作,是通過對模塊內(nèi)部的寄存器的操作完成的。根據(jù)功能需隸,DMA讀控制模塊中設(shè)計了3個寄存器,即狀態(tài)寄存器status,控制字寄存器control和FIFO中已有數(shù)據(jù)個數(shù)寄存器usedw。
DMA讀控制模塊的中斷請求應(yīng)當(dāng)在兩種情況下產(chǎn)生:一是此模塊的數(shù)據(jù)源端將FIFO寫滿且外設(shè)中斷使能有效;二是此模塊的數(shù)據(jù)源端置數(shù)據(jù)包結(jié)束標志且外設(shè)中斷使能有效。
對于DMA從端口,使用的是帶流控制信號的Avalon總線,DMA使用流控制信號中的dataavailable以及endofpacket兩個總線信號。其中dataavailable表示外設(shè)是否準備好讀操作,即FIFO是否非空;對于endofpacket信號,設(shè)計中使用這個信號來表示模塊中數(shù)據(jù)包的結(jié)束,endofpacket信號與最后一個數(shù)據(jù)同時出現(xiàn)并持續(xù)1個時鐘周期,DMA檢測到endofpacket信號有效后將停止DMA傳輸。對于管道端口,這是最新的Avalon總線規(guī)范定義的接口形式,主要用于外設(shè)和外部邏輯進行交互。本文引用地址:http://cafeforensic.com/article/192791.htm
DMA讀控制模塊作為一個用戶自定義外設(shè),在將其添加到SOPC Builder外設(shè)庫后,就可以在SOPCBuilder中調(diào)用此外設(shè),圖3表示了SOPC Builder中該外設(shè)與DMA的連接,圖中fifo_control_0即為DMA讀控制模塊,可以看出,這個外設(shè)包含了兩個Avalon—MM端口,其中一個連接至DMA控制器模塊dma_0,而且SOPC Builder為這個外設(shè)分配了基地址和中斷優(yōu)先級。
4 測試驗證
DMA讀控制模塊測試時,F(xiàn)PGA內(nèi)部產(chǎn)生數(shù)據(jù)源并通過外設(shè)管道接口把數(shù)據(jù)寫入FIFO,外設(shè)中斷時,DMA讀取外設(shè)中的數(shù)據(jù)。測試時使用QuartusⅡ自帶的SignalTapⅡ嵌入式邏輯分析儀進行測試,觀察相應(yīng)信號的波形。本測試的觸發(fā)條件為signaltap_read上升沿觸發(fā),F(xiàn)IFO深度為1 024,F(xiàn)IFO數(shù)據(jù)寬度為16位,數(shù)據(jù)源為2~513共512個計數(shù)值,在Nios II的軟件中讀取600個數(shù)據(jù),測試結(jié)果如圖4所示。
圖4對應(yīng)3幅圖像,圖4(a)表示DMA讀取外設(shè)的測試數(shù)據(jù)的全局視圖,后面兩幅為局部放大結(jié)果,其中圖4(b)是測試數(shù)據(jù)的開始段,圖4(c)是測試數(shù)據(jù)的結(jié)束段。如圖4(b)所示,在第一個時鐘周期,DMA的讀信號有效,在之后的第二個時鐘周期,F(xiàn)IFO的數(shù)據(jù)總線出現(xiàn)數(shù)據(jù)2,之后是3,4,…,從圖4(c)可以看出,最后一個數(shù)據(jù)是513,且DMA讀取外設(shè)512個數(shù)據(jù),只花費了約776個時鐘周期,這充分顯示了DMA高速的數(shù)據(jù)傳輸能力。
評論