天天看點

pbs跨節點并行_基于MLVDS和USB3.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晶片為核心控制器,完成對傳輸系統整體邏輯的控制。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

系統上電後,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所示,在傳輸節點間通過異步串行通信方式實作資料位同步,資料通過差分信号傳輸,每個從節點都可以同時接收主節點發送的指令,各個從節點隻會對屬于自己的指令做出響應,如某個從節點收到傳資料指令,則打開驅動器使能端來驅動總線,每一個時刻,各個從節點中隻有一個驅動器有效,這樣就避免了多個從節點同時驅動總線所引起的主節點接收資料亂碼。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

本設計中,采用ADuM3442晶片實作對各個節點上MLVDS晶片驅動器和接收器的單端與控制器引腳之間的數字隔離,防止電路文波對接口電路造成的電平漂移,其硬體原理圖如圖3所示。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

設計采用ADuM5000對MLVDS總線通路提供電源隔離電路,該電路實作了資料與電源的完整隔離,保證該電路能夠應對高電壓瞬變的影響,隔離電路如圖4所示。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

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所示。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

3 邏輯程式設計

系統硬體邏輯程式設計主要完成系統初始化、USB3.0傳輸、MLVDS總線通信塊以及資料轉換等功能。

3.1 USB3.0傳輸子產品

為了實作下位機與上位機的通信,FPGA通過GPIF II接口和UART接口來通路FX3内部的資料緩沖區,GPIF II接口信号說明如表1所示。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

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所示。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

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所示。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

當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總線系統傳輸的資料一緻,且沒有明顯誤碼現象,上位機與下位機的通信正常。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

在測試過程中,為了對資料傳輸速率進行評估,在上位機中加入時間觸發子產品和流量計,進而可以計算出一定時間内上位機接收到的資料量,即可計算出傳輸速率。随機抽取20組測試結果,繪制出資料傳輸速率曲線如圖8所示,從曲線圖可以看出,資料傳輸速率穩定在100 Mb/s~120 Mb/s之間,滿足設計要求。

pbs跨節點并行_基于MLVDS和USB3.0的多節點資料傳輸系統設計與實作

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)