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