m基于FPGA的高斯白噪声信道模拟系统verilog实现,包含testbench,可以配置不同的SNR和频偏

简介: m基于FPGA的高斯白噪声信道模拟系统verilog实现,包含testbench,可以配置不同的SNR和频偏

1.算法仿真效果
vivado2019.2仿真结果如下:

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

SNR=0db,无频偏
3ce371c748e043b84ad4869477895035_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

SNR=5db,无频偏

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

SNR=25db,无频偏
993dcc668dd708b3b0e6646c2f98dcf6_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

SNR=45db,带频偏

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

2.算法涉及理论知识概要
高斯白噪声信道在通信系统中具有重要意义,模拟此类信道有助于评估系统性能。本文提出的FPGA实现系统可以灵活地模拟不同信道条件,为通信系统的设计和测试提供有力支持。

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

本系统的设计分为以下几个步骤:

生成高斯白噪声:使用随机数生成器产生服从高斯分布的随机数,作为噪声信号。
生成发送信号:根据应用场景生成发送信号,如调制后的信号。
添加信道效应:将发送信号与高斯白噪声相加,模拟信道效应。
频偏模拟:将发送信号经过频偏模块,引入频偏效应。
编写Testbench:编写Verilog测试台,配置不同的SNR和频偏参数,验证系统功能。
本系统在通信系统设计、性能评估和算法验证等方面具有广泛应用。通过模拟不同信道条件,可以评估系统在各种环境下的性能表现,指导系统设计优化。

3.verilog核心程序
````timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2023/08/17 14:13:20
// Design Name:
// Module Name: TEST
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//

module TEST();

reg i_clk;
reg i_rst;
reg signed[7:0]i_SNR;//根据质量得到当前帧类型:-10~50
reg signed[15:0]i_fre;
wire signed[15:0]i_real1;
wire signed[15:0]i_imag1;
wire signed[15:0]o_Rnoise1;
wire signed[15:0]o_Inoise1;
wire signed[15:0]o_real1;
wire signed[15:0]o_imag1;

reg signed[1:0]i_Idiff;
reg signed[1:0]i_Qdiff;
initial
begin
i_Idiff = 2'b00;

#1440
repeat(12500)
begin
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b11;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b11;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b11;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b11;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b11;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b01;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b11;
#10 i_Idiff = 2'b00;
#30 i_Idiff = 2'b11;
end
$stop();

end
initial
begin
i_Qdiff = 2'b00;

#1440
repeat(12500)
begin
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b01;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b01;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b01;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b01;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b01;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b01;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b01;
#10 i_Qdiff = 2'b00;
#30 i_Qdiff = 2'b11;
end
$stop();

end

//测试信号源
wire signed[1:0] w_Inz=i_Idiff;
wire signed[1:0] w_Qnz=i_Qdiff;

//成型滤波
fiter uut1(
.i_clk (i_clk),
.i_rst (i_rst),
.i_din (w_Inz),
.o_dout (i_real1)
);

fiter uut2(
.i_clk (i_clk),
.i_rst (i_rst),
.i_din (w_Qnz),
.o_dout (i_imag1)
);

initial
begin
i_clk = 1'b1;
i_rst = 1'b1;
i_fre= 0;
i_SNR = 8'd0;

#1600
i_rst = 1'b0;
i_SNR = 0;
i_fre= 0;
#10000
i_SNR = 5;
i_fre= 0;
#10000
i_SNR = 15;
i_fre= 0;
#10000
i_SNR = 25;
i_fre= 0;
#10000
i_SNR = 45;
i_fre= 10;//1/2^15*100e6=3k频偏

end

always #5 i_clk=~i_clk;

AWGN_tops AWGN_tops_u(
.i_clk (i_clk),
.i_rst (i_rst),
.i_SNR (i_SNR),//根据质量得到当前帧类型:-10~50
.i_fre (i_fre),
.i_real1 (i_real1),
.i_imag1 (i_imag1),
.o_Rnoise1 (o_Rnoise1),
.o_Inoise1 (o_Inoise1),
.o_real1 (o_real1),
.o_imag1 (o_imag1)
);

endmodule
```

相关文章
|
11天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
28 7
|
1天前
|
编解码 算法 异构计算
m基于CCSDS标准的LDPC编码器的FPGA实现,包含testbench,码长1024,码率0.5
在Vivado 2019.2中进行的LDPC码仿真展示了算法的良好效果。LDPC码是一种1962年由Gallager提出的稀疏校验矩阵线性分组码,利用Tanner图表示编码解码结构。CCSDS标准定义的LDPC(1024,512)码具有准循环结构,适用于空间通信,其编码通过填充信息比特和校验节点的线性组合实现。Verilog代码示例展示了TEST_encoder_top模块,用于控制LDPC编码过程,包括时钟、复位信号处理和中间数据读取。
6 1
|
8天前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
28 18
|
8天前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。
|
3月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
2月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
31 2
|
4月前
|
算法 5G 数据处理
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
51 0
|
4月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
46 1
|
6月前
|
算法 测试技术 开发工具
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
54 0
|
2月前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
16 0

热门文章

最新文章