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