《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于CY7C68013A的USB2.0高速接口設(shè)計
基于CY7C68013A的USB2.0高速接口設(shè)計
來源:電子技術(shù)應(yīng)用2014年第1期
趙 林, 孟令軍, 于 磊, 張 園
中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點(diǎn)實驗室 電子測試技術(shù)重點(diǎn)實驗室, 山西 太原030051
摘要: 為了充分利用USB2.0的帶寬,解決數(shù)據(jù)傳輸時存在的速度瓶頸問題,,提出了一種基于CY7C68013A的USB2.0高速接口設(shè)計方法,。采用CY7C68013A的SLAVE FIFO工作模式,芯片內(nèi)部CPU不參與數(shù)據(jù)傳輸,,F(xiàn)PGA設(shè)計的外部控制電路直接讀寫芯片內(nèi)部FIFO,,有效避免了內(nèi)部CPU參與數(shù)據(jù)傳輸時帶來的時間開銷,從而提高了傳輸速度,。
關(guān)鍵詞: FPGA USB2.0 CY7C68013A
中圖分類號: TP303
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0131-03
USB2.0 high speed interface design based on CY7C68013A
Zhao Lin, Meng Lingjun, Yu Lei, Zhang Yuan
National Key Laboratory For Electronic Measurement Technology, Key Laboratory of Instrumentation Science & Dynamic Measurement, North University of China, Taiyuan 030051, China
Abstract: In order to fully utilize the bandwidth of USB2.0 and solve the transmission bottleneck problem, a high-speed USB2.0 interface based on CY7C68013A is proposed in this paper. CY7C68013A runs at SLAVE FIFO mode,the chip’s CPU is not involved in the data transmission. The external control circuit is designed by FPGA which read and write the chip FIFO directly. The design effectively avoids wasting of time if the internal CPU participate in the data transmission, and increases the transmission speed.
Key words : USB 2.0,; CY7C68013A; FPGA

    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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。