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