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