m基於FPGA的64QAM調制解調、載波同步verilog實現

1.算法描述

64QAM(正交幅度調制),在使用同軸電纜的網絡中,這種數字頻率調制技術通常用於發送下行鏈路數據。64QAM在6mhz信道中,64QAM的傳輸速率非常高,最多可支持38.015mbps的峰值傳輸速率。然而,它對幹擾信號很敏感,難以適應嘈雜的上行鏈路傳輸(從電纜用戶到互聯網)。參見QPSK、DQPSK、CDMA、S-CDMA、BPSK和VSB。

它具有調制效率高、對傳輸路徑的信噪比要求高、帶寬利用率高的特點,適合有線電視傳輸;QAM(DVB-C調制)在中國有線電視網絡中得到廣泛應用。QAM是一種聯合幅度和相位調制技術。它利用載波的幅度和相位同時傳輸信息位。不同的幅度和相位表示不同的編碼符號。因此,在相同的最小距離條件下,QAM星座可以容納更多的星座點,以實現更高的頻帶利用率。

載波同步又稱載波恢復(carrierrestoration),即在接收設備中產生一個和接收信號的載波同頻同相的本地振蕩(localoscillation),供給解調器作相幹解調用。當接收信號中包含離散的載頻分量時,在接收端需要從信號中分離出信號載波作為本地相幹載波;這樣分離出的本地相幹載波頻率必然與接收信號載波頻率相同,但為瞭使相位也相同,可能需要對分離出的載波相位作適當的調整。若接收信號中沒有離散載波分量,例如在2PSK信號中(“1” 和“0”以等概率出現時),則接收端需要用較復雜的方法從信號中提取載波。因此,在這些接收設備中需要有載波同步電路,以提供相幹解調所需要的相幹載波;相幹載波必須與接收信號的載波嚴格地同頻同相。

本系統幾個設計要點:

第一:環路濾波系數的分段更新,實現頻率跟蹤效果的穩定。當鎖相環開始工作的時候,首先由一組較大的環路濾波系數實現頻率的快速跟蹤,然後由一組較小的環路系數,實現頻率的穩定跟蹤。

第二:環路平滑處理。

第三:同時進行鑒頻和鑒相

上面兩個是性能上的改進,然後針對FPGA的設計,我們采用如下的改進設計構架。

第一:基於流水線的設計流程,使得載波同步算法能夠以流的形式進行反饋工作;

第二:基於Cordic算法的NCO產生對應的SIN和COS。

2.仿真效果預覽

算法仿真:MATLAB 2022a

FPGA設計:quartusii13.0

FPGA仿真:ModelSim-Altera 6.6d

3.MATLAB核心程序

`timescale 1ns / 1ps
module tops(
i_clk,
i_rst,
o_signal,
o_I_map,
o_Q_map,
o_sin,
o_cos,
o_64QAM_real,
o_64QAM_imag,
o_cosfai,
o_sinfai,
o_I_PLL,
o_Q_PLL,
o_discriminator,
o_nco,
o_nco_smooth,
o_fre
);

input i_clk;
input i_rst;
output [5:0] o_signal;
output signed[3:0] o_I_map;
output signed[3:0] o_Q_map;
output signed[11:0]o_sin;
output signed[11:0]o_cos;
output signed[15:0]o_64QAM_real;
output signed[15:0]o_64QAM_imag;

output signed[15:0]o_cosfai;
output signed[15:0]o_sinfai;
output signed[15:0]o_I_PLL;
output signed[15:0]o_Q_PLL;

output signed[15:0]o_discriminator;
output signed[23:0]o_nco;
output signed[23:0]o_nco_smooth;
output signed[23:0]o_fre;
signal signal_u(
.i_clk (i_clk),
.i_rst (i_rst),
.o_signal (o_signal)
);

//64QAM mod
mod_64QAM_tops mod_64QAM_tops_u(
.i_clk (i_clk),
.i_rst (i_rst),
.i_signal (o_signal),
.o_I_map (o_I_map),
.o_Q_map (o_Q_map),
.o_sin (o_sin),
.o_cos (o_cos),
.o_QAM_real (o_64QAM_real),
.o_QAM_imag (o_64QAM_imag)
);

//64QAM demod
demod_64QAM_tops demod_64QAM_tops_u(
.i_clk (i_clk),
.i_rst (i_rst),
.i_Qam_real (o_64QAM_real),
.i_Qam_imag (o_64QAM_imag),
.o_cosfai (o_cosfai),
.o_sinfai (o_sinfai),
.o_I_PLL (o_I_PLL),
.o_Q_PLL (o_Q_PLL),
.o_discriminator (o_discriminator),
.o_nco (o_nco),
.o_nco_smooth (o_nco_smooth),
.o_fre (o_fre)
);

endmodule
01-124m

赞(0)