FPGA以太网-UDP协议

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


审核编辑:刘清

猜您喜欢


PC板隔离柱是应用于电子设备和机械结构中的重要组件,其主要参数直接影响产品的性能和使用效果。材质是选择PC板隔离柱时的重要因素,通常采用聚碳酸酯材料,具备优良的...
2025-08-08 00:00:00

贴片电阻0805封装是一种常见的表面贴装元件,广泛应用于电子电路中。其名称「0805」代表了它的尺寸参数,理解这些数字的含义对于正确选择和使用至关重要。「080...
2024-11-26 11:29:56

变频空调维修中,贴片电阻是必不可少的元件。体积小巧,便于安装在电路板上,用于调节电路中的电流和电压。 了解常用的贴片电阻阻值,可以帮助维修人员快速判断故障并进行...
2024-11-29 10:25:40

分流器作为信号分配和管理的重要器件,应用于光纤通信、网络设备和电子系统中。PHYCOM(飞元)作为国内知名的通信器件制造品牌,其生产的分流器因高性能和稳定性受到...
2015-02-06 19:10:52

你是否经历过手机玩游戏时变得烫手,甚至出现卡顿、降频的情况?这是因为手机处理器在高负载运行时会产生大量热量,影响性能和电池寿命。为了解决这个问题,许多手机厂商开...
2024-11-12 00:00:00

今日给各位大侠带来基于FPGA VHDL 的 ASK调制与解调 以后机会多多,慢慢分享一些项目开发以及深造学习方面的内容,欢迎各位大侠一起切磋交流,华山论剑,不...
2024-04-22 14:44:00

电解电容是电子元件中常见的一个。的应用非常,特别是在电源和滤波器中。电解电容的介质类型影响着其性能和特性。本文将介绍电解电容的几种主要介质类型。铝电解电容铝电解...
2025-03-19 09:30:35

现代电子设备的设计与制造中,连接器起着非常重要的作用。TERMINAL_38.3X12.5MM作为一种新型连接器,因其独特的尺寸和性能优势,正逐渐成为电子行业的...
2025-03-10 00:01:50

在日常生活和工作中,配件和工具是不可少的配件。配件通常指的是与主设备或主工具相辅相成的附属物品,可以增强主产品的功能或提高使用体验。例如,数码相机的镜头、手机的...
2021-10-22 00:00:00