摘 要: 選取Altera公司Cyclone III系列EP3C40F484作為新型高速數據傳輸系統控制平臺,將DDR2作為FIFO,借助USB3.0中的CYUSB3014,完成FPGA與PC之間的高速圖像數據傳輸。通過軟硬件測試,驗證了該系統圖像數據傳輸的高速和可靠性。
關鍵詞:USB3.0;CYUSB3014;噴繪機;FPGA,DDR2
隨著科技的不斷進步,噴繪機對圖像數據的傳輸速度有了更高的要求,傳統USB1.0或2.0傳輸顯示已不能達到要求。雖然理論上USB3.0[1]協議傳輸速度達 5 Gb/s,但由于種種原因,數據傳輸速度[2]離理論數值還有很大差值,如何在實際速度上提高圖像數據的傳輸速度值得研究。
1 系統總體設計
本系統主要研究PC和FPGA間的數據傳輸,圖1是系統的總體設計。從圖中看出,圖像數據從PC發送時經過USB3.0接口,并在內部通過DMA傳送方式把圖像數據傳送到GPIF II接口,然后FPGA直接從GPIF II接口處讀出圖像數據,發送給需要的I/O接口或外部器件。若把FPGA作為數據源向PC發送數據,為給批量(BULK)傳輸提供足夠的緩存空間,需要把DDR2作為FIFO,數據從FPGA經過FIFO緩沖區通過FX3系統的USB3.0接口傳送到PC。FPGA采用了50 MHz的主頻,其中4個按鍵中一個是復位鍵,剩下3個按鍵對應到測試速度指示燈,并且按鍵的狀態FPGA發送到FX3系統,然后上傳到上位機。
2 系統硬件設計
設計中采用Altera公司Cyclone III系列EP3C40F484芯片作為FPGA的主控芯片,以MT47H64M16HR芯片DDR2為數據設立緩沖區 ,以FX3系列CYUSB3014芯片作為USB3.0的驅動[2],采用在上位機編程和Eclipse軟件進行編譯下載到USB3.0控制系統板級上程序,形成API應用,進行數據傳輸測試。系統設計過程中采用了2片1 Gbit存儲量的DDR2作為FIFO,緩沖FPGA到主機圖像數據,同時2片DDR2分別采用獨立的地址、控制總線和數據總線,支持乒乓倒的數據傳輸模式。
圖2所示為FPGA硬件系統的搭建與配置,搭建的過程主要把FPGA、DDR2以及USB3.0進行搭建構成完整的通信鏈路。從圖可以看出DDR2的時鐘主頻頻率來自FPGA的SYS_CLK_50M引腳,即50 MHz。DDR2采用雙邊沿觸發,即上升沿與下降沿即為100 MHz的讀寫頻率。通過led_io[0]引腳信號來控制數據方向(即FPGA從DDR2讀數據還是寫數據),并根據讀寫使能對DDR2的數據位以及地址位進行嚴格控制。圖中配置了USB3.0的usb_pclk、usb_dp[31:0]、usb_slwr、usb_sldr、KEY1~KEY3、LED0~LED3、UART的TX、RX。
3 系統的軟件設計
在整個軟件架構中分別對GPIF II狀態機、DDR2中的FIFO讀寫、USB的數據流傳輸等進行設計與研究。為后續測試、觀察的需要,在上位機分別進行C++編程和Eclipse 新建并編譯工程且通過JTAG下載到FX3系統的板級上,方便上位機與下位機通信觀察和控制。
3.1 DDR2中的FIFO讀寫設計
FIFO建立主要是為了FPGA向上位機發送數據時能提供足夠大的緩存,以便可以批量地的處理數據。設計中的FIFO主要通過DDR2實現,所以在設計過程中要分別對DDR2的讀寫進行控制,圖3為FIFO同步寫操作時序控制。
圖3中的SLWR和SLCS是外部寫使能信號,低電平有效。SLWR有效的前提下,每當PCLK信號上升沿將數據總線上的數據寫入到DDR2的FIFO中,而且每當時鐘的上升沿更新FIFO的指針即FIFO ADDR。FlAGA來源于FX3系統,用來查看被標記地址狀態信號。FIFO同步讀寫時tas、tws等有嚴格的時限,為解決后顧之憂和延時的精確性,采用在FPGA中寄存器分頻并且設置比較器的方法來精確定時。
3.2 USB數據流傳輸
圖4為 USB數據流傳輸狀態圖,此處USB[3]遵循Device IN Stream 協議。此協議描述了狀態切換機制,主機中Endpoint數據用來促發狀態轉換。當配置Endpoint后,pipe處于(Disabled)失能狀態,主機傳送pipe從而切換到Primr Pige狀態。在Prime Pige狀態下發送NRDY并且設置PP=0而進入idle狀態,在空閑狀態下等待信號去選擇進入Move Data狀態還是 Start Stream狀態。若設置了Nump>0,則進入到Start Stream狀態,接收到Dp時通過Streamn和CStream的關系決定切換到Move Data狀態還是Start Stream End狀態。圖像數據傳輸完成后通過傳輸PP和Prime進入Prime Pipe ACK狀態,然后返回到空閑狀態。
3.3 FX3系統中GPIF II狀態機設計
FX3系統中GPIF II接口是USB3.0控制系統必經過的一個接口,為使系統整體結構更加清晰,此處采用狀態機切換機制。圖5為GPIF II狀態機設計轉化圖,由圖5知系統配置完后,從開始狀態切換到State1狀態,此狀態下查詢FV是否有效,FV有效后切換到State2狀態,此狀態下檢測輸入信號(FV和LV)來決定是否切換到Stata3狀態。若State3和state4數據傳送是緩沖區的邊界時,接下來數據傳送從State3和State4分別切換到State7和State8,傳送的數據不是緩沖區的邊界時,接下來數據傳送在等待LV的返回信號后從State3和State4切換到State5和State6。State9、State10、State11、State12是每個框架結束以后CPU得到一個中斷,在中斷里回調一個函數去使能CPU執行不同的任務。
4 系統的測試
上位機中通過C++編寫工程并用Eclipse軟件進行工程編輯、編譯,通過JTAG下載到USB3.0控制系統板級上,形成API應用,此應用程序可以觀測數據的傳輸速率、波形顯示等。結合系統總體架構的軟件和硬件平臺,最后測試的結果如圖6、圖7所示。圖6顯示了上位機的應用程序獲取到的板級信息,包括當前器件的信息Cypress USB3.0 Generic Driver F1、設備的PID、設備的VID和設備的類型等。通過上位機的器件信息知上位機讀取到的信息和板級上的USB3.0設備吻合,驗證了上位機API應用程序的準確性。圖7的速度性能測試是在上位機的API應用程序上調用速率測試截圖,圖為FIFO同步寫的速率測試,從圖知可以通過“終止”按鍵停止圖像數據傳輸。圖中的運行狀態顯示Cypress USB3.0 Generic Driver F1傳送了1 680個數據包,失敗為0個數據包,速度最小值為153 600 kB/s,最大值為327 680 kB/s,平均值225 979 kB/s,達到了預期的效果,在一定程度上解決了噴繪機圖像數據傳輸速度低的瓶頸。
隨著數字噴繪機的發展,如何在精準數據前提下提高數據的傳輸速率值得探究。本設計系統基于USB3.0協議結合當今流行的硬件可編輯邏輯處理器—FPGA+USB3.0控制系統+DDR2實現,從理論和實際上提高了噴繪機數據傳輸速度,達到了理想的預期效果。但設計系統沒能完全面向客戶,還有不少缺陷和不足,需要在以后彌補和改正。希望將來此設計系統可以打開高速數據在噴繪機傳輸中的應用。
參考文獻
[1]王宗超,倪凱, 王偉能,等. 新一代高速串行接口USB3.0介紹[J].記錄媒體技術,2010(2):34-36.
[2] 朱君麗, 汪文. USB3.0的高速信息傳輸瓶頸研究[J].新器件新技術,2013(6):47-48.
[3] 索曉杰,翟正軍,姜紅梅. USB3.0協議分析與框架設計[J].計算機測量與控制,2012(8):2233-2235.