徐振華 郭濤 郭利強
摘 要: 針對智能家居系統(tǒng)諸多監(jiān)測模塊無法同時完成多節(jié)點間高速通信的問題,設(shè)計一種基于M?LVDS接口和千兆以太網(wǎng)接口的數(shù)據(jù)轉(zhuǎn)化模塊。該模塊結(jié)合M?LVDS接口多節(jié)點通信和千兆以太網(wǎng)高速數(shù)據(jù)傳輸?shù)葍?yōu)點,以FPGA作為核心控制器,基于UDP協(xié)議搭建控制邏輯,實現(xiàn)M?LVDS與千兆以太網(wǎng)之間的數(shù)據(jù)交互。測試結(jié)果表明,數(shù)據(jù)轉(zhuǎn)換結(jié)果準確、可靠,實現(xiàn)了智能家居控制平臺與多節(jié)點設(shè)備的高速通信。
關(guān)鍵詞: 數(shù)據(jù)轉(zhuǎn)化; 多節(jié)點; 高速通信; FPGA; M?LVDS; 千兆以太網(wǎng)
中圖分類號: TN919?34; TP336 文獻標識碼: A 文章編號: 1004?373X(2018)19?0023?04
Abstract: Since the numerous monitoring modules of smart home system can′t complete the high?speed communication among multiple nodes at the same time, a data conversion module based on M?LVDS interface and gigabit Ethernet interface was designed. The module combines the advantages of multi?node communication of M?LVDS interface and high?speed data transmission of gigabit Ethernet, takes FPGA as its core controller, and establishes the control logic based on UDP protocol to realize the data interaction between M?LVDS and gigabit Ethernet. The testing results show that the data conversion results are accurate and reliable, and the converter realizes the high?speed communication between the smart home control platform and multi?node device.
Keywords: data conversion; multi?node; high?speed communication; FPGA; M?LVDS; gigabit Ethernet
智能家居系統(tǒng)中對家居環(huán)境監(jiān)測的傳感器和調(diào)節(jié)單元分布式排列在不同區(qū)域,需要同時與多設(shè)備通信。由于家居環(huán)境大量視頻、聲音等監(jiān)測對象的加入,對數(shù)據(jù)傳輸?shù)母邔崟r性和高傳輸速率以及低功耗提出了更高的要求。為了將分布在多處的傳感器采集的大量數(shù)據(jù)統(tǒng)一分析和管理,需要實現(xiàn)多節(jié)點的高速互連通信。M?LVDS支持多節(jié)點互連的拓撲結(jié)構(gòu),可提供高的數(shù)據(jù)傳輸速率和更低的功耗,實現(xiàn)數(shù)據(jù)的可靠高速傳輸[1]。FPGA作為核心控制器,采用太網(wǎng)物理層芯片實現(xiàn)千兆以太網(wǎng)與計算機通信。本文基于實際需求設(shè)計一種千兆以太網(wǎng)和M?LVDS接口轉(zhuǎn)換模塊,以實現(xiàn)智能家居各監(jiān)測模塊大量實時數(shù)據(jù)與系統(tǒng)平臺之間可靠、高速傳輸。
M?LVDS和千兆以太網(wǎng)接口數(shù)據(jù)轉(zhuǎn)換模塊結(jié)構(gòu)如圖1所示。主要由以太網(wǎng)通信模塊、FPGA主控模塊、M?LVDS通信模塊組成。
系統(tǒng)上電后,F(xiàn)PGA對M88E1111進行初始化,完成相關(guān)寄存器的配置,啟動發(fā)送數(shù)據(jù)包進程與接收數(shù)據(jù)包進程。數(shù)據(jù)上傳過程為多節(jié)點間數(shù)據(jù)經(jīng)M?LVDS接口傳輸?shù)組?LVDS通信模塊,數(shù)據(jù)完成鏈路層數(shù)據(jù)解碼后通過DDR3緩存控制器寫入DDR3緩存。以太網(wǎng)數(shù)據(jù)傳輸模塊讀取DDR3緩存數(shù)據(jù),數(shù)據(jù)按照UDP協(xié)議在千兆以太網(wǎng)通信模塊中打包后通過GMII接口傳輸給物理層,控制平臺經(jīng)RJ45網(wǎng)口讀取數(shù)據(jù)[2]。數(shù)據(jù)下發(fā)過程與上傳過程類似,通信數(shù)據(jù)通過以太網(wǎng)接口下發(fā)至轉(zhuǎn)換器,F(xiàn)PGA解析后將其寫入緩存中,M?LVDS通信模塊讀出FIFO緩存的數(shù)據(jù),將數(shù)據(jù)編碼后經(jīng)過M?LVDS通信模塊發(fā)送到M?LVDS總線上,總線上的設(shè)備將根據(jù)協(xié)議獲取對應的數(shù)據(jù)。
2.1 M?LVDS通信電路設(shè)計
M?LVDS通信模塊采用SN65MLVD203全雙工收發(fā)器芯片,采用雙線差分多節(jié)點傳輸結(jié)構(gòu),可實現(xiàn)250 Mb/s高速通信。以時鐘源方式實現(xiàn)傳輸數(shù)據(jù)位同步,同時發(fā)送時鐘和數(shù)據(jù)。接收時按照同步時鐘接收,實現(xiàn)數(shù)據(jù)串行傳輸。M?LVDS收發(fā)器可實現(xiàn)線或功能及各節(jié)點間總線的共享機制與總線的非破壞性仲裁機制[3]。
通過長電纜連接的節(jié)點之間,常因節(jié)點間的地線電位差導致節(jié)點地環(huán)路電流,形成差模干擾。為確保數(shù)據(jù)傳輸?shù)目煽啃?,基于TPS76333設(shè)計電源隔離電路,防止不必要的電流損害影響電子元件的工作,實現(xiàn)信號和電源的完整隔離。選用ISO7842為M?LVDS驅(qū)動器的邏輯輸入和接收器的邏輯輸出提供數(shù)字隔離,提升數(shù)據(jù)傳輸?shù)耐暾浴?/p>
2.2 千兆以太網(wǎng)通信電路設(shè)計
千兆以太網(wǎng)物理層收發(fā)器芯片M88E1111提供自主協(xié)商、傳輸介質(zhì)自動檢測以及網(wǎng)絡(luò)收發(fā)線對的自動檢測和交叉,可以在五類非屏蔽雙絞線上進行數(shù)據(jù)收發(fā)。只需外接25 MHz晶振,通過內(nèi)部鎖相環(huán)便能提供GTXCLK,RXCLK和芯片內(nèi)核的工作時鐘[4]。FPGA通過MDI管理接口配置芯片內(nèi)部寄存器,該接口為雙路信號接口分別配置時鐘信號和數(shù)據(jù)信號。通過管理接口,上層能監(jiān)視和控制物理層,實現(xiàn)不同功能,滿足多種場合需求。M88E1111與RJ45接口通過MDI 差分數(shù)據(jù)線形式連接。
程序控制主要完成系統(tǒng)初始化、千兆以太網(wǎng)收發(fā)控制、UDP協(xié)議數(shù)據(jù)打包解包、上位機命令解析、DDR3緩存控制、M?LVDS通信協(xié)議等。系統(tǒng)上電初始化,根據(jù)智能家居平臺命令接收或發(fā)送數(shù)據(jù)。
3.1 千兆以太網(wǎng)控制流程
千兆以太網(wǎng)采用UDP協(xié)議實現(xiàn)與智能家居平臺通信[5]。系統(tǒng)初始化完成后通過MDIO/ MDC管理接口配置物理層寄存器,將M88E1111傳輸模式配置為1000BASE?T。接收進程從DDR3緩存中接收數(shù)據(jù),待發(fā)送的數(shù)據(jù)包內(nèi)容以UDP IP報文的格式打包。接收DDR3緩存打包成的UDP數(shù)據(jù)包,最終以GMII格式通過接收端傳輸?shù)組88E1111,傳輸速度可達[6]1 000 Mb/s。發(fā)送進程狀態(tài)機如圖2所示。
發(fā)送數(shù)據(jù)時,狀態(tài)機初始化為IDLE,發(fā)送進程計時器timer==32′h00400000時,進入狀態(tài)START生成IP包頭和包頭校驗和,當check_buffer_end==1時,開始發(fā)送8個IP前導碼:7個55和1個d5,隨后發(fā)送MAC目的地址和源地址、IP包頭,準備發(fā)送UDP數(shù)據(jù)包,當發(fā)送結(jié)束后,進入SEND_CRC[7]。CRC校驗正確crc_vaild==1則成功發(fā)送,狀態(tài)機返回初始狀態(tài)IDLE,完成一次發(fā)送。
數(shù)據(jù)接收與數(shù)據(jù)發(fā)送過程類似,接收到來自M88E1111的數(shù)據(jù)包時,將GMII格式數(shù)據(jù)包先進行前導碼、幀開始符、目的MAC 地址、源MAC地址以及IP包頭檢測,之后開始接收有效數(shù)據(jù)和數(shù)據(jù)校驗。接收數(shù)據(jù)成功后,將有效數(shù)據(jù)發(fā)送到FIFO緩存單元中。
3.2 M?LVDS通信控制流程
M?LVDS總線只規(guī)定了物理層的電氣特征,并未規(guī)定通信的高層協(xié)議[7]。按照IEEE 802.3標準,利用FPGA實現(xiàn)M?LVDS通信協(xié)議數(shù)據(jù)在鏈路層與物理信令層之間的數(shù)據(jù)傳輸。通信控制將從FIFO緩存中讀取的數(shù)據(jù)按照通信協(xié)議在總線管理器中完成數(shù)據(jù)封裝拆裝、總線仲裁、差錯控制、報文濾波以及時序控制等功能,在PLS中完成數(shù)據(jù)的編碼、解碼、位同步以及幀同步[8]。
執(zhí)行通信流程時,有效數(shù)據(jù)在M?LVDS中根據(jù)協(xié)議重新打包和解包。數(shù)據(jù)包中標示符表示對底層各節(jié)點的操作,分為數(shù)據(jù)上傳和命令下發(fā)。數(shù)據(jù)包中地址表示智能家居分布式監(jiān)測節(jié)點的地址信息,包括發(fā)出和接收節(jié)點的地址。多節(jié)點通信時,地址的優(yōu)先級與地址值絕對值相關(guān),值越大優(yōu)先級越高[9]。源地址具有最高優(yōu)先級地址“1111 1111”,目的地址前4位為節(jié)點信息,后4位為單節(jié)點通道信息。SN65MLVD203把串化數(shù)據(jù)轉(zhuǎn)化為差分信號傳輸?shù)組?LVDS總線,保證數(shù)據(jù)在總線上傳輸?shù)目煽啃院涂偩€仲裁一致性。
3.3 數(shù)據(jù)轉(zhuǎn)換通信流程
數(shù)據(jù)轉(zhuǎn)換模塊的控制流程主要包括千兆以太網(wǎng)通信和M?LVDS通信之間的數(shù)據(jù)轉(zhuǎn)化。智能家居平臺發(fā)送命令時,數(shù)據(jù)通過RJ45網(wǎng)口、千兆以太網(wǎng)接口到達數(shù)據(jù)轉(zhuǎn)換器。FPGA檢測標志位判斷接收到數(shù)據(jù)后,將數(shù)據(jù)讀到千兆以太網(wǎng)通信模塊中,對命令數(shù)據(jù)解包,去除傳輸格式,讀取有效數(shù)據(jù)。將命令寫入命令緩存中,實現(xiàn)數(shù)據(jù)跨時鐘同步。在讀信號上升沿時將數(shù)據(jù)從FIFO中讀出到M?LVDS模塊中,與命令寄存器組中的值對比,確定命令的功能、對象、觸發(fā)機制,重新生成命令數(shù)據(jù)幀,在總線管理器中按M?LVDS通信協(xié)議添加起始位、仲裁場、校驗位、終止位組成M?LVDS 數(shù)據(jù)包格式,轉(zhuǎn)為串行數(shù)據(jù)發(fā)送至M?LVDS接口[10]。調(diào)用M?LVDS發(fā)送命令,經(jīng)SN65MLVD203發(fā)送給底層目標節(jié)點,完成一次發(fā)送。
接收上傳數(shù)據(jù)時,M?LVDS的接收端口檢測到數(shù)據(jù)起始位有效時開始接收,PLS層完成數(shù)據(jù)同步后轉(zhuǎn)化為并行數(shù)據(jù)傳輸給總線管理模塊。對M?LVDS接收的數(shù)據(jù)進行CRC校驗精確后,有用數(shù)據(jù)在有效標志信號為高時傳輸?shù)紻DR3緩存中。對接收數(shù)據(jù)消抖后,把有用數(shù)據(jù)和節(jié)點信息寫入DDR3中,使回傳速度處于可控范圍。千兆以太網(wǎng)通信模塊從DDR3緩存中讀出數(shù)據(jù),以并行方式傳輸至M88E1111,在 FPGA 控制下,將數(shù)據(jù)上傳到智能家居系統(tǒng)控制平臺。
功能測試平臺由信號源、M?LVDS?千兆以太網(wǎng)轉(zhuǎn)換器、控制平臺上位機搭建構(gòu)成,功能測試連接如圖3所示。調(diào)試助手提供數(shù)據(jù)接收發(fā)送操作界面,同時將上傳數(shù)據(jù)導出分析,驗證數(shù)據(jù)正確性。測試時設(shè)置通信雙方IP地址等信息后啟動連接。在命令窗口輸出要發(fā)送的數(shù)據(jù)或直接讀取網(wǎng)口數(shù)據(jù)。通過轉(zhuǎn)換網(wǎng)絡(luò)指示燈判斷以太網(wǎng)連接、數(shù)據(jù)傳輸情況,可以實時觀測上位機與FPGA 通信狀態(tài)。測試過程中信號源循環(huán)產(chǎn)生遞增數(shù)據(jù),由M?LVDS接口轉(zhuǎn)為差分信號對上傳到傳輸總線,轉(zhuǎn)換器將總線上的差分信號對轉(zhuǎn)化為串行數(shù)據(jù)輸入。
為了測試模塊功能,轉(zhuǎn)化器初始化4字節(jié)數(shù)“01010101”數(shù)據(jù)接收命令。調(diào)試助手通過以太網(wǎng)向轉(zhuǎn)化器下發(fā)讀取數(shù)據(jù)命令,讀取M?LVDS接口數(shù)據(jù)。測試結(jié)果如圖4所示。
數(shù)據(jù)傳輸開始為4字節(jié)“01”證明轉(zhuǎn)化器能夠接收到控制命令。由調(diào)試助手接收到的多組數(shù)據(jù)分析,數(shù)據(jù)連續(xù)遞增,與信號源產(chǎn)生的數(shù)據(jù)一致,證明系統(tǒng)傳輸正確,實現(xiàn)了M?LVDS總線到千兆以太網(wǎng)的數(shù)據(jù)通信功能。測試中在系統(tǒng)中加入時間觸發(fā)和流量計,通過計算一定時間內(nèi)接收到的數(shù)據(jù)量對傳輸速率進行評估。以20組測試結(jié)果繪制成數(shù)據(jù)傳輸速度測試曲線,如圖5所示。系統(tǒng)傳輸速率穩(wěn)定在100~120 Mb/s,實現(xiàn)了數(shù)據(jù)的高速傳輸。
本文介紹了一種基于 FPGA 的 M?LVDS?千兆以太網(wǎng)轉(zhuǎn)換模塊設(shè)計方案,并測試了傳輸誤碼率和速率。智能家居平臺通過轉(zhuǎn)換器轉(zhuǎn)換功能實現(xiàn)同時控制多節(jié)點上監(jiān)測設(shè)備和環(huán)境調(diào)節(jié)設(shè)備的工作以及數(shù)據(jù)高速上傳。轉(zhuǎn)換模塊在不改變硬件系統(tǒng)構(gòu)架前提下可靈活實現(xiàn)多種傳輸協(xié)議,通用性強,傳輸穩(wěn)定。
參考文獻
[1] 張法全,李宗敏,王國富,等.分布式多通道同步采集系統(tǒng)設(shè)計[J].電視技術(shù),2015,39(23):35?39.
ZHANG Faquan, LI Zongmin, WANG Guofu, et al. Distributed multi?channel synchronization acquisition system design [J]. TV engineering, 2015, 39(23): 35?39.
[2] 何潤岸.基于UDP進行大規(guī)模數(shù)據(jù)傳輸?shù)目煽總鬏斚到y(tǒng)的設(shè)計與實現(xiàn)[D].濟南:山東大學,2015.
HE Runan. Design and implementation of reliable transmission system for large?scale data transmission based on UDP [D]. Jinan: Shandong University, 2015.
[3] 黃萬偉.Xilinx FPGA高速串行傳輸技術(shù)與應用[M].北京:電子工業(yè)出版社,2015.
HUANG Wanwei. High?speed serial transmission technology and application of Xilinx FPGA [M]. Beijing: Publishing House of Electronics Industry, 2015.
[4] 朱保琨,劉廣文.千兆以太網(wǎng)通信端口FPGA設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2016,37(9):2292?2298.
ZHU Baokun, LIU Guangwen. Design and implementation of gigabit Ethernet communication port based on FPGA [J]. Computer engineering & design, 2016, 37(9): 2292?2298.
[5] 佘顏.基于DDR3控制器的高速存儲接口系統(tǒng)的設(shè)計與驗證[D].西安:西安電子科技大學,2015.
SHE Yan. Design and verification of high?speed memory interface system based on DDR3 controller [D]. Xian: Xidian University, 2015.
[6] KIM J H. Buffering circuit, semiconductor device having the same, and methods thereof [J]. Journal of pharmaceutical sciences, 2015, 99(7): 3030?3040.
[7] 宋飛,馮旭哲.基于硬件協(xié)議棧芯片的高速以太網(wǎng)接口設(shè)計[J].工業(yè)儀表與自動化裝置,2012(4):57?59.
SONG Fei, FENG Xuzhe. Design of high?speed Ethernet interface based on hardware protocol stack chip [J]. Industrial instruments and automation device, 2012(4): 57?59.
[8] 張磊,何昕,魏仲慧,等.基于千兆網(wǎng)接口的星敏感器圖像顯示與存儲[J].液晶與顯示,2015,30(1):114?119.
ZHANG Lei, HE Xin, WEI Zhonghui, et al. Display and storage of star sensor image based on Gigabit network interface [J]. Liquid crystals & displays, 2015, 30(1): 114?119.
[9] 阿永嘎.多位串行M?LVDS高速網(wǎng)絡(luò)式儀器總線的研究[D].杭州:浙江大學,2010.
A Yongga. Research on multi?bit serial M?LVDS high speed network instrument bus [D]. Hangzhou: Zhejiang University, 2010.
[10] SONG K C, LI C X, YE L Y, et al. Signal integrity optimization of MLVDS based multi?master instrument bus [C]// 2014 IEEE International Symposium on Electromagnetic Compatibility. Raleigh: IEEE, 2014: 433?437.