m基于DE2-115开发板的网口UDP数据收发系统FPGA实现

简介: m基于DE2-115开发板的网口UDP数据收发系统FPGA实现

1.算法仿真效果
Quartusii18.0+DE2-115开发板测试结果如下:

一个DE2-115做发射,一个DE2-115做接收

发射0010

bba4d4081b4275ecc88c5b475327bd3a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

发射1001

10be857264a8ffde1b2c0c21d3b970f4_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

发射1011

ffd4352dddc0727100d05d4f66201c0e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 [1] 是UDP的正式规范。UDP在IP报文的协议号是17。
UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择。

fe96a31e42d6cc2841b7049450606cf3_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

 1.udp是无连接的,也就是不需要像TCP那样调用 connect(...)函数。正是因为UDP是不需要connect(...),所以UDP是不可靠的。是无应答消息的,即:发出去了就发出去了,也不知道有没有收到。UDP协议也是数据包无序号标识,即:可能先发的数据包,最后收到,也有可能后发的数据包,最先收到,是比较随机的。

  2.UDP是面向数据包的,即:UDP每次发送都是以一个一个数据包来进行发送的。正是因为如此,对应的应用层数据既不会合并也不会拆分(保留数据包的边界)。每次发送的数据都是一个独立的UDP数据包,即:第一次发送的UDP数据包 和 第二次发送的UDP数据包,不会有任何的联系,2次发送的数据,就需要2次接收。因此,不会产生TCP中,那种粘包的行为。

 3.UDP没有拥塞控制,UDP只知道不停的往外发送数据,网络出现的拥塞不会使源主机的发送速率降低。从某种意义上来看,UDP的效率更高。因为,UDP没有繁琐的握手机制、同步机制。

 4.UDP支持一对一、一对多、多对一和多对多的交互通信。因为UDP只需要知道目标主机ip地址,以及端口号 就可以进行通信。

5.UDP消息头开销小,只有8个字节。TCP消息头工有20个字节。

 6.所以,我们知道 UDP更加高效,UDP的高效是通过可靠性来换取的。如果想要高效,那么就选UDP,如果想要可靠性,那么就选TCP。UDP he TCP 是互补的。 

3.Verilog核心程序
```reg [15:0] myIP_Prtcl;
reg [159:0]myIP_layer;
reg [63:0] myUDP_layer;
reg [31:0] mydata;
reg [2:0] byte_counter;
reg [4:0] state_counter;
reg [95:0] mymac;
reg [15:0] data_counter;
reg [3:0] rx_state;
wire e_rxdv;
wire[7:0 ]datain;
reg [159:0]IP_layer;
reg [63:0] UDP_layer;
reg [15:0] rx_total_length; //UDP frame的总长度
reg [15:0] rx_data_length; //接收的UDP数据包的长度
reg [31:0] data_o; //UDP接收的数据

assign e_rxdv=1'b1;
assign datain={ENET1_RX_DATA,ENET1_RX_DATA};
parameter idle=4'd0,
six_55=4'd1,
spd_d5=4'd2,
rx_mac=4'd3,
rx_IP_Protocol=4'd4,
rx_IP_layer=4'd5,
rx_UDP_layer=4'd6,
rx_data=4'd7,
rx_finish=4'd8;

initial
begin
rx_state<=idle;
end

//UDP数据接收程序
always@(posedge clk_50)
begin
data_o<={24'd0,datain};
case(rx_state)
idle: begin
byte_counter<=3'd0;
data_counter<=10'd0;
mydata<=32'd0;
state_counter<=5'd0;
if(e_rxdv==1'b1) begin //接收数据有效为高,开始接收数据
if(datain[7:0]==8'h55) begin //接收到第一个55//
rx_state<=six_55;
mydata<={mydata[23:0],datain[7:0]};
end
else
rx_state<=idle;
end
end
six_55: begin //接收6个0x55//
if ((datain[7:0]==8'h55)&&(e_rxdv==1'b1)) begin
if (state_counter==5) begin
state_counter<=0;
rx_state<=spd_d5;
end
else
state_counter<=state_counter+1'b1;
end
else
rx_state<=idle;
end
```

