文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0131-03
USB(Universal Serial Bus)是一種通用串行總線,,主要用于USB主機(jī)和USB設(shè)備的通信,。USB接口以其快速、即插即拔,、接口規(guī)范統(tǒng)一及使用方便等優(yōu)點(diǎn)成為現(xiàn)代數(shù)據(jù)傳輸?shù)陌l(fā)展趨勢[1-2],。雖然USB2.0接口最高可達(dá)到60 MB/s(480 Mb/s)的傳輸速度,但是目前多數(shù)USB2.0設(shè)備的傳輸速度通常低于30 MB/s,,難以滿足某些系統(tǒng)對高速數(shù)據(jù)傳輸?shù)男枨?,如高清圖像、高清視頻的實時采集,。本文所設(shè)計的USB2.0傳輸速度可達(dá)約49 MB/s,滿足了高速數(shù)據(jù)傳輸?shù)囊蟆?br/>1 芯片介紹
CY7C68013A芯片是賽普拉斯半導(dǎo)體公司USB2.0控制器中的旗艦產(chǎn)品,,單片集成USB2.0收發(fā)器、智能串行接口引擎和增強(qiáng)型8051微處理器,,16 kB代碼/數(shù)據(jù)RAM,,4 kB FIFO,可配置為2倍,、3倍和4倍緩沖區(qū),,一個可編程GPIF接口,支持USB2.0協(xié)議規(guī)定的控制傳輸,、同步傳輸、中斷傳輸以及批量傳輸,。支持速率為12 Mb/s的全速傳輸和速率為480 Mb/s的高速傳輸[3-4],。
2 接口設(shè)計
2.1 硬件連接
采用ALTERA公司CycloneIII系列的FPGA芯片作為主控器, CY7C68013A工作在SLAVE FIFO模式,, 內(nèi)部的CPU不參與數(shù)據(jù)傳輸,,F(xiàn)PGA直接對芯片內(nèi)部FIFO進(jìn)行讀取,硬件連接如圖1所示,各信號功能如表1所示。
2.2 固件設(shè)計
為了縮短開發(fā)周期,,賽普拉斯半導(dǎo)體公司為用戶提供了固件框架,,用戶只需在此固件的基礎(chǔ)上進(jìn)行修改即可實現(xiàn)二次開發(fā)。固件的工作流程為:上電復(fù)位后,,首先初始化全局變量,,然后調(diào)用TD_Init()函數(shù)來配置傳輸所用到的端點(diǎn)和FIFO,初始化用戶自定義變量,。使能中斷后,,CPU進(jìn)入循環(huán)中,每次循環(huán)都調(diào)用一次TD_Poll()函數(shù),,用戶程序放在此函數(shù)中,。需要用戶修改的函數(shù)是TD_Init()和TD_Poll()。
CY7C68013A內(nèi)部集成8個512 B緩沖區(qū),,有12種配置方法,。為了實現(xiàn)高速傳輸,本設(shè)計用到所有緩沖區(qū),,設(shè)置成2個端點(diǎn):端點(diǎn)2為輸出端點(diǎn),,端點(diǎn)深度4×512 B;端點(diǎn)6為輸入端點(diǎn),,端點(diǎn)深度4×512 B,。具體代碼如下:
void TD_Init( void )
{
CPUCS=0x12; //CPU工作時鐘為48 MHz
IFCONFIG=0x43; //同步SLAVE FIFO工作模式,
同步時鐘由FPGA提供,,頻率為
48 MHz
SYNCDELAY;
EP2CFG=0xA0; //端點(diǎn)2方向為OUT,,4倍緩沖,
每個緩沖區(qū)大小為512 B
SYNCDELAY;
EP6CFG=0xE0; //端點(diǎn)6方向為IN,4倍緩沖,,每
個緩沖區(qū)大小為512 B
SYNCDELAY;
FIFORESET=0x80; //激活A(yù)K-ALL
SYNCDELAY;
FIFORESET=0x02; //復(fù)位端點(diǎn)2
SYNCDELAY;
FIFORESET=0x06; //復(fù)位端點(diǎn)6
SYNCDELAY
FIFORESET=0x00; //關(guān)閉AK-ALL
SYNCDELAY;
PINFLAGSAB=0xE6; //FLAGB為端點(diǎn)6滿標(biāo)志
SYNCDELAY;
PINFLAGSCD=0xF8; //FLAGC為端點(diǎn)2空標(biāo)志
SYNCDELAY;
FIFOPINPOLAR=0x00; //所有控制信號低有效
SYNCDELAY;
EP2FIFOCFG=0x11; //端點(diǎn)2為自動模式,,寬度
為16 bit
SYNCDELAY;
EP6FIFOCFG=0x09; //端點(diǎn)6為自動模式,寬度
為16 bit
}
void TD_Poll( void )
{
//為了實現(xiàn)高速傳輸,,內(nèi)部低速CPU不參
//與數(shù)據(jù)傳輸,讀寫FIFO由FPGA來完成,,
//此處不需代碼
}
3 工作過程
3.1 寫入數(shù)據(jù)
FPGA不斷檢測FLAGB(端點(diǎn)6滿信號),當(dāng)FLAGB為高時,,端點(diǎn)6非滿,,F(xiàn)PGA拉低SLWR信號,在每個IFCLK上升沿寫入一個16 bit數(shù)據(jù),;當(dāng)FLAGB為低時,,端點(diǎn)6滿,F(xiàn)PGA拉高SLWR信號,,停止寫數(shù),。工作流程如圖2所示。
4 調(diào)試結(jié)果
實驗用Quartus II自帶邏輯分析儀Signal Tap II對讀寫數(shù)據(jù)進(jìn)行實時采樣,。
4.1 寫入數(shù)據(jù)
圖4為寫入數(shù)據(jù)的波形,, FIFOADDR指向端點(diǎn)6,F(xiàn)PGA檢測到端點(diǎn)6非滿時,,拉低SLWR信號,,在SLWR低電平期間每個IFCLK上升沿寫入一個16 bit數(shù)據(jù)。為了便于看清整體傳輸過程,,將寫入波形縮小,,如圖5所示。
圖5顯示了一次性將512 B數(shù)據(jù)寫入端點(diǎn)6所用的時間,,約為5.3 ?滋s,,突發(fā)數(shù)據(jù)傳輸速率為96 MB/s。在每次寫入512 B數(shù)據(jù)后會有一段約為4.9 μs的空閑時間,,空閑時間是主機(jī)用來處理數(shù)據(jù)的時間,,即是主機(jī)而不是CY7C68013A限制著傳輸速度。由突發(fā)傳輸階段和空閑階段可以算出平均寫入數(shù)據(jù)的速率約為49.8 MB/s,。
4.2 讀出數(shù)據(jù)
圖6為讀出數(shù)據(jù)的波形,,F(xiàn)IFOADDR指向端點(diǎn)2,F(xiàn)PGA檢測到端點(diǎn)2非空時,,拉低SLRD和SLOE信號,,在SLRD低電平期間每個IFCLK上升沿讀出一個16 bit數(shù)據(jù)。為了便于看清整體傳輸過程,,將寫入波形縮小,,如圖7所示。
圖7顯示了從端點(diǎn)2一次性讀出512 B數(shù)據(jù)所用的時間,,約為5.3 ?滋s,,突發(fā)數(shù)據(jù)傳輸速率為96 MB/s。在每次讀出512 B數(shù)據(jù)后會有一段約為5.1 ?滋s的空閑時間,,空閑時間是主機(jī)用來處理數(shù)據(jù)的時間,,即是主機(jī)而不是CY7C68013A限制著傳輸速度。由突發(fā)傳輸階段和空閑階段可以算出平均讀出數(shù)據(jù)的速率約為48.9 MB/s,。
本文闡述了一種高速USB2.0接口的整體設(shè)計過程,,充分利用了USB2.0帶寬,,讀寫速度可達(dá)49 MB/s。實踐表明,,該接口可應(yīng)用于高清圖像,、高清視頻的實時采集系統(tǒng)中。
參考文獻(xiàn)
[1] Cypress Semiconductor Corporation. EZ-USB[R]. FX2LP Datasheet.USA,2012.
[2] Cypress Semiconductor Corporation. EZ-USB[R]. Technical Reference Manual. USA, 2011.
[3] 胡曉軍.USB接口開發(fā)技術(shù)[M]. 西安:西安電子科技大學(xué)出版社, 2005.
[4] 戴小俊.基于USB和DSP的數(shù)據(jù)采集系統(tǒng)設(shè)計[J]. 電子技術(shù)應(yīng)用,,2007,33(1):84-86.