首页 > 技术 > 内容

FPGA以太网-UDP协议

时间:2025-11-29  作者:Diven  阅读:0

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

现在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环回测试成功。


审核编辑:刘清

猜您喜欢


以太网连接器是用于网络通信的重要组件,其中RJ45和RJ11是最常见的两种类型。RJ45连接器通常用于局域网(LAN)中,支持以太网协议,能够传输大量数据,应用...
2011-01-07 00:00:00
分流器作为重要的流体分配设备,越来越受到关注。肇庆英达分流器作为市场上的知名品牌,高品质的产品和良好的服务赢得了广大客户的信赖。本文将详细介绍肇庆英达分流器的品...
2014-10-10 17:09:53
贴片电阻规格型号对照表,浓缩了电阻的关键参数,方便工程师选型。常见的参数包括阻值、封装尺寸、精度、功率。阻值:单位为欧姆(Ω),表示电阻大小,直接影响电路性能。...
2025-04-14 15:04:00
TSSOP20_EP(ThinShrinkSmallOutlinePackage20ExtendedPad)是一种广泛应用于电子元件的小型封装形式。由于其体积小...
2025-02-24 16:33:42
电阻器作为电子元件中的基础部件,其性能直接影响整个电子设备的稳定性与可靠性。其中,华润电阻凭借其高品质的薄膜电阻产品,赢得了众多客户的青睐。本文将围绕“华润电阻...
2014-07-17 15:43:28
捡拾器是实用的工具,应用于家庭、园艺和清理工作中,其主要优势不容忽视。捡拾器能够有效减少弯腰和蹲下的频率,保护脊椎健康,减轻身体负担。对于行动不便的老人或身体较...
2020-02-09 00:00:00
您是否想过,电动汽车飞驰在路上,其电池如何保持稳定和安全?这背后,默默守护的正是电池管理系统,简称BMS。简单来说,电池管理系统就像电动汽车的大脑,负责监控和管...
2024-10-22 00:00:00
现代电子设计中,贴片电阻作为基础电子元件,应用于各种电路中。选择合适的贴片电阻参数对于电路的稳定性和性能非常重要。为了简化设计过程,提高计算准确性,贴片电阻计算...
2025-11-05 07:00:04
电动汽车日益普及的今天,电池作为电动汽车的心脏,其重要性不言而喻。而汽车电池管理系统 (BMS) 则是保障电池安全稳定运行、延长电池使用寿命的关键。汽车电池管理...
2024-11-29 00:00:00