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

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

时间:2023-08-23 14:47:17浏览次数:36  
标签:10 Qdiff FPGA 30 Idiff b00 SNR 频偏

1.算法仿真效果

vivado2019.2仿真结果如下:

 

 

 

SNR=0db,无频偏

 

 

 

SNR=5db,无频偏

 

 

 

SNR=25db,无频偏

 

 

 

SNR=45db,带频偏

 

 

 

2.算法涉及理论知识概要

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

 

 

 

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

 

生成高斯白噪声:使用随机数生成器产生服从高斯分布的随机数,作为噪声信号。

生成发送信号:根据应用场景生成发送信号,如调制后的信号。

添加信道效应:将发送信号与高斯白噪声相加,模拟信道效应。

频偏模拟:将发送信号经过频偏模块,引入频偏效应。

编写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

 

  

 

标签:10,Qdiff,FPGA,30,Idiff,b00,SNR,频偏
From: https://www.cnblogs.com/51matlab/p/17651567.html

相关文章

  • AM62x GPMC并口如何实现“小数据-低时延,大数据-高带宽”—ARM+FPGA低成本通信方案
    GPMC并口简介GPMC(GeneralPurposeMemoryController)是TI处理器特有的通用存储器控制器接口,支持8/16bit数据位宽,支持128MB访问空间,最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口,如:(1)FPGA器件(2)ADC器件(3)SRAM内存......
  • m基于FFT傅里叶变换的256QAM基带信号频偏估计和补偿FPGA实现,含testbench和matlab星座
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:     频偏基带256qam信号和频偏补偿后的256qam基带信号使用matlab显示星座图,结果如下:   2.算法涉及理论知识概要         FFT傅里叶变换是一种高效的......
  • 基于FPGA实现的图像加密与解密
    双非硕士研一下学期视觉转FPGA长路漫漫,但希望前途光明基于图像加密的方法网上有特别多种由于我自己本身也是初学者,所以就复现了最简单最直接的加密和解密的方法也就是明文和密钥的异或操作 显示的图片如下:原图/解密 加密图片思路:1)定义两个ROM,分别存储明文数据和密钥数据,明文数据......
  • 【FPGA】 DDR3读写(基于User Interface)
    【FPGA】DDR3读写(基于UserInterface)DDR3概述DDR3(doubledatarate3synchronousdynamicRAM)第三代双倍数据速率同步动态随机存储器同步:数据的速去和写入时钟同步动态:数据掉电无法保存,需要周期性刷新才能保持数据随机存取:能够对任意地址进行操作双倍数据速率:时钟的......
  • FPGA常用IP核
    前言:芯片行业中的IP,一般称为IP(IntellectualProperty)核,是具有知识产权核的集成电路芯核的总称。说白了就是厂家实现的具有特定功能工具,然后我们可以直接调用,就相当于是函数库吧,如果要定制IP核的化是需要氪金的,对于学习来说,免费的就够用啦。在FPGA里,我用的是zynq-7000系列,有一......
  • 基于FFT傅里叶变换的64QAM基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:    将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:   2.算法涉及理论知识概要        FFT傅里叶变换是一种高效的......
  • 基于FFT傅里叶变换的16QAM基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:   将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:   2.算法涉及理论知识概要       FFT傅里叶变换是一种高效的频谱分析......
  • 为什么FPGA中推荐使用独热码?
    独热码只有一个比特位不同,所以在进行比较的时候:假如我们要判断状态机是否处于某状态S1,代码如下格雷码:assignS1=(STATUS==2'b01)二进制码:assignS1=(STATUS==2'b01)而独热码:assignS1=STATUS[1]只需要进行一位的比较就好了,在FPGA代码综合的时候,会将代码综合成比较......
  • m基于FFT傅里叶变换的QPSK基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:2.算法涉及理论知识概要QPSK(QuadraturePhaseShiftKeying)是一种常用的调制方式,它可以在相位和......
  • m基于FFT傅里叶变换的QPSK基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:   将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:   2.算法涉及理论知识概要       QPSK(QuadraturePhaseShiftKeying)......