基于DMA的大批量數據快速傳輸模塊設計
對于調試模式下Nios II IDE的輸出結果,如圖5所示。由于測試數據太長(cháng),這里只給出測試數據的首部及尾部。圖5(a)為測試數據的首部,使用printf()函數輸出,第一個(gè)數據為2,接著(zhù)是2,3,…,從圖5(b)可看出最后一個(gè)有效數據是513,從512起的數據為0,這是數組的初始值,這與圖4相對應。本文引用地址:http://dyxdggzs.com/article/192791.htm
DMA寫(xiě)控制模塊測試時(shí),置FIFO數據寬度為16,NiosⅡ控制端口數據總線(xiàn)寬度為16,FIFO深度為2 048,在NiosⅡ軟件中設置一個(gè)長(cháng)度為2 048的數組,數組數據寬度為16位,初始化時(shí)把數據賦值為1~2 048的計數值,然后發(fā)起DMA寫(xiě)傳輸,把數據寫(xiě)入到DMA寫(xiě)控制模塊中,在FPGA再用硬件語(yǔ)言讀此外設中FIFO數據并在SignalTapⅡ中顯示,其測試結果如圖6所示。
圖6中,fifo_rd表示FPGA中硬件邏輯讀取DMA寫(xiě)控制模塊的讀信號,fifo_readdata是外設中FIFO的數據總線(xiàn)信號,sigtap_test信號連接至外設中FIFO滿(mǎn)、FIFO空以及waitrequest信號(LSB),圖6(a)表示了外部邏輯讀取外設中FIFO的數據起始段,在讀信號有效之前,sigtap_ test[2]信號是高電平,表示FIFO滿(mǎn),sigtap_test[0]為高,表示外設此刻不能響應DMA寫(xiě)入的數據,然后FPGA外部邏輯在檢測到FIFO滿(mǎn)后開(kāi)始讀取數據,在下一個(gè)時(shí)鐘周期,FIFO數據總線(xiàn)上出現有效數據。圖6(b)是讀取FIFO時(shí)數據的結束段,最后一個(gè)數據為2 048,讀取后,sig tap_test[1]為高電平,表示數據讀空,這與NiesⅡ中軟件寫(xiě)入DMA從而寫(xiě)入DMA寫(xiě)控制模塊的數據是一致的,由此驗證了模塊設計的正確性。
5 結束語(yǔ)
設計方案穩定可靠、傳輸速度高,具有一定的通用性,能滿(mǎn)足NiosⅡ與外設之間的大批量數據傳輸,具有廣泛的應用前景,同時(shí),使用了FIFO作為緩存,進(jìn)一步提高了數據吞吐量,具有較強的實(shí)用價(jià)值。
評論