首页 > 编程语言 >基于FFT傅里叶变换的16QAM基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab星座图显示

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

时间:2023-08-10 23:24:33浏览次数:57  
标签:wire 15 FPGA FFT signed 星座图 信号 频偏

1.算法仿真效果

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

 

 

 

将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:

 

 

 

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

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

 

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

 

 

 

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

 

 

 

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

 

3.Verilog核心程序 

 

module TEST;
 
	reg clk;
	reg i_clkSYM;
	reg rst;
	reg start;
 
    wire  [3: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_16QAM_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;
//QPSK相位估计和补偿
tops_16QAM_Fre_est tops_16QAMU(
.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

 

  

 

标签:wire,15,FPGA,FFT,signed,星座图,信号,频偏
From: https://www.cnblogs.com/51matlab/p/17621859.html

相关文章

  • 为什么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)......
  • FPGA学习笔记 Label: Research
    [Synth8-9486]formalport'addr'hasnoactualordefaultvalue[D:/FPGA/TEST_CARD_HIT/top.vhd:492]有端口没有连接,在top文件中把端口加上 [Opt31-67]Problem:ALUT2cellinthedesignismissingaconnectiononinputpinI1,whichisusedbytheLUTequat......
  • DSP+ARM+FPGA,星嵌工业级核心板,降低开发成本和时间
    星嵌SOM-XQ138F是小体积,定点/浮点DSP C674x+ARM9+XilinxSpartan-6 FPGA工业级三核核心板,72mm*44mm,功耗小、成本低、性价比高。采用沉金无铅工艺的八层板设计,专业的PCBLayout设计,注重EMC,抗干扰能力强。 L138+FPGA核心板正面图 L138+FPGA核心板背面图  L1......
  • CoaXPress 2.0 FPGA HOST IP Core Linux Demo
      目录Hello-FPGACoaXPress2.0HostFPGAIPCoreLinuxDemo41说明42设备连接73VIVADOFPGA工程74调试说明10图1‑1资料目录4图1‑2VIVADO工程目录结构5图1‑3SDK工程目录结构5图1‑4设备树信息6图1‑5petalinux应用程序6图2‑1ZCU10......
  • 使用GFPGAN修复美化老照片
      老照片修复利器GFPGAN,该模型为腾讯2021年开源的一个用于图片人脸复原修复的GAN模型;我们都有很多老照片,很多很久以前用两三百万像素拍的照片或原文件丢失了,只剩下压缩文件或QQ空间里面的老照片,现在一些App也支持老照片修复但往往效果不太理想或都需要收费;这时可以使用GFPGAN对......
  • FPGA按键消抖
    简介按键按键是输入设备,一般来说,按键在没有按下的时候是高电平;当按键按下的时候,为低电平。在DE2-70UserManual中Eachswitchprovidesahighlogiclevel(3.3volts)whenitisnotpressed,andprovidesalowlogiclevel(0volts)whendepressed.Sincethepush......
  • m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:2.算法涉及理论知识概要傅里叶变换(FourierTransform)是一种重要的信号处理技术,用于将一个时域信号转换为频域表示,分析信号的频率成分。FFT(FastFourierTransform)是一种高效的傅里叶变换算法,可以......
  • m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
    1.算法仿真效果 本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:      2.算法涉及理论知识概要       傅里叶变换(FourierTransform)是一种重要的信号处理技术,用于将一个时域信号转换为频域表示,分析信号的频率成分。FFT(FastFourierT......