《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于CY7C68013的高速數(shù)據(jù)傳輸系統(tǒng)的設(shè)計
基于CY7C68013的高速數(shù)據(jù)傳輸系統(tǒng)的設(shè)計
來源:電子技術(shù)應(yīng)用2010年第7期
熊俊俏,,劉 崢
武漢工程大學(xué) 電氣信息學(xué)院,,湖北 武漢430073
摘要: 采用Cypress公司的CY7C68013芯片設(shè)計了通用的USB接口,,結(jié)合MAX7128的串/并/串轉(zhuǎn)換和光纖收發(fā)系統(tǒng),,實現(xiàn)數(shù)據(jù)的高速傳輸。介紹了系統(tǒng)的軟硬件結(jié)構(gòu),, 詳細介紹了固件設(shè)計和WDM驅(qū)動程序的結(jié)構(gòu)、特性、工作機制,、軟件流程及與USB設(shè)備通信的方法。測試表明,,該系統(tǒng)達到了預(yù)期的設(shè)計目標和實用要求,。
中圖分類號: TP334.7
文獻標識碼: A
文章編號: 0258-7998(2010)07-0073-03
Design and realization of high-speed data transmission system based on CY7C68013
XIONG Jun Qiao,LIU Zheng
College of Electrical and Electronic Engineering, Wuhan Institute of Technology, Wuhan 430073,China
Abstract: A common USB interface was designed based on Cypress′s CY7C68013 chip, jointed with serial- parallel or parallel-serial conversion by MAX7128 and optical transceiver systems, the high-speed data transmission was achieved. The system hardware and software architecture was described. All were described in detail including firmware design, structure,、characteristics and working mechanism of WDM driver software, software processes and methods to communicate with USB devices. The testing shows that the system can absolutely fulfill the design and practical requirements.
Key words : CY7C68013,;USB2.0;MCU,;WDM

    USB控制器是以USB串口引擎為主的專用集成電路,,并可延伸至對其進行管理的MCU以及相應(yīng)的軟硬件。目前市場上供應(yīng)的USB控制器主要有2種:帶USB接口的單片機(MCU)或純粹的USB接口芯片,。帶USB接口的單片機可分為2類:一類是從底層設(shè)計專用于USB控制的單片機,,如Cypress公司的CY7C63513、CY7C64013等[1],,由于開發(fā)工具的專用性,,往往應(yīng)用于各種專業(yè)應(yīng)用場合,如微機主板等[2-4],;另一類是增加了USB接口的普通單片機,,如Intel公司的8X931、8X930以及Cypress公司的EZ-USB,,由于均基于8051內(nèi)核,,因而得到了廣泛應(yīng)用。
