USB2.0控制器CY7C68013的接口設(shè)計(jì)實(shí)現(xiàn)
摘要:介紹了一種基于USB2.0控制器CY7C68130的USB-ATA接口,將普通硬盤(pán)轉(zhuǎn)化為USB Mass -Storage的解決方案,文中給出了利用GPIF實(shí)現(xiàn)該方案的相關(guān)設(shè)計(jì)方法。
關(guān)鍵詞:USB2.0 ATA接口 CY7C68130 GPIF
1 引言
USB (Universal Serial Bus)接口以其速度快、功耗低、支持即插即用(Plug Play)、使用安裝方便等優(yōu)點(diǎn)而得到了廣泛的應(yīng)用。目前USB2.0標(biāo)準(zhǔn)的傳輸速度已達(dá)480Mb/s,這使得USB可以推廣到硬盤(pán)、信息家電網(wǎng)絡(luò)產(chǎn)品和其它快速外設(shè)。在某些應(yīng)用場(chǎng)合,如基于硬盤(pán)的大容量數(shù)據(jù)采集與分析系統(tǒng)中,為了使用方便,需要將普通硬盤(pán)轉(zhuǎn)化成海量存儲(chǔ)器,這樣在使用時(shí)就不需關(guān)機(jī)重啟或打開(kāi)機(jī)箱來(lái)安裝。本文介紹一種利用帶USB接口的單片機(jī)芯片CY7C68013來(lái)控制普通硬盤(pán)的讀寫(xiě),從而半普通硬盤(pán)轉(zhuǎn)化為USB2.0海量存儲(chǔ)器的可行方案,本系統(tǒng)可擴(kuò)展,完全可用于實(shí)現(xiàn)基于硬盤(pán)的大容量數(shù)據(jù)采集與分析系統(tǒng)。
2 硬件設(shè)計(jì)
2.1 USB接口芯片
本設(shè)計(jì)選用的是Cypress公司的EZ-USBFX2系列芯片中的CY7C68013,這是一種帶USB接口的單片機(jī)芯片,雖然采用低價(jià)的8051單片機(jī),但仍然能獲得很高的速度。它包括一個(gè)8051處理器、一個(gè)串行接口引擎(SIE)、一個(gè)USB收發(fā)器、一個(gè)8.5kB片上RAM、一個(gè)4 kB FIFO存儲(chǔ)器及一個(gè)通用可編程接口(GPIF)。FX2可提供全面集成的解決方案。它有56SSOP、100TQFP、128TQFP三種封裝,本設(shè)計(jì)選用占用電路板空間較少的56SSOP封裝。如果要進(jìn)行擴(kuò)展,也可選用128TQFP封裝。
2.2 ATA接口
ATA 接口是在ST506的基礎(chǔ)上改進(jìn)而成的,它將控制器集成到驅(qū)動(dòng)器中,采用8個(gè)端口寄存器(即命令寄存器)來(lái)完成對(duì)硬盤(pán)的讀寫(xiě),ATA有兩種工作模式: PIO模式和DMA模式。本設(shè)計(jì)采用的DMA傳輸模式不需要處理器參與整個(gè)數(shù)據(jù)傳輸過(guò)程,而是由I/O口直接將數(shù)據(jù)傳送到存儲(chǔ)器中,從而節(jié)約大量的CPU 時(shí)間以更好的處理其它事件。控制器對(duì)硬盤(pán)的操作分為兩種:8位數(shù)據(jù)的命令操作和16位數(shù)據(jù)的數(shù)據(jù)傳輸操作。在對(duì)硬盤(pán)輸出控制命令之前,程序需對(duì)端口完整輸出7字節(jié)的命令塊。其中前六個(gè)端口為參數(shù),最后一個(gè)端口為命令碼。讀寫(xiě)操據(jù)端口一般以512字節(jié)作為數(shù)據(jù)塊進(jìn)行。硬盤(pán)執(zhí)行命令后發(fā)出中斷請(qǐng)求以表示操作結(jié)束(結(jié)束傳輸),也可以置控制器狀態(tài)為空閑,以表示扇區(qū)請(qǐng)求傳輸(數(shù)據(jù)傳輸)。最后,由控制器讀取硬盤(pán)狀態(tài)寄存器,以檢測(cè)硬盤(pán)操作的成功與否。如操作正常,則進(jìn)行下一次動(dòng)作;否則進(jìn)入錯(cuò)誤處理程序。
2.3 GPIF與ATA接口
FX2芯片的最主要特點(diǎn)是可通過(guò)USB2.0的通用可編程接口(GPIF)為特定的應(yīng)用接口編程,以便使用多種協(xié)議完成與外圍器件的無(wú)縫連接,如 EIDE/ATAPI, IEEE1284,Utopia等。其編程可以根據(jù)需要進(jìn)行,且其中不需要CPU的干預(yù),只是通過(guò)一些CPU標(biāo)志和中斷即可與增強(qiáng)型8051內(nèi)核進(jìn)行通訊。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
本設(shè)計(jì)采用“GPIF主控”接口模式,并使用PORTB和PORTD雙向FIFO數(shù)據(jù)線來(lái)構(gòu)成通向四個(gè)FX2端點(diǎn)FIFO(EP2、EP4、EP6、 EP8)的16位數(shù)據(jù)接口,以用來(lái)連接數(shù)據(jù)線DD[15:0]并進(jìn)行數(shù)據(jù)的傳送;GPIF作為內(nèi)部主控器與FIFO相連,并通過(guò)產(chǎn)生用戶可編程的控制主控器與FIFO相連,并通過(guò)產(chǎn)生用戶可編程的控制信號(hào)CTL[2:0]與外部接口進(jìn)行通信。同時(shí),GPIF 還可以通過(guò)RDY[1:0]引腳采用外部信號(hào)并等待外部事件。由于GPIF的運(yùn)算速度比FIFO快得多,因此其時(shí)序信號(hào)具有很好的編程分辨率。
FX2 用4個(gè)波形描述符來(lái)控制各個(gè)狀態(tài)。這些波形描述符可動(dòng)態(tài)的配置給任何一個(gè)端點(diǎn)FIFO。配置后,GPIF將依據(jù)波形描述符產(chǎn)生相應(yīng)的控制邏輯CTL及握手信號(hào)RDY來(lái)和外界接口,以滿足向FIFO讀寫(xiě)數(shù)據(jù)的需要。GPIF的數(shù)據(jù)總線可以是8位FD[7:0],也可以是16位FD[15:0],本設(shè)計(jì)采用 16位數(shù)據(jù)總線。其硬盤(pán)讀數(shù)據(jù)控制波形如圖2所示。
評(píng)論