基于USB3.0協(xié)議的PC與FPGA通信系統的設計
摘要 針對USB2.0在高速數據采集系統中帶寬局限問(wèn)題,設計了一款基于USB3.0總線(xiàn)的高速數據采集接口系統。通過(guò)對USB3.0的接口硬件系統、設備固件以及SLAVE FIFO與FPGA接口讀寫(xiě)操作的設計,并經(jīng)過(guò)實(shí)驗測試,USB3.0硬件傳輸速度可達260 MByte·s-1,連續數據采集傳輸速率可達100 MByte·s-1且數據保持穩定。
本文引用地址:http://dyxdggzs.com/article/201610/306326.htm隨著(zhù)USB3.0解決方案的出現,其在保留USB固有優(yōu)勢的基礎上大幅提高了數據傳輸的帶寬,適用于高速數據采集領(lǐng)域。本文針對基于USB的高速數據采集系統進(jìn)行研究,設計了一款基于CYUSB3014芯片的USB3.0高速數據采集接口系統,該系統基于USB3.0協(xié)議來(lái)實(shí)現PC機與FPGA的數據傳輸。本文介紹了USB3.0固件的設計方法,GPIF II接口特性以及SIAVE FIFO與FPGA的讀寫(xiě)操作設計。
1 USB3.0系統結構的設計
如圖1所示,USB3.0系統的主芯片架構為Cypress公司FX3系列CYUSB3014 USB3.0控制芯片、FPGA芯片EP3CA0F484、DDR2芯片MT47H64M16HR。

CYUSB3014 USB專(zhuān)用控制芯片是新一代USB外設控制器,具有高度集成的靈活特性,可幫助開(kāi)發(fā)人員為任何系統添加USB3.0功能。其擁有工作頻率可達200 MHz的32 bit的ARM9內核,使得FX3能夠應用在對數據處理要求較高的地方。芯片內部集成了一個(gè)512 KByte SRAM,用于存儲代碼、配置參數,同時(shí)用作芯片內部DMA通道的緩沖區。并集成了可編程的100 MHz的GPIF II接口能連接多種類(lèi)型外部器件,支持最大32個(gè)可編程物理端點(diǎn)。
2 FX3固件的設計
固件是用以完成驅動(dòng)程序無(wú)法完成的USB芯片及其外圍芯片的初始化及控制工作的代碼。FX3固件的主要功能包括:初始化參數的配置、輔助完成設備的重新枚舉機制、對中斷的處理、數據的接收與發(fā)送以及對外圍的控制。FX3的固件設計只需調用相應的庫函數,而不需要設計者過(guò)分關(guān)注底層硬件設置,大幅降低了固件的開(kāi)發(fā)難度。EZ—USB FX3的固件設計主要包括對GPIF II接口、DMA通道及回調函數的設計。本文主要對GPIF II接口以及DMA通道加以介紹。
2.1 GPIF II接口
GPIF II接口是FX3與外部設備連接的重要組成部分,利用該接口可以實(shí)現與任何外部設備的高速并行數據傳輸。它具有一個(gè)提供多達256個(gè)可編程狀態(tài)的完全可編程的狀態(tài)機,可實(shí)現與任何處理器、ASIC、DSP或FPGA等的設備的無(wú)縫連接。GPIF II接口可在100 MHz的工作頻率下實(shí)現32 bit數據的并行傳輸,最高有效數據的傳輸速率可達400 MByte ·s-1。該接口可配置為主機模式或從機模式,且數據總線(xiàn)可在8 bit、16 bit及32 bit之間靈活選擇。
設計將GPIF II接口配置為32位同步SLAVEFIFO模式,外部處理器可像對普通FIFO一樣對FX3FIFO進(jìn)行讀寫(xiě)。由PCLK信號作為接口狀態(tài)機的工作時(shí)鐘,接口上的地址信號A0:A1表示要訪(fǎng)問(wèn)的線(xiàn)程,FPGA通過(guò)檢測4個(gè)標志信號FLAGA~D來(lái)檢測緩沖FIFO是空或者滿(mǎn)。配置為SLAVE FIFO模式的GPIF II與外部設備的信號連接如圖2所示。