1 CY7C68013與系統(tǒng)結(jié)構(gòu)簡介
    Cypress公司的CY7C68013芯片是集成USB2.0協(xié)議的微處理器,,支持12 Mb/s的全速傳輸和480 Mb/s的高速傳輸,,具有控制傳輸、中斷傳輸,、塊傳輸和同步傳輸4種傳輸方式,,內(nèi)部包括一個增強型8051處理器內(nèi)核、一個串行接口引擎(SIE),、一個USB收發(fā)器,、8.5 KB片上RAM和4 KB FIFO存儲器以及一個通用可編程接口(GPIF)。8051可工作在48 MHz/24 MHz/12 MHz時鐘頻率,,內(nèi)部可自動產(chǎn)生480 MHz的頻率供USB2.0串行收發(fā)引擎使用,。由于數(shù)據(jù)緩沖器與SIE相連接,數(shù)據(jù)進入收發(fā)器后,,通過SIE可直接轉(zhuǎn)向FIFO,,通過8 bit或16 bit數(shù)據(jù)接口與外設(shè)連接,存取數(shù)據(jù),。微控制器不參與數(shù)據(jù)傳輸,,但允許以FIFO或RAM的方式訪問這些共享FIFO,從而實現(xiàn)低速控制,、高速傳輸,。CY7C68013有GPIF/SLAVE FIFO/GPIO 3種接口模式,,本系統(tǒng)采用Slave FIFO接口模式,選用控制傳輸和塊傳輸2種方式,,外部控制器可像普通FIFO一樣對FIFO進行讀寫,。
    本數(shù)據(jù)傳輸系統(tǒng)分為3部分:發(fā)送端和接收端、CY7C68013控制器,、具有并/串(或串并轉(zhuǎn)換)功能的CPLD芯片(MAX7128)以及光纖傳輸模塊,。其中,CY7C68013和MAX7128之間采用并行連接方式,,MAX7128與激光發(fā)送(接收)模塊間是串行連接,,如圖1(a)所示。

    圖1(a)中,,主機將數(shù)據(jù)發(fā)送到CY7C68013端點FIFO緩沖器中,,然后CY7C68013將端點FIFO中的數(shù)據(jù)分字節(jié)放到一組I/O口上,并且使能讀信號,,MAX7128讀取I/O上的邏輯值,,當接收512 B后,MAX7128將這512 B的數(shù)據(jù)從低到高串行發(fā)送給激光發(fā)送模塊,;數(shù)據(jù)經(jīng)過光纖傳輸,,進入激光接收模塊,輸出串行信號,,通過MAX7128實現(xiàn)串并轉(zhuǎn)換,,數(shù)據(jù)寬度為8 bit,通過CY7C68013的從屬FIFO的寫入時序即可將數(shù)據(jù)寫入CY7C68013的端點緩沖器中,。
    USB數(shù)據(jù)傳輸接口開發(fā)分為4個層次,,接口硬件、接口軟件,、驅(qū)動和應(yīng)用程序如圖1(b)所示,。
2 固件程序設(shè)計
    由于高速數(shù)據(jù)傳輸不需要固件程序參與,固件程序僅僅處理主機的發(fā)送請求,。在發(fā)送端,,固件將數(shù)據(jù)放置到I/O口上供MAX7128讀取,;在接收端,,MAX7128完成串并轉(zhuǎn)換后,將數(shù)據(jù)用特定時序?qū)懭隒Y7C68013,。此時只需設(shè)定寄存器,,固件程序相對簡單,圖2為發(fā)送和接收固件程序流程,。

    CY7C68013芯片固件程序負責處理主(從)機發(fā)送來的各種請求,,以完成與外圍電路間的各種數(shù)據(jù)傳輸。本系統(tǒng)固件一共包含九個程序文件,,其中的頭文件分別定義了CY7C68013中的寄存器名和特殊功能寄存器,、通用的CY7C68013常量、數(shù)據(jù)類型和宏,、特殊功能寄存器所需要的同步延遲宏,、用來描述CY7C68013狀態(tài)的各種USB描述符、INT2和INT4中斷跳轉(zhuǎn)表等,。主函數(shù)負責處理標準USB請求和自定義請求,,控制整個硬件系統(tǒng)的運行。接收端固件主循環(huán)不用做任何操作,,與發(fā)送端程序流程圖完全相同,。其固件運行的主程序清單如下,負責處理主機發(fā)出的各種USB請求,。
……
    TD_Init(),;//初始化用戶設(shè)備
    EZUSB_IRQ_ENABLE();//使能USB中斷(INT2)
    EZUSB_ENABLE_RSMIRQ(),;//使能喚醒中斷
    INTSETUP |=(bmAV2EN | bmAV4EN),;//使能INT2
//和INT4中斷跳轉(zhuǎn)向量
    USBIE |=bmSUDAV | bmSUTOK | bmSUSP | bmURES |
bmHSGRANT;//使能所選擇的中斷
    EA=1,;//打開8051中斷
    UsbDisconnect(),;
    CKCON=(CKCON&(~bmSTRETCH)) | FW_STRETCH_
