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