刘 伟 ,王红亮 ,张亮红 ,张美仙
(1.中北大学 仪器科学与动态测试教育部重点实验室,太原 030051;2.中北大学 电子测试技术国家重点实验室,太原 030051;3.中航工业太原航空仪表有限公司,太原 030006)
网络信息技术的飞速发展,大幅提高了以太网接口在工业控制领域的普及程度。越来越多的上位机采用了以太网接口,在工业设备中,往往采用RS422总线实现底层设备之间的互联[1],通过网口实现计算机和设备之间的数据通信充分发挥了RS422接口硬件设计简单、易于控制、方便扩展、以太网接口速率高、运行稳定可靠的优点。本文主要介绍了利用FPGA控制相关芯片实现以太网转RS422的转换器以及相关的硬件结构和软件设计内容。
该转换器具有以太网和RS422的功能,系统采用硬件协议栈芯片,减少了实现以太网和RS422接口的硬件开销,大大方便了用户开发,节约了时间。同时,该类设计可靠性高,易于维护。本文选用WIZnet公司的W5300作为以太网接口芯片,负责上位机命令的下发和状态信号、数据的上传;FPGA解析上位机下发的命令后通过RS422总线发送给连接在该总线上的其他设备,底层设备将状态信息和其他数据经RS422总线上传至FPGA、上位机,便于上位机分析数据。RS422发送芯片采用DS26C31,接收芯片采用DS26C32。由于本系统回传的数据量较大,为方便控制,设计了FIFO模块将回传的数据缓存后,经以太网接口芯片发送至上位机。系统的总体设计如图1所示。
图1 总体设计框图Fig.1 Overall design diagram
以太网接口芯片W5300外接25 MHz晶振,通过内部锁相环产生150 MHz时钟用于PLL_CLK、以及W5300内核的工作时钟。为增强信号的抗干扰性能,增加信号传输距离,保护W5300芯片,在TX与RX处外接以太网网络变压器,该变压器可以对信号进行电平耦合,将外界电压隔离,从而保证信号传输的准确性[2]。同时,设计时需要注意RX、TX差分信号对的阻抗匹配,以及引线等长等其他抗干扰设计。通过BIT16EN、TEST_MODE、OP_MODE端口将W5300设置为16位数据接口,使用内部PHY的全功能自动握手模式,使得芯片的操作更加方便灵活,便于使用[3]。
RS422数据信号采用差分传输的方式。RS422接收器的输入阻抗较高,发送驱动器的驱动能力强,相较于RS232接口,RS422可以传输更长的距离,传输速度可达10 Mb/s,抗干扰能力强,可以有多个接收节点。考虑到设计的高效稳定性,本文使用DS26C31、DS26C32作为RS422的发送接收芯片,该芯片使用+5 V供电,为简化设计,将芯片的使能信号EN、/EN分别接至+5 V和GND,使芯片处于正常工作模式。考虑到外界环境中存在电磁干扰,本文需要消除信号传输中的反射干扰[4],以及RS422总线中的不确定状态。由于本文中信号传输距离为0.3 m,系统对于功耗限制要求低,所以采用终端电阻匹配的方法,双绞线的特征阻抗为100 Ω,故选择100 Ω的终端匹配电阻来消除反射干扰;通过在总线接收端加偏置电阻[5],将该总线控制在一定的电压,从而保证RS422总线的状态为确定的状态。系统的硬件原理示意图如图2所示。
图2 硬件设计原理示意Fig.2 Principle diagram of hardware design
实现以太网接口,首先需要初始化W5300,主要包括主机接口设置、网络信息设置和内部TX/RX存储器分配[3]。由于该操作本质上是配置28个相关的寄存器,逐个配置过程繁琐,为简化该过程,本文利用FPGA的内部Rom IP核,将需要配置的数据和地址导入该核中,然后在FPGA的控制下,实现W5300的初始化配置[6],优化了逻辑代码。该配置过程如图3所示。
图3 W5300初始化流程Fig.3 Flow chart of W5300 initialization
初始化完成后,在FPGA的控制下,底层设备和上位机之间通过W5300进行通信。W5300先判断是否接收数据,如果接收则执行接收数据进程,开始接收上位机下发的数据,如果不接收则判断是否发送数据,若发送,则进入发送模块进行发送,并判断是否超时,当发送结束后,则清除本次发送相关寄存器的标志位,进入接收数据模块检测是否接收,如此循环,完成指令的下发和数据的回传。通信过程流程图如图4所示[3]。
图4 W5300通信过程流程Fig.4 Flow chart of W5300 communication
本文中RS422在底层设备间通过异步串行的方式传输数据,其传输距离较近(<0.25 m),设计传输速率为10 Mb/s。使用RS422总线时,通信的双方需要提前约定通信的规则,为了进一步提高串行通信的准确性,经讨论研究,本文采用了含有校验位的通讯。数据包的格式如表1所示,共42位数据,有效数据为32位,数据传输效率为76.2%。数据按照表中的顺序组包。发送时先发送1位低电平表示传输的开始,然后是模式选择,该处选用11表示发送命令;接着发送32位有效的命令数据,控制底层设备进行相应的操作;第4域为模式域,该域是对第2域的重复,进一步保证了传输的正确性;再次是校验位,首先在发送端对数据进行校验,当接收到数据后,再进行校验,通过对比2次校验的值,检测数据是否正确传输,若不正确则将本次数据丢弃,反馈错误信息至上位机,由上位机确定下一步执行的操作。再次为终止位,通过发送连续2位的高电平,结束一包数据的发送。
表1 RS422数据包格式Tab.1 RS422 packet format
图5 RS422数据发送流程Fig.5 Flow chart of sending RS422 data
通过RS422发送数据时,首先将相关的通道标志初始化,然后检测下发数据通道标志位ch_s_busy_flag,如有数据则将该数据写入发送寄存器ch_send_reg,并释放下发数据通道,本设计要求的RS422接口速率为10 Mb/s,系统时钟采用40 MHz晶振,发送进程中,每4个时钟发送1位数据,其数据速率为10 Mb/s,达到了设计要求。发送结束后再进行检测判断是否有新数据。数据发送流程如图5所示。
通过RS422接收数据时,先初始化接收缓存部分,检测接收数据通道CH_RXD,当检测到起始位后,开始接收数据,每4个时钟接收1位数据,同时,将数据转换为并行数据,放在寄存器ch_tmp_data中,检测数据如起始位和结束位正确,则将数据转存在CH_RCV_BUF中,检测奇偶校验位和模式域,若二者均正确,则CH_RCV_FLAG标志有效,将数据上传至主模块的port_send_reg中,然后释放上传数据通道,返回继续检测是否接收下一包数据。数据接收流程如图6所示。
图6 RS422数据接收流程Fig.6 Flow chart of receiving RS422 data
转换器的逻辑设计模块关系如图7所示。发送数据时,上位机发送命令,FPGA检测标志位,当FPGA判断到W5300已接收到数据后,将数据读到W5300 模块的 indata(15:0)中,拼接为 32 位数据,在 rdy_flag上升沿数据写入 datain(31:0)中,并添加起始、校验、结束位组成RS422数据包格式,然后转为串行数据发送至MAIN模块的com_rxd,在该模块中调用实现RS422的子模块Module,数据通过ch_txd经DS26C31芯片发送给目标底层设备,完成一次发送。相关寄存器及信号如图7中小写字母表示。
接收回传数据时,若在RS422的接收端检测到起始低电平时开始接收,比较数据的起始、校验、结束位若正确的话,在CH_RCV_FLAG有效的条件下将数据写入MAIN的RECEIVE_BUF中,然后发送到DATAreceive模块,并在该模块进行数据消抖,把有效数据写入外部FIFO中,将较大量的数据缓存,使回传数据速率处于可控范围,避免传输时丢数。接着从FIFO中读出数据,并组成16位数据传输至W5300,在FPGA的控制下,发送至上位机。相关寄存器及信号如图7中大写字母表示。
图7 逻辑设计模块关系Fig.7 Logic design module diagram
本文的以太网接口工作于UDP模式,所以本文采用UDP调试助手作为上位机软件实现对本转换器的测试。该软件可以通过网口下发命令数据,并且可以读取回传的数据并查看回读的数据。通过分析回读数据可以测试设计的以太网-RS422转换器是否可以正常工作。
通过UDP助手发送命令时,设置命令为“FFAABBCCDDEE”, 当 FPGA接收解析命令后,若收到的命令和发送的内容相同,则UDP助手反馈 “发送数据成功”。表示转换器发送命令通道工作正常。测试结果如图8所示。
图8 下发测试命令结果Fig.8 Transmiting test command diagram
读取回传数据时,命令经W5300发送至以太网接口板,然后通过事先设置的DS26C31的相应通道转发给接收芯片DS26C32,当接收模块判断接收到命令为“FFAABBCCDDEE”时就开始回传含有两字节长度帧计数、帧结束标志“EB90”的16 B的递增数据。其结果数据图如图9所示。从数据可以看出回读的数据帧从00~7F为16 B数据,完全符合逻辑程序设置。通过多次连续闭环测试表明该转换器可以稳定、可靠运行。
图9 接收回传数据Fig.9 Diagram of uploading data
本文介绍了基于FPGA的以太网-RS422接口转换器的设计方案。逻辑程序采用模块化设计,便于分析和调试,提高了开发效率。以太网接口速率可调、设计灵活,可应用在与PC进行通信的多种场合,RS422接口通用性高。该转换器运行稳定,可应用于现场测试数据采集、工业检测等领域,具有很高的实用价值。
[1]刘岩俊,闫海霞,张磊.基于DSP的网络通信转换系统设计[J].电子技术应用,2011,37(3):72-74.
[2]陈嫣然,张会新,郑燕露.基于以太网的高精度测试系统设计[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的以太网接口设计与实现[J].自动化与仪表,2014,29(5):57-60.