摘 要:為了解決高速數(shù)據(jù)傳輸系統(tǒng)中的速度瓶頸問題,設(shè)計了一種基于CY7C68013的高速USB2.0數(shù)據(jù)傳輸系統(tǒng)。本文簡要介紹了CY7C68013的主要特點和外部硬件連接,闡述了USB固件程序設(shè)計、設(shè)備驅(qū)動程序設(shè)計和PC端的應(yīng)用程序設(shè)計的方法。測試結(jié)果表明,系統(tǒng)通過USB接口實現(xiàn)了高速可靠的數(shù)據(jù)傳輸。
關(guān)鍵詞:USB;CY7C68013;高速數(shù)據(jù)傳輸
1 引言
在高速數(shù)據(jù)傳輸系統(tǒng)中,USB(Universal Serial Bus)接口因其高速、即插即用和易于擴(kuò)展等特點得到了非常廣泛的應(yīng)用[1]。目前USB2.0標(biāo)準(zhǔn)的傳輸速度最高已達(dá)480Mb/s,能夠滿足大多數(shù)數(shù)據(jù)傳輸系統(tǒng)的需求。本文介紹的是基于Cypress公司生產(chǎn)的USB2.0芯片CY7C68013的高速數(shù)據(jù)傳輸系統(tǒng),該系統(tǒng)具有傳輸速率高、誤碼率低、易于擴(kuò)展等特點。
2 CY7C68013簡介
CY7C68013是Cypress公司的EZ-USB FX2系列芯片。該芯片符合USB2.0協(xié)議標(biāo)準(zhǔn),它支持12Mbps的全速以及480Mbps高速傳輸,是一種完全集成的USB2.0方案,具有USB2.0全帶寬能力,以其良好的性能和獨(dú)特的設(shè)計在USB接口開發(fā)領(lǐng)域中占有重要的地位[2]。
EZ-USB FX2芯片將USB外圍接口所需的各種功能包裝為一個簡潔的集成電路。如圖1所示:其內(nèi)部構(gòu)成包括USB收發(fā)器、串行接口引擎(SIE)、4kB的FIFO存儲器、8.5kB的RAM、增強(qiáng)型8051內(nèi)核、8/16位數(shù)據(jù)總線、I/O端口和通用可編程接口(GPIF)。
3 系統(tǒng)硬件連接
為了滿足系統(tǒng)對于數(shù)據(jù)傳輸?shù)乃俣群蛯崟r性的要求,將CY7C68013設(shè)置工作在Slave FIFO模式。其硬件電路連接圖如圖2所示。
如圖2所示,CY7C68013使用外部提供的24MHz晶振。FPGA與CY7C68013通過16位雙向數(shù)據(jù)總線FD[15:0]進(jìn)行數(shù)據(jù)交互。FIFOADR[1:0]用于選擇和FD連接的端點緩沖區(qū),在數(shù)據(jù)輸入時設(shè)定為00,選擇端點2;數(shù)據(jù)輸出時設(shè)定為01,選擇端點4。SLOE(輸出使能)和SLRD信號(讀使能信號)共同有效,對CY7C68013進(jìn)行讀操作。SLWR為CY7C68013的寫使能信號。FLAGA、FLAGB、FLAGC表示CY7C68013內(nèi)FIFO的當(dāng)前狀態(tài)。
4 系統(tǒng)軟件設(shè)計
系統(tǒng)的軟件設(shè)計包含三個部分:USB固件程序設(shè)計、設(shè)備驅(qū)動程序設(shè)計和應(yīng)用程序設(shè)計。
4.1 USB固件程序設(shè)計
固件程序設(shè)計實際上就是CY7C68013的軟件設(shè)計。它在CY7C68013芯片的8051內(nèi)核中運(yùn)行,負(fù)責(zé)芯片初始化,重新設(shè)置設(shè)備如設(shè)備描述符及設(shè)備功能代碼等。Cypress公司為簡化程序的編寫并縮減開發(fā)周期,為開發(fā)者提供了固件程序開發(fā)框架,用戶只需在這些框架文件的函數(shù)里添加自己的程序代碼,就可以實現(xiàn)所需的特定功能[3]。固件程序的基本工作流程如圖3所示。
4.2 設(shè)備驅(qū)動程序設(shè)計
USB設(shè)備驅(qū)動程序介于硬件與用戶應(yīng)用軟件之間,為二者之間通信起到橋梁的作用。在WINDOWS系統(tǒng)下,主機(jī)與設(shè)備之間的USB通信必須經(jīng)過設(shè)備驅(qū)動程序來傳輸。
該系統(tǒng)的USB驅(qū)動程序是基于WDM(Win32 Driver Mode,Win32驅(qū)動程序模型)的,是Microsoft力推的全新驅(qū)動程序模式,旨在通過提供靈活的方式來簡化驅(qū)動程序的開發(fā),實現(xiàn)對新硬件的支持。WDM體系結(jié)構(gòu)實行分層處理,每層驅(qū)動把I/O請求劃分成更簡單的請求,以傳給更下層的驅(qū)動執(zhí)行。最底層的驅(qū)動程序在收到I/O請求后,通過硬件抽象層,與硬件發(fā)生作用,從而完成I/O請求工作,如圖4所示。
Cypress公司提供了EZ-USB通用驅(qū)動程序ezusb.sys,降低了USB設(shè)備驅(qū)動程序的開發(fā)過程。EZ-USB通用驅(qū)動程序是一個可用于EZ-USB外圍設(shè)備接口的通用設(shè)備驅(qū)動程序,采用WDM驅(qū)動程序模式,支持即插即拔和USB的4種傳輸模式,提供應(yīng)用程序和USB設(shè)備請求數(shù)據(jù)傳輸?shù)慕涌凇i_發(fā)人員使用驅(qū)動程序通過EZ-USB控制面板執(zhí)行標(biāo)準(zhǔn)的USB設(shè)備請求和數(shù)據(jù)傳輸,從而檢測或調(diào)試USB設(shè)備的性能。
4.3 應(yīng)用程序設(shè)計
應(yīng)用程序以驅(qū)動程序為橋梁,對CY7C68013進(jìn)行控制,處理CY7C68013傳回的數(shù)據(jù)。Cypress公司為USB主機(jī)提供了通用控制函數(shù)庫CyAPI.lib,主機(jī)調(diào)用庫中接口函數(shù)便可完成與采集系統(tǒng)之間的數(shù)據(jù)傳輸。USB主機(jī)應(yīng)用程序工作流程如圖5所示。
5 結(jié)束語
本設(shè)計通過USB 2.0接口芯片CY7C68013實現(xiàn)了一種高速、穩(wěn)定的數(shù)據(jù)傳輸系統(tǒng),并可用于任意的數(shù)據(jù)采集系統(tǒng)中,具有較強(qiáng)的兼容性。本設(shè)計已成功運(yùn)用于某GNSS信號采集系統(tǒng),經(jīng)實測,最高傳輸速率達(dá)到了375Mb/s,數(shù)據(jù)高速穩(wěn)定,完全能夠滿足該信號采集系統(tǒng)的要求。
[參考文獻(xiàn)]
[1]周芳.基于FPGA的USB接口讀寫設(shè)計[J].安徽工業(yè)大學(xué)學(xué)報.2006.(01):76~79.
[2]Bi Bo.Sun Shuying.Wang Chunping.Design of Data Acquisition Equipment Based on USB[J].Electronic Measurement and Instrument.2007:866~868
[3]吳磊,郭超平,申世濤.基于CY7C68013與FPGA的便攜式數(shù)據(jù)采集系統(tǒng)[J].計算機(jī)應(yīng)用.2012,32:164~166.