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