文獻標識碼: A
文章編號: 0258-7998(2013)09-0129-03
多串口數據通信技術主要研究數據的多串口采集、存儲和處理。由于串口通信技術的廣泛應用,使得多串口采集卡一直是研究的熱點,從早期的基于PCI總線的多串口數據采集卡到后來的基于USB的多串口數據采集卡,以及現在的基于USB3.0的多串口數據采集卡。
PCI采集卡由于使用不方便,逐漸被淘汰,目前USB傳輸系統被廣泛應用。USB2.0理論傳輸速度為480 Mb/s,而USB3.0的傳輸速率可高達5 Gb/s,且在USB2.0的基礎上又增加了超高速傳輸模式[1]。本文設計的系統中有80個485傳輸通道,每個通道的速率為1~10 Mb/s,最高傳輸速率可達800 Mb/s,USB2.0已不能滿足此要求。因此本文采用了Cypress的CYUSB3014和Altera的CycloneIII系列FPGA,CYUSB3014保證與PC的傳輸性能,FPGA負責多串口數據的采集以及對CYUSB3014的控制[2]。
1 EZ-USB3.0 FX3與FPGA接口設計[3]
1.1 系統框架
整個多串口數據采集與傳輸系統[4-6]框圖如圖1所示。圖中虛線部分為該系統的硬件框圖,整個系統由3部分組成, USB3.0芯片選擇了業界性能表現最好的Cypress的CYUSB3014芯片(簡稱FX3芯片),理論上通信速率可達4.8 Gb/s,該芯片除了擁有GPIF2.0接口可方便與外設進行通信外,還有標準的SPI、UART、I2C、I2S與外設進行通信;FPGA采用了Cyclone 3C40系列的芯片,邏輯資源、片上RAM以及I/O腳數目都能充分滿足本系統設計;80路485傳輸芯片采用了ADI的ADM3485E,是一款3.3 V低功耗數據收發器,提供±15 kV的ESD保護,適用于多點總線線路的半雙工通信。共模輸入范圍-7 V~+12 V,數據速率可達12 Mb/s,能滿足本系統的設計要求。
1.2 FX3與FPGA的通信設計
FX3與FPGA通信主要分為兩類:
(1)FX3對FPGA的配置信息:PC通過FX3將串口的相關信息發送給FPGA,如各串口的奇偶校驗、波特率、空閑位、每路的統計信息等配置,此類信息數據量比較小;
(2)FX3與FPGA的大容量數據通信:FPGA將485采集的數據通過FX3傳輸到PC。
為了有效地利用FX3的超高速數據傳輸特性,針對這兩種不同的數據類型,本設計將兩種數據通道分開設計,其中配置信息較少,而采集的485數據容量很大,為了不使配置信息數據打斷485數據通道,將配置信息和數據信息通過兩個獨立的通道進行傳輸,其中配置信息采用了通過FX3的UART和FPGA進行通信,通信格式如下:
FX3每發一條配置參數給FPGA,FPGA都會返回相應配置回應,并通知FX3可以繼續發送下一條配置信息,在配置信息都發送完成后,FX3最后會發送一條配置完成命令,此時FPGA會啟動外圍接口電路進入正常的數據采集過程[7]。
2 USB3.0芯片固件設計
Cypress公司為USB3.0芯片提供了一個開發包,其中包括了典型的固件代碼。對USB3.0芯片固件的設計,可利用EZ-USB FX3固件函數庫簡化加速USB3.0 固件程序的開發。固件程序主要完成的工作有:初始化、處理標準的USB設備請求及USB掛起時的電源管理等[8-9]。任務循環的流程圖如圖2所示。
3 FPGA邏輯設計
FPGA采用了Altera公司的Cyclone III系列的3C40-C8,其邏輯門數有200萬門左右,最高工作頻率可以達到300 MHz。整個工程使用了Verilog語言編寫,整個工程的綜合、布局布線都是在Quartus11.0版本下進行,仿真軟件使用Modelsim6.5se版本。本設計中FPGA邏輯設計主要包括485數據采集模塊及與FX3的讀寫時序控制邏輯,整個工程使用邏輯單元,片上RAM使用率接近系統的95%,整個系統工作頻率為100 MHz。
3.1 邏輯模塊設計
系統的邏輯模塊分為時鐘模塊、FX3發送/接收緩存模塊、發送/接收控制模塊、FX3讀寫控制模塊、485接收模塊、485發送模塊以及配置串口參數模塊。
整個系統的數據流分為兩個過程:485數據采集過程和485發送控制命令過程。
(1)485數據采集過程:485數據通過485接收模塊傳送給FX3接收緩存模塊,在FX3數據接口沒有被占用時,通過FX3讀寫控制模塊發送給USB3.0芯片并傳到PC端。
(2)485數據發送過程:USB3.0芯片通過FX3讀寫控制模塊將數據發送到FX3發送緩存模塊中,在收發控制模塊檢測到相關串口空閑后通過485發送模塊將相關數據發送出去。
485收發相對于USB3.0速度來說,屬于慢速設備。為了提高USB3.0總線利用率,此處只設計了兩種緩存,即接收緩存和發送緩存,大小都設置為512 KB,80路的485接收和發送buffer最終都匯聚到這兩種緩存上,有效地減少了短包和空包發生率。
3.2 FX3接口時序
FPGA與FX3之間采用了Slave fifo模式,FPGA通過狀態標志的flaga、flagb、flagc、flagd來判斷FX3的接收/發送緩存的數據狀態[10],當flaga/flagc為高時,表示FX3緩存中接收到了數據;當flagb/flagd為高時,表示FX3的發送緩存為非滿狀態,FPGA可對其進行寫數據操作。
圖3所示為FX3的A通道讀時序,FPGA先檢測i_usb_flaga是否為高電平,如果為高電平則表示A通道buffer中有數據可讀,此時將通道地址信號設置為0,片選信號o_usb_slcs_n/o_usb_sloe_n拉低,o_usb_slrd_n信號拉低后,在4個時鐘之后,數據將出現在io_usb_dq上,如果進行寫操作則將o_usb_slwr_n拉低。對應的通道號地址選對,同時將片選信號拉低即可,寫通道時序如圖4所示。
4 通信速度實驗結果
利用Cypress的Streamer軟件,可以測試該USB3.0傳輸系統的傳輸速率。將Packets per Xfer設置為256,在win764位下(電腦配置為華碩N53XI241SN, Fresco FL1000系列的控制器)的傳輸速率測試結果為2.5 Gb/s,滿足了整個系統的性能,如圖5所示。
該系統適合于超高速數據的傳輸,具有電路簡單、體積小等優點。FPGA技術與USB3.0的結合有極大的靈活性和可擴展性,基于FPGA和USB3.0的突出優點,該設計方案必將應用在更廣闊的領域。
參考文獻
[1] 馬俊濤,李振宇.SlaveFIFO模式下CY7C68013和FPGA的數據通信[J]. 中國傳媒大學學報(自然科學版),2009,16(2):38-44.
[2] 倪明輝,周軍,楊庚. USB在FPGA控制的高速數據采集系統中的應用[J]. 計算機測量與控制,2006,14(2):268-271.
[3] 白海亮. USB2.0微控制器CY7C68013與外FIFO通信發送過程的GPIF接口設計[J].黑龍江科技信息,2009(3):79.
[4] 薛園園,趙建領. USB應用開發寶典[M].北京:人民郵電出版社,2011.
[5] 黃大勇,李鑒,張建正. 基于USB2.0接口的高速數據采集系統設計[J].現代電子技術,2007(24):69-72.
[6] 呂超,張玉霞,王立欣.USB接口高速數據傳輸的實現[J]. 計算機測量與控制,2009,17(5):1003-1005.
[7] 袁江南. 基于USB2.0與FPGA技術的高速數據采集系統的設計[J]. 電子技術應用,2007,33(7):116-118.
[8] 張世偉,印世平,何運桃. USB2.0接口傳輸的FPGA控制與實現[J]. 國外電子測量技術,2009,28(11):74-76.
[9] 索曉杰,翟正軍,姜紅梅. USB3.0協議分析與框架設計[J]. 計算機測量與控制,2012,20(8):2233-2235.
[10] 王宗超,倪凱,王偉能,等.新一代高速串行接口USB3.0介紹[J]. 記錄媒體技術,2010(2):32-34.