m基于FFT傅里叶变换的256QAM基带信号频偏估计和补偿FPGA实现,含testbench和matlab星座图显示

简介: m基于FFT傅里叶变换的256QAM基带信号频偏估计和补偿FPGA实现,含testbench和matlab星座图显示

1.算法仿真效果
本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:

b4e3871c3c1fcb731f9603c7196bd0cf_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
991844d902a7b8ff42ab465e94d5c173_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

频偏基带256qam信号和频偏补偿后的256qam基带信号使用matlab显示星座图,结果如下:
29289960b8238ba4fb67f99194f53a50_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

2.算法涉及理论知识概要
FFT傅里叶变换是一种高效的频谱分析方法,可以将时域信号转换为频域信号,用于频偏估计。FFT傅里叶变换是一种将时域信号转换为频域信号的方法,可以将信号的频谱信息展现出来。对于基带信号,通过FFT可以分析信号的频谱分布,从中获得频偏的估计。FFT傅里叶变换的数学原理如下:

   假设输入的时域信号为 x(n),通过FFT傅里叶变换将其转换为频域信号 X(k):

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

    频偏估计和补偿的目标是通过接收到的信号来估计频偏,并在接收端对接收信号进行频偏补偿,使其与发送信号的频率完全一致。基于FFT傅里叶变换的频偏估计和补偿算法的数学原理如下(其实现原理和QPSK类似):  

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

    综上所述,基于FFT傅里叶变换的256qam基带信号频偏估计和补偿算法的实现过程主要包括64QAM调制、信号传输、接收、FFT傅里叶变换、频偏估计和频偏补偿等步骤。   

3.Verilog核心程序
````timescale 1ns / 1ns
module TEST;

reg clk;
reg i_clkSYM;
reg rst;
reg start;

wire  [7:0] parallel_data;
wire [15:0]sin;
wire [15:0]cos;
wire signed[19:0]  I_com;
wire signed[19:0]  Q_com;
wire signed[15:0]o_Ifir_T;
wire signed[15:0]o_Qfir_T;


// DUT
tops_256QAM_mod  top(
   .clk(clk),
   .rst(rst),
   .start(start),
   .parallel_data(parallel_data),
   .sin(sin),
   .cos(cos),
   .I_com(I_com),
   .Q_com(Q_com),
   .I_comcos(o_Ifir_T),
   .Q_comsin(o_Qfir_T)
   );

wire [15:0]o_freq;
wire signed[15:0]o_cos;
wire signed[15:0]o_sin;
wire signed[15:0]o_Ifir;
wire signed[15:0]o_Qfir;
wire o_ends;
wire o_start;
wire o_enable;
wire signed[31:0]absy;
//256相位估计和补偿
tops_256QAM_Fre_est tops_256QAMU(
.i_clk (clk),
.i_rst (~rst),
.i_clkSYM(i_clkSYM),
.i_I(o_Ifir_T),
.i_Q(o_Qfir_T),
.o_ends(o_ends),
.o_start(o_start),
.o_enable(o_enable),
.absy (absy),
.o_freq(o_freq),
.o_cos (o_cos),
.o_sin (o_sin),
.o_Ifir (o_Ifir),
.o_Qfir (o_Qfir)
);

initial begin
    clk = 0;
    rst = 0;
    start = 1;
    #10;
    rst = 1;
end

always #5
clk <= ~clk;

reg writeen;
initial
begin
writeen = 1'b0;

i_clkSYM=1'b1;


#100
writeen = 1'b1;

end

always #80 i_clkSYM=~i_clkSYM;
initial
begin

#14400000

$stop();

end
//显示发射端带相位旋转的星座图
integer fout1;
integer fout2;
initial begin
fout1 = $fopen("It.txt","w");
fout2 = $fopen("Qt.txt","w");
end
always @ (posedge clk)
begin
if(writeen==1)
begin
$fwrite(fout1,"%d\n",o_Ifir_T);
$fwrite(fout2,"%d\n",o_Qfir_T);
end
end
//显示接收端相位估计和补偿之后的星座图
integer fout3;
integer fout4;
initial begin
fout3 = $fopen("Ir.txt","w");
fout4 = $fopen("Qr.txt","w");
end
always @ (posedge clk)
begin
if(writeen==1)
begin
$fwrite(fout3,"%d\n",o_Ifir);
$fwrite(fout4,"%d\n",o_Qfir);
end
end

endmodule
```

相关文章
|
29天前
|
机器学习/深度学习 数据采集 算法
【信号识别】识别半监督粗糙模糊拉普拉斯特征图(Matlab代码实现)
【信号识别】识别半监督粗糙模糊拉普拉斯特征图(Matlab代码实现)
|
5月前
|
机器学习/深度学习
利用matlab提取出频域和时域信号的29个特征
利用matlab提取出频域和时域信号的29个特征
|
10天前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
5月前
|
机器学习/深度学习 算法 Python
MATLAB 实现轴承转轴信号仿真
轴承转轴信号仿真是一种重要的研究手段,用于分析轴承的健康状态、检测故障以及开发故障诊断算法。通过构建仿真信息并添加故障信号,可以生成用于轴承信号分析的测试数据。
|
1月前
|
安全 算法 自动驾驶
使用SSTL规范控制信号化交叉口研究(Matlab代码实现)
使用SSTL规范控制信号化交叉口研究(Matlab代码实现)
|
4月前
|
数据安全/隐私保护 索引
基于EEMD变换的ECG心电信号去噪和心率估计matlab仿真
本课题基于EEMD变换对ECG心电信号进行去噪处理,并通过MATLAB仿真实现心率估计。研究分析了不同噪声强度下心率估计的准确性,验证方法的可靠性。核心程序采用巴特沃斯滤波器对重构信号滤波,结合希尔伯特变换提取R波峰值以计算心率。系统原理利用EEMD分解有效分离信号与噪声,提升特征提取精度,为临床诊断提供技术支持。仿真结果表明,该方法在低信噪比条件下仍能保持较高的心率估计准确度。
|
29天前
|
机器学习/深度学习 算法 语音技术
【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离(Matlab代码实现)
【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离(Matlab代码实现)
|
1月前
|
算法 Python
【国防科大硕士论文】V调频信号脉冲压缩+V-FM ISAR成像研究(Matlab代码实现)
【国防科大硕士论文】V调频信号脉冲压缩+V-FM ISAR成像研究(Matlab代码实现)
|
2月前
|
编解码 资源调度 算法
【信号处理】时序数据中的稀疏辅助信号去噪和模式识别(Matlab代码实现)
【信号处理】时序数据中的稀疏辅助信号去噪和模式识别(Matlab代码实现)
|
29天前
|
数据格式
表面肌电信号(sEMG)完整处理流程 MATLAB
表面肌电信号(sEMG)完整处理流程 MATLAB

热门文章

最新文章