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