基于USB3.0協(xié)議的PC與FPGA通信系統(tǒng)的設(shè)計
摘要 針對USB2.0在高速數(shù)據(jù)采集系統(tǒng)中帶寬局限問題,設(shè)計了一款基于USB3.0總線的高速數(shù)據(jù)采集接口系統(tǒng)。通過對USB3.0的接口硬件系統(tǒng)、設(shè)備固件以及SLAVE FIFO與FPGA接口讀寫操作的設(shè)計,并經(jīng)過實驗測試,USB3.0硬件傳輸速度可達(dá)260 MByte·s-1,連續(xù)數(shù)據(jù)采集傳輸速率可達(dá)100 MByte·s-1且數(shù)據(jù)保持穩(wěn)定。
本文引用地址:http://butianyuan.cn/article/201610/306326.htm隨著USB3.0解決方案的出現(xiàn),其在保留USB固有優(yōu)勢的基礎(chǔ)上大幅提高了數(shù)據(jù)傳輸?shù)膸?,適用于高速數(shù)據(jù)采集領(lǐng)域。本文針對基于USB的高速數(shù)據(jù)采集系統(tǒng)進(jìn)行研究,設(shè)計了一款基于CYUSB3014芯片的USB3.0高速數(shù)據(jù)采集接口系統(tǒng),該系統(tǒng)基于USB3.0協(xié)議來實現(xiàn)PC機(jī)與FPGA的數(shù)據(jù)傳輸。本文介紹了USB3.0固件的設(shè)計方法,GPIF II接口特性以及SIAVE FIFO與FPGA的讀寫操作設(shè)計。
1 USB3.0系統(tǒng)結(jié)構(gòu)的設(shè)計
如圖1所示,USB3.0系統(tǒng)的主芯片架構(gòu)為Cypress公司FX3系列CYUSB3014 USB3.0控制芯片、FPGA芯片EP3CA0F484、DDR2芯片MT47H64M16HR。
CYUSB3014 USB專用控制芯片是新一代USB外設(shè)控制器,具有高度集成的靈活特性,可幫助開發(fā)人員為任何系統(tǒng)添加USB3.0功能。其擁有工作頻率可達(dá)200 MHz的32 bit的ARM9內(nèi)核,使得FX3能夠應(yīng)用在對數(shù)據(jù)處理要求較高的地方。芯片內(nèi)部集成了一個512 KByte SRAM,用于存儲代碼、配置參數(shù),同時用作芯片內(nèi)部DMA通道的緩沖區(qū)。并集成了可編程的100 MHz的GPIF II接口能連接多種類型外部器件,支持最大32個可編程物理端點。
2 FX3固件的設(shè)計
固件是用以完成驅(qū)動程序無法完成的USB芯片及其外圍芯片的初始化及控制工作的代碼。FX3固件的主要功能包括:初始化參數(shù)的配置、輔助完成設(shè)備的重新枚舉機(jī)制、對中斷的處理、數(shù)據(jù)的接收與發(fā)送以及對外圍的控制。FX3的固件設(shè)計只需調(diào)用相應(yīng)的庫函數(shù),而不需要設(shè)計者過分關(guān)注底層硬件設(shè)置,大幅降低了固件的開發(fā)難度。EZ—USB FX3的固件設(shè)計主要包括對GPIF II接口、DMA通道及回調(diào)函數(shù)的設(shè)計。本文主要對GPIF II接口以及DMA通道加以介紹。
2.1 GPIF II接口
GPIF II接口是FX3與外部設(shè)備連接的重要組成部分,利用該接口可以實現(xiàn)與任何外部設(shè)備的高速并行數(shù)據(jù)傳輸。它具有一個提供多達(dá)256個可編程狀態(tài)的完全可編程的狀態(tài)機(jī),可實現(xiàn)與任何處理器、ASIC、DSP或FPGA等的設(shè)備的無縫連接。GPIF II接口可在100 MHz的工作頻率下實現(xiàn)32 bit數(shù)據(jù)的并行傳輸,最高有效數(shù)據(jù)的傳輸速率可達(dá)400 MByte ·s-1。該接口可配置為主機(jī)模式或從機(jī)模式,且數(shù)據(jù)總線可在8 bit、16 bit及32 bit之間靈活選擇。
設(shè)計將GPIF II接口配置為32位同步SLAVEFIFO模式,外部處理器可像對普通FIFO一樣對FX3FIFO進(jìn)行讀寫。由PCLK信號作為接口狀態(tài)機(jī)的工作時鐘,接口上的地址信號A0:A1表示要訪問的線程,F(xiàn)PGA通過檢測4個標(biāo)志信號FLAGA~D來檢測緩沖FIFO是空或者滿。配置為SLAVE FIFO模式的GPIF II與外部設(shè)備的信號連接如圖2所示。
2.2 DMA通道
FX3內(nèi)部通過DMA通道將不同外圍接口連接起來,以實現(xiàn)不同接口之間的數(shù)據(jù)傳輸。DMA通道是一種軟件結(jié)構(gòu),該結(jié)構(gòu)封裝了套接字、緩沖區(qū)和描述符3種硬件元素。套接字是存在于外部接口中的硬件模塊,一個外部接口可以包含多個套接字,在固件系統(tǒng)中套接字處于DMA通道的兩端,一個套接字用于輸入數(shù)據(jù),另一個則用于輸出數(shù)據(jù)。數(shù)據(jù)通過套接字流入或流出已建立好的DMA數(shù)據(jù)通道。緩沖區(qū)是控制器系統(tǒng)內(nèi)存中的數(shù)據(jù)緩沖區(qū),相當(dāng)于DMA數(shù)據(jù)通道中的中轉(zhuǎn)站,流入套接字的數(shù)據(jù)首先被存放到緩沖區(qū)中,然后才能被輸出數(shù)據(jù)的套接字從緩沖區(qū)中讀出。描述符作為一種數(shù)據(jù)結(jié)構(gòu)可將與數(shù)據(jù)流相關(guān)的套接字和緩沖區(qū)關(guān)聯(lián)起來。圖3為一個方向為P2U的DMA數(shù)據(jù)通道,此數(shù)據(jù)通道由8個尺寸為16×1 024的緩存及一個PIB套接字和一個UIB套接字組成。
FX3提供了多種DMA通道模式,可分為兩種:一種是自動DMA通道;另一種是手動DMA通道。自動DMA通道在通道建立起來并開始運行后,固件就不再干預(yù)數(shù)據(jù)流的傳輸,數(shù)據(jù)將連續(xù)不斷地流過自動數(shù)據(jù)通道,因不需固件干預(yù),所以這種通道模式能提供最大的數(shù)據(jù)效率;而手動DMA通道在數(shù)據(jù)流動過程中需要CPU干預(yù),這樣就可監(jiān)視或修改數(shù)據(jù)流,但有可能會降低數(shù)據(jù)的傳輸效率。所以設(shè)計采用自動DMA方式實現(xiàn)USB接口與GPIF II接口的數(shù)據(jù)傳輸。
3 FPGA中實現(xiàn)讀寫程序設(shè)計
本文通過FPGA采用狀態(tài)機(jī)模式控制同步SLAVEFIFO接口的讀寫操作來實現(xiàn)訪問FX34個線程的功能。
(1)SLAVE FIFO讀操作。
IDLE:設(shè)定SLAVE FIFO的地址A0:A1;
STATE 0~3:狀態(tài)自加,使FIFO地址穩(wěn)定且SLCS被激活;
STATE 4:SLOE被激活,驅(qū)動數(shù)據(jù)總線;
STATE 5:SLRD和外部寫信號被激活。且FIFO指針在PCLK的上升沿更新,這會啟動從新尋址位置到數(shù)據(jù)總線之間的數(shù)據(jù)傳輸。
(2)SLAVE FIFO寫操作。
IDLE—STATE 4:與讀操作相同,只是在STATE 5激活sLwR信號以及外部讀信號。當(dāng)sLwR被激活時,數(shù)據(jù)寫至FlF0和PcLK的上升沿,F(xiàn)IF0指針遞增。
4 USB3.0采集卡實測
設(shè)計的LISB3.O樣板出來后需要從多方面對其進(jìn)行實際測試以驗證其正確性。下面從兩方面測試板卡設(shè)計的正確性。
(1)USB3.0固件枚舉測試。USB3.0固件能否正常工作的一個重要標(biāo)志是當(dāng)USB3.0控制器連接到主機(jī)上時,設(shè)備能否正常運行。設(shè)計采用Cypress主機(jī)測試軟件USB Control Center對FX3固件枚舉功能進(jìn)行測試。經(jīng)測試,測試軟件成功接收了由固件發(fā)的各種描述符。圖4為USB3.0的枚舉成功后在測試軟件上的正確顯示。
(2)USB3.0數(shù)據(jù)傳輸測試。設(shè)計通過EP1 OUT端點來控制EP2 IN和EP2 OUT兩個端點數(shù)據(jù)的接受和發(fā)送。當(dāng)通過EP1 OUT發(fā)送的最后32位數(shù)的低4位為4’h1時,F(xiàn)PGA接受來自EP2 OUT端點的數(shù)據(jù);當(dāng)通過EP1 OUT發(fā)送的最后32位數(shù)的低4位為4’hF時,F(xiàn)PGA向EP2 IN端點發(fā)送測試數(shù)據(jù),如圖5所示。圖6為邏輯分析儀實時監(jiān)測的PC向FPCA發(fā)送的數(shù)據(jù)顯示。
5 結(jié)束語
本文介紹了USB3.0控制器的固件及FPGA讀寫操作的主要工作機(jī)制,并通過實驗驗證了所設(shè)計USB3.0板卡的穩(wěn)定性及正確性。對USB3.0固件機(jī)制的深入研究是提高設(shè)計質(zhì)量的前提,因而有必要對該固件作進(jìn)一步研究以提高設(shè)計的效率與正確性。
評論