首页 > 技术 > 内容

FPGA以太网-UDP协议

时间:2025-12-02  作者: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环回测试成功。


审核编辑:刘清

猜您喜欢


其光敏电阻产品在市场上享有盛誉。光敏电阻,作为对光线变化敏感的特殊电阻,应用于照明控制、环境检测、自动调光系统等领域。本文将详细介绍Taiyo Yuden光敏电...
2016-12-05 06:30:00
排阻作为重要的电子元器件,应用于电路的分压、限流、滤波等功能。选择一个高品质的排阻品牌,对于保证电路性能和产品质量非常重要。VISHAY(威世)作为全球领先的电...
2022-11-14 19:16:10
现代消费市场中,配件的选择对产品的整体价值和用户体验起着非常重要的作用。本文将为您详细介绍“Accessories_29.24X9.35MM_TM”这一配件,探...
2025-03-09 06:55:34
LED背光照明技术作为一种高效、节能、环保的照明方式,近年来发展迅速,正逐渐取代传统的照明方式,走进千家万户。从手机、电视屏幕到室内外照明,LED背光技术以其独...
2024-09-18 00:00:00
贴片电阻0603,指的是其封装尺寸为0603,这是一种非常常见的表面贴装电阻(SMD电阻)类型。 那么,0603究竟代表多大的尺寸呢?0603表示的是英制尺寸,...
2024-11-29 10:26:12
电解电容是电子电路中常见的元件。很多人对不太了解,尤其是接反的后果。接下来,我们将讨论电解电容接反了会出现什么问题。正负极接反电解电容有正负极。接反后,电容器会...
2025-03-20 15:30:34
贴片电阻种类繁多,规格型号也多种多样,主要由尺寸、阻值和精度等参数决定。尺寸通常用四位数字表示,例如0402、0603、0805、1206等,数字越大,表示尺寸...
2024-11-29 10:26:04
你是否好奇过,为什么手机可以用充电宝充电,笔记本电脑却需要笨重的适配器?这其中的奥秘,就藏在DC转换器这小小的装置里。简单来说,DC转换器就像是一位电力翻译官。...
2024-02-14 00:00:00
VQFN(薄型方形无引脚封装)是一种广泛应用于电子元件的小型封装形式,尤其是在需要高密度布局的场合。本文将重点介绍VQFN-24_5.5X3.5MM-EP这一型...
2025-02-24 12:37:02