USB2.0接口傳輸的FPGA控制與實現
2.2.1 VHDL程序設計
FPGA是通過Slave FIFO的方式和USB控制器CY7C68013相連的。FPGA讀取數據,通過查詢CY7C68013中FIFO的狀態來判斷是否可以進行讀數據,主要是查詢狀態標志位FLAGC。讀數據程序狀態轉移圖如圖3所示。本文引用地址:http://www.j9360.com/article/202550.htm
狀態1:在空閑時,接到命令,發起傳輸,使地址指向用于下傳數據的FIFO。進入狀態2;
狀態2:查詢讀狀態的FIFO標志FLAGC,如果為FIFO為空,則繼續等待,如果有數據則進入狀態3;
狀態3:使讀數據信號線有效,接收數據,接收完數據后進入狀態4;
狀態4:如果FIFO中還有數據需要接收,則進如狀態2,否則進入空閑狀態。
FPGA在上傳數據時,原理基本相同,方向相反,采用不同的FIFO和查詢狀態標志位。
2.2.2 固件編程
固件編程就是對USB設備的各類寄存器進行配置的過程。固件程序是指運行在設備CPU中的程序,只有在固件程序運行時,外設才稱之為具有給定功能的外部設備。固件要完成以下主要工作:
(1)初始化工作;
(2)對設備進行重新列舉(ReNumeration);
(3)響應中斷,并對中斷作相應的處理;
(4)數據的接收與發送;
(5)外圍電路的控制。
為了簡化固件編程,CYPRESS提供了開發固件庫和固件編程框架,只需在此基礎上添加少量代碼就可以完成固件編程。USB建立固件編程框架的文件見表1,在實際編程過程中,根據自定義,只需要修改Periph.c和Dscr.a51兩個文件。固件代碼固化到一片EEPROM中,設備加電后由FX2通過I2C總線自動加載到片內RAM后自動執行。設備功能、工作方式等均可以通過改寫固件程序,重新配置。
評論