m基于FPGA的带相位偏差64QAM调制信号相位估计和补偿算法verilog实现,包含testbench

发布时间 2023-07-16 22:27:25作者: 我爱C编程

1.算法仿真效果

 

本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:

 

 

 

FPGA的仿真结果导入到matlab中,显示星座图,结果如下所示:

 

 

 

 

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

 

        在现代通信系统中,调制技术是实现高速数据传输和频谱效率优化的重要手段。其中,64QAM调制技术是一种常见的高阶调制技术,可以实现每个符号传输6个比特的信息,从而提高数据传输速率。然而,在实际应用中,调制信号往往会受到各种干扰和失真的影响,导致传输错误率增加。因此,相位估计和补偿技术是调制信号解调和恢复的关键环节之一。介绍一种用于带相位偏差64QAM调制信号相位估计和补偿的VV算法,并详细阐述其实现步骤和数学原理。

 

 

 

 

3.Verilog核心程序

 

module TEST;
 
	reg clk;
	reg rst;
	reg start;
 
    wire  [5: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[19:0]  I_com2;
	wire signed[19:0]  Q_com2;
    wire signed[15:0]I_comcos;
    wire signed[15:0]Q_comsin;
	 
 
	// DUT
	tops_64QAM_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_com2(I_com2),
	   .Q_com2(Q_com2),
	   .I_comcos(I_comcos),
	   .Q_comsin(Q_comsin)
	   );
	   
	   
wire signed[23:0]I_comcos2;
wire signed[23:0]Q_comsin2;
wire signed[7:0]o_Ifir;
wire signed[7:0]o_Qfir;
wire signed[15:0]o_Ifir_phase;
wire signed[15:0]o_Qfir_phase;
wire signed[31:0]o_phase;
tops_64QAM_phase_est  top2(
	   .clk(clk),
	   .rst(rst),
	   .start(start),
	   .I_comcos(I_comcos),
	   .Q_comsin(Q_comsin),
	   .I_comcos2(I_comcos2),
	   .Q_comsin2(Q_comsin2),
	   .o_Ifir(o_Ifir),
	   .o_Qfir(o_Qfir),
	   .o_I_phase(o_Ifir_phase),
	   .o_Q_phase(o_Qfir_phase),
	   .o_phase(o_phase)
	   );  
	   
 
	initial begin
		clk = 0;
		rst = 0;
		start = 1;
		#10;
		rst = 1;
	end
	
	always #5
	clk <= ~clk;
	
	
reg writeen;
initial
begin
    writeen = 1'b0;
    #150000
    writeen = 1'b1;
end