基于fpga的usb 3.0接口模塊的制作方法
【技術領域】
[0001]本發明涉及一種USB 3.0接口模塊。
【背景技術】
[0002]計算機是常用的數據存儲與顯示設備,但是其數據處理能力較弱,不利于大數據處理。隨著信息技術的飛躍發展,爆炸性增長的數據給數據處理與傳輸提出了新的挑戰。而FPGA以其處理速度快、處理數據量大等特點,成為數據處理的理想平臺。為了實現計算機與FPGA之間的數據傳輸,需要設計實現一種基于FPGA的高速接口。
[0003]計算機常用接口有USB 2.0、USB 3.0、PCI以及以太網等。由于USB 2.0傳輸速率較低,最高僅為480Mbps,PCI總線不支持熱插拔且僅限于臺式計算機,而以太網傳輸時延非常大。USB 3.0以其5Gbps的超高速、較低傳輸時延以及便攜等特點,成為了一種廣泛應用的數據傳輸接口。
[0004]基于以上原因考慮,我們希望設計一種基于FPGA的USB 3.0高速接口,便于計算機等設備與FPGA之間的數據傳輸。
【發明內容】
[0005]本發明是為了實現兼容USB2.0高速接口、實現計算機與FPGA之間的高速數據傳輸,從而提出一種基于FPGA的USB 3.0接口模塊。
[0006]基于FPGA的USB 3.0接口模塊,該接口模塊采用FPGA實現邏輯控制,并通過芯片FX3內部同步從設備FIFO的數據讀寫操作實現高速數據傳輸;
[0007]該接口模塊控制邏輯包括USB 3.0發送模塊、USB 3.0接收模塊、用于跨時鐘域操作的發送先入先出隊列FIFO模塊和用于跨時鐘域操作的接收先入先出隊列FIFO模塊;
[0008]所述USB 3.0發送模塊包括如下狀態:
[0009]USB_out_idle狀態:該狀態下,初始化所有寄存器與信號;
[0010]USB_out_flagc_rcvd狀態:當檢測到標志位flagc = I時,發送線程生產者USB插座為滿,即:檢測到USB發送的數據,則啟動對數據的發送;
[0011]USB_out_wait_flagd狀態:延遲一個時鐘周期,等待檢測發送線程生產者同步從設備FIFO滿;
[0012]USB_out_read狀態:當檢測到標志位flagd = I時,發送線程同步從設備FIFO為滿,激活讀控制信號,FPGA讀取同步從設備FIFO數據;
[0013]USB_out_read_rd_oe_delay狀態:當標志位flagd = O時,芯片FX3對處于激活狀態的讀信號進行三個時鐘周期的采樣,讀信號和輸出使能信號始終有效;
[0014]USB_out_read_oe_delay狀態:芯片FX3完成對處于激活狀態的讀信號采樣后,輸出使能信號需要保持四個時鐘周期后跳轉到USB_out_idle狀態;
[0015]所述USB 3.0接收模塊包括如下狀態:
[0016]USB_in_idle狀態:該狀態下,初始化所有寄存器與信號;
[0017]USB_in_wait_flagb狀態:當標志位flaga = I時,接收線程消耗者USB插座為空,即:USB未發送數據,則啟動對數據的接收;
[0018]USB_in_write狀態:當檢測到標志位flagb = I時,接收線程生產者同步從設備FIFO為空,FPGA將數據寫入同步從設備FIFO ;
[0019]USB_in_write_wr_delay狀態:當檢測到標志位flagb = O時,芯片FX3對處于激活狀態的寫信號進行兩個時鐘周期的采樣,之后跳轉到USB_in_idle狀態。
[0020]芯片FX3 的型號 CYUSB3014。
[0021]FPGA 通過 GPIF II 接口與 CYUSB3014 芯片相連,CYUSB3014 芯片的 USB 接口與Micro B接口連接,采用I2C接口引導啟動,若I2C配置失敗,則使用USB接口方式配置啟動。
[0022]CYUSB3014芯片中還嵌入有JTAG接口,用于作為調試接口。
[0023]在進行FX3固件設計時,首先將GPIF II接口配置為同步從設備FIFO接口 ;采用GPIF II Designer 工具實現 GPIF II 接口配置。
[0024]FX3固件程序、FX3固件框架、FX3API庫和RTOS模塊;
[0025]所述RTOS模塊:用于創建多個線程;
[0026]FX3API庫:用于提供與FX3硬件實現控制與數據傳輸的接口 ;
[0027]FX3固件框架:用于開發用戶定制的固件程序,包括啟動與初始化代碼以及USB、GPIF II等模塊驅動程序;
[0028]FX3固件程序包括初始化子程序與應用子程序。
[0029]初始化子程序的具體執行方法為:
[0030]FX3固件程序首先調用函數CyU3PFirmwareEntry O實現MMU與堆棧初始化,并消除無效緩存;
[0031]CyU3PToolChainInit O函數用于初始化工具鏈,實現堆棧和C語言庫的初始化;
[0032]設備初始化:依次執行以下四步操作:
[0033]步驟A、設備初始化:通過調用CyU3roeviceInit O函數設置CPU時鐘、初始化VIC以及配置PLL ;
[0034]步驟B、設備緩存配置:FX3設備有8KB數據緩存和8KB命令緩存,只需使能命令緩存;
[0035]步驟C、I/O配置:配置FX3的接P,包括:GPIF II接口、SPI接口、I2C接P、I2S接口、GP1 接口和 UART 接口,調用 CyU3PDeviceConfigure10Matrix O 對 I/O 矩陣數據結構進行初始化;
[0036]步驟D、調用RTOS:通過CyU3PKerneIEntry O調用ThreadX OS操作系統,完成ThreadX OS初始化并設置OS時鐘;
[0037]創建應用線程:初始化ThreadX OS后,通過調用CyFxApplicat1nDef ine O創建應用程序線程。
[0038]初始化子程序的具體執行方法為:
[0039]Debug 模塊初始化:調用 CyFxSlFifoApplnDebuglnit O 實現 Debug 模塊初始化,首先初始化并配置UART狀態,之后再調用CyU3roebugInit()初始化Debug應用;
[0040]定制應用初始化:應用初始化包括兩部分,GPIF II初始化與USB初始化,在GPIFII初始化中將從設備FIFO描述符加載到GPIF II寄存器中并啟動GPIF II狀態機,在USB初始化中設置USB描述符、創建USB連接與事件并設置USB描述符;
[0041]處理USB請求:譯碼USB請求信號,處理建立USB連接請求與清除USB連接請求;
[0042]USB事件處理:USB包括配置請求、復位與斷開連接3種事件,當檢測到配置請求時啟動USB傳輸應用,否則,停止USB應用;
[0043]啟動USB傳輸應用:檢測到配置請求,固件啟動USB傳輸應用,根據USB傳輸速率確定數據包大小與DMA緩沖區大小,創建DMA傳輸通道;
[0044]停止USB應用:檢測到復位/斷開連接請求,釋放內存、關閉DMA通道;
[0045]USB to Processor 通道/Processor to USB 通道:調用 DMA 函數傳輸數據,U2P/P2U通道實現自動DMA通道。
[0046]在FX3固件中設置兩個DMA通道:發送通道為U2P通道,接收通道為P2U通道,該兩個DMA通道設置為傳輸速率更高的自動DMA通道。
[0047]該USB 3.0接口模塊的數據傳輸模式為批量傳輸,在進行FX3固件配置時,增大U2P通道緩沖區大小,降低P2U通道緩沖區大小。
[0048]本發明提出了一種基于FPGA的USB 3.0超高速接口,能夠兼容USB2.0高速接口,實現計算機與FPGA之間的高速數據傳輸,且傳輸速率最高可達2.5Gbps ;同時對其他USB3.0控制器和部分其他系列的FPGA具有一定的通用性。
【附圖說明】
[0049]圖1是CYUSB3014的邏輯框圖;
[0050]圖2是基于FX3同步從設備的USB 3.0接口模塊原理示意圖;
[0051]圖3是USB 3.0接口邏輯框圖;
[0052]圖4是USB 3.0發送模塊狀態轉換圖;
[0053]圖5是USB3.0接收模塊狀態轉換圖;
[0054]圖6是GPIF II配置流程示意圖;
[0055]圖7是FX3固件結構示意圖;
[0056]圖8是初始化子程序流程示意圖;
[0057]圖9是用戶應用子程序流程示意圖;
[0058]圖10是FX3固件程序DMA通道設置示意圖;
【具體實施方式】
[0059]【具體實施方式】一、結合圖1至圖10說明本【具體實施方式】,基于FPGA的USB 3.0接口豐旲塊,
[0060]本發明以CYPRESS公司的USB 3.0外設控制器FX3系列芯片CYUSB3014為基礎,以Altera公司的FPGA作為主控芯片控制FX3芯片讀寫時序,以實現USB 3.0高速接口為目標,設計出最高可達2.5Gbps傳輸速率的數據傳輸接口。
[0061]1、硬件電路
[0062]CYPRESS公司FX3系列CYUSB3014芯片以其高度集成的靈活特性成為USB 3.0外設控制器的主流選擇。FX3內部集成32位ARM926EJ-S微處理器,工作頻率為200MHz,具有強大的數據處理能力。該芯片集成USB 3.0和USB 2.0物理層,并提供3?1、12(:、以1?1'和123接口與外部設