VALUE;//設(shè)為0值
    Sleep=FALSE,;//清除sleep標志
    while(TRUE)//主循環(huán)
    {
        if(GotSUD)//等待SETUP令牌數(shù)據(jù)的到來
        {
            ParseControlTransfer(),;//處理SETUP令牌數(shù)據(jù)
            GotSUD=FALSE;//清除SUDAV標志
        }
        if (Sleep)
        {
            Sleep=FALSE,;//清除sleep標志
            do
            {
            EZUSB_Susp(),;//置8051為空閑
            }
            while(!Rwuen&&EZUSB_EXTWAKEUP());
            EZUSB_Resume(),;//從空閑狀態(tài)恢復(fù)
        }
        TD_Poll(),;//完成用戶任務(wù)
    }
……
    需要強調(diào)的是:固件程序設(shè)計完成后需要進行調(diào)試,確保系統(tǒng)硬件正常工作,。
    (1)工作時鐘頻率的確定:晶振兩引腳對地電壓均為1.6 V左右,,此時CLKOUT引腳默認輸出為24 MHz,當輸出48 MHz時,,電壓為2.5 V,。
    (2)電平觸發(fā)中斷方式:中斷后一定要讀上次傳輸狀態(tài)寄存器(命令40 H~45 H),以清除中斷寄存器中的中斷標志,,這樣中斷輸出才能變回高電平,。
    (3)使能端口:接收到Setup包后,,必須用ACKsetup命令重新使能端口為低電平。
    (4)緩沖區(qū)數(shù)據(jù)標志:在向IN端點寫完數(shù)據(jù)后,,必須設(shè)置EP2BCH:L,,指明緩沖區(qū)中的數(shù)據(jù)有效,示意可以發(fā)送到主機,。當IN端點的數(shù)據(jù)被外設(shè)讀走后,,一定要調(diào)用OUTPKTEND來清除緩沖區(qū)數(shù)據(jù),否則無法向IN端點寫入數(shù)據(jù),。
    在USB設(shè)備枚舉的過程中,,可采用USB調(diào)試工具BusHound軟件來抓取它和主機的通信數(shù)據(jù)進行分析,以檢查硬件和固件程序的工作是否正確,。
3 驅(qū)動程序設(shè)計
    為了配合CY7C68013的工作,,需要有驅(qū)動程序[6,7]以使上位機程序能正常訪問USB芯片,。以Cypress公司提供的參考程序為基礎(chǔ)[1],,增加自定義控制請求即可。
    由于驅(qū)動程序必須和系統(tǒng)的總線驅(qū)動進行通信,,系統(tǒng)總線驅(qū)動為WDM(Win32 Driver Model)驅(qū)動,。因此,USB驅(qū)動程序采用WDM設(shè)備驅(qū)動程序[8],。由于USB總線驅(qū)動程序(USBD)一般由操作系統(tǒng)提供,,負責與實際的硬件打交道,因此,,重點是開發(fā)USB設(shè)備驅(qū)動程序(USB Device Driver),。USB設(shè)備的WDM驅(qū)動程序是通過創(chuàng)建URB(USB請求塊),并向USB總線驅(qū)動程序發(fā)送包含URB的IRP來實現(xiàn)對USB設(shè)備信息的發(fā)送和接收,。此外,,USB設(shè)備驅(qū)動程序除負責處理應(yīng)用程序的I/O請求外,還要處理PnP請求,。
    CY7C68013的驅(qū)動程序包括2部分:usbfft.sys,,專用于下載芯片的固件程序;loaderfft.sys,,上位機和CY7-
