基于GPIF的USB-ATA解決方案
目前,通過單片機去控制硬盤的ATA接口,大多采用PIO模式實現,速度和性能上都不夠理想,硬盤與PC機的連接也相當繁瑣。要頻繁地與PC機交換大量資料,采用USB硬盤是一個相當好的解決方案。本文給出一個如何利用單片機完成對硬盤的讀寫,同時具有USB-ATA功能的可行方案。
本文引用地址:http://www.ex-cimer.com/article/173793.htm1.1 USB總線
USB(Universal Serial Bus)[4]是一種串行接口的新標準,其主要優(yōu)點是速度快、功耗低、支持即插即用(Plug Play)、使用安裝方便。USB支持最多5個Hub層以及127個外設,所有外設通過協議共享USB的帶寬。目前使用中的USB協議有1.0、1.1和2.0三個版本,通訊速率分別為1.5Mbps、12Mbps、480Mbps,USB協議向下兼容。
從邏輯結構上講,USB數據的傳輸是通過管道進行的,管道的兩端連接host和device的端點BUFFER,BUFFER的大小直接影響通訊的速率。USB系統(tǒng)軟件通過缺省管道(與端點0相對應)管理設備,設備驅動程序通過其它管道來管理設備的功能接口。每一個USB設備在主機看來就是一個端點的集合,主機只能通過端點與設備進行通訊。在USB系統(tǒng)中,每一個端點都有唯一的地址,這是由設備地址和端點號給出的。每個端點都有一定的特性,其中包括:傳輸方式、總線訪問頻率、帶寬、端點號、數據包的最大容量等。根據應用場合的不同選擇相應的端點類型。USB數據流模型見圖1。
1.2 GPIF
GPIF(general programmable interface)[1、2]即通用可編程接口,是CYPRESS公司在其EZ-USB FX以及FX2系列單片機里設計的一個可由用戶編程的接口,具有快速、靈活等特點,可使用多種協議完成與外圍器件的無縫連接,如EIDE/ATAPI、IEEE1284、Utopia等。對其可以根據需要進行編程,且運行中不需要CPU的干預,僅通過一些CPU標志和中斷與增強型8051內核通訊。GPIF與8051內核的關系見圖2。
GPIF主要組成部分:
(1)ADR[5..0]:地址線,可作為擴展存儲器的低位地址,在連續(xù)執(zhí)行GPIF動作時具有自動增一功能??蓪ζ鋵募拇嫫鬟M行讀寫(FX2系列中擴充為9根地址線)。
(2)RDY[5..0]:輸入Ready信號,可對指定的信號進行連續(xù)采樣,以確定GPIF動作繼續(xù)、等待或是反復不斷采樣,直到信號的指定狀態(tài)出現。通常用來等待指定信號的某個狀態(tài)出現,然后繼續(xù)剩余動作。
(3)CTL[5..0]:輸出Control信號,根據編程指令輸出高低電平或集電極開路。通常用作選通信號、非總線輸出信號,以及產生簡單的脈沖信號。
(4)FD[15..0]:雙向FIFO數據線,一般又稱AFI、BFI。
(5)IFCLK:時鐘接口,決定使用外接時鐘還是使用內部48MHz或30MHz時鐘周期。
(6)GSTATE[2..0]:當前GPIF狀態(tài)數,可用來判斷當前GPIF工作狀態(tài),一般調試用。
(7)GPIF PROGRAM:GPIF程序存儲區(qū)間0x7900~0x797F,存儲GPIF指令,可存儲4組波形的程序代碼(FX2系列存儲區(qū)間為0xE400~0xE47F)。
每個GPIF動作都由七段組成:Interval0~Interval6,簡稱I0~I6。執(zhí)行完I0~I6的動作后,最后都進入IDLE(I7),即空閑狀態(tài),以準備啟動下一次GPIF動作。每個Interval可以定義為Non-Decision Interval,簡稱NDP;或是Decision Point Interval,簡稱DP。
評論