基于FPGA的UDP通信协议的设计与实现
本文主要论述了基于FPGA所开发的UDP通讯协议解析以及对数据传输的统计分类,其中包括了实现UDP通讯协议的各个模块所需要的技术以及内容,如何实现网络通信与开发板互连的理论,以及实现这些功能所需要使用的FPGA开发板、以太网模块以及外部的一些硬件设施,之后通过了解设计UDP的基本需求,完成高速传输的UDP通讯协议。使用语言包括System Verilog 以及Verilog代码。UDP协议内容完成后,将一些需要的数据存储在SRAM中,通过数据统计反馈一些有价值的信息反馈,来帮助用户来完成对数据内容的剖析,这样的功能也同样应用在大数据时代,所以添加到了系统设计中来完成一些FPGA处理数据的功能。
通过对整体系统的设计,使用CYCLONE IV EP4CE115F29I7 FPGA开发板实现了可以完整传输的UDP通讯协议,采用开发板自带的SDRAM做统计数据缓存以及在此基础上完成了将传输至开发板内的数据进行统计分类,用户可以通过使用上位机软件将数据发生至下位机,之后使用系统功能获得统计分类后的数据。
基于FPGA设计实现UDP通信协议系统,为实现系统安排了以下工作:
UDP传输协议在FPGA中实现的过程查阅资料,了解两者之间的关系,以及本身的细节,来实现基本的高速传输功能。所以在设计过程中,需要进一步的在不同的设计与FPGA开发板之间进行筛选,并选择合适的以太网模块来实现物理传输条件,以保证相对物理器件之间的合理的匹配,从而保证之后的传输功能能够正常实现。
完成筛选以后,针对UDP传输协议的优缺点进行分析对比,来找到需要的设计思路,发现如何提高其的人机交互性,传输性能,错误反馈等等的传输能力。所以此时,查阅一些书籍以及论文进行参阅并同时分析UDP在网络中传输的能力与之相关的性质来达到性能上的提高。因为此过程综合性稍高一些,所以此过程中记录笔记十分重要,也同时能方便之后的对设计的修改以及参照。
进入到设计过程中
(1)需要先构造整体的流程图,来保证有宏观的系统的设计思路,这个过程需要不断的细化流程,来达到设计精简以及实用的性能,之后利用Verilog硬件描述语言在Quartus软件上编写顶层模块。
(2)设计出整体的框架图,完成后再细化各个数据通道以及RTL电路。此过程中设计复杂,需要定义很多的信号,接口名称,所以需要在编写代码时打好备注,方便之后修改以及浏览。
(3)在实现基本的整体电路设计后,需要配置电路板型号,引脚等内容,须参阅相关的设计以及芯片的引脚配置Datasheet,保证一一对应后,就可连接电路板,运行软件进行测试。
当网络选择为千兆以太网时,FPGA 开发板和 PHY 芯片 RTL8211EG 的数据传输时通过 GMII 总线通信,发送时钟在 FPGA 中设定,频率125Mhz,数据为TXD0~TXD7, 数据有效信号为 TXEN, TXC 信号没有使用。接收时钟E_RXC 由 PHY 芯片提供,数据为 RXD0~RXD7, 数据有效信号为 RXDV,数据在时钟的上升沿采样。
在百兆的 MII 通信模式下, 发送数据时,发送时钟为 25Mhz 的 TXC 信号, 此25Mhz 的 TXC 时钟是 PHY 输入给 FPGA 的,数据为 TXD0~TXD3, 数据有效信号为 TXEN, GTXC 信号没有使用; 接收数据时,接收时钟为 25Mhz 的 RXC 信号, 数据为 RXD0~RXD3, 数据有效信号为 RXDV,以太网具体引脚连接图如下图所示。
系统示意结构图如图
本系统有两大部分组成,上位机系统部分与下位机系统部分,其中上位机主要功能是下载数据到下位机中,而下位机则收取上位机的数据进行处理转发。
上位机通过web将用户所需要的数据进行下载,通过UDP通讯协议中的网络层下载到上位机终端或数据库中,之后通过数据链路层的协议转发至下位机。在下载时需要保证网络通畅,同时在上位机下载时可通过数据流量监控软件进行下载数据的事实数据反馈。来达到,清晰的了解数据传输的进程。
下位机主要又FPGA开发板组成,在使用时需现在PC机的软件中通过数据下载线将UDP通讯程序下载到下位机中,之后用FPGA的可以记录特性将程序保存在下位机中,这样就能长期使用,不会应断电而重置。下位机的功能世数据处理转发。即数据在通过数据链路层传输到下位机中后,在FPGA芯片中通过程序逻辑进行制定数据的解析处理,使用起高速处理的特性,将大量的数据量或特定的数据内容进行处理(统计、转发)。
系统总体数据流流程图如图
上图为UDP通讯协议的主要框图图,总体来看有两个模块,一是对UDP通讯协议的解析电路,包括UDP_source模块、ETH_fsm模块。其二是芯片内部寄存器的控制电路。如SRAM控制、RAM控制以及FIFO模块控制。这两大模块主要包含了对传输的输入数据的数据内容的控制,对地址内容的分配及控制,对数据链路层数据的解析,对芯片内部ram存储的控制,对上下行传输的逻辑控制。以及芯片内部寄存器模块则是利用更高的优先级在传输数据的准备与事实过程进行对存储内存的监控,这是由于下位机中FPGA的RAM内存很小所导致的,传输时需保证传输的内容有地址可以存储才能保证系统稳定运行。
UDP的基本模块中,处理又上下行信号TX以及RX的始终做为传输动作的时钟信号,数据进入下位机之前,需要先对UDP协议内容进行解析,这样才能保证系统能稳定处理这些内容。之后在始能型号传入后对串行数据进行传输,现将数据传入之后经过FIFO模块中存储,之后再将数据传回到上位机。
以下是详细的物理层输入数据流程图如图
本系统主要通过设计UDP的协议解析以及传输内容的数据统计两大功能,其中实现了数据在不同层次中的校验传输,保证传输内容符合UDP通信协议的逻辑,同时在数据传输至开发板后一次使用FIFO模块以及RAM模块对数据进行存储转发。此过程保证了数据能稳定的进入开发板并实现转发回上位机,当然这需要开发板具有更高的性能来实现更快的传输。完成这些基本内容后,便需要完成数据统计模块的设计,此设计主要功能是对网络数据的保存统计,所以设计调用SRAM模块,来实现便利的数据统计。通过高低位的区分使得数据可以在不同位数之间通过逻辑转换并统计转发。
最后,完成了对算法模块仿真和对整体系统的上板测试,算法模块仿真验证了Verilog编码实现的UDP通讯解析以及数据统计正确无误,通过整体系统的上板测试的实现结果来看,本系统达到了预期的功能需求,虽然传输速度受到硬件设备的限制,但系统本身可以通过硬件代码的简单修改来完成引用于不同设计需求以及硬件设施的系统设计。同时,因为使用SRAM模块,导致通常的统计数据模块每次输入的数据内容需要有上限,这需要在SRAM控制器模块中修改,否则不能满足硬件需求的设计是无法实现的。
- 微信
- 赶快加我聊天吧
- 开发交流群
- 海纳百川,大家来水