基于DMA的大批量數據快速傳輸模塊設計
摘要 針對Altera公司SOPC解決方案中,DMA模塊無(wú)法直接讀/寫(xiě)FPGA外設的情況,提出了基于A(yíng)valon總線(xiàn)流傳輸模式的通用DMA讀/寫(xiě)控制模塊的設計,設計了兩個(gè)自定義外設,實(shí)現了DMA對FPGA外設的高速數據存取和Nios II與FPGA大批量數據的快速傳輸。介紹了Avalon—MM總線(xiàn)規范,闡述了系統架構以及DMA讀控制器的設計,測試結果表明,該方法是一種高效可行的解決方案。
關(guān)鍵詞 SOPC;Nios II;DMA;Avalon總線(xiàn)
DMA控制器作為SOPC設計中使用頻率較高的IP核,可用于存儲器或外設間進(jìn)行批量數據傳輸,以提高系統數據吞吐量。然而,由于DMA控制器只支持對基于A(yíng)valon總線(xiàn)流傳輸模式的外設進(jìn)行數據傳輸操作,對用戶(hù)自定義外設不予支持。文中提出了一種基于A(yíng)valon總線(xiàn)流傳輸模式的通用DMA接口控制器設計,實(shí)現了NiosⅡ與FPGA的大批量數據快速傳輸,顯著(zhù)提高了系統的數據吞吐量。
1 Avalon—MM總線(xiàn)規范
Avalon總線(xiàn)規范是為開(kāi)發(fā)SOPC環(huán)境下外設而設計的,為SOPC設計者描述這些外設的端口提供了基礎。Avalon總線(xiàn)有多種傳輸模式,其中,流傳輸模式為從端口提供了一種機制,用于控制來(lái)自主端口的傳輸,流傳輸模式的這些特點(diǎn)使其特別適合于DMA傳輸。
流模式從端口傳輸模式的信號,除了在從端口傳輸中使用的信號之外,又引入了3個(gè)信號:readyfordata、dataavailable和endofpack et。其中,從端口通過(guò)設置Readyfordata有效來(lái)表示它已經(jīng)準備好接收來(lái)自Avalon總線(xiàn)模塊的寫(xiě)傳輸;使readyfordata無(wú)效表示寫(xiě)操作將引起數據上溢;從端口通過(guò)設置dataavailable有效來(lái)表示它已經(jīng)能夠為來(lái)自Avalon總線(xiàn)模塊的讀傳輸提供數據,dataavailable無(wú)效時(shí)讀操作將引起數據下溢;在任何傳輸期間,流模式從端口都可以設置endofpacket信號有效,并通過(guò)Avalon總線(xiàn)模式傳輸給主端口。對于endofpack et信號的解釋取決于用戶(hù)設計,必須明確外設如何響應endofpacket信號的變化。
2 系統結構
提出的NiosⅡ與外設進(jìn)行大批量數據傳輸的結構如圖1所示,當NiosⅡ需要從外設讀入數據時(shí),外設通過(guò)FIFO接口將數據寫(xiě)入DMA讀控制模塊,然后數據經(jīng)DMA傳輸至NiosⅡ,反之,當NiosⅡ輸出數據時(shí),數據通過(guò)DMA傳輸至DMA寫(xiě)控制模塊,FPGA邏輯通過(guò)FIFO接口從這個(gè)模塊讀取數據。DMA讀/寫(xiě)控制模塊的設計,是為了解決SOPC中DMA模塊與FPGA片上FIFO不同接口間的數據傳輸問(wèn)題,而在SOPC中,DMA模塊使用的是支持流傳輸模式的Avalon—MM總線(xiàn)。DMA讀/寫(xiě)控制模塊主要完成兩個(gè)功能:一是FIFO與DMA主端口之間的數據交互;二是作為一個(gè)NiosⅡ的外設,NiosⅡ處理器能夠對此外設進(jìn)行控制并能隨時(shí)獲取該外設的狀態(tài)信息。
3 DMA讀/寫(xiě)控制模塊的設計
DMA讀/寫(xiě)控制模塊作為系統結構的核心,其結構框圖如圖2所示。此模塊包括兩個(gè)Avalon—MM從端口:一個(gè)作為DMA從端口,用于處理DMA對此模塊的數據讀操作;另一個(gè)Avalon—MM從端口是NiosⅡ的控制從端口,用于NiosⅡ處理器對這個(gè)模塊進(jìn)行控制并且隨時(shí)獲取此模塊的狀態(tài)信息。模塊還包括一個(gè)中斷請求信號(IRQ),當外設有數據需要讀取時(shí),可以使這個(gè)信號有效,從而通知NiosⅡ發(fā)起DMA讀傳輸。另外,DMA讀控制模塊中還例化了一片FPGA片上FIFO作為數據上傳FIFO,用于系統待上傳數據的暫存。使用FIFO可以提高數據傳輸的吞吐量,同時(shí)簡(jiǎn)化FPGA硬件邏輯的操作,圖2中的管道(Conduit)端口就是FPGA硬件邏輯操作FIFO的接口。
評論