相关文章
|
1月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
1月前
|
存储 算法 数据处理
基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统在原有的8PSK调制解调基础上,新增了高斯信道与误码率统计模块,验证了不同SNR条件下的8PSK性能。VIVADO2019.2仿真结果显示,在SNR分别为30dB、15dB和10dB时,系统表现出不同的误码率和星座图分布。8PSK作为一种高效的相位调制技术,广泛应用于无线通信中。FPGA凭借其高度灵活性和并行处理能力,成为实现此类复杂算法的理想平台。系统RTL结构展示了各模块间的连接与协同工作。
51 16
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
### 简介 本项目采用VIVADO 2019.2进行了十六进制相位移键控(16PSK)算法仿真,结果显示,在SNR=30dB时效果为Tttttttttttttt12,在SNR=20dB时效果为Tttttttttttttt34。系统RTL结构如Tttttttttttttt555555所示。16PSK是一种高效的相位调制技术,能在每个符号时间内传输4比特信息,适用于高速数据传输。其工作原理包括将比特流映射到16个相位状态之一(Tttttttttttttt777777),并通过匹配滤波和决策进行解调。具体Verilog核心程序见完整代码。
36 1
|
2月前
|
算法 测试技术 开发工具
基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
该系统在原有的QPSK调制解调基础上,新增了高斯信道和误码率统计模块,验证了不同SNR条件下的QPSK误码性能。系统包括数据生成、QPSK调制与解调等模块,使用Vivado 2019.2进行仿真,展示了SNR分别为15dB、10dB、5dB和1dB时的误码情况。系统采用Verilog语言实现,具有高效、可靠的特点。
51 3
|
2月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于Vivado 2019.2实现了2ASK调制解调系统,新增高斯信道及误码率统计模块,验证了不同SNR条件下的ASK误码表现。2ASK通过改变载波振幅传输二进制信号,其调制解调过程包括系统设计、Verilog编码、仿真测试及FPGA实现,需考虑实时性与并行性,并利用FPGA资源优化非线性操作。
74 0
|
4月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
升级版FPGA MSK调制解调系统集成AWGN信道模型,支持在Vivado 2019.2中设置不同SNR仿真误码率。示例SNR值从0到15,结果展示解调质量随SNR提升。MATLAB仿真验证了MSK性能,图片显示了仿真结果。 ### 理论概要 研究聚焦于软件无线电中的MSK调制解调,利用Verilog实现。MSK是一种相位连续、恒包络的二进制调制技术,优点包括频谱效率高。系统采用无核设计,关键模块包括调制器、解调器和误码检测。复位、输入数据、中频信号等关键信号通过Verilog描述,并通过Chipscope在线观察。
101 6
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
|
3月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的BPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统基于Vivado2019.2,在原有BPSK调制解调基础上新增高斯信道及误码率统计模块,可测试不同SNR条件下的误码性能。仿真结果显示,在SNR=0dB时误码较高,随着SNR增至5dB,误码率降低。理论上,BPSK与2ASK信号形式相似,但基带信号不同。BPSK信号功率谱仅含连续谱,且其频谱特性与2ASK相近。系统采用Verilog实现,包括调制、加噪、解调及误码统计等功能,通过改变`i_SNR`值可调整SNR进行测试。
47 1
|
3月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统基于FSK调制解调,通过Vivado 2019.2仿真验证了不同信噪比(SNR)下的误码率表现。加入高斯信道与误码统计模块后,仿真结果显示:SNR=16dB时误码极少;随SNR下降至0dB,误码逐渐增多。FSK利用频率变化传输信息,因其易于实现且抗干扰性强,在中低速通信中有广泛应用。2FSK信号由连续谱与离散谱构成,相位连续与否影响功率谱密度衰减特性。Verilog代码实现了FSK调制、加性高斯白噪声信道及解调功能,并计算误码数量。
62 5
|
4月前
|
异构计算
FPGA新起点V1开发板(十)——按键控制LED
FPGA新起点V1开发板(十)——按键控制LED
FPGA新起点V1开发板(十)——按键控制LED
|
4月前
|
异构计算
FPGA新起点V1开发板(八-语法篇)——状态机
FPGA新起点V1开发板(八-语法篇)——状态机