高速USB接口設計
Void TD_PoLL(void):此函數在設備運行時(shí)被重復的調用,應包括完成特別任務(wù)的代碼。在該函數返回前,優(yōu)先級高的任務(wù)可能己完成。若它返回值為假,EZ―USBFX2將不會(huì )影響設備請求和USB總線(xiàn)設備掛起事件。若需要大量的處理時(shí)間,EZ-USBFX2會(huì )通過(guò)多次調用TD_PoLL函數將時(shí)間分段。
BooL TD_suspend(void):此函數是在設備進(jìn)入掛起狀態(tài)前調用,在其中加入適當的代碼,配置設備的工作狀態(tài),可使設備處于低功耗狀態(tài)并返回真值??梢愿膭?dòng)TD_Suspend的程序代碼,使其返回為假,可使EZ-USBFX2不進(jìn)入掛起狀態(tài)。
Void TD_Resume (void):當外部要求重新啟動(dòng)時(shí),設備會(huì )通過(guò)調用此函數對處理器重啟,即TD_SUspendO函數的逆操作。此時(shí),設備在正常電源下重新啟動(dòng)。設備請求函數主要完成對來(lái)自主機的命令和請求的處理工作。
4.2 固件主程序
fw.c是固件程序的主程序文件,負責處理主機發(fā)出的各種USB設備請求。該程序首先初始化所有的內部狀態(tài)變量,然后調用TD_InitO函數初始化,并打開(kāi)中斷。然后,固件程序開(kāi)始列舉USB設備,直至在端點(diǎn)0上接收到SETUP包為止。一旦接受到令牌包,框架將開(kāi)始交互的任務(wù)調度。
整個(gè)系統實(shí)現過(guò)程中,設置一些重要寄存器。表1列出EZ―USBFX2為異步從屬FIFO自動(dòng)模式時(shí),需要配置的相關(guān)寄存器。本文引用地址:http://dyxdggzs.com/article/188948.htm
5 FPGA程序的設計
編程思路:由于CY7C68013設置為異步SlaveFIFO模式,根據異步FIFO讀寫(xiě)狀態(tài)圖,選擇狀態(tài)機來(lái)編寫(xiě)進(jìn)程。其狀態(tài)圖如圖3所示。
6 結語(yǔ)
以CY7C68013和FPGA接口為例描述了USB芯片的SlaveFIFO固件程序流程和設計思想,并且在項目中得到了實(shí)際應用,并且數據連續傳輸無(wú)誤碼,無(wú)丟失。
評論