劉 偉 ,王紅亮 ,張亮紅 ,張美仙
(1.中北大學 儀器科學與動態(tài)測試教育部重點實驗室,太原 030051;2.中北大學 電子測試技術國家重點實驗室,太原 030051;3.中航工業(yè)太原航空儀表有限公司,太原 030006)
網(wǎng)絡信息技術的飛速發(fā)展,大幅提高了以太網(wǎng)接口在工業(yè)控制領域的普及程度。越來越多的上位機采用了以太網(wǎng)接口,在工業(yè)設備中,往往采用RS422總線實現(xiàn)底層設備之間的互聯(lián)[1],通過網(wǎng)口實現(xiàn)計算機和設備之間的數(shù)據(jù)通信充分發(fā)揮了RS422接口硬件設計簡單、易于控制、方便擴展、以太網(wǎng)接口速率高、運行穩(wěn)定可靠的優(yōu)點。本文主要介紹了利用FPGA控制相關芯片實現(xiàn)以太網(wǎng)轉(zhuǎn)RS422的轉(zhuǎn)換器以及相關的硬件結(jié)構(gòu)和軟件設計內(nèi)容。
該轉(zhuǎn)換器具有以太網(wǎng)和RS422的功能,系統(tǒng)采用硬件協(xié)議棧芯片,減少了實現(xiàn)以太網(wǎng)和RS422接口的硬件開銷,大大方便了用戶開發(fā),節(jié)約了時間。同時,該類設計可靠性高,易于維護。本文選用WIZnet公司的W5300作為以太網(wǎng)接口芯片,負責上位機命令的下發(fā)和狀態(tài)信號、數(shù)據(jù)的上傳;FPGA解析上位機下發(fā)的命令后通過RS422總線發(fā)送給連接在該總線上的其他設備,底層設備將狀態(tài)信息和其他數(shù)據(jù)經(jīng)RS422總線上傳至FPGA、上位機,便于上位機分析數(shù)據(jù)。RS422發(fā)送芯片采用DS26C31,接收芯片采用DS26C32。由于本系統(tǒng)回傳的數(shù)據(jù)量較大,為方便控制,設計了FIFO模塊將回傳的數(shù)據(jù)緩存后,經(jīng)以太網(wǎng)接口芯片發(fā)送至上位機。系統(tǒng)的總體設計如圖1所示。

圖1 總體設計框圖Fig.1 Overall design diagram
以太網(wǎng)接口芯片W5300外接25 MHz晶振,通過內(nèi)部鎖相環(huán)產(chǎn)生150 MHz時鐘用于PLL_CLK、以及W5300內(nèi)核的工作時鐘。為增強信號的抗干擾性能,增加信號傳輸距離,保護W5300芯片,在TX與RX處外接以太網(wǎng)網(wǎng)絡變壓器,該變壓器可以對信號進行電平耦合,將外界電壓隔離,從而保證信號傳輸?shù)臏蚀_性[2]。同時,設計時需要注意RX、TX差分信號對的阻抗匹配,以及引線等長等其他抗干擾設計。通過BIT16EN、TEST_MODE、OP_MODE端口將W5300設置為16位數(shù)據(jù)接口,使用內(nèi)部PHY的全功能自動握手模式,使得芯片的操作更加方便靈活,便于使用[3]。
RS422數(shù)據(jù)信號采用差分傳輸?shù)姆绞健S422接收器的輸入阻抗較高,發(fā)送驅(qū)動器的驅(qū)動能力強,相較于RS232接口,RS422可以傳輸更長的距離,傳輸速度可達10 Mb/s,抗干擾能力強,可以有多個接收節(jié)點。考慮到設計的高效穩(wěn)定性,本文使用DS26C31、DS26C32作為RS422的發(fā)送接收芯片,該芯片使用+5 V供電,為簡化設計,將芯片的使能信號EN、/EN分別接至+5 V和GND,使芯片處于正常工作模式。考慮到外界環(huán)境中存在電磁干擾,本文需要消除信號傳輸中的反射干擾[4],以及RS422總線中的不確定狀態(tài)。由于本文中信號傳輸距離為0.3 m,系統(tǒng)對于功耗限制要求低,所以采用終端電阻匹配的方法,雙絞線的特征阻抗為100 Ω,故選擇100 Ω的終端匹配電阻來消除反射干擾;通過在總線接收端加偏置電阻[5],將該總線控制在一定的電壓,從而保證RS422總線的狀態(tài)為確定的狀態(tài)。系統(tǒng)的硬件原理示意圖如圖2所示。

圖2 硬件設計原理示意Fig.2 Principle diagram of hardware design
實現(xiàn)以太網(wǎng)接口,首先需要初始化W5300,主要包括主機接口設置、網(wǎng)絡信息設置和內(nèi)部TX/RX存儲器分配[3]。由于該操作本質(zhì)上是配置28個相關的寄存器,逐個配置過程繁瑣,為簡化該過程,本文利用FPGA的內(nèi)部Rom IP核,將需要配置的數(shù)據(jù)和地址導入該核中,然后在FPGA的控制下,實現(xiàn)W5300的初始化配置[6],優(yōu)化了邏輯代碼。該配置過程如圖3所示。

