USB2.0控制器CY7C68013的接口設計實現(xiàn)
每個波形描述符包含了S0~S6七個有效狀態(tài)和一個空閑狀態(tài)。在每個有鏟狀態(tài)對應的時間段里,經(jīng)過預先設置,GPIF可以做出以下幾件事件;驅(qū)動(使高或低)或浮接CTL輸出、采樣或驅(qū)動FIFO的數(shù)據(jù)總線、增加GPIF地址總線的值、增加指向當前FIFO指針的值和啟動GPIFWF(GPIF波形)中斷。除此之外,在每個狀態(tài),GPIF還可以對以下幾個信號中的任意兩個進行采樣,它們是:RDYX輸入端、FIFO狀態(tài)標志位、內(nèi)部RDY標志位和傳輸計數(shù)終止標志位。每個GPIF動作都由七段組成,每個狀態(tài)都可以定義為Non- Decision Interval (NDP)或Decision Point Interval(DP)。當某個狀態(tài)定義為NDP時,在執(zhí)行此狀態(tài)動作時,系統(tǒng)只是用簡單的延時來確定產(chǎn)生指定電平的延續(xù)時間;而當執(zhí)行DP狀態(tài)時,它將根據(jù)RDY0、RDY1上的輸入信號狀態(tài)把其中的兩個信號相與、相或或者相異,然后根據(jù)結(jié)果跳轉(zhuǎn)到其它任意一個狀態(tài)或延遲1~256個IFCLK時鐘周期。當然也可根據(jù)輸入端信號進行跳轉(zhuǎn)或延遲。
本文引用地址:http://www.ex-cimer.com/article/202568.htm
圖2中,在第一個DP時刻,若硬盤中數(shù)據(jù)已準備就緒,硬盤會傳給GPIF一個負脈沖信號RDY0,根據(jù)此信號,波形將按順序轉(zhuǎn)入2、3、4狀態(tài),并使指向內(nèi)部FIFO的指針在每個時鐘上升沿加1,然后依次讀取四個數(shù)據(jù),讀取完數(shù)據(jù)后再利用CTL0的上升沿啟動下一次讀寫操作。若在狀態(tài)1時沒有出現(xiàn)負脈沖,則直接跳轉(zhuǎn)到狀態(tài)6,之后重復此波形描述符。在這種情況下,所有的讀寫及控制邏輯均可通過CY7C68013的GPIF以軟件編程的方式實現(xiàn),且控制邏輯的變換非常方便靈活(只需改變接口的一個配置寄存器的值)。GPIF波形描述符可用Cypress公司的GPIF工具GPIFTOOL來進行配置,它是一個可以運行于Windows平臺的應用程序。
3 系統(tǒng)軟件設計與實現(xiàn)
本系統(tǒng)軟件設計包括:固件、應用程序和驅(qū)動程序的設計。其中,固件程序是指運行在設備CPU中的程序,是整個程序設計的核心,可采用匯編語言和C語言設計。只有在該程序運行時,外設才能稱之為具有給定功能的外部設備。
3.1 USB設備固件程序設計
設備固件程序的主要功能是控制EZ-USB FX2接收并處理USB驅(qū)動程序的請求(如請求設備描述符或設置設備狀態(tài),請求或設置設備接口等USB2.0標準請求)、控制芯片中應用程序控制指令的接收、控制硬盤數(shù)據(jù)的讀寫等。該固件程序除能夠使內(nèi)置的通用可編程接口(GPIF)在沒有CPU的干涉下通過四個大的端點FIFO(EP2、EP4、 EP6、EP8)來處理高速寬帶外,還有如下固定的工作:配置端點、通過控制端點0來響應主機請求、控制和監(jiān)測GPIF的活動等。其固件程序框圖如圖形所示。
設計時可采用PIO和UDMA兩種模式,F(xiàn)X2芯片的BULK端點大小可設置為512字節(jié)或1024字節(jié)。為實現(xiàn)UDMA功能,應將GPIF中的 Slave FIFO與USB通訊中的端點BUFFER直接連接,數(shù)據(jù)的傳送不再需要CPU的參考。當BUFFER寫滿后,置BUFFER滿標志位,以使GPIF停止動作。實際上,也可運用GPIF的Re-execute功能(重復執(zhí)行功能)。設定此功能后,GPIF可以不經(jīng)過IDLE狀態(tài)而僅根據(jù)采樣RDY信號即可重復下次動作。直到出現(xiàn)指定的標志位后才停止動作。這項功能一般用于大批量數(shù)據(jù)的連續(xù)讀寫。如在UDMA模式下對一個或多個扇區(qū)的讀寫操作。如在UDMA 模式下對一個或多個扇區(qū)的讀寫操作。為了實現(xiàn)UDMA模式下的CRC校驗,還需設備特殊寄存器來完成CRC校驗工作。
3.2 驅(qū)動程序設計
該系統(tǒng)需要兩個驅(qū)動程度,即通用驅(qū)動和下載固件驅(qū)動。通用驅(qū)動用于完成與外設和用戶程序的通信及控制;而下載固件驅(qū)動程序則負責在外連接USB總線后把特定的固件程序下載到FX2的RAM中使FX2的CPU重啟,同時模擬斷開與USB總線的連接以完成對外設的重新設置,這種即可使主機能夠根據(jù)新的設置來安裝通用驅(qū)動程序,重新格舉外設為一個新的USB設備。通用驅(qū)動程序一般不需要重新編寫,可以使用Cypress公司已經(jīng)編好的驅(qū)動ezusb.sys。由于在Winsows2000操作系統(tǒng)中已經(jīng)新增了媒體存儲(Mass Stroage)設備的驅(qū)動程序,并可使用批量傳輸功能,所以可以直接選擇BULKUSB.SYS驅(qū)動程序,而下載固件驅(qū)動則必須定做。
評論