基于USB3.0和FPGA的多串口傳輸系統(tǒng)設(shè)計
多串口數(shù)據(jù)通信技術(shù)主要研究數(shù)據(jù)的多串口采集、存儲和處理。由于串口通信技術(shù)的廣泛應(yīng)用,使得多串口采集卡一直是研究的熱點,從早期的基于PCI總線的多串口數(shù)據(jù)采集卡到后來的基于USB的多串口數(shù)據(jù)采集卡,以及現(xiàn)在的基于USB3.0的多串口數(shù)據(jù)采集卡。
PCI采集卡由于使用不方便,逐漸被淘汰,目前USB傳輸系統(tǒng)被廣泛應(yīng)用。USB2.0理論傳輸速度為480Mb/s,而USB3.0的傳輸速率可高達(dá)5Gb/s,且在USB2.0的基礎(chǔ)上又增加了超高速傳輸模式。本文設(shè)計的系統(tǒng)中有80個485傳輸通道,每個通道的速率為1~10Mb/s,最高傳輸速率可達(dá)800Mb/s,USB2.0已不能滿足此要求。因此本文采用了Cypress的CYUSB3014和Altera的CycloneIII系列FPGA,CYUSB3014保證與PC的傳輸性能,F(xiàn)PGA負(fù)責(zé)多串口數(shù)據(jù)的采集以及對CYUSB3014的控制。
1 EZ-USB3.0 FX3與FPGA接口設(shè)計
1.1系統(tǒng)框架
整個多串口數(shù)據(jù)采集與傳輸系統(tǒng)框圖如圖1所示。圖中虛線部分為該系統(tǒng)的硬件框圖,整個系統(tǒng)由3部分組成,USB3.0芯片選擇了業(yè)界性能表現(xiàn)最好的Cypress的CYUSB3014芯片(簡稱FX3芯片),理論上通信速率可達(dá)4.8Gb/s,該芯片除了擁有GPIF2.0接口可方便與外設(shè)進(jìn)行通信外,還有標(biāo)準(zhǔn)的SPI、UART、I2C、I2S與外設(shè)進(jìn)行通信;FPGA采用了Cyclone3C40系列的芯片,邏輯資源、片上RAM以及I/O腳數(shù)目都能充分滿足本系統(tǒng)設(shè)計;80路485傳輸芯片采用了ADI的ADM3485E,是一款3.3V低功耗數(shù)據(jù)收發(fā)器,提供±15kV的ESD保護(hù),適用于多點總線線路的半雙工通信。共模輸入范圍-7V~+12V,數(shù)據(jù)速率可達(dá)12Mb/s,能滿足本系統(tǒng)的設(shè)計要求。
圖1多串口數(shù)據(jù)傳輸系統(tǒng)框圖
1.2 FX3與FPGA的通信設(shè)計
FX3與FPGA通信主要分為兩類:
(1)FX3對FPGA的配置信息:PC通過FX3將串口的相關(guān)信息發(fā)送給FPGA,如各串口的奇偶校驗、波特率、空閑位、每路的統(tǒng)計信息等配置,此類信息數(shù)據(jù)量比較小;
(2)FX3與FPGA的大容量數(shù)據(jù)通信:FPGA將485采集的數(shù)據(jù)通過FX3傳輸?shù)絇C.
為了有效地利用FX3的超高速數(shù)據(jù)傳輸特性,針對這兩種不同的數(shù)據(jù)類型,本設(shè)計將兩種數(shù)據(jù)通道分開設(shè)計,其中配置信息較少,而采集的485數(shù)據(jù)容量很大,為了不使配置信息數(shù)據(jù)打斷485數(shù)據(jù)通道,將配置信息和數(shù)據(jù)信息通過兩個獨立的通道進(jìn)行傳輸,其中配置信息采用了通過FX3的UART和FPGA進(jìn)行通信,通信格式如下:
?、貳Z-USB向FPGA發(fā)送命令格式
②FPGA返回命令格式
FX3每發(fā)一條配置參數(shù)給FPGA,F(xiàn)PGA都會返回相應(yīng)配置回應(yīng),并通知FX3可以繼續(xù)發(fā)送下一條配置信息,在配置信息都發(fā)送完成后,F(xiàn)X3最后會發(fā)送一條配置完成命令,此時FPGA會啟動外圍接口電路進(jìn)入正常的數(shù)據(jù)采集過程。
2 USB3.0芯片固件設(shè)計
Cypress公司為USB3.0芯片提供了一個開發(fā)包,其中包括了典型的固件代碼。對USB3.0芯片固件的設(shè)計,可利用EZ-USBFX3固件函數(shù)庫簡化加速USB3.0固件程序的開發(fā)。固件程序主要完成的工作有:初始化、處理標(biāo)準(zhǔn)的USB設(shè)備請求及USB掛起時的電源管理等。任務(wù)循環(huán)的流程圖如圖2所示。
圖2任務(wù)循環(huán)流程圖
3 FPGA邏輯設(shè)計
FPGA采用了Altera公司的CycloneIII系列的3C40-C8,其邏輯門數(shù)有200萬門左右,最高工作頻率可以達(dá)到300MHz.整個工程使用了Verilog語言編寫,整個工程的綜合、布局布線都是在Quartus11.0版本下進(jìn)行,仿真軟件使用Modelsim6.5se版本。本設(shè)計中FPGA邏輯設(shè)計主要包括485數(shù)據(jù)采集模塊及與FX3的讀寫時序控制邏輯,整個工程使用邏輯單元,片上RAM使用率接近系統(tǒng)的95%,整個系統(tǒng)工作頻率為100MHz.[!--empirenews.page--]
3.1邏輯模塊設(shè)計
系統(tǒng)的邏輯模塊分為時鐘模塊、FX3發(fā)送/接收緩存模塊、發(fā)送/接收控制模塊、FX3讀寫控制模塊、485接收模塊、485發(fā)送模塊以及配置串口參數(shù)模塊。
整個系統(tǒng)的數(shù)據(jù)流分為兩個過程:485數(shù)據(jù)采集過程和485發(fā)送控制命令過程。
(1)485數(shù)據(jù)采集過程:485數(shù)據(jù)通過485接收模塊傳送給FX3接收緩存模塊,在FX3數(shù)據(jù)接口沒有被占用時,通過FX3讀寫控制模塊發(fā)送給USB3.0芯片并傳到PC端。
(2)485數(shù)據(jù)發(fā)送過程:USB3.0芯片通過FX3讀寫控制模塊將數(shù)據(jù)發(fā)送到FX3發(fā)送緩存模塊中,在收發(fā)控制模塊檢測到相關(guān)串口空閑后通過485發(fā)送模塊將相關(guān)數(shù)據(jù)發(fā)送出去。
485收發(fā)相對于USB3.0速度來說,屬于慢速設(shè)備。為了提高USB3.0總線利用率,此處只設(shè)計了兩種緩存,即接收緩存和發(fā)送緩存,大小都設(shè)置為512KB,80路的485接收和發(fā)送buffer最終都匯聚到這兩種緩存上,有效地減少了短包和空包發(fā)生率。
3.2 FX3接口時序
FPGA與FX3之間采用了Slavefifo模式,F(xiàn)PGA通過狀態(tài)標(biāo)志的flaga、flagb、flagc、flagd來判斷FX3的接收/發(fā)送緩存的數(shù)據(jù)狀態(tài),當(dāng)flaga/flagc為高時,表示FX3緩存中接收到了數(shù)據(jù);當(dāng)flagb/flagd為高時,表示FX3的發(fā)送緩存為非滿狀態(tài),F(xiàn)PGA可對其進(jìn)行寫數(shù)據(jù)操作。
圖3所示為FX3的A通道讀時序,F(xiàn)PGA先檢測i_usb_flaga是否為高電平,如果為高電平則表示A通道buffer中有數(shù)據(jù)可讀,此時將通道地址信號設(shè)置為0,片選信號o_usb_slcs_n/o_usb_sloe_n拉低,o_usb_slrd_n信號拉低后,在4個時鐘之后,數(shù)據(jù)將出現(xiàn)在io_usb_dq上,如果進(jìn)行寫操作則將o_usb_slwr_n拉低。對應(yīng)的通道號地址選對,同時將片選信號拉低即可,寫通道時序如圖4所示。
圖3 FX3的A通道數(shù)據(jù)讀取時序
圖4 FX3的B通道寫數(shù)據(jù)時序
4通信速度實驗結(jié)果
利用Cypress的Streamer軟件,可以測試該USB3.0傳輸系統(tǒng)的傳輸速率。將Packets per Xfer設(shè)置為256,在win764位下(電腦配置為華碩N53XI241SN,F(xiàn)resco FL1000系列的控制器)的傳輸速率測試結(jié)果為2.5Gb/s,滿足了整個系統(tǒng)的性能,如圖5所示。
圖5讀速率測試結(jié)果圖
該系統(tǒng)適合于超高速數(shù)據(jù)的傳輸,具有電路簡單、體積小等優(yōu)點。FPGA技術(shù)與USB3.0的結(jié)合有極大的靈活性和可擴(kuò)展性,基于FPGA和USB3.0的突出優(yōu)點,該設(shè)計方案必將應(yīng)用在更廣闊的領(lǐng)域。