圖3 W5300初始化流程Fig.3 Flow chart of W5300 initialization
初始化完成后,在FPGA的控制下,底層設備和上位機之間通過W5300進行通信。W5300先判斷是否接收數(shù)據(jù),如果接收則執(zhí)行接收數(shù)據(jù)進程,開始接收上位機下發(fā)的數(shù)據(jù),如果不接收則判斷是否發(fā)送數(shù)據(jù),若發(fā)送,則進入發(fā)送模塊進行發(fā)送,并判斷是否超時,當發(fā)送結(jié)束后,則清除本次發(fā)送相關寄存器的標志位,進入接收數(shù)據(jù)模塊檢測是否接收,如此循環(huán),完成指令的下發(fā)和數(shù)據(jù)的回傳。通信過程流程圖如圖4所示[3]。

圖4 W5300通信過程流程Fig.4 Flow chart of W5300 communication
本文中RS422在底層設備間通過異步串行的方式傳輸數(shù)據(jù),其傳輸距離較近(<0.25 m),設計傳輸速率為10 Mb/s。使用RS422總線時,通信的雙方需要提前約定通信的規(guī)則,為了進一步提高串行通信的準確性,經(jīng)討論研究,本文采用了含有校驗位的通訊。數(shù)據(jù)包的格式如表1所示,共42位數(shù)據(jù),有效數(shù)據(jù)為32位,數(shù)據(jù)傳輸效率為76.2%。數(shù)據(jù)按照表中的順序組包。發(fā)送時先發(fā)送1位低電平表示傳輸?shù)拈_始,然后是模式選擇,該處選用11表示發(fā)送命令;接著發(fā)送32位有效的命令數(shù)據(jù),控制底層設備進行相應的操作;第4域為模式域,該域是對第2域的重復,進一步保證了傳輸?shù)恼_性;再次是校驗位,首先在發(fā)送端對數(shù)據(jù)進行校驗,當接收到數(shù)據(jù)后,再進行校驗,通過對比2次校驗的值,檢測數(shù)據(jù)是否正確傳輸,若不正確則將本次數(shù)據(jù)丟棄,反饋錯誤信息至上位機,由上位機確定下一步執(zhí)行的操作。再次為終止位,通過發(fā)送連續(xù)2位的高電平,結(jié)束一包數(shù)據(jù)的發(fā)送。

表1 RS422數(shù)據(jù)包格式Tab.1 RS422 packet format

圖5 RS422數(shù)據(jù)發(fā)送流程Fig.5 Flow chart of sending RS422 data
通過RS422發(fā)送數(shù)據(jù)時,首先將相關的通道標志初始化,然后檢測下發(fā)數(shù)據(jù)通道標志位ch_s_busy_flag,如有數(shù)據(jù)則將該數(shù)據(jù)寫入發(fā)送寄存器ch_send_reg,并釋放下發(fā)數(shù)據(jù)通道,本設計要求的RS422接口速率為10 Mb/s,系統(tǒng)時鐘采用40 MHz晶振,發(fā)送進程中,每4個時鐘發(fā)送1位數(shù)據(jù),其數(shù)據(jù)速率為10 Mb/s,達到了設計要求。發(fā)送結(jié)束后再進行檢測判斷是否有新數(shù)據(jù)。數(shù)據(jù)發(fā)送流程如圖5所示。
通過RS422接收數(shù)據(jù)時,先初始化接收緩存部分,檢測接收數(shù)據(jù)通道CH_RXD,當檢測到起始位后,開始接收數(shù)據(jù),每4個時鐘接收1位數(shù)據(jù),同時,將數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),放在寄存器ch_tmp_data中,檢測數(shù)據(jù)如起始位和結(jié)束位正確,則將數(shù)據(jù)轉(zhuǎn)存在CH_RCV_BUF中,檢測奇偶校驗位和模式域,若二者均正確,則CH_RCV_FLAG標志有效,將數(shù)據(jù)上傳至主模塊的port_send_reg中,然后釋放上傳數(shù)據(jù)通道,返回繼續(xù)檢測是否接收下一包數(shù)據(jù)。數(shù)據(jù)接收流程如圖6所示。

