FPGA以太网-UDP协议

时间:2025-09-12  作者:Diven  阅读:0

UDP协议是不可靠的协议,也就是说在传输的过程中如果出错了,并不会去重新传输这个协议包,这个和TCP是不一样的。如果我们需要传输一些即使丢包也不太影响质量的数据的时候便可以采取UDP协议。比如做图像,音频等数据的传输,采用UDP协议会更好一点,因为在传输的时候即使丢失了一些包,也不会产生太大的影响,反而如果采用TCP这种出错会重传的协议在网络环境不好的时候反而会引入较大的延迟从而影响体验。但是对于传输文件等功能来说就需要采用ftp这种基于tcp的协议了,毕竟谁都不愿意收到的文件里面有大量的错误。

FPGA以太网-UDP协议

现在FPGA里面先实现UDP协议的回环测试。整个工程目录和我们之前实现ARP协议一样FPGA以太网--ARP协议,分为tx rx crc和ctrl四个模块。

对于一个以太网帧需要分为下图几个部分(图片来源于正点原子的资料)

因此在rx模块中我们定义了状态机的以下几个状态,分别用于解析前导码,以太网帧头,IP首部,UDP首部,数据和校验码。

状态机跳转如下:

 

always @(*) begin case (curr_state) IDLE:begin if(rxd == 8'h55 && valid == 1'b1)begin next_state = PREAMLE; end else begin next_state = IDLE; end end PREAMLE:begin if(preamleError == 1'b1)begin next_state = IDLE; end else if(preamleSucess == 1'b1)begin next_state = FRAME_HEAD; end else if(valid == 1'b0)begin next_state = IDLE; end else begin next_state = PREAMLE; end end FRAME_HEAD:begin if(headError == 1'b1)begin next_state = IDLE; end else if(headSucess == 1'b1)begin next_state = IP_HEAD; end else if(valid == 1'b0)begin next_state = IDLE; end else begin next_state = FRAME_HEAD; end end IP_HEAD:begin if(ipHeadError == 1'b1)begin next_state = IDLE; end else if(ipHeadSucess == 1'b1)begin next_state = UDP_HEAD; end else if(valid == 1'b0)begin next_state = IDLE; end else begin next_state = IP_HEAD; end end UDP_HEAD:begin if(udp_head_cnt == 8'd7)begin next_state = DATA; end else if(valid == 1'b0)begin next_state = IDLE; end else begin next_state = UDP_HEAD; end end DATA:begin if(udp_data_cnt == udp_len - 16'd1)begin next_state = FCS; end else if(valid == 1'b0)begin next_state = IDLE; end else begin next_state = DATA; end end FCS:begin if(valid == 1'b0)begin next_state = IDLE; end else begin next_state = FCS; end end default: begin next_state = IDLE; end endcaseend

 

在tx中用于udp数据的发送:

当valid为高的时候发起一次udp的发送请求同时将发送长度,mac,ip,port等数据都传进来,当可以发送数据的时候会把ready信号置高。

需要注意的是在以太网发送的过程中,两个以太网帧之间是需要有间隔的,这样才能完成正常的传输。因此我们定义了一个gap来完成这个过程。

为了完成UDP回环测试,使用QT制作一个测试小工具

可以设置IP和端口,下面为发送窗口,上面是回环回来的数据。

可以看到UDP环回测试成功。


审核编辑:刘清

猜您喜欢

贴片电阻在电子电路中很常见,如果发现少了一个,先别慌,根据实际情况可以尝试以下几种解决方法:确定缺失电阻的参数:阻值、功率、精度等级。这些信息通常印在电阻表面或...
2024-11-29 10:26:14

过往这些时日,因为撰写所谓《量子材料》科普,Ising 早就到了文思枯萎之态:文风缺乏变化、行文难有曲折、主题多为老调重弹。每每看到一个主题,原本多为似懂非懂,...
2023-08-10 18:20:00

电荷泵是一种独特的电路设计,能够在无需电感器的情况下输出稳定的电压。作为门槛较低的电源管理解决方案,电荷泵应用于各种电子设备中,为其提供必要的电压支持。电荷泵的...
2024-03-23 00:00:00

随着科技的飞速发展,人形机器人正逐步从科幻电影走进现实生活,成为未来智能社会的重要组成部分。它们不仅能够执行复杂的任务,还能与人类进行自然交互,这一切都离不开先...
2024-11-14 16:44:00

现代电子设备中,连接器的选择对产品性能和可靠性非常重要。弯插连接器作为新型连接技术,因其独特的设计和优越的性能,越来越受到业界的关注。本文将重点探讨弯插_P=2...
2025-04-26 08:00:10

贴片电阻的英文是Chip Resistor,的缩写通常有两种: SMR (Surface Mount Resistor) 或 CRM (Chip Resisto...
2024-11-29 10:25:54


光驱作为重要的存储设备,具有多个显著的优势。光驱能够读取和写入光盘,提供了高容量的数据存储解决方案。相比于传统的硬盘,光盘的存储容量更大,能够轻松存储大量的文件...
2025-06-20 00:00:00

分流器作为信号分配和传输的重要组成部分,是关键配件。正邦(JPCON)作为知名的电子元器件制造商,其分流器系列产品以高品质和稳定性能赢得了市场认可。那么,正邦(...
2012-06-05 02:37:30

NTC热敏电阻(Negative Temperature Coefficient Thermistor)是对温度变化敏感的电子元件,其电阻值温度的升高而降低。N...
2025-04-19 09:00:53