数字锁相环的原理与FPGA实现

这篇具有很好参考价值的文章主要介绍了数字锁相环的原理与FPGA实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

数字锁相环是锁相环电路的全数字实现。锁相环电路能够实现对输入信号的相位进行跟踪,进而在噪声中提取纯净的有用信号。

一、数字锁相环原理

1.1 数字鉴相器

数字鉴相器由乘法器和低通滤波器构成,又称为正弦形式的鉴相器。数字鉴相器有一重要指标——鉴相增益 K d K_d Kd,又可表示为鉴相器输出的最大电压。

1.2 环路滤波器

环路滤波器将鉴相器输出的含有纹波的信号平均化,将其转换为交流信号少的直流信号的低通滤波器。除此之外,还能控制环路特性,提供环路增益。

1.3 压控振荡器

压控振荡器的原理是,通过输入控制信号的大小,来控制其输出信号的频率变化。

1.4 二阶数字锁相环参数计算

锁相环环路传输模型:
二阶环路滤波器 verilog,FPGA学习,fpga开发,信号处理
二阶环路滤波器 verilog,FPGA学习,fpga开发,信号处理
具体推导请参杜勇老师的锁相环技术原理及FPGA实现和数字调制解调技术的Matlab与FPGA实现两本书,这里给出书中最终结果的计算公式。
以理想二阶环(有源比例积分滤波器)为例,计算环路滤波器的参数C1和C2,最后可取近似得二进制数 2 − N 2^{-N} 2N,采取对环路滤波器输入数据向右移动N位近似使用。
C 1 = 2 τ 2 + T 2 τ 1 , C 2 = T τ 1 C_1 = \dfrac{2\tau_2 + T}{2\tau_1}, C_2 = \dfrac{T}{\tau_1} C1=2τ12τ2+T,C2=τ1T
ω n = K τ 1 , ε = τ 2 2 K τ 1 \omega_n = \sqrt{\dfrac{K}{\tau_1}}, \varepsilon = \dfrac{\tau_2}{2}\sqrt{\dfrac{K}{\tau_1}} ωn=τ1K ,ε=2τ2τ1K
其中,K为锁相环增益,T为输入信号的采样周期, ω n \omega_n ωn为固有振荡频率, ε \varepsilon ε为阻尼系数,为保证较好的相位裕度, ε \varepsilon ε一般取0.7。
根据上述表格和公式,计算得, C 1 ≈ 2 ε ω n T K C_1\approx\dfrac{2\varepsilon\omega_nT}{K} C1K2εωnT C 2 ≈ ( ω n T ) 2 K C_2\approx\dfrac{(\omega_nT)^2}{K} C2K(ωnT)2
假设环路滤波器的3dB截止带宽为 f c f_c fc,则 f c = 2 τ 1 2 − 2 τ 2 2 f_c=\sqrt{\dfrac{2}{\tau_1^2-2\tau_2^2}} fc=τ122τ222
关于固有振荡频率, △ ω L 2 ε < ω n < 8 ε ( S / N ) i B i ( S / N ) L \dfrac{\triangle\omega_L}{2\varepsilon}<\omega_n<\dfrac{8\varepsilon(S/N)_iB_i}{(S/N)_L} 2εωL<ωn<(S/N)L8ε(S/N)iBi,且 ω n f s ≪ 1 \dfrac{\omega_n}{f_s}\ll1 fsωn1,其中 ( S / N ) i (S/N)_i (S/N)i ( S / N ) L (S/N)_L (S/N)L分别为中频输入信号信噪比和环路信噪比,一般都要满足大于6dB, B i B_i Bi为中频信号带宽。

二、数字锁相环的FPGA实现

这里以二阶锁相环为例(采用理想二阶环),压控振荡器初始频率为2.4kHz,锁相环输入信号为2.5kHz,采样频率为50kHz(Vivado中DDS输入系统时钟的最小频率)。

2.1 鉴相器实现

使用IP核为Multiplier核和FIR Filter核。

