《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于MLVDS和USB3.0的多節(jié)點數(shù)據(jù)傳輸系統(tǒng)設(shè)計與實現(xiàn)
基于MLVDS和USB3.0的多節(jié)點數(shù)據(jù)傳輸系統(tǒng)設(shè)計與實現(xiàn)
2019年電子技術(shù)應(yīng)用第1期
王紅亮,王柳明
中北大學(xué) 電子測試技術(shù)重點實驗室,山西 太原030051
摘要: 針對數(shù)據(jù)采集系統(tǒng)中上位機(jī)無法與多節(jié)點采集設(shè)備高速通信的問題,設(shè)計了一種基于MLVDS接口和USB3.0接口的數(shù)據(jù)傳輸系統(tǒng)。該傳輸系統(tǒng)采用CYUSB3014接口芯片實現(xiàn)計算機(jī)與FPGA的高速數(shù)據(jù)傳輸,采用ADN4693E接口芯片完成多節(jié)點數(shù)據(jù)傳輸,以FPGA作為核心控制器,并基于MLVDS自定義協(xié)議解析多節(jié)點通信邏輯,實現(xiàn)MLVDS接口與USB3.0接口之間的數(shù)據(jù)交互。測試結(jié)果表明,該系統(tǒng)數(shù)據(jù)轉(zhuǎn)換結(jié)果準(zhǔn)確、可靠,實現(xiàn)了上位機(jī)與多節(jié)點數(shù)據(jù)采集設(shè)備間的高速通信。
中圖分類號: TN95
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.182003
中文引用格式: 王紅亮,王柳明. 基于MLVDS和USB3.0的多節(jié)點數(shù)據(jù)傳輸系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2019,45(1):42-45,50.
英文引用格式: Wang Hongliang,Wang Liuming. Design and implementation of multi-node data transmission system based on MLVDS and USB3.0[J]. Application of Electronic Technique,2019,45(1):42-45,50.
Design and implementation of multi-node data transmission system based on MLVDS and USB3.0
Wang Hongliang,Wang Liuming
Key Laboratory of Instrumentation Science & Dynamic Measurement,North University of China,Taiyuan 030051,China
Abstract: Aiming at the problem that the host computer can not communicate with the multi-node acquisition device at high speed in the distributed data acquisition system,a data converter based on MLVDS interface and USB3.0 interface is designed. The converter uses CYUSB3014 interface chip to achieve high-speed data transmission between computer and FPGA, uses ADN4693E interface chip to complete multi-node data transmission, uses FPGA as the core controller, and resolves multi-node communication logic based on MLVDS custom protocol to implement data interaction between MLVDS interface and USB3.0 interfaces. The test results show that the data conversion result of the converter is accurate and reliable, and the high-speed communication between the host computer and the multi-node data acquisition equipment is realized.
Key words : data transmission;USB3.0;high speed communication;MLVDS

0 引言

    在各種測試現(xiàn)場中,數(shù)據(jù)采集單元往往分布在不同的地方,數(shù)據(jù)采集具有速度快、數(shù)據(jù)量大的特點,且對采集系統(tǒng)的實時性要求越來越高。為了將分布在多處的傳感器采集的大量數(shù)據(jù)進(jìn)行統(tǒng)一的分析和管理,需要實現(xiàn)多節(jié)點的高速互連通信[1]。MLVDS支持多節(jié)點互連的拓?fù)浣Y(jié)構(gòu),可提供較高的數(shù)據(jù)傳輸速率(理論上高達(dá)500 Mb/s)和更低的功耗[2],實現(xiàn)多節(jié)點采集數(shù)據(jù)的可靠傳輸;USB3.0接口作為計算機(jī)的通用接口,其理論傳輸速率(5 Gb/s)是USB2.0接口的10倍[3]。設(shè)計中采用賽普拉斯USB3.0接口芯片CYUSB3014作為FPGA同計算機(jī)通信的橋梁,采用SN65MLVD203接口芯片完成多節(jié)點數(shù)據(jù)傳輸,在此基礎(chǔ)上實現(xiàn)了多節(jié)點數(shù)據(jù)采集系統(tǒng)與計算機(jī)之間高速傳輸。