2.2 DMA通道
FX3內部通過(guò)DMA通道將不同外圍接口連接起來(lái),以實(shí)現不同接口之間的數據傳輸。DMA通道是一種軟件結構,該結構封裝了套接字、緩沖區和描述符3種硬件元素。套接字是存在于外部接口中的硬件模塊,一個(gè)外部接口可以包含多個(gè)套接字,在固件系統中套接字處于DMA通道的兩端,一個(gè)套接字用于輸入數據,另一個(gè)則用于輸出數據。數據通過(guò)套接字流入或流出已建立好的DMA數據通道。緩沖區是控制器系統內存中的數據緩沖區,相當于DMA數據通道中的中轉站,流入套接字的數據首先被存放到緩沖區中,然后才能被輸出數據的套接字從緩沖區中讀出。描述符作為一種數據結構可將與數據流相關(guān)的套接字和緩沖區關(guān)聯(lián)起來(lái)。圖3為一個(gè)方向為P2U的DMA數據通道,此數據通道由8個(gè)尺寸為16×1 024的緩存及一個(gè)PIB套接字和一個(gè)UIB套接字組成。

FX3提供了多種DMA通道模式,可分為兩種:一種是自動(dòng)DMA通道;另一種是手動(dòng)DMA通道。自動(dòng)DMA通道在通道建立起來(lái)并開(kāi)始運行后,固件就不再干預數據流的傳輸,數據將連續不斷地流過(guò)自動(dòng)數據通道,因不需固件干預,所以這種通道模式能提供最大的數據效率;而手動(dòng)DMA通道在數據流動(dòng)過(guò)程中需要CPU干預,這樣就可監視或修改數據流,但有可能會(huì )降低數據的傳輸效率。所以設計采用自動(dòng)DMA方式實(shí)現USB接口與GPIF II接口的數據傳輸。
3 FPGA中實(shí)現讀寫(xiě)程序設計
本文通過(guò)FPGA采用狀態(tài)機模式控制同步SLAVEFIFO接口的讀寫(xiě)操作來(lái)實(shí)現訪(fǎng)問(wèn)FX34個(gè)線(xiàn)程的功能。
(1)SLAVE FIFO讀操作。
IDLE:設定SLAVE FIFO的地址A0:A1;
STATE 0~3:狀態(tài)自加,使FIFO地址穩定且SLCS被激活;
STATE 4:SLOE被激活,驅動(dòng)數據總線(xiàn);
STATE 5:SLRD和外部寫(xiě)信號被激活。且FIFO指針在PCLK的上升沿更新,這會(huì )啟動(dòng)從新尋址位置到數據總線(xiàn)之間的數據傳輸。
(2)SLAVE FIFO寫(xiě)操作。
IDLE—STATE 4:與讀操作相同,只是在STATE 5激活sLwR信號以及外部讀信號。當sLwR被激活時(shí),數據寫(xiě)至FlF0和PcLK的上升沿,FIF0指針遞增。
4 USB3.0采集卡實(shí)測
設計的LISB3.O樣板出來(lái)后需要從多方面對其進(jìn)行實(shí)際測試以驗證其正確性。下面從兩方面測試板卡設計的正確性。
(1)USB3.0固件枚舉測試。USB3.0固件能否正常工作的一個(gè)重要標志是當USB3.0控制器連接到主機上時(shí),設備能否正常運行。設計采用Cypress主機測試軟件USB Control Center對FX3固件枚舉功能進(jìn)行測試。經(jīng)測試,測試軟件成功接收了由固件發(fā)的各種描述符。圖4為USB3.0的枚舉成功后在測試軟件上的正確顯示。

(2)USB3.0數據傳輸測試。設計通過(guò)EP1 OUT端點(diǎn)來(lái)控制EP2 IN和EP2 OUT兩個(gè)端點(diǎn)數據的接受和發(fā)送。當通過(guò)EP1 OUT發(fā)送的最后32位數的低4位為4’h1時(shí),FPGA接受來(lái)自EP2 OUT端點(diǎn)的數據;當通過(guò)EP1 OUT發(fā)送的最后32位數的低4位為4’hF時(shí),FPGA向EP2 IN端點(diǎn)發(fā)送測試數據,如圖5所示。圖6為邏輯分析儀實(shí)時(shí)監測的PC向FPCA發(fā)送的數據顯示。


5 結束語(yǔ)
本文介紹了USB3.0控制器的固件及FPGA讀寫(xiě)操作的主要工作機制,并通過(guò)實(shí)驗驗證了所設計USB3.0板卡的穩定性及正確性。對USB3.0固件機制的深入研究是提高設計質(zhì)量的前提,因而有必要對該固件作進(jìn)一步研究以提高設計的效率與正確性。
評論