<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 一種FPGA高速訪(fǎng)問(wèn)USB設備的設計方案

一種FPGA高速訪(fǎng)問(wèn)USB設備的設計方案

作者: 時(shí)間:2016-10-18 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:針對訪(fǎng)問(wèn)存在傳輸速率低、資源消耗大、開(kāi)發(fā)復雜的缺點(diǎn),提出了一種將ARM處理器與相結合實(shí)現高速訪(fǎng)問(wèn)的方案。該方案利用ARM處理器的USB Host讀取數據井緩存于高速內存,采用乒乓機制通過(guò)SRAM接口將數據傳給。經(jīng)測試,數據傳輸速率可以達到48 Mbps。該方案具有開(kāi)發(fā)難度小,資源占用率低和傳輸速率高的特點(diǎn),適合于FPGA高速讀取大量外部數據。

本文引用地址:http://dyxdggzs.com/article/201610/308455.htm

引言

目前FPGA通過(guò)USB接口獲取USB設備中數據的方案大致分為兩大類(lèi),一類(lèi)為在FPGA內部實(shí)現USB設備控制,另一類(lèi)為在FPGA外部實(shí)現USB設備控制。在FPGA內部實(shí)現的方案需要在FPGA內部實(shí)現USB控制器,在內部實(shí)現或者外接USB收發(fā)器。該方案的實(shí)現具有較大難度,同時(shí)由于USB協(xié)議和文件系統都相當復雜,需要使用相當多的FPGA資源,因此完全不能滿(mǎn)足快速開(kāi)發(fā)和低FPGA資源占用率的要求。在FPGA外部實(shí)現的方案通常使用單芯片的USB解決方案,典型的方案有兩種:一種是集成了USB控制器和USB收發(fā)器,但需自行實(shí)現文件系統,如美國Cypress公司的CY7C67300;另一種是實(shí)現了包括文件系統在內的所有USB讀取U盤(pán)所需的軟硬件,只需要FPGA發(fā)送命令進(jìn)行控制即可實(shí)現讀取U盤(pán),如南京沁恒電子的CH376。在這兩類(lèi)方案中,CY7C67300集成度高,但其只支持USB 1.1,傳輸速率較低;同時(shí)需要FPGA對其進(jìn)行配置和控制及實(shí)現文件系統,FPGA端的開(kāi)發(fā)量較大。CH376支持USB2.0接口,是一個(gè)真正的單芯片解決方案;但CH376只支持FAT16/32文件系統,不支持NTFS文件系統,無(wú)法讀取大于4 GB的大文件。另外,CH376需要FPGA進(jìn)行配置和控制,因此需要實(shí)現CH376的控制邏輯并占用一定的FPGA資源。

由于現有方案均存在數據傳輸速率低、FPGA開(kāi)發(fā)量大的缺點(diǎn),本文提出了一種使用ARM+FPGA的方案,通過(guò)ARM處理器讀取USB設備數據并傳輸給FPGA,從而實(shí)現FPGA從USB設備獲取數據。該方案既能達到較高的數據傳輸速率,又能降低FPGA開(kāi)發(fā)量,同時(shí)還具有很高的靈活性。

1 系統設計

本方案的系統設計如圖1所示。該系統由ARM處理器、FPGA和USB設備構成,FPGA通過(guò)內部開(kāi)辟的異步RAM空間接收數據,ARM處理器負責將USB設備中數據通過(guò)并行總線(xiàn)轉發(fā)給FPGA,USB設備支持常見(jiàn)的U盤(pán)、照相機、移動(dòng)硬盤(pán)等支持USB接口的從設備。本設計還將ARM處理器的兩個(gè)引腳與FPGA的通信。指令線(xiàn)用于A(yíng)RM向FPGA發(fā)送準備進(jìn)行數據傳輸的指令;響應線(xiàn)用于FPGA在接收到ARM的通知并準備好后響應ARM。與FPGA相連的DDR存儲器用于高速緩存大量圖像數據,支持常見(jiàn)的DDR、DDR2和DDR3等類(lèi)型。

一種FPGA高速訪(fǎng)問(wèn)USB設備的設計方案

1.1 ARM處理器選擇

