基於FPGA的BPSK數字平方環載波同步verilog實現,包含testbench

我爱C编程發表於2024-07-02

1.演算法模擬效果

vivado2019.2模擬結果如下:

平方環鎖定收斂曲線:

工作初始時間,發射端載波cos0和接收端載波cos不同步:

收斂之後,發射端載波cos0和接收端載波cos基本同步:

系統的RTL結構圖如下:

平方環內部結構如下:

2.演算法涉及理論知識概要

BPSK(Binary Phase Shift Keying)數字平方環是一種用於載波恢復的非資料輔助同步方法,特別適用於二進位制相移鍵控調製訊號的解調。它利用訊號的相位資訊,透過平方處理和低通濾波等步驟,從接收到的訊號中提取出載波的相位,從而實現相干解調。

平方環是一種常用的相干解調方法。調製訊號經過一個平方裝置,進行平方操作,再經過一箇中心頻率為2fc的帶通濾波器,濾除直流成分和攜帶的部分資訊成分,得到二倍頻訊號cos(4πfct+2φ)。使用倍頻訊號驅動鎖相環,得到對應的正弦訊號sin(4πfct+2φ),經過二分頻和90°相移,獲得載波訊號,從而用於相干解調獲得基帶訊號s(t)。

數字平方環主要包括三個主要部分:平方器、低通濾波器(LPF)、相位誤差檢測與調整。其工作流程如下:

3.Verilog核心程式

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/06/13 06:03:25
// Design Name: 
// Module Name: tops_squarePLL
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
 
 
module tops_squarePLL(
    input		     i_clk,   //時鐘
	input		     i_rst,   //復位訊號
	input signed[1:0]i_X,   //輸入資料:32MHz
	output signed[7:0]o_BPSK,
	output signed[7:0]o_cos0,
	output signed[7:0]o_sin0,
 
	output signed[7:0]o_cos,
	output signed[7:0]o_sin,
	output signed[14:0]o_bpsk2,  
	output signed[14:0]o_bpsk2_BF,
	output signed[28:0]o_low_filter,
	output signed[28:0]o_loop
    );
    
    
bpsk_MOD bpsk_MOD_u(
.i_clk      (i_clk),   //時鐘
.i_rst      (i_rst),   //復位訊號
.i_X        (i_X),   //輸入資料:32MHz
.o_BPSK     (o_BPSK),
.o_cos      (o_cos0),
.o_sin      (o_sin0)
);
 
 
tops tops_u(
.i_clk      (i_clk),   //時鐘
.i_rst      (i_rst),   //復位訊號
.i_bpsk     (o_BPSK),   //輸入資料:32MHz
.o_cos      (o_cos),
.o_sin      (o_sin),
.o_bpsk2    (o_bpsk2),
.o_bpsk2_BF (o_bpsk2_BF),
.o_sinXcos     (),
.o_BFsinXcos   (),
.o_low_filter  (o_low_filter),
.o_loop        (o_loop)
);
    
endmodule
00_066m

  

相關文章