APP下载

基于FPGA+ARM 多路千兆以太网通信接口设计

2022-07-28苏和平

现代电子技术 2022年15期
关键词:发送数据寄存器风暴

李 杨,苏和平,张 丹,许 乔

(湖北大学 计算机与信息工程学院,湖北 武汉 430062)

0 引 言

随着人工智能、大数据和物联网等新兴技术的发展,原始数据井喷式地涌现出来,这也对接口提出了更高的要求,高速、可靠的传输接口往往是整个项目的技术关键。

近年来,国内对于以太网接口的研究取得了显著进步。文献[3-4]采用Zynq-7000 芯片,利用ARM+FPGA 架构在芯片内搭建了千兆以太网模块,传输速度分别为640 Mb/s 和870 Mb/s。文献[5]采用国产FPGA 芯片,自行研发了SGMII core 与MAC core,实现了千兆以太网口的设计。文献[6]采用DSP+FPGA 架构形式,搭建了多路串口、以太网通信系统,实现40 路RS 422/RS 485 通信功能。文献[7]采用ARM 和FPGA 芯片,利用FSMC 实现两个芯片通信,采集多路光栅数据。文献[8]采用FPGA设计实现了一种UDP 网络IP 核,兼容GMII、RGMII 以及SGMII 接口,且移植性较强。

但是上述设计存在价格昂贵、不能胜任多路以太网传输任务、不支持风暴抑制等不足。而网络风暴抑制的功能一般在软件层面,这会消耗大量资源算力。为此本文采用ARM+FPGA 架构,通过FSMC 总线进行芯片间通信,充分发挥ARM 在控制方面及FPGA 善于扩展和并行处理的优点,实现一种多通道、扩展性强、成本低廉且支持风暴抑制的千兆以太网接口模块。

1 整体结构

基于FPGA+ARM 的多路千兆以太网通信系统的整体结构如图1 所示。外部数据通过千兆网口进入FPGA进行解包,然后通过FSMC 总线传递给ARM 进行处理;下行数据由ARM 发出,通过FSMC 总线进入FPGA中进行打包,根据命令从相应通道的千兆以太网口向外发送。

图1 系统整体结构图

FPGA 与ARM 之间通过FSMC 总线连接,如图2 所示。FSMC 总线包含6 位地址总线、16 位数据总线以及控制总线。

图2 ARM 与FPGA 连接图

2 FPGA 设计

FPGA 芯 片 选 用Altera 公 司 的EP4CE10F17C8 芯片,其拥有10 320 个逻辑单元,可以满足本系统功能要求。ARM 处理器选用ST 公司的STM32F407IG,具有Cortex-M4 处理器内核,1 MB FLASH 且具有FSMC。

FPGA 用Verilog 语言开发,FPGA 结构框图如图3 所示,由时序转换模块、打包解包模块和MAC 控制模块三部分组成,其中可以接多个MAC 接收模块。

图3 FPGA 结构框图

2.1 时序转换模块

时序转换模块将FSMC 复杂时序转换为较简单时序,同时将一路FSMC 转换多路内部总线,其中包括传递数据的总线和各个模块的控制总线。其中转换出来的控制总线使能各个模块功能,访问各个模块的寄存器。

2.2 打包模块和解包模块

打包解包模块约定了ARM 与FPGA 通信的协议,如表1 所示。在要发送的数据前添加要发通道号以及待发送数据的字节长度,以便于打包模块知道数据应当发送到哪个MAC 和解包模块,以及数据包来自哪个MAC,同时将一路内部数据总线又分为多路数据总线,与多个MAC 相连。

表1 ARM 与FPGA 通信协议

发送功能:当检测到发送开始寄存器操作后,将发送数据寄存器的数据写入前级FIFO 缓存,直到检测到发送完成寄存器操作,停止向前级FIFO 缓存,接着开始检查保存包是否正确并产生接收完成信号,若当前包不正确,读出当前包同时丢弃,正确则保留。根据表1 协议判断当前包要发送到的MAC,待其可以接收数据时向其发送。

接收功能:4 个通道的数据首先进入4 个通道FIFO中,随后通道扫描器会依次循环扫描这4 个通道FIFO,若该通道使能且有数据,就将该通道数据缓存到前级FIFO 并产生接收完成信号,等待ARM 读取数据,待ARM 读取完继续循环之前操作。

2.3 MAC 模块

MAC 控制模块实现以太网的数据链路层协议,同时定义了与打解包模块的通信协议,如表2 所示。这个协议是在表1 通信协议的基础上,在包头添加包头标志SOP,包中部添加中部标志MID,在包尾添加包尾标志EOP,以便于以数据包的形式进行传输和处理。设计功能:速率为1 000 Mb/s,帧间隔可配,支持自动填充,支持CRC 校验,支持广播/组播风暴抑制,支持MAC 地址白名单。

表2 MAC 控制模块与打解包模块通信协议

MAC 发送的逻辑:首先有MAC 数据帧待MAC 模块发出,等待设定的帧间隔时间结束,接着发送前导码和帧定界符,然后发送待发送MAC 数据帧,若长度小于60 B 则用零填充至60 B,最后发送循环校验序列。

广播/组播风暴抑制逻辑如图4 所示。根据设定时间以及设定的广播包阈值,如果在设定的时间内接收的广播包数量超过阈值,进行广播包抑制。同理,组播风暴抑制逻辑和广播风暴抑制逻辑相同。

图4 广播/组播风暴抑制逻辑流程图