本方案選用的ARM處理器為韓國三星公司的S5PV210。S5PV210是一款基于A(yíng)RM Cortex—A8內核的RSIC處理器,該芯片擁有強大的計算能力、豐富的內部資源和外部接口,主頻高達1 GHz,同時(shí)它還擁有優(yōu)化的外部存儲器接口。外部存儲器接口為異步接口,時(shí)鐘頻率為133MHz,位寬為16位,具有完善且可調的時(shí)序控制功能,可用于連接ROM、SRAM、oneNAND、NAND Flash等多種存儲器,能滿(mǎn)足在高端通信服務(wù)中的數據帶寬要求。本方案使用這個(gè)接口完成數據從ARM處理器到FPGA的高速傳輸。

1.2 ARM與FPGA接口設計

本方案將FPGA異步RAM連接在A(yíng)RM處理器的XM0內存總線(xiàn)上,作為一個(gè)位寬為16位的SRAM使用,其對應的硬件地址為0x10000000到0x1000 1002,共4 098字節。由于異步RAM的位寬為16位,故只需使用地址線(xiàn)ADDR 1~ADDR 13。指令線(xiàn)連接ARM處理器的GPIO引腳,方向為輸出,高電平有效。響應線(xiàn)連接ARM處理器的中斷引腳,方向為輸入,上升沿有效。

1.3 軟件設計

在本方案中,ARM處理器以幀為單位向FPGA傳輸數據。每幀長(cháng)度為4 098字節,其中,幀頭長(cháng)度為2字節,數據長(cháng)度為4 096字節。幀格式如圖2所示。

一種FPGA高速訪(fǎng)問(wèn)USB設備的設計方案

幀類(lèi)型的取值為:此幀不是最后幀為00,此幀是最后幀則為11。幀長(cháng)度為幀數據的長(cháng)度,以字節為單位。

本方案所設計的軟件分為兩個(gè)部分一一驅動(dòng)程序和應用程序,軟件總體框圖如圖3所示。驅動(dòng)程序在Linux系統中注冊硬件并提供控制硬件的功能函數,以供應用程序調用。應用程序使用驅動(dòng)程序提供的功能函數控制硬件,完成整個(gè)傳輸過(guò)程。軟件總體流程圖如圖4所示。

一種FPGA高速訪(fǎng)問(wèn)USB設備的設計方案

1.3.1 驅動(dòng)程序設計

本方案涉及3種驅動(dòng)程序:USB驅動(dòng)程序、文件系統驅動(dòng)程序和FPGA驅動(dòng)程序。

Linux系統有豐富完善的USB設備和文件系統支持。本方案使用Linux系統中自帶的USB Mass Storage驅動(dòng)程序和文件系統驅動(dòng)程序,自行編寫(xiě)FPGA驅動(dòng)程序。FPGA驅動(dòng)程序基于Linux系統字符設備驅動(dòng)程序模型進(jìn)行編寫(xiě)。FPGA驅動(dòng)程序的主要函數有初始化函數init()、寫(xiě)入中斷服務(wù)函數write_int()、寫(xiě)入函數write()。

初始化函數init()首先將FPGA異步RAM對應的硬件地址0x10000000~0x10001002映射為L(cháng)inux系統中的內存虛擬地址A到A+4098(設映射的內存虛擬地址起始為A),實(shí)現在Linux系統中直接向異步RAM寫(xiě)入數據。然后,設置指令線(xiàn)、響應線(xiàn)所對應的寄存器。將指令線(xiàn)的方向設置為輸出,并輸出低電平;響應線(xiàn)的方向設置為中斷輸入。最后,函數將響應線(xiàn)中斷服務(wù)函數設置為write_int()。

寫(xiě)入函數write()與寫(xiě)入中斷服務(wù)函數write_int()配合,完成一次數據傳輸:

①當應用程序調用寫(xiě)入函數后,函數首先設置指令線(xiàn)為高電平指示FPGA準備傳輸數據,然后將驅動(dòng)程序置于休眠狀態(tài),等待喚醒。

②FPGA收到指令后判斷現在能否傳輸數據,如果能,則在中斷線(xiàn)上發(fā)送一個(gè)上升沿。ARM處理器捕捉到該上升沿后,調用write_int(),喚醒驅動(dòng)程序。

