中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

基于FPGA的BPSK+costas環實現,包含testbench,分析不同信噪比對costas環性能影響

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度時,乘積信號的幅值最小。因此,通過測量乘積信號的幅值,可以估計相位偏移。

 

 

 

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

  

posted @ 2025-06-09 10:57  我愛C編程  閱讀(17)  評論(0)    收藏  舉報