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