基于W5300 的以太网高速数据传输系统设计
2021-04-20王雨婷薛志超
王雨婷,薛志超,文 丰
(1.中北大学仪器与电子学院电子测试技术国家重点实验室,山西太原 030051;2.中国运载火箭技术研究院空间物理重点实验室,北京 100076)
以太网如今已经走入千家万户、各行各业,应用范围非常广泛。通过对使用集成TCP/IP 协议的以太网芯片W5300进行寄存器、存储器、端口等配置,就可以实现高速度的数据传输。其优点是,传输数据稳定,系统造价较低,开发时长较短,设计者易于上手操作[1]。
同时,本设计中选用的百兆以太网协议芯片W5300,实测传输数据的速率达到90 Mb/s 以上,极大地满足了实际应用中的多种需求。
1 系统硬件设计方案
设计选用FPGA 控制W5300 实现以太网通信,接收上位机软件指令并执行相应操作,在不同网络间建立可靠连接。
FPGA 内部包括普通I/O 口和高速I/O 口,接口传输速率可达到10 Gb/s 以上[2],具有良好的传输稳定性,所以选用FPGA 作为主控芯片。为了达到90 Mb/s以上传输速率的设计要求,W5300 采用16 位数据总线,配置全功能自动握手运行模式[2]。16 位数据位均与FPGA 的I/O 口相连,接收到的数据存入两片Flash中,使用双备份方式保证数据的准确性。为了让W5300 在传输数据的过程中具有更好的抑制高频电压的能力,将W5300 内部产生的电压信号与外部电压信号进行隔离,该设计摒弃了传统以太网电路设计中选用的变压器TT1-6,而是选用了网口变压器H1102NL。它的作用与选频电路相通,使通带中的信号通过,极大抑制阻带中的信号,并且阻带的电压增益更接近零,通带的电压增益为常数。系统硬件电路设计如图1所示。
图1 系统硬件电路设计
1.1 传输模式
为了将不同的计算机设备连接到一起,国际各大公司和机构定义了一系列基于以太网的软件和硬件协议标准。当前,在主流的以太网接口协议中,主要有TCP/IP 协议和UDP 协议[3]。相较于TCP/IP 协议,UDP 协议的传输速率较快,但数据没有握手验证,不能很好地保证高速数据的稳定性。而TCP/IP 协议具有优良的双向传输机制,将TCP 与IP 协同工作,在建立连接前需进行3 次握手,以达到客户端和服务器进行3 次确认性连接[4],在满足数据传输速度的基础上又保证了数据传输的稳定性。
1.2 介质接口信号设置
使用W5300 内部PHY 模式,设置TEST_MODE[0:3]引脚均置0。配置OP_MODE[2:0]=001,既为自动握手模式。为了尽量消除导线阻抗不一致对信号传输的负面影响,设计采取TXON 与TXOP,以及TXON 与TXOP 的导线均为差分线。介质接口信号表如表1 所示。
表1 介质接口信号表
2 系统软件设计方案
该系统通过直接寻址方式控制FPGA 操控W5300,对其寄存器进行配置。设计者在ISE14.7 软件下编写相关程序。W5300 的控制时序包括复位时序和寄存器读、写时序。复位时序产生复位信号并控制时序的复位逻辑;寄存器读时序和寄存器写时序控制W5300 的主机读、写数据的逻辑[5]。复位信号周期最小为2 μs,锁相环锁定最短时间为50 μs,最长时间为10 ms[6]。系统软件设计流程分为3 个步骤:W5300 初始化、数据通信模式配置、数据接收和发送。
2.1 W5300初始化
W5300 初始化分为3 个步骤:主机接口设置、网络信息设置、TX/RX 存储器分配[7]。
2.1.1 主机接口设置
W5300 接口设置包括模式寄存器配置和中断配置。
W5300 的MR 寄 存 器、COMMON 寄 存 器 和SOCKET 寄存器映射在主机存储空间。当中断寄器和中断屏蔽寄存器对应位都为1 时,/INT 输出低电平产生中断;当中断寄存器写入16 位0 时,/INT 变为高电平不产生中断[8]。
2.1.2 网络信息设置
系统设置主机接口为TCP/IP 模式,为了合理的分配好重传的次数和时间,使网络数据通信的可靠性提高,我们对RTR 寄存器和RCR 寄存器进行设置[9]。TCP 数据包传输超时流程如图2 所示。
图2 TCP数据包传输超时流程图
2.1.3 分配TX/RX存储器空间
W5300 内部128K 字节的存储单元依次映射在发送存储器(TX)和接收存储器(RX)当中[10],该设计定义了内部TX 和RX 存储量均为64K。
2.2 数据通信模式配置
在完成对W5300 初始化的配置之后,还需要分别对8 个独立的SOCKET 通信端口进行不同的设 置[11]。“TCP 客户 端”主动发 送SYS 数据包 到对端进行连接请求,对SOCKET 进行初始化配置并打开[12]。其中,数据通信连接状态图如图3 所示。
图3 数据通信连接状态图
2.3 数据接收和发送
在完成W5300 的初始化和数据通信模式配置之后,便可建立连接进行接收数据处理和发送数据处理。当检测到RX 存储器中有数据时,W5300 开始接收数据。可通过判断ALIGN 位的状态来确定数据包中是否存在PACKET_INFO 和数据[13]。
当Sn_MR 的ALIGN 位为0 时,数据包中存在PACKET_INFO 和数据;当Sn_MR 的ALIGN 位为1时,只存在数据包而没有PACKET_INFO[14]。当数据全部读取完成后,将执行RECV 命令,W5300 的数据接收完成。
经多次实验验证发现,每次发送1 460 byte 数据时,传输速率最快。所以设置数据包的大小为730 byte,每次同时发送两包数据。在每次发送数据之前,都应先检查上次的SEND 命令是否完成,如完成则继续发送数据,以确保发送数据的进程无误。
图4、图5 分别为数据的接收、发送流程图。
图4 数据接收流程图
图5 数据发送流程图
3 断网重连
在传输数据的过程中,会出现网络异常中断导致传输中断的现象[15]。为了避免发送或接收数据过程中“断网”导致数据丢失或传输异常,进行了以太网断网重连设计。加入E_LINK_D 信号,当初始化完成时,判断E_LINK_D 是否置0。如置0 则可进行数据收发[16],如网络异常则置1,返回重新进行初始化,直到E_LINK_D 状态为0 时可进行下一步操作。也可通过配置Sn_KPALVTR 寄存器,在TCP 状态下,当Sn_KPALVTR>0,W5300 每5秒发送一个数据包[17]。而我们设置Sn_KPALVTR=10,既每隔50 s 发送一次心跳包,以检查网络连接状态。
4 实验验证
为了实现客户端与服务器之间的高速数据传输,系统使用10 m 的六类四对屏蔽双绞线,一端连接地面测试台,另一端连接计算机进行数据通信[18]。测试台通过以太网将递增数传输到计算机并保存在Flash 中,递增数结构如图6 所示。使用上位机软件对数据进行分解校验。通过上位机软件校验的结果可以看出,数据传输稳定,数据结果完整,无丢帧现象。上位机软件测试结果如图7 所示。
图6 递增数测试结果
图7 上位机软件测试结果
实验时间内共传输347 831 85 个帧数,730 个数据为一个包,共计24 215 Mb 数据,传输时的启动记录与停止记录相隔时间为35 分24 秒,计算得出传输速率可达91.21 Mb/s,与设计要求的高速传输数据速率达到90 Mb/s 以上的条件相符。经多次采集调试,传输速率均可达到90 Mb/s 以上。
5 结论
设计采用基于W5300 的以太网高速数据传输系统,传输速率达到90 Mb/s 以上;选用TCP/IP 协议保障了传输的可靠性。对TCP/IP 协议的交互方式以及W5300 设计流程进行了较为详尽的叙述。最后通过实验验证了该设计有助于传输速率的提高,且软件开发成熟度高,系统实际操作灵活便捷,目前该系统已经在地面有线测量数据传输工程中得到良好应用。