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