基于FPGA的高速訪問USB設(shè)備設(shè)計
1.3.2 應(yīng)用程序設(shè)計
本文引用地址:http://www.ex-cimer.com/article/263272.htm本方案通過Linux系統(tǒng)的熱插拔機制自動啟動應(yīng)用程序。在U盤插入USB接口后,Linux系統(tǒng)自動加載USB驅(qū)動和FPGA驅(qū)動并啟動應(yīng)用程序。應(yīng)用程序流程如圖5所示。
運行應(yīng)用程序時,通過設(shè)置參數(shù)能使應(yīng)用程序讀取U盤、移動硬盤甚至網(wǎng)絡(luò)上的文件,使方案具有很高的靈活性。應(yīng)用程序使用了多線程技術(shù)來充分利用系統(tǒng)資源,使用兩個線程分別實現(xiàn)從U盤讀取數(shù)據(jù)存入緩沖區(qū)的過程和將緩沖區(qū)內(nèi)的數(shù)據(jù)傳輸至FPGA的過程。在讀取線程或?qū)懭刖€程中,可以加入數(shù)據(jù)處理代碼實現(xiàn)數(shù)據(jù)的預(yù)處理,減少FPGA工作量。應(yīng)用程序分配了多個緩沖區(qū)提高性能,并使用了互斥鎖實現(xiàn)讀取線程與傳輸線程間的線程同步,確保數(shù)據(jù)正確傳輸。
1.4 ARM向FPGA傳輸數(shù)據(jù)設(shè)計
本方案在FPGA中實現(xiàn)一個異步RAM,其使用乒乓機制接收來自ARM處理器的數(shù)據(jù),同時需要將異步RAM中的數(shù)據(jù)寫入DDR 2存儲器。異步RAM內(nèi)部有兩個數(shù)據(jù)緩沖模塊。在乒乓機制中,兩個模塊分別執(zhí)行不同的任務(wù),當(dāng)模塊1接收數(shù)據(jù)來自ARM處理器的數(shù)據(jù)時,模塊2將數(shù)據(jù)寫入DDR 2存儲器。當(dāng)兩個模塊的任務(wù)都完成后,交換模塊1和模塊2的任務(wù)。與現(xiàn)有方案相比,本方案FPGA無需配置外部芯片,所需開發(fā)量較小。
2 測試與分析
2.1 傳輸速率測試
此測試傳輸3個不同大小的文件,記錄數(shù)據(jù)傳輸時間,從而獲得數(shù)據(jù)傳輸速率。
測試結(jié)果如表1所列。
由表1可知,在傳輸速率測試中,測得的最高數(shù)據(jù)傳輸速率為47.6 Mbps,比現(xiàn)有方案如CY7C67300、CH376的數(shù)據(jù)傳輸速率高。在傳輸速率測試中,傳輸100 KB文件的傳輸速率與傳輸1 MB和1 GB文件的傳輸速率相比偏低,而傳輸1 MB和1 GB文件的傳輸速率則相差不大。原因為:
①測試為先進行計時后開始傳輸,存在一段時間未傳輸數(shù)據(jù)。
?、趹?yīng)用程序在傳輸開始前需要一段時間進行初始化,存在一段時間未傳輸數(shù)據(jù)。
在后兩種測試中,以上兩種未傳輸數(shù)據(jù)的時間占總時間的比重較低,因此數(shù)據(jù)傳輸速率較高。
2.2 傳輸準確率測試
此測試在FPGA內(nèi)實現(xiàn)一個比較器,比較異步RAM接收到的數(shù)據(jù)與比較器內(nèi)置數(shù)據(jù)是否一致,從而測試傳輸是否正確并確定正確率。經(jīng)測試,此方案在傳輸過程中無差錯發(fā)生,傳輸正確率為100%。
結(jié)語
FPGA與ARM處理器相配合實現(xiàn)FPGA高速獲取U盤數(shù)據(jù)的方案,可以滿足FPGA高速讀取U盤數(shù)據(jù)的需求。在傳輸過程中無差錯,且具有良好的靈活性。本方案具有很高的實用價值。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
fpga相關(guān)文章:fpga是什么
linux相關(guān)文章:linux教程
評論