主要代码如下:

	// parameter Start_Frequency = 24'd838860; // 2.5 KHz, 输入信号
	parameter Start_Frequency = 24'd805306; // 2.4 KHz,DDS初始频率输出
	
	// 限幅处理
	reg signed [9:0] din_d;
	always@(posedge i_clk)
		if(i_data == 10'b10_0000_0000)
			din_d <= 10'b10_0000_0001;
		else
			din_d <= i_data;
		
	// 实例化鉴相乘法器IP核
	wire signed [9:0] sine, cosine;	
	wire signed [19:0] mult_out;
    mult_gen_0 u0(
        .CLK(i_clk), 
        .A(din_d),
        .B(cosine),
        .P(mult_out)
    );
	
	// 实例化鉴相滤波器IP核
	wire s_axis_data_tready, s_axis_data_tvalid, m_axis_data_tvalid, aresetn;
    wire signed [31:0] pd_Filter_out;
    assign s_axis_data_tready = 1'b1;
    assign s_axis_data_tvalid = 1'b1;
    assign aresetn = i_rst_n;
    fir_compiler_0 u1(
        .aresetn(aresetn),
        .aclk(i_clk),
        .s_axis_data_tvalid(s_axis_data_tvalid), 
        .s_axis_data_tready(s_axis_data_tready), 
        .s_axis_data_tdata(mult_out[18:0]),
        .m_axis_data_tvalid(m_axis_data_tvalid), 
        .m_axis_data_tdata(pd_Filter_out)
    );

2.2 环路滤波器实现

根据环路滤波器参数 C 1 C_1 C1 C 2 C_2 C2的数值,采用两次右移位运算,并做叠加。
通过环路滤波器,为锁相环提供环路增益 K 0 K_0 K0
主要代码如下:

module LoopFilter(
    i_clk,
    i_rst_n,
    i_pd,
    o_frequency_df
);

    input i_clk; // 系统时钟,50KHz
    input i_rst_n; // 复位信号,低电平有效
    input signed [23:0] i_pd; // 输入信号频率,50KHz
    output signed [23:0] o_frequency_df; // 环路滤波器输出信号
    
    reg signed [23:0] sum_d;
    wire signed [23:0] pd_c2, pd_c1,sum;
    
    assign pd_c1 = {{4{i_pd[23]}},i_pd[23:4]}; //c1
    assign pd_c2 = {{11{i_pd[23]}},i_pd[23:11]}; //c2
    
    always@(posedge i_clk or negedge i_rst_n)
        if(!i_rst_n)
            sum_d <= 0;
        else
            sum_d <= sum; 
            
    assign sum = pd_c2 + sum_d;
    assign o_frequency_df = sum_d + pd_c1;

endmodule


2.3 压控振荡器实现

使用IP核为DDS核。
主要代码如下

	// 实例化DDS核
	wire reset_n,out_valid,clken;
    wire signed [23:0] carrier;

    wire signed [31:0] sine_cos;
    assign sine = sine_cos[25:16];
    assign cosine = sine_cos[9:0];
    assign clken = 1'b1;
    assign carrier = Start_Frequency + frequency_df; 
    
    dds_compiler_0 u2(
        .aclk(i_clk),                        
        .aclken(clken),                      
        .aresetn(i_rst_n),
        .s_axis_config_tvalid(1'b1),
        .s_axis_config_tdata(carrier),                     
        .m_axis_data_tvalid(out_valid),           
        .m_axis_data_tdata(sine_cos)
    );

2.4 仿真结果

仿真平台:Vivado 2018.3
各模块:数字鉴相器(乘法器+低通滤波器),环路滤波器,压控振荡器
主要使用IP核:Multiplier,FIR Compiler,dds_compiler

二阶锁相环整体仿真图如下。
二阶环路滤波器 verilog,FPGA学习,fpga开发,信号处理
二阶锁相环局部仿真图如下(锁定后)。
二阶环路滤波器 verilog,FPGA学习,fpga开发,信号处理

总结

以上就是今天要讲的内容,本文简单地介绍了锁相环的原理,并通过verilog做仿真验证。最终仿真结果能够实现锁定,但锁定时间较长,表明参数仍可做调整。

参考书

1,杜勇,锁相环技术原理及FPGA实现;
2,杜勇,数字调制解调技术的Matlab与FPGA实现(Atera/verilog版)。

二阶数字锁相环的FPGA实现的完整工程文件 文章来源地址https://www.toymoban.com/news/detail-780648.html

到了这里,关于数字锁相环的原理与FPGA实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全数字锁相环基本原理讲解

          锁相环是一个典型的负反馈系统。振荡器 负责产生振荡时钟信号,振荡器的输出时钟信号被反馈环路采样后与输入参考时钟信号 经由相位检测器进行比较,生成相位误差信号,经过滤波器滤波后,反馈给振荡器对输 出时钟信号的频率进行调节。低通滤波器主要是对相

    2024年02月12日
    浏览(37)
  • FPGA学习笔记(三):PLL 锁相环

    在 FPGA 芯片内部集成了 PLL(phase-locked loop,锁相环) ,可以倍频分频,产生其它时钟类型。PLL 是 FPGA 中的重要资源,因为一个复杂的 FPGA 系统需要不同频率、相位的时钟信号,一个 FPGA 芯片中 PLL 的数量是衡量 FPGA 芯片能力的重要指标。 Ultrascale+ 系列的 FPGA 使用了专用的全局

    2024年02月13日
    浏览(39)
  • FPGA时钟分频倍频之PLL锁相环

    1、使用vivado创建一个工程 2、点击IP Catalog,搜索Clock Wizard,然后双击,本次实验使用PLL进行分频倍频,不动态改变相位,故选择PLL选项,并将时钟频率改变为50MHz,此处我们使用50MHz晶振作为时钟源 3、点击Output Clocks,配置产生的时钟频率,其他选项保持默认,点击ok,生pll ip核

    2024年02月12日
    浏览(39)
  • 锁相环工作原理

    锁相环:Phase Locked Loop (相位,锁,环路) 简称 PLL。 f1 是输入频率,f2是输出频率,并且反馈给鉴相器。 压控振荡器 压控振荡器的全称是:Voltage Controlled Oscillator ( 电压,控制,振荡器),简称 VCO。 输出的频率是受电压控制的, VCO 输出的频率可以达到几十GHZ,那么为什么VC

    2023年04月08日
    浏览(43)
  • 锁相环(PLL)基本原理与频率合成器

    锁相环 (phase locked loop),是一种用于锁定相位的环路。锁相环的控制量是信号的频率和相位。它是一种典型的反馈控制电路,利用外部输入的参考信号控制环路内部振荡信号的频率和相位,实现输出信号频率对输入信号频率的自动跟踪,最终呈现出动态平衡。 1、锁相环的组成

    2024年02月15日
    浏览(37)
  • 【STM32】知识补充 锁相环原理与应用解析

    锁相环 (Phase-Locked Loop) 在现代电子与通信系统中, 扮演着至关重要的角色. 凭借其独特的同步和频率调整能力, 锁相环已成为实现高性能, 高稳定性系统的基石. 那边, 锁相环究竟是什么? 它是如何工作的? 又在哪些领域中发挥着关键作用呢? 小白我来带大家一探究竟. 锁相环是一

    2024年02月05日
    浏览(39)
  • Simulink中用模拟器件实现环路滤波器仿真二阶PLL

    1.模拟电路的输入和输出需要使用Simulink-PS Converter和PS-Simulink Converter 2.模拟电路中必须接入Solver Configuration 3.模拟电路输出电压信号需要Voltage Sensor 4.模拟电路输入电压信号需要Controlled Voltage Source 无源RC环路滤波器 有源比例积分环路滤波器 参考信号和VCO输出信号 鉴相器LPF输出

    2024年02月16日
    浏览(52)
  • PLL锁相环知识

    锁相环,即是一种实现将输入的频率fin放大成所需要的频率fout的结构,例如我们IC中的晶振只能达到100M,但是工作的clock需要500M,这个时候就可以利用PLL实现频率的增大(倍频)。是IC中很重要的一个部分。PLL可用于Reduce EMI。 锁相环的结构如图所示,主要由3个部分组成:

    2023年04月09日
    浏览(32)
  • 电能变换--锁相环

    锁相环,顾名思义,基本功能是实现交流信号相位的跟踪和锁定。在交流变换器中,为了实现变换器有功功率和无功功率的输出的可控,需要实时获取交流侧的电压相位信息。锁相环的性能也是直接影响到变换器的稳定性。 从实现方式上,分为软件锁相环和硬件锁相环,从应

    2024年02月13日
    浏览(39)
  • 锁相环技术知识

    闭环锁相环技术的主要方案有: 类型 描述 1、乘法鉴相器锁相环 该锁相环是硬件锁相设计的基础,其基本原理是计算输入信号与输出信号的乘积,经过滤波器和鉴相器输出后,得出输入输出信号的相位差,经过反馈使输出信号锁定输入信号,实现锁相功能。但是这种锁相环

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包