1 系統(tǒng)總體框架設(shè)計

    本文設(shè)計的MLVDS和USB3.0接口數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)框圖如圖1所示。該傳輸系統(tǒng)主要由USB3.0模塊、FPGA主控模塊、MLVDS通信模塊模塊組成,系統(tǒng)硬件結(jié)構(gòu)主要包括:FPGA、DDR3緩存芯片、USB3.0接口芯片、MLVDS接口芯片,選用Xilinx公司的Spartan-6系列可編程邏輯器件6slx16csg324芯片為核心控制器,完成對傳輸系統(tǒng)整體邏輯的控制。

ck1-t1.gif

    系統(tǒng)上電后,F(xiàn)PGA主控模塊對MLVDS總線線上各節(jié)點的采集模塊進(jìn)行初始化配置,并啟動發(fā)送數(shù)據(jù)包進(jìn)程與接收數(shù)據(jù)包進(jìn)程來監(jiān)測多個節(jié)點的運行狀態(tài)。各節(jié)點采集的數(shù)據(jù)經(jīng)過編幀之后將數(shù)據(jù)緩存到采集模塊的DDR3中,當(dāng)主節(jié)點需要讀取某個節(jié)點的數(shù)據(jù)時,從節(jié)點通過MLVDS通信模塊將數(shù)據(jù)傳輸?shù)組LVDS接口芯片,再通過總線將數(shù)據(jù)發(fā)送至主節(jié)點,主節(jié)點完成數(shù)據(jù)解析后將有效數(shù)據(jù)存入DDR3中。同時,USB3.0通信模塊讀取DDR3中的緩存數(shù)據(jù)后,通過USB3.0接口上傳到上位機(jī)。在此過程中,上位機(jī)負(fù)責(zé)指令的下發(fā)和采集數(shù)據(jù)的分析與處理以及各節(jié)點上傳的狀態(tài)字的分析,指令下發(fā)過程與數(shù)據(jù)上傳過程類似,數(shù)據(jù)通過USB3.0接口下發(fā)至USB3.0接口芯片,然后經(jīng)FPGA接收數(shù)據(jù),發(fā)送至MLVDS通信模塊,最后再將數(shù)據(jù)發(fā)送至各個節(jié)點,各個節(jié)點會同時接收到數(shù)據(jù),各節(jié)點接收到數(shù)據(jù)后只響應(yīng)屬于自己的指令。

2 硬件電路設(shè)計

2.1 MLVDS接口電路設(shè)計

    MLVDS驅(qū)動接收器、數(shù)字隔離器、信號連接器件三部分組成了MLVDS多節(jié)點總線傳輸硬件電路,根據(jù)需求,選用ADI公司推出的ADN4693E全雙工通信芯片作為MLVDS驅(qū)動接收器,數(shù)字隔離芯片和電源隔離芯片分別選用的是ADuM3442和ADuM5000,以此來降低來自其他電路的影響。

    ADN4639E是ADI公司發(fā)布的全雙工MLVDS驅(qū)動接收器,內(nèi)置驅(qū)動器和接收器且互不干擾,最高可支持200 Mb/s的數(shù)據(jù)速率,可應(yīng)用于時鐘信號傳輸、背板數(shù)據(jù)傳輸?shù)葢?yīng)用中[4]。MLVDS總線傳輸結(jié)構(gòu)示意圖如圖2所示,在傳輸節(jié)點間通過異步串行通信方式實現(xiàn)數(shù)據(jù)位同步,數(shù)據(jù)通過差分信號傳輸,每個從節(jié)點都可以同時接收主節(jié)點發(fā)送的指令,各個從節(jié)點只會對屬于自己的指令做出響應(yīng),如某個從節(jié)點收到傳數(shù)據(jù)指令,則打開驅(qū)動器使能端來驅(qū)動總線,每一個時刻,各個從節(jié)點中只有一個驅(qū)動器有效,這樣就避免了多個從節(jié)點同時驅(qū)動總線所引起的主節(jié)點接收數(shù)據(jù)亂碼。

ck1-t2.gif

    本設(shè)計中,采用ADuM3442芯片實現(xiàn)對各個節(jié)點上MLVDS芯片驅(qū)動器和接收器的單端與控制器引腳之間的數(shù)字隔離,防止電路文波對接口電路造成的電平漂移,其硬件原理圖如圖3所示。

