文獻(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總線線上各節(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ò)總線將數(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ò)程類似,,數(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)總線傳輸硬件電路,,根據(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總線傳輸結(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)總線,每一個(gè)時(shí)刻,,各個(gè)從節(jié)點(diǎn)中只有一個(gè)驅(qū)動(dòng)器有效,,這樣就避免了多個(gè)從節(jié)點(diǎn)同時(shí)驅(qū)動(dòng)總線所引起的主節(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總線通路提供電源隔離電路,,該電路實(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ù),、地址和控制總線對(duì)接,。FPGA可通過(guò)GPIF II接口對(duì)FX3的內(nèi)部緩沖區(qū)的數(shù)據(jù)進(jìn)行讀寫(xiě)操作,滿足大容量數(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總線通信塊以及數(shù)據(jù)轉(zhuǎn)換等功能。
3.1 USB3.0傳輸模塊
為了實(shí)現(xiàn)下位機(jī)與上位機(jī)的通信,,F(xiàn)PGA通過(guò)GPIF II接口和UART接口來(lái)訪問(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)到并行總線上,數(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ò)程類似,,讀取過(guò)程中需要將SLOE#拉高,,在此系統(tǒng)中GPIF II口主要作為上傳大容量數(shù)據(jù)使用。FX3還具備一個(gè)串口通道,,當(dāng)下發(fā)指令和上傳狀態(tài)字時(shí),,可使用此通道。
3.2 MLVDS通信模塊
MLVDS總線接口簡(jiǎn)單,,只規(guī)定了總線物理層的電氣特性,,并沒(méi)有涉及高層協(xié)議,MLVDS通信控制模塊利用FPGA實(shí)現(xiàn)MLVDS總線通信協(xié)議的數(shù)據(jù)鏈路層以及物理層的數(shù)據(jù)傳輸設(shè)計(jì),。在物理層中完成傳輸數(shù)據(jù)的編碼,、解碼、位同步以及幀同步等功能,,按照MLVDS通信協(xié)議在數(shù)據(jù)鏈路層中完成數(shù)據(jù)封裝拆裝,、總線仲裁、差錯(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傳輸總線,,保證數(shù)據(jù)在底層總線上傳輸?shù)目煽啃浴?/p>
MLVDS通信模塊向總線上發(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ù)幀,。在總線管理器中按MLVDS總線通信協(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總線管理模塊,。對(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ù)總線上,,然后主節(jié)點(diǎn)通過(guò)MLVDS接收器接收總線差分信號(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總線系統(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ù)傳輸速率曲線如圖8所示,從曲線圖可以看出,,數(shù)據(jù)傳輸速率穩(wěn)定在100 Mb/s~120 Mb/s之間,,滿足設(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ò)式儀器總線的研究[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)