MAC 接收的逻辑流程图如图5 所示。接收使能MAC 模块开始接收,若rxdv 信号有效且接收到前导码和帧定界符,则进行下一步的目的MAC 地址接收。接下来进行广播/组播/单播的类型判断,广播或组播的处理类似,会判断是否已经发生广播/组播风暴,发生则不再接收数据,没有就继续;单播的话不需要考虑抑制,所以这步跳过。接下来接收源MAC 地址,仅单播需要判断是否源MAC 地址在MAC 地址白名单中,不在白名单则停止操作,在就接收数据,直到rxdv 变为低电平。最后判断接收是否错误,包括长度和CRC 校验。

图5 MAC 接收流程图

2.4 ARM 系统软件设计

ARM 端程序是运行在μCOSⅢ操作系统之上的,ARM 程序使用C 语言编写,ARM 程序分为两个模块,即发送程序和接收程序。

当任务调用发送函数,向发送开始寄存器写操作,接着向发送数据寄存器发送通道号以及数据长度,然后向发送数据寄存器发送待发送数据,发送数据完成后,向发送完成寄存器写操作。

当有ARM 检测到接收中断时,ARM 查询中断状态寄存器,确定是接收中断,同时清除该中断标志,然后进行读取操作。同时接收过程也支持轮询寄存器,方法与中断接收类似,不再赘述。

3 验 证

测试内容包括单通道和多通道功能验证。单通道验证通过如图6 所示的测试环境验证,多通道的验证通过ModelSim 仿真验证。

3.1 单通道验证

单通道测试环境如图6 所示。待测试设计模块外接一个RTL8211EG-VB 芯片的扩展板,然后通过网线与电脑相连。用Wireshark 软件抓取ARM 发来的数据帧,验证本系统的发送功能;采用科来数据包生成器生成验证接收功能所需的各种数据帧,使用科来数据包播放器从电脑端向本接口发送数据帧,并用串口助手查看本接口接收到的包数。

图6 单通道测试环境

测试项目分为两部分:发送功能测试和接收功能测试。发送功能测试需要验证发送内容是否正确,需要填充的数据帧是否填充。接收功能测试需要验证正确接收、MAC 地址白名单功能以及广播/组播风暴抑制功能。

3.1.1 发送功能验证

测试工具为Wireshark。测试内容:ARM 端生成一些待发送数据,统计电脑接收数据包个数,以及检查要填充的数据包是否填充。测试结果见表3。其中,图7是2 000 次发送测试的Wireshark 抓包图。为了不影响抓取,固定MAC 帧类型为0x1234,设计系统的MAC 地址为00:00:00:11:22:33,以广播的形式发包进行测试。

表3 发送功能测试结果

图7 2 000 次发送测试结果

3.1.2 接收功能验证

1)正常接收验证

测试工具:科来数据包生成器、科来数据包播放器、串口调试助手。向设计接口发送不在白名单中的单播包,验证接口的接收功能以及地址白名单功能。具体测试结果见表4。

表4 接收功能测试结果

2) 广播包/组播包风暴抑制

测试工具:科来数据包生成器、科来数据包播放器、串口调试助手。测试中固定风暴抑制区间间隔为65 ms。设置不同的广播包接收的抑制阈值,构造广播包与单播包各不同的组合,将其循环向设计接口发送。测试结果见表5,其中理论接收包数等于发包总数乘以一次循环中不会发生风暴的比例。

表5 风暴抑制结果测试

3.2 多通道验证

仿真环境如图8 所示,例化3 个MAC 模块,将这3 个模块的MAC 发送端口和接收端口相连构成回环。激励文件模拟FSMC 时序,通过FSMC 接口分别向通道0,1,2各发送一包数据。这三包的构成一致都是从0 开始递增,且结尾为固定值1,他们的长度分别是50 B,46 B,60 B。图9 是这三包数据中的第一包数据。

图8 多通道仿真环境

图9 向通道0 发送的数据包时序

根据表1 所示的协议,经过回环得到的数据包头部是该数据包的长度与通道号。要验证多通道功能的正确性,需保证接收的数据包头部的长度和通道号正确且后面数据部分正确。仿真测试中将包头的[15:14]位表示通道,[10:0]位表示数据部分长度,单位为字节。如图10 所示,按照协议解析,表示通道0,长度为50 B。其余两包内容类似,由于篇幅原因就不附上,同时核对各包实际数据部分也与对应发送包相同。

图10 接收第1 包数据时序

经过以上一系列测试,数据发送和接收功能正常,传输时不丢包,且能稳定可靠工作,满足设计要求。

4 结 语

本文针对多路以太网通信需求,基于ARM 和FPGA特点,综合两者的优势提出一种基于ARM+FPGA 的多路千兆以太网通信系统。实现了MAC 帧发送和接收、广播/组播风暴抑制、帧间隔配置、MAC 白名单和错误检测。从验证结果来看,系统运行稳定可靠,满足设计需求。本设计只针对千兆以太网进行设计,在实际应用中可以做成10M/100M/1 000M 自协商,以适应市场需求。本文设计的以太网接口相比其他设计,具有多通道和硬件风暴抑制的功能,适合多通道的以太网传输。由于日益紧张的国际形势,使得国内对于芯片国产化的观念日趋强烈,下一步将考虑实现此接口在国产化芯片上的移植应用。

猜你喜欢

发送数据寄存器风暴
移动自组网中MAC层协议研究
Lite寄存器模型的设计与实现
基于马尔科夫链的LoRaWAN网络节点性能分析
带标记方式的CRDSA++协议性能分析*
《风暴中奔跑的树》
分簇结构向量寄存器分配策略研究*
使用IPSec安全传输数据
玩转脑风暴
可怕的大风暴
2015A/W暗黑风暴来袭!