文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.182003
中文引用格式: 王紅亮,王柳明. 基于MLVDS和USB3.0的多節(jié)點數(shù)據(jù)傳輸系統(tǒng)設計與實現(xiàn)[J].電子技術應用,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.
0 引言
在各種測試現(xiàn)場中,數(shù)據(jù)采集單元往往分布在不同的地方,數(shù)據(jù)采集具有速度快、數(shù)據(jù)量大的特點,且對采集系統(tǒng)的實時性要求越來越高。為了將分布在多處的傳感器采集的大量數(shù)據(jù)進行統(tǒng)一的分析和管理,需要實現(xiàn)多節(jié)點的高速互連通信[1]。MLVDS支持多節(jié)點互連的拓撲結構,可提供較高的數(shù)據(jù)傳輸速率(理論上高達500 Mb/s)和更低的功耗[2],實現(xiàn)多節(jié)點采集數(shù)據(jù)的可靠傳輸;USB3.0接口作為計算機的通用接口,其理論傳輸速率(5 Gb/s)是USB2.0接口的10倍[3]。設計中采用賽普拉斯USB3.0接口芯片CYUSB3014作為FPGA同計算機通信的橋梁,采用SN65MLVD203接口芯片完成多節(jié)點數(shù)據(jù)傳輸,在此基礎上實現(xiàn)了多節(jié)點數(shù)據(jù)采集系統(tǒng)與計算機之間高速傳輸。
1 系統(tǒng)總體框架設計
本文設計的MLVDS和USB3.0接口數(shù)據(jù)傳輸系統(tǒng)結構框圖如圖1所示。該傳輸系統(tǒng)主要由USB3.0模塊、FPGA主控模塊、MLVDS通信模塊模塊組成,系統(tǒng)硬件結構主要包括:FPGA、DDR3緩存芯片、USB3.0接口芯片、MLVDS接口芯片,選用Xilinx公司的Spartan-6系列可編程邏輯器件6slx16csg324芯片為核心控制器,完成對傳輸系統(tǒng)整體邏輯的控制。
系統(tǒng)上電后,F(xiàn)PGA主控模塊對MLVDS總線線上各節(jié)點的采集模塊進行初始化配置,并啟動發(fā)送數(shù)據(jù)包進程與接收數(shù)據(jù)包進程來監(jiān)測多個節(jié)點的運行狀態(tài)。各節(jié)點采集的數(shù)據(jù)經(jīng)過編幀之后將數(shù)據(jù)緩存到采集模塊的DDR3中,當主節(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接口上傳到上位機。在此過程中,上位機負責指令的下發(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ù)后只響應屬于自己的指令。
2 硬件電路設計
2.1 MLVDS接口電路設計
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ù)速率,可應用于時鐘信號傳輸、背板數(shù)據(jù)傳輸?shù)葢弥?sup>[4]。MLVDS總線傳輸結構示意圖如圖2所示,在傳輸節(jié)點間通過異步串行通信方式實現(xiàn)數(shù)據(jù)位同步,數(shù)據(jù)通過差分信號傳輸,每個從節(jié)點都可以同時接收主節(jié)點發(fā)送的指令,各個從節(jié)點只會對屬于自己的指令做出響應,如某個從節(jié)點收到傳數(shù)據(jù)指令,則打開驅(qū)動器使能端來驅(qū)動總線,每一個時刻,各個從節(jié)點中只有一個驅(qū)動器有效,這樣就避免了多個從節(jié)點同時驅(qū)動總線所引起的主節(jié)點接收數(shù)據(jù)亂碼。
本設計中,采用ADuM3442芯片實現(xiàn)對各個節(jié)點上MLVDS芯片驅(qū)動器和接收器的單端與控制器引腳之間的數(shù)字隔離,防止電路文波對接口電路造成的電平漂移,其硬件原理圖如圖3所示。
設計采用ADuM5000對MLVDS總線通路提供電源隔離電路,該電路實現(xiàn)了數(shù)據(jù)與電源的完整隔離,保證該電路能夠應對高電壓瞬變的影響,隔離電路如圖4所示。
2.2 USB3.0接口電路設計
USB3.0接口芯片選用的是賽普拉斯公司推出的FX3系列CYUSB3014芯片,其靈活性高,具備通用可編程接口GPIF II,能保證其與絕大多數(shù)控制器大容量數(shù)據(jù)的高速通信。不僅如此,其還具備一個UART接口[5]。本設計中,UART接口用于指令的下發(fā)和狀態(tài)字的上傳,GPIF II用于高速大容量數(shù)據(jù)的上傳。
設計中將GPIF II接口配置成同步從FIFO工作模式,主控器FPGA與GPIF II接口的數(shù)據(jù)、地址和控制總線對接。FPGA可通過GPIF II接口對FX3的內(nèi)部緩沖區(qū)的數(shù)據(jù)進行讀寫操作,滿足大容量數(shù)據(jù)高速傳輸?shù)囊蟆M瑫r,系統(tǒng)中的指令和狀體字可通過UART 接口進行傳輸,F(xiàn)X3與FPGA的連接框圖如圖5所示。
3 邏輯程序設計
系統(tǒng)硬件邏輯程序設計主要完成系統(tǒng)初始化、USB3.0傳輸、MLVDS總線通信塊以及數(shù)據(jù)轉(zhuǎn)換等功能。
3.1 USB3.0傳輸模塊
為了實現(xiàn)下位機與上位機的通信,F(xiàn)PGA通過GPIF II接口和UART接口來訪問FX3內(nèi)部的數(shù)據(jù)緩沖區(qū),GPIF II接口信號說明如表1所示。
FPGA通過GPIF II接上傳數(shù)據(jù)時,首先發(fā)送FX3內(nèi)部緩沖區(qū)的地址,然后拉低片選信號SLCS#使GPIF II端口處于選通狀態(tài),當PCLK上升沿來臨且FLAGB是高電平狀態(tài)時,使SLWR#信號處于低電平狀態(tài),同時把有效數(shù)據(jù)驅(qū)動到并行總線上,數(shù)據(jù)就可實現(xiàn)寫入操作,數(shù)據(jù)寫入結束后,將SLWR#信號和SLCS#信號拉高。當需要傳輸短數(shù)據(jù)包時,在最后一個數(shù)據(jù)時鐘將PKTEND#拉低,數(shù)據(jù)傳輸完成后再拉高即可。FPGA讀取GPIF II接口數(shù)據(jù)過程與上傳數(shù)據(jù)過程類似,讀取過程中需要將SLOE#拉高,在此系統(tǒng)中GPIF II口主要作為上傳大容量數(shù)據(jù)使用。FX3還具備一個串口通道,當下發(fā)指令和上傳狀態(tài)字時,可使用此通道。
3.2 MLVDS通信模塊
MLVDS總線接口簡單,只規(guī)定了總線物理層的電氣特性,并沒有涉及高層協(xié)議,MLVDS通信控制模塊利用FPGA實現(xiàn)MLVDS總線通信協(xié)議的數(shù)據(jù)鏈路層以及物理層的數(shù)據(jù)傳輸設計。在物理層中完成傳輸數(shù)據(jù)的編碼、解碼、位同步以及幀同步等功能,按照MLVDS通信協(xié)議在數(shù)據(jù)鏈路層中完成數(shù)據(jù)封裝拆裝、總線仲裁、差錯控制、報文濾波以及時序控制等方面的功能及實現(xiàn)[6]。
在執(zhí)行通信流程時,有效數(shù)據(jù)將在MLVDS通信模塊中根據(jù)自定義通信協(xié)議打包和解包。數(shù)據(jù)包中的標識符表示對底層節(jié)點設備操作,分為數(shù)據(jù)的上傳和命令的下發(fā)。數(shù)據(jù)包中的目的地址表示傳輸從節(jié)點的地址信息。ADN4693E芯片把串化數(shù)據(jù)轉(zhuǎn)化為差分信號傳輸?shù)組LVDS傳輸總線,保證數(shù)據(jù)在底層總線上傳輸?shù)目煽啃浴?/p>
MLVDS通信模塊向總線上發(fā)送的數(shù)據(jù)包由以下7個字段構成,各字段的含義如表2所示。
3.3 數(shù)據(jù)轉(zhuǎn)換模塊
數(shù)據(jù)轉(zhuǎn)換模塊主要實現(xiàn)USB3.0傳輸模塊和MLVDS通信模塊之間的數(shù)據(jù)轉(zhuǎn)化。上位機發(fā)送命令時,數(shù)據(jù)通過USB3.0接口傳輸?shù)綌?shù)據(jù)轉(zhuǎn)換器,F(xiàn)PGA通過GPIF II接口檢測標志位判斷到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ā)機制等,重新生成命令數(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ā)送給目標底層設備,完成一次發(fā)送。
接收上傳數(shù)據(jù)時,當MLVDS的接收模塊端口檢測到數(shù)據(jù)起始位有效時開始接收,在物理信令層中完成傳輸數(shù)據(jù)的同步后,將數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù)傳輸給MLVDS總線管理模塊。對MLVDS接收的傳輸數(shù)據(jù)進行CRC校驗正確后,有效數(shù)據(jù)在數(shù)據(jù)有效標志信號為高的條件下傳輸?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ù)上傳到上位機。
4 測試結果
系統(tǒng)測試平臺由數(shù)據(jù)源、MLVDS-USB3.0轉(zhuǎn)換器以及上位機搭建而成,在測試過程中,信號源產(chǎn)生8 bit遞增數(shù),通過從節(jié)點MLVDS驅(qū)動器后將差分串行數(shù)據(jù)驅(qū)動到數(shù)據(jù)總線上,然后主節(jié)點通過MLVDS接收器接收總線差分信號。上位機通過CYUSB3014的UART接口下發(fā)數(shù)據(jù)讀命令,下位機解碼指令后,將MLVDS接收器接收的數(shù)據(jù)通過CYUSB3014的GPIF II接口上傳給上位機。通過ChipScope Pro抓取的GPIF II接收數(shù)據(jù)的時序圖如圖6所示。
當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”分別為地址信息的起始標識和終止標識。第二個32 bit數(shù)據(jù)(cnt=02時)表示此包數(shù)據(jù)地址信息和有效數(shù)據(jù)的長度和。其中,數(shù)據(jù)包起始標識為“0xA2”,通信雙方的地址信息為“0xC1”和“0xD2”,“0xFF”表示此數(shù)據(jù)包長度為255 B。第三個32 bit數(shù)據(jù)為數(shù)據(jù)包正文,每16 B嵌入一個“0x55”作為為同步信息字,檢驗數(shù)據(jù)是否傳輸正確。
上位機將上傳的數(shù)據(jù)保存后,用EmEditor軟件打開數(shù)據(jù)文件如圖7所示,通過上傳數(shù)據(jù)和數(shù)據(jù)源對比,上傳的數(shù)據(jù)和MLVDS總線系統(tǒng)傳輸?shù)臄?shù)據(jù)一致,且沒有明顯誤碼現(xiàn)象,上位機與下位機的通信正常。
在測試過程中,為了對數(shù)據(jù)傳輸速率進行評估,在上位機中加入時間觸發(fā)模塊和流量計,從而可以計算出一定時間內(nèi)上位機接收到的數(shù)據(jù)量,即可計算出傳輸速率。隨機抽取20組測試結果,繪制出數(shù)據(jù)傳輸速率曲線如圖8所示,從曲線圖可以看出,數(shù)據(jù)傳輸速率穩(wěn)定在100 Mb/s~120 Mb/s之間,滿足設計要求。
5 結束語
本文介紹了一種基于FPGA的MLVDS-USB3.0轉(zhuǎn)換器設計方案,并進行了實驗驗證。上位機通過MLVDS—USB3.0轉(zhuǎn)換器轉(zhuǎn)換功能,實現(xiàn)控制多節(jié)點采集設備與上位機間的采集數(shù)據(jù)的高速上傳和指令的下發(fā)。該轉(zhuǎn)換器可在不改變硬件系統(tǒng)構架的前提下靈活實現(xiàn)多種傳輸協(xié)議,具有硬件電路簡單、通用性強、傳輸穩(wěn)定等特點。實踐證明,該轉(zhuǎn)換器可以應用于多節(jié)點數(shù)據(jù)采集系統(tǒng)。
參考文獻
[1] 阿永嘎.多位串行MLVDS高速網(wǎng)絡式儀器總線的研究[D].杭州:浙江大學,2010.
[2] 張法全,李宗敏,王國富,等.分布式多通道同步采集系統(tǒng)設計[J].電視技術,2015,39(23):35-39.
[3] 陳一波,楊玉華,王紅亮,等.基于FPGA的USB3.0-光口轉(zhuǎn)換器設計與實現(xiàn)[J].儀表技術與傳感器,2016(11):19-22.
[4] 朱保琨,劉廣文.USB3.0通信端口FPGA設計與實現(xiàn)[J].計算機工程與設計,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].北京:清華大學出版社,2008.
作者信息:
王紅亮,王柳明
(中北大學 電子測試技術重點實驗室,山西 太原030051)