C68013進行通訊的部分,,用于實現(xiàn)數(shù)據(jù)收發(fā)功能。這2個部分都存放在上位機上,,當系統(tǒng)上電或USB連接時,,固件部分將自動下載到芯片的RAM中供8051執(zhí)行。
4 應(yīng)用程序設(shè)計
    上位機是人機交互的平臺,,需要良好的操作界面,。本系統(tǒng)通過VB6.0開發(fā)了上位機應(yīng)用程序,,運行界面如圖3所示。

    應(yīng)用程序是完成數(shù)據(jù)發(fā)送與接收并且對系統(tǒng)進行有效控制的平臺,,不僅需要向CY7C68013發(fā)送數(shù)據(jù),,還需要將接收的數(shù)據(jù)顯示出來并保存。此外為了系統(tǒng)測試的方便,,增加了誤碼率和速率測試模塊,以測試系統(tǒng)的整體性能,。
    本系統(tǒng)上位機的主要功能有:(1)文件的發(fā)送,;(2)文件的接收;(3)速率測試,;(4)誤碼率測試,;(5)系統(tǒng)控制,用來獲取CY7C68013描述符以及其內(nèi)部寄存器的情況,,并對整個系統(tǒng)進行控制,,如使能CY7C68013的數(shù)據(jù)輸出功能及片內(nèi)數(shù)據(jù)轉(zhuǎn)移功能等。
    系統(tǒng)中定義了6個時間控件來完成數(shù)據(jù)的發(fā)送與接收,,timer1,、timer3和timer4分別完成文件、誤碼率及速率測試的發(fā)送,,Timer2,、timer6和timer8分別完成文件、誤碼率及速率測試的接收,。另外定義了一個時間控件來控制開啟哪一個接收數(shù)據(jù)時間控件,。為了保證有效判斷所接收到的數(shù)據(jù)是文件、速率測試還是誤碼率測試數(shù)據(jù),,在timer1,、timer3和timer4發(fā)送前都先發(fā)送一個512 B的前導(dǎo)包。全為1時表示下一個數(shù)據(jù)包包含著速率測試數(shù)據(jù),,全為2時表示下一個數(shù)據(jù)包包含著誤碼率測試數(shù)據(jù),,全為3時表示下一個數(shù)據(jù)包包含著文件數(shù)據(jù)。這樣就能判斷出應(yīng)該開啟哪一個接收時鐘,。
    具體的文件數(shù)據(jù)處理方法是:文件打開后,,先將文件緩沖,定義一個二維數(shù)組:行512 B,,列由文件大小決定,。數(shù)組的第一個512 B前20 B記錄所發(fā)送文件的大小,并且在最開始的5 B以0xAA填充,,表明這個數(shù)據(jù)包是全部文件的開始,,當文件大小不足填滿最后的512 B時,,數(shù)據(jù)補0,但數(shù)組結(jié)尾為0xAA,。
    采用CY7C68013設(shè)計的高速數(shù)據(jù)傳輸系統(tǒng),,經(jīng)過測試,達到了設(shè)計要求,,實現(xiàn)了數(shù)據(jù)的高速傳輸,,為下一步開展數(shù)據(jù)編碼/譯碼、調(diào)制/解調(diào)研究打下了良好的基礎(chǔ),。
參考文獻
[1] www.cypress.com.EZ-USB FX2 Technical Reference Manual.
[2] 戴紅梅,,胡仁杰.USB(通用串行總線)及USB外設(shè)的開發(fā)[J].電測與儀表,2000(12):53-56.
[3] 陳明智,,李鋒,,尚淮.USB通信協(xié)議分析和系統(tǒng)設(shè)計[J].自動化與儀器儀表,2006(6):46-49.
[4] 鄒建彬,,高凱,,張爾揚.基于USB 2.0協(xié)議的高速圖像傳輸系統(tǒng)[J].現(xiàn)代電子技術(shù),2009(22):195-197.
[5] 李鑒,,黃大勇.基于CY7C68013的USB數(shù)據(jù)采集系統(tǒng)[J].微計算機信息.測控自動化,,2009,25(1-1):97-98+154.
[6] 陸原,,魏杰,,孟瑋.Windows XP環(huán)境下USB設(shè)備驅(qū)動程序的開發(fā)[J].國外電子元器件,2007(7):28-30.
[7] 陳新忠.USB設(shè)備驅(qū)動程序設(shè)計[J].電子產(chǎn)品世界,,2009(5):48-51.
[8] 王躍鋼 ,韓心中.基于WDM模式的USB設(shè)備驅(qū)動程序開發(fā)[J].微計算機信息(管控一體化),,2006,22(8-3):
305-307.

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