③驅動(dòng)程序被喚醒后,繼續執行write()。write()函數首先根據應用程序提供的參數生成幀頭,并將幀頭寫(xiě)入地址ADDR和ADDR+1,完成幀頭的傳輸。隨后將數據寫(xiě)入地址ADDR+2及其后的地址,完成數據的傳輸。

1.3.2 應用程序設計

本方案通過(guò)Linux系統的熱插拔機制自動(dòng)啟動(dòng)應用程序。在U盤(pán)插入USB接口后,Linux系統自動(dòng)加載USB驅動(dòng)和FPGA驅動(dòng)并啟動(dòng)應用程序。應用程序流程如圖5所示。

一種FPGA高速訪(fǎng)問(wèn)USB設備的設計方案

運行應用程序時(shí),通過(guò)設置參數能使應用程序讀取U盤(pán)、移動(dòng)硬盤(pán)甚至網(wǎng)絡(luò )上的文件,使方案具有很高的靈活性。應用程序使用了多線(xiàn)程技術(shù)來(lái)充分利用系統資源,使用兩個(gè)線(xiàn)程分別實(shí)現從U盤(pán)讀取數據存入緩沖區的過(guò)程和將緩沖區內的數據傳輸至FPGA的過(guò)程。在讀取線(xiàn)程或寫(xiě)入線(xiàn)程中,可以加入數據處理代碼實(shí)現數據的預處理,減少FPGA工作量。應用程序分配了多個(gè)緩沖區提高性能,并使用了互斥鎖實(shí)現讀取線(xiàn)程與傳輸線(xiàn)程間的線(xiàn)程同步,確保數據正確傳輸。

1.4 ARM向FPGA傳輸數據設計

本方案在FPGA中實(shí)現一個(gè)異步RAM,其使用乒乓機制接收來(lái)自ARM處理器的數據,同時(shí)需要將異步RAM中的數據寫(xiě)入DDR 2存儲器。異步RAM內部有兩個(gè)數據緩沖模塊。在乒乓機制中,兩個(gè)模塊分別執行不同的任務(wù),當模塊1接收數據來(lái)自ARM處理器的數據時(shí),模塊2將數據寫(xiě)入DDR 2存儲器。當兩個(gè)模塊的任務(wù)都完成后,交換模塊1和模塊2的任務(wù)。與現有方案相比,本方案FPGA無(wú)需配置外部芯片,所需開(kāi)發(fā)量較小。

2 測試與分析

2.1 傳輸速率測試

此測試傳輸3個(gè)不同大小的文件,記錄數據傳輸時(shí)間,從而獲得數據傳輸速率。

測試結果如表1所列。

一種FPGA高速訪(fǎng)問(wèn)USB設備的設計方案

由表1可知,在傳輸速率測試中,測得的最高數據傳輸速率為47.6 Mbps,比現有方案如CY7C67300、CH376的數據傳輸速率高。在傳輸速率測試中,傳輸100 KB文件的傳輸速率與傳輸1 MB和1 GB文件的傳輸速率相比偏低,而傳輸1 MB和1 GB文件的傳輸速率則相差不大。原因為:

①測試為先進(jìn)行計時(shí)后開(kāi)始傳輸,存在一段時(shí)間未傳輸數據。

②應用程序在傳輸開(kāi)始前需要一段時(shí)間進(jìn)行初始化,存在一段時(shí)間未傳輸數據。

在后兩種測試中,以上兩種未傳輸數據的時(shí)間占總時(shí)間的比重較低,因此數據傳輸速率較高。

2.2 傳輸準確率測試

此測試在FPGA內實(shí)現一個(gè)比較器,比較異步RAM接收到的數據與比較器內置數據是否一致,從而測試傳輸是否正確并確定正確率。經(jīng)測試,此方案在傳輸過(guò)程中無(wú)差錯發(fā)生,傳輸正確率為100%。

結語(yǔ)

FPGA與ARM處理器相配合實(shí)現FPGA高速獲取U盤(pán)數據的方案,可以滿(mǎn)足FPGA高速讀取U盤(pán)數據的需求。在傳輸過(guò)程中無(wú)差錯,且具有良好的靈活性。本方案具有很高的實(shí)用價(jià)值。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>