ck1-t3.gif

    設(shè)計采用ADuM5000對MLVDS總線通路提供電源隔離電路,該電路實現(xiàn)了數(shù)據(jù)與電源的完整隔離,保證該電路能夠應(yīng)對高電壓瞬變的影響,隔離電路如圖4所示。

ck1-t4.gif

2.2 USB3.0接口電路設(shè)計

    USB3.0接口芯片選用的是賽普拉斯公司推出的FX3系列CYUSB3014芯片,其靈活性高,具備通用可編程接口GPIF II,能保證其與絕大多數(shù)控制器大容量數(shù)據(jù)的高速通信。不僅如此,其還具備一個UART接口[5]。本設(shè)計中,UART接口用于指令的下發(fā)和狀態(tài)字的上傳,GPIF II用于高速大容量數(shù)據(jù)的上傳。

    設(shè)計中將GPIF II接口配置成同步從FIFO工作模式,主控器FPGA與GPIF II接口的數(shù)據(jù)、地址和控制總線對接。FPGA可通過GPIF II接口對FX3的內(nèi)部緩沖區(qū)的數(shù)據(jù)進(jìn)行讀寫操作,滿足大容量數(shù)據(jù)高速傳輸?shù)囊蟆M瑫r,系統(tǒng)中的指令和狀體字可通過UART 接口進(jìn)行傳輸,F(xiàn)X3與FPGA的連接框圖如圖5所示。

ck1-t5.gif

3 邏輯程序設(shè)計

    系統(tǒng)硬件邏輯程序設(shè)計主要完成系統(tǒng)初始化、USB3.0傳輸、MLVDS總線通信塊以及數(shù)據(jù)轉(zhuǎn)換等功能。

3.1 USB3.0傳輸模塊

    為了實現(xiàn)下位機(jī)與上位機(jī)的通信,F(xiàn)PGA通過GPIF II接口和UART接口來訪問FX3內(nèi)部的數(shù)據(jù)緩沖區(qū),GPIF II接口信號說明如表1所示。

ck1-b1.gif

    FPGA通過GPIF II接上傳數(shù)據(jù)時,首先發(fā)送FX3內(nèi)部緩沖區(qū)的地址,然后拉低片選信號SLCS#使GPIF II端口處于選通狀態(tài),當(dāng)PCLK上升沿來臨且FLAGB是高電平狀態(tài)時,使SLWR#信號處于低電平狀態(tài),同時把有效數(shù)據(jù)驅(qū)動到并行總線上,數(shù)據(jù)就可實現(xiàn)寫入操作,數(shù)據(jù)寫入結(jié)束后,將SLWR#信號和SLCS#信號拉高。當(dāng)需要傳輸短數(shù)據(jù)包時,在最后一個數(shù)據(jù)時鐘將PKTEND#拉低,數(shù)據(jù)傳輸完成后再拉高即可。FPGA讀取GPIF II接口數(shù)據(jù)過程與上傳數(shù)據(jù)過程類似,讀取過程中需要將SLOE#拉高,在此系統(tǒng)中GPIF II口主要作為上傳大容量數(shù)據(jù)使用。FX3還具備一個串口通道,當(dāng)下發(fā)指令和上傳狀態(tài)字時,可使用此通道。

3.2 MLVDS通信模塊

    MLVDS總線接口簡單,只規(guī)定了總線物理層的電氣特性,并沒有涉及高層協(xié)議,MLVDS通信控制模塊利用FPGA實現(xiàn)MLVDS總線通信協(xié)議的數(shù)據(jù)鏈路層以及物理層的數(shù)據(jù)傳輸設(shè)計。在物理層中完成傳輸數(shù)據(jù)的編碼、解碼、位同步以及幀同步等功能,按照MLVDS通信協(xié)議在數(shù)據(jù)鏈路層中完成數(shù)據(jù)封裝拆裝、總線仲裁、差錯控制、報文濾波以及時序控制等方面的功能及實現(xiàn)[6]

    在執(zhí)行通信流程時,有效數(shù)據(jù)將在MLVDS通信模塊中根據(jù)自定義通信協(xié)議打包和解包。數(shù)據(jù)包中的標(biāo)識符表示對底層節(jié)點設(shè)備操作,分為數(shù)據(jù)的上傳和命令的下發(fā)。數(shù)據(jù)包中的目的地址表示傳輸從節(jié)點的地址信息。ADN4693E芯片把串化數(shù)據(jù)轉(zhuǎn)化為差分信號傳輸?shù)組LVDS傳輸總線,保證數(shù)據(jù)在底層總線上傳輸?shù)目煽啃浴?/p>

    MLVDS通信模塊向總線上發(fā)送的數(shù)據(jù)包由以下7個字段構(gòu)成,各字段的含義如表2所示。

