目錄
1.算法仿真效果
2.算法涉及理論知識概要
3.Verilog核心程序
4.完整算法代碼文件獲得
1.算法仿真效果
本作品是之前作品的改進和擴展:
1.m基于FPGA的BPSK調制解調通信系統verilog實現,包含testbench,包含載波同步_csdn基于fpga的bpsk-CSDN博客
2.m基于FPGA的costas環載波同步verilog實現,包含testbench,可以修改頻偏大小_基于fpga的載波同步技術-CSDN博客
在上述兩個作品的基礎上做了如下的改進:
第一、優化了環路濾波器,使得costas環收斂曲線接近理論曲線;
第二、增加了awgn信道模塊,可以修改SNR,分析不同噪聲對costas環的鎖定性能影響;
vivado2019.2仿真結果如下(完整代碼運行后無水印):
局部放大:
仿真操作步驟可參考程序配套的操作視頻。
2.算法涉及理論知識概要
? ? ? ?Costas環是一種用于載波同步的常見方法,特別是在調制解調中,它被廣泛用于解調相位調制信號,如二進制調相(BPSK)或四進制調相(QPSK)信號。它的目的是估計和追蹤接收信號的相位偏移,以便正確解調數據。
? ? ? ?其基本結構如下圖所示:
Costas環結構:
? ? ? ?如上圖所示Costas環包括兩個主要部分:一個偏移90度的本地振蕩器(Local Oscillator,LO)和一個相移解調器。這兩個部分協同工作來估計信號的相位偏移。
Costas環包括以下主要組件:
本地振蕩器(Local Oscillator,LO): LO產生一個本地參考信號,其頻率與接收信號的載波頻率相同。這個本地參考信號通常包括正弦和余弦兩路信號,相位相差90度。這兩路信號將與接收信號相位進行比較。
相位解調器(Phase Detector): 相位解調器用于測量接收信號和本地振蕩器之間的相位差。它的輸出是一個帶有相位信息的信號。
環路濾波器(Loop Filter): 環路濾波器對相位差信息進行濾波和處理,以生成一個控制電壓。這個電壓將用于調整本地振蕩器的頻率和相位,以最小化相位差。
本地振蕩器控制單元: 這個單元接收來自環路濾波器的控制電壓,并相應地調整本地振蕩器的頻率和相位。
輸出: Costas環的輸出是本地振蕩器的相位信息,該信息已經被調整,以與接收信號的相位保持同步。這個輸出可以用于解調接收信號。
Costas環原理:
? ? ? ?Costas環的原理是利用接收信號和LO之間的相位差異來估計信號的相位偏移。當信號的相位偏移接近0或180度時,乘積信號的幅值最大,而當相位偏移接近90或270度時,乘積信號的幅值最小。因此,通過測量乘積信號的幅值,可以估計相位偏移。
? ? ? ? 設調制信號為m ( t ) ,m ( t ) 中無直流分量,則抑制載波的雙邊帶信號為:
和接收信號相乘后,得到的信號為?
濾波之后得到:
乘法鑒相器輸出得到?
當頻偏較小時,上述公式近似為:
3.Verilog核心程序
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2025/01/19 01:40:07
// Design Name:
// Module Name: tops_costas
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:module tops_costas(
input i_clk,
input i_rst,
input signed[7:0]i_SNR,
input signed[1:0]i_msg,
output signed[7:0]o_msg_filter,
output signed[15:0]o_msg_mod,
output signed[15:0]o_msg_modn,
output signed[15:0]o_low_filter,
output signed[31:0]o_delta_fre
);T_mod T_mod_u(
.i_clk (i_clk),
.i_rst (i_rst),
.i_msg (i_msg),
.o_msg_filter (o_msg_filter),
.o_msg_mod (o_msg_mod)
);awgns awgns_u(.i_clk(i_clk), .i_rst(i_rst), .i_SNR(i_SNR), //這個地方可以設置信噪比,數值大小從-10~50,.i_din(o_msg_mod), .o_noise(),.o_dout(o_msg_modn));R_demod R_demodu(
.i_clk (i_clk),
.i_rst (i_rst),
.i_mod (o_msg_modn),
.o_low_filter (o_low_filter),
.o_delta_fre (o_delta_fre)
);endmodule
0sj_055m
4.完整算法代碼文件獲得
V