《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于CY7C68013的高速數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)
基于CY7C68013的高速數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2010年第7期
熊俊俏,劉 崢
武漢工程大學(xué) 電氣信息學(xué)院,湖北 武漢430073
摘要: 采用Cypress公司的CY7C68013芯片設(shè)計(jì)了通用的USB接口,結(jié)合MAX7128的串/并/串轉(zhuǎn)換和光纖收發(fā)系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。介紹了系統(tǒng)的軟硬件結(jié)構(gòu), 詳細(xì)介紹了固件設(shè)計(jì)和WDM驅(qū)動(dòng)程序的結(jié)構(gòu)、特性、工作機(jī)制、軟件流程及與USB設(shè)備通信的方法。測(cè)試表明,該系統(tǒng)達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)和實(shí)用要求。
中圖分類號(hào): TP334.7
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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串口引擎為主的專用集成電路,并可延伸至對(duì)其進(jìn)行管理的MCU以及相應(yīng)的軟硬件。目前市場(chǎng)上供應(yīng)的USB控制器主要有2種:帶USB接口的單片機(jī)(MCU)或純粹的USB接口芯片。帶USB接口的單片機(jī)可分為2類:一類是從底層設(shè)計(jì)專用于USB控制的單片機(jī),如Cypress公司的CY7C63513、CY7C64013等[1],由于開發(fā)工具的專用性,往往應(yīng)用于各種專業(yè)應(yīng)用場(chǎng)合,如微機(jī)主板等[2-4];另一類是增加了USB接口的普通單片機(jī),如Intel公司的8X931、8X930以及Cypress公司的EZ-USB,由于均基于8051內(nèi)核,因而得到了廣泛應(yīng)用。
1 CY7C68013與系統(tǒng)結(jié)構(gòu)簡(jiǎn)介
    Cypress公司的CY7C68013芯片是集成USB2.0協(xié)議的微處理器,支持12 Mb/s的全速傳輸和480 Mb/s的高速傳輸,具有控制傳輸、中斷傳輸、塊傳輸和同步傳輸4種傳輸方式,內(nèi)部包括一個(gè)增強(qiáng)型8051處理器內(nèi)核、一個(gè)串行接口引擎(SIE)、一個(gè)USB收發(fā)器、8.5 KB片上RAM和4 KB FIFO存儲(chǔ)器以及一個(gè)通用可編程接口(GPIF)。8051可工作在48 MHz/24 MHz/12 MHz時(shí)鐘頻率,內(nèi)部可自動(dòng)產(chǎn)生480 MHz的頻率供USB2.0串行收發(fā)引擎使用。由于數(shù)據(jù)緩沖器與SIE相連接,數(shù)據(jù)進(jìn)入收發(fā)器后,通過(guò)SIE可直接轉(zhuǎn)向FIFO,通過(guò)8 bit或16 bit數(shù)據(jù)接口與外設(shè)連接,存取數(shù)據(jù)。微控制器不參與數(shù)據(jù)傳輸,但允許以FIFO或RAM的方式訪問(wèn)這些共享FIFO,從而實(shí)現(xiàn)低速控制、高速傳輸。CY7C68013有GPIF/SLAVE FIFO/GPIO 3種接口模式,本系統(tǒng)采用Slave FIFO接口模式,選用控制傳輸和塊傳輸2種方式,外部控制器可像普通FIFO一樣對(duì)FIFO進(jìn)行讀寫。
    本數(shù)據(jù)傳輸系統(tǒng)分為3部分:發(fā)送端和接收端、CY7C68013控制器、具有并/串(或串并轉(zhuǎn)換)功能的CPLD芯片(MAX7128)以及光纖傳輸模塊。其中,CY7C68013和MAX7128之間采用并行連接方式,MAX7128與激光發(fā)送(接收)模塊間是串行連接,如圖1(a)所示。

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

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

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

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