圖6 RS422數(shù)據(jù)接收流程Fig.6 Flow chart of receiving RS422 data
轉(zhuǎn)換器的邏輯設計模塊關系如圖7所示。發(fā)送數(shù)據(jù)時,上位機發(fā)送命令,F(xiàn)PGA檢測標志位,當FPGA判斷到W5300已接收到數(shù)據(jù)后,將數(shù)據(jù)讀到W5300 模塊的 indata(15:0)中,拼接為 32 位數(shù)據(jù),在 rdy_flag上升沿數(shù)據(jù)寫入 datain(31:0)中,并添加起始、校驗、結(jié)束位組成RS422數(shù)據(jù)包格式,然后轉(zhuǎn)為串行數(shù)據(jù)發(fā)送至MAIN模塊的com_rxd,在該模塊中調(diào)用實現(xiàn)RS422的子模塊Module,數(shù)據(jù)通過ch_txd經(jīng)DS26C31芯片發(fā)送給目標底層設備,完成一次發(fā)送。相關寄存器及信號如圖7中小寫字母表示。
接收回傳數(shù)據(jù)時,若在RS422的接收端檢測到起始低電平時開始接收,比較數(shù)據(jù)的起始、校驗、結(jié)束位若正確的話,在CH_RCV_FLAG有效的條件下將數(shù)據(jù)寫入MAIN的RECEIVE_BUF中,然后發(fā)送到DATAreceive模塊,并在該模塊進行數(shù)據(jù)消抖,把有效數(shù)據(jù)寫入外部FIFO中,將較大量的數(shù)據(jù)緩存,使回傳數(shù)據(jù)速率處于可控范圍,避免傳輸時丟數(shù)。接著從FIFO中讀出數(shù)據(jù),并組成16位數(shù)據(jù)傳輸至W5300,在FPGA的控制下,發(fā)送至上位機。相關寄存器及信號如圖7中大寫字母表示。

圖7 邏輯設計模塊關系Fig.7 Logic design module diagram
本文的以太網(wǎng)接口工作于UDP模式,所以本文采用UDP調(diào)試助手作為上位機軟件實現(xiàn)對本轉(zhuǎn)換器的測試。該軟件可以通過網(wǎng)口下發(fā)命令數(shù)據(jù),并且可以讀取回傳的數(shù)據(jù)并查看回讀的數(shù)據(jù)。通過分析回讀數(shù)據(jù)可以測試設計的以太網(wǎng)-RS422轉(zhuǎn)換器是否可以正常工作。
通過UDP助手發(fā)送命令時,設置命令為“FFAABBCCDDEE”, 當 FPGA接收解析命令后,若收到的命令和發(fā)送的內(nèi)容相同,則UDP助手反饋 “發(fā)送數(shù)據(jù)成功”。表示轉(zhuǎn)換器發(fā)送命令通道工作正常。測試結(jié)果如圖8所示。

圖8 下發(fā)測試命令結(jié)果Fig.8 Transmiting test command diagram
讀取回傳數(shù)據(jù)時,命令經(jīng)W5300發(fā)送至以太網(wǎng)接口板,然后通過事先設置的DS26C31的相應通道轉(zhuǎn)發(fā)給接收芯片DS26C32,當接收模塊判斷接收到命令為“FFAABBCCDDEE”時就開始回傳含有兩字節(jié)長度幀計數(shù)、幀結(jié)束標志“EB90”的16 B的遞增數(shù)據(jù)。其結(jié)果數(shù)據(jù)圖如圖9所示。從數(shù)據(jù)可以看出回讀的數(shù)據(jù)幀從00~7F為16 B數(shù)據(jù),完全符合邏輯程序設置。通過多次連續(xù)閉環(huán)測試表明該轉(zhuǎn)換器可以穩(wěn)定、可靠運行。

圖9 接收回傳數(shù)據(jù)Fig.9 Diagram of uploading data
本文介紹了基于FPGA的以太網(wǎng)-RS422接口轉(zhuǎn)換器的設計方案。邏輯程序采用模塊化設計,便于分析和調(diào)試,提高了開發(fā)效率。以太網(wǎng)接口速率可調(diào)、設計靈活,可應用在與PC進行通信的多種場合,RS422接口通用性高。該轉(zhuǎn)換器運行穩(wěn)定,可應用于現(xiàn)場測試數(shù)據(jù)采集、工業(yè)檢測等領域,具有很高的實用價值。
[1]劉巖俊,閆海霞,張磊.基于DSP的網(wǎng)絡通信轉(zhuǎn)換系統(tǒng)設計[J].電子技術應用,2011,37(3):72-74.
[2]陳嫣然,張會新,鄭燕露.基于以太網(wǎng)的高精度測試系統(tǒng)設計[J].自動化與儀表,2012,27(2):12-15.
[3]WIZnet Device,Inc.High-performance internet connectivity solution W5300[EB/OL].2008,http:www.wiznet.co.kr.
[4]任勇峰,劉占峰,彭巧君,等.基于CPCI總線的接口卡設計[J].電子技術應用,2014,40(6):39-41.
[5]王雪松.某高速采集存儲裝置中的關鍵技術研究[D].太原:中北大學,2013.
[6]李勛,劉文怡.基于FPGA的以太網(wǎng)接口設計與實現(xiàn)[J].自動化與儀表,2014,29(5):57-60.