ck1-b2.gif

3.3 數(shù)據(jù)轉(zhuǎn)換模塊

    數(shù)據(jù)轉(zhuǎn)換模塊主要實現(xiàn)USB3.0傳輸模塊和MLVDS通信模塊之間的數(shù)據(jù)轉(zhuǎn)化。上位機(jī)發(fā)送命令時,數(shù)據(jù)通過USB3.0接口傳輸?shù)綌?shù)據(jù)轉(zhuǎn)換器,F(xiàn)PGA通過GPIF II接口檢測標(biāo)志位判斷到USB3.0通信模塊已接收到數(shù)據(jù)后,將數(shù)據(jù)讀到數(shù)據(jù)轉(zhuǎn)換模塊中,并將有效數(shù)據(jù)轉(zhuǎn)化為8 bit數(shù)據(jù),數(shù)據(jù)寫入命令緩存FIFO中實現(xiàn)數(shù)據(jù)跨時鐘的同步。在FIFO讀信號上升沿時將數(shù)據(jù)從FIFO中讀入到MLVDS通信模塊中,在命令解析模塊中通過比對命令寄存器組中值,確定命令的執(zhí)行功能、對象、觸發(fā)機(jī)制等,重新生成命令數(shù)據(jù)幀。在總線管理器中按MLVDS總線通信協(xié)議添加起始、仲裁場、校驗位、終止位組成MLVDS數(shù)據(jù)包格式,然后轉(zhuǎn)為串行數(shù)據(jù)發(fā)送至MLVDS接口模塊,在該模塊中調(diào)用實現(xiàn) MLVDS的發(fā)送模塊,數(shù)據(jù)通過發(fā)送端口經(jīng)ADN4693E芯片發(fā)送給目標(biāo)底層設(shè)備,完成一次發(fā)送。

    接收上傳數(shù)據(jù)時,當(dāng)MLVDS的接收模塊端口檢測到數(shù)據(jù)起始位有效時開始接收,在物理信令層中完成傳輸數(shù)據(jù)的同步后,將數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù)傳輸給MLVDS總線管理模塊。對MLVDS接收的傳輸數(shù)據(jù)進(jìn)行CRC校驗正確后,有效數(shù)據(jù)在數(shù)據(jù)有效標(biāo)志信號為高的條件下傳輸?shù)紻DR3緩存模塊中,將有效采集數(shù)據(jù)、節(jié)點信息及通道地址信息寫入DDR3中,實現(xiàn)大量數(shù)據(jù)緩存,使回傳數(shù)據(jù)速率處于可控范圍。接著USB3.0通信模塊從DDR3緩存模塊中讀出數(shù)據(jù),并組成32 bit數(shù)據(jù)傳輸至USB3.0芯片,在 FPGA 的控制下,將數(shù)據(jù)上傳到上位機(jī)。

4 測試結(jié)果

    系統(tǒng)測試平臺由數(shù)據(jù)源、MLVDS-USB3.0轉(zhuǎn)換器以及上位機(jī)搭建而成,在測試過程中,信號源產(chǎn)生8 bit遞增數(shù),通過從節(jié)點MLVDS驅(qū)動器后將差分串行數(shù)據(jù)驅(qū)動到數(shù)據(jù)總線上,然后主節(jié)點通過MLVDS接收器接收總線差分信號。上位機(jī)通過CYUSB3014的UART接口下發(fā)數(shù)據(jù)讀命令,下位機(jī)解碼指令后,將MLVDS接收器接收的數(shù)據(jù)通過CYUSB3014的GPIF II接口上傳給上位機(jī)。通過ChipScope  Pro抓取的GPIF II接收數(shù)據(jù)的時序圖如圖6所示。

ck1-t6.gif

    當(dāng)cnt_state=6,此時FPGA通過USB_DQ[31:0]將數(shù)據(jù)寫入內(nèi)部數(shù)據(jù)緩存區(qū),cnt為寫入數(shù)據(jù)的計數(shù)器,第一個32 bit數(shù)據(jù)(cnt=01時)表示多鏈路數(shù)據(jù)傳輸?shù)牡刂沸畔?,其中,?xB0”和“0x16”分別為地址信息的起始標(biāo)識和終止標(biāo)識。第二個32 bit數(shù)據(jù)(cnt=02時)表示此包數(shù)據(jù)地址信息和有效數(shù)據(jù)的長度和。其中,數(shù)據(jù)包起始標(biāo)識為“0xA2”,通信雙方的地址信息為“0xC1”和“0xD2”,“0xFF”表示此數(shù)據(jù)包長度為255 B。第三個32 bit數(shù)據(jù)為數(shù)據(jù)包正文,每16 B嵌入一個“0x55”作為為同步信息字,檢驗數(shù)據(jù)是否傳輸正確。

    上位機(jī)將上傳的數(shù)據(jù)保存后,用EmEditor軟件打開數(shù)據(jù)文件如圖7所示,通過上傳數(shù)據(jù)和數(shù)據(jù)源對比,上傳的數(shù)據(jù)和MLVDS總線系統(tǒng)傳輸?shù)臄?shù)據(jù)一致,且沒有明顯誤碼現(xiàn)象,上位機(jī)與下位機(jī)的通信正常。

ck1-t7.gif

    在測試過程中,為了對數(shù)據(jù)傳輸速率進(jìn)行評估,在上位機(jī)中加入時間觸發(fā)模塊和流量計,從而可以計算出一定時間內(nèi)上位機(jī)接收到的數(shù)據(jù)量,即可計算出傳輸速率。隨機(jī)抽取20組測試結(jié)果,繪制出數(shù)據(jù)傳輸速率曲線如圖8所示,從曲線圖可以看出,數(shù)據(jù)傳輸速率穩(wěn)定在100 Mb/s~120 Mb/s之間,滿足設(shè)計要求。

ck1-t8.gif

5 結(jié)束語

    本文介紹了一種基于FPGA的MLVDS-USB3.0轉(zhuǎn)換器設(shè)計方案,并進(jìn)行了實驗驗證。上位機(jī)通過MLVDS—USB3.0轉(zhuǎn)換器轉(zhuǎn)換功能,實現(xiàn)控制多節(jié)點采集設(shè)備與上位機(jī)間的采集數(shù)據(jù)的高速上傳和指令的下發(fā)。該轉(zhuǎn)換器可在不改變硬件系統(tǒng)構(gòu)架的前提下靈活實現(xiàn)多種傳輸協(xié)議,具有硬件電路簡單、通用性強(qiáng)、傳輸穩(wěn)定等特點。實踐證明,該轉(zhuǎn)換器可以應(yīng)用于多節(jié)點數(shù)據(jù)采集系統(tǒng)。

參考文獻(xiàn)

[1] 阿永嘎.多位串行MLVDS高速網(wǎng)絡(luò)式儀器總線的研究[D].杭州:浙江大學(xué),2010.

[2] 張法全,李宗敏,王國富,等.分布式多通道同步采集系統(tǒng)設(shè)計[J].電視技術(shù),2015,39(23):35-39.

[3] 陳一波,楊玉華,王紅亮,等.基于FPGA的USB3.0-光口轉(zhuǎn)換器設(shè)計與實現(xiàn)[J].儀表技術(shù)與傳感器,2016(11):19-22.

[4] 朱保琨,劉廣文.USB3.0通信端口FPGA設(shè)計與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2016,37(9):2292-2298.

[5] SONG K,LI C,YE L,et al.Signal integrity optimization of MLVDS based multi-master instrument bus[C].IEEE International Symposium on Electromagnetic Compatibility.IEEE,2014:433-437.

[6] 田耘,徐文波.Xilinx FPGA開發(fā)實用教程[M].北京:清華大學(xué)出版社,2008.



作者信息:

王紅亮,王柳明

(中北大學(xué) 電子測試技術(shù)重點實驗室,山西 太原030051)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。