0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数字锁相环:二阶环的FPGA实现

FPGA设计论坛 来源:FPGA设计论坛 2025-01-14 11:14 71次阅读

一.依据模拟环设计数字环

根据信号与系统的分析理论,一个系统完全由系统函数来确定,因此我们可从系统函数的角度出发,找到模拟电路与数字电路的转换关系,最终根据环路滤波器的数字域系统函数进行数字化设计。

1.1从模拟到数字——双线性变换

连续时间系统H(s)的极点有两种情况:单重节点和多重节点。但是一个多重节点环节可以看成由多个单重极点环节级联构成。例如,对二重极点的系统,有

H ( s ) = A ( s − p ) 2 = A s − p A s − p H(s)=frac{A}{(s-p)^2}=frac{sqrt{A}}{s-p}frac{sqrt{A}}{s-p}H(s)=(s−p)2A=s−pAs−pA

因此,可以将一阶环节

A s − p = K a s − p frac{sqrt{A}}{s-p}=frac{K_a}{s-p}s−pA=s−pKa

看成构成H ( s ) H(s)H(s)的最基本环节,其中,K a K_aKa为基本环节的增益。它对应于一阶微分方程

d y ( t ) d t − p y ( t ) = K a x ( t ) frac{dy(t)}{dt}-py(t)=K_ax(t)dtdy(t)−py(t)=Kax(t)

其系统结构如图1所示。对该系统离散化,主要是对系统中的积分运算离散化。

72e94d28-cfd1-11ef-9310-92fbcf53809c.png

图 1 图1图1

一次积分运算可以用梯形作数值计算,即

730086aa-cfd1-11ef-9310-92fbcf53809c.png

将上式第二行的积分用梯形法近似,则有

731273b0-cfd1-11ef-9310-92fbcf53809c.png

该式为一次积分运算离散化后的数值计算公式,其中的T为采样间隔。将自变量中的符号T TT隐去,可写成差分方程的习惯表示形式

y ( n ) = y ( n − 1 ) + T 2 [ x ( n − 1 ) + x ( n ) ] y(n)=y(n-1)+frac{T}{2}[x(n-1)+x(n)]y(n)=y(n−1)+2T[x(n−1)+x(n)]

两边取单边z zz变换,并考虑到当y ( n ) = 0 , n < 0 y(n)=0,n<0y(n)=0,n<0有


Y ( z ) = z − 1 + T 2 [ z − 1 X ( z ) + X ( z ) ] Y(z)=z^{-1}+frac{T}{2}[z^{-1}X(z)+X(z)]Y(z)=z−1+2T[z−1X(z)+X(z)]

对上式进行整理,得到一阶环节的离散系统函数

H 1 ( z ) = Y ( z ) X ( z ) = T 2 1 + z − 1 1 − z − 1 H_1(z)=frac {Y(z)}{X(z)}=frac{T}{2}frac{1+z^{-1}}{1-z^{-1}}H1(z)=X(z)Y(z)=2T1−z−11+z−1

也就是说,一次积分单元离散后,是上式描述的离散系统。
对连续一阶系统离散化后,可以得到其系统结构如下图所示

73206f56-cfd1-11ef-9310-92fbcf53809c.png

根据上图,可求得离散的系统函数为

H i ( z ) = K a H 1 ( z ) 1 − p H 1 ( z ) H_i(z)=frac{K_a H_1(z)}{1-pH_1(z)}Hi(z)=1−pH1(z)KaH1(z)

733a2252-cfd1-11ef-9310-92fbcf53809c.png

将此式与连续的一阶环路做对比,得出连续时间系统和离散时间系统之间的转换公式


734698e8-cfd1-11ef-9310-92fbcf53809c.png

1.2 环路滤波器的数字化

有了系统函数转换表达式,即可获得各种模拟环路滤波器所对应的数字化系统函数表达式,进而获取其数字化实现结构。
对于有源比例环路积分滤波器(理想积分滤波器)来讲,其数字化系统函数为


F ( z ) = 1 + s τ 2 s τ 1 = 2 τ 2 + T 2 τ 1 + T τ 1 z − 1 1 − z − 1 F(z)=frac{1+s au_2}{s au_1}=frac{2 au_2+T}{2 au_1}+frac{T}{ au_1}frac{z^{-1}}{1-z^{-1}}F(z)=sτ11+sτ2=2τ12τ2+T+τ1T1−z−1z−1

由于在二阶锁相环路中,理想二阶环路具有共他两种环路无法比拟的优异性能,因此接下来主要讨论这种环路滤波器及其构成的锁相环路。
对于上式,令

73563910-cfd1-11ef-9310-92fbcf53809c.png

则上式变换为

736c46ce-cfd1-11ef-9310-92fbcf53809c.png


其对应的系统结构可用下图来表示

738c0338-cfd1-11ef-9310-92fbcf53809c.png

1.3 理想二阶环的参数设计

各项参数如下:

软件:Quartus prime 18.0

FPGA系统工作时钟速率=系统采样频率f s f_sfs=8 k H z 8 kHz8kHz

数字震荡器固有频率f o = 400 H z f_o=400Hzfo=400Hz

输入为10bit二进制补码数据

输出为10bit二进制补码数据

鉴相乘法器输出位宽:19比特

鉴相滤波器系数位宽:8比特

鉴相滤波器输出数据位宽:30比特

环路增益K=34 Hz

NCO频率字位宽:30比特

NCO相位字位宽:35比特

为便于比较,我们仍根据一阶环实例要求进行设计。根据前面的分析,理想二阶环的FPGA实现过程,不过是在一阶环的基础上增加一个环路滤波器功能模块而已。
quadquad根据前面的推导,求取环路滤波器系数C1、C2的值,需要获取采样周期T TT,以及滤波器时间常数τ 1 τ_1τ1、τ 2 τ_2τ2的值。由于系统采样频率f s = 8000 H z f_s=8000Hzfs=8000Hz,T = 1 / f s = 1 / 8000 T=1/f_s=1/8000T=1/fs=1/8000s。需要注意的是,τ 1 τ_1τ1、τ 2 τ_2τ2是典型的模拟环路滤波器参数,这也是为什么我们将目前的方法称为依据模拟环设计数字环的原因。

如何计算τ 1 τ_1τ1、τ 2 τ_2τ2?根据第前面关于环路滤波器的讨论,从环路相位裕度参数出发设计这两个参数,而相位裕度与阻尼系数ξ直接相关。根据图6-38的仿真结论,一般取阻尼系数ξ=0.7。对于理想二阶环来讲

ω n = K τ 1 ω_n=sqrt{frac{K}{ au_1}}ωn=τ1K ξ = τ 2 2 K τ 1 ξ=frac{ au_2}{2}sqrt{frac{K}{ au_1}}ξ=2τ2τ1K

注意,在上式中,K KK的单位为r a d / s rad/srad/s,ω n ω_nωn的单位为r a d / s rad/srad/s。现在,我们已经获取了环路增益参数(K = 34 H z = 213.6283 r a d / s K=34 Hz=213.6283 rad/sK=34Hz=213.6283rad/s)、阻尼系数(ξ = 0.7 ξ=0.7ξ=0.7),还需要获取一个参数,比如τ 1 、 τ 2 τ_1、τ_2τ1、τ2之间的关系,才能计算出最终的时间常数值,进而计算出C 1 、 C 2 C1、C2C1、C2的值。
quadquad根据模拟环路的性能分析,环路滤波器3 d B 3dB3dB截止带宽的大小直接影响到V C O VCOVCO输出的信号质量,要计算出τ 1 、 τ 2 τ_1、τ_2τ1、τ2之间的关系,需要首先确定环路滤波器3dB截止带宽的f c f_cfc大小。根据前面的分析,取f c = 10 H z f_c=10 Hzfc=10Hz(注意,公式中的截止频率单位为Hz),则有

10 = 2 2 τ 1 2 − 2 τ 2 2 10=sqrt{frac{2}{{2}{ au_1^2-2 au_2^2}}}10=2τ12−2τ222

结合前面的公式,带入K , ξ K,ξK,ξ的值,得到τ 1 , τ 2 au_1, au_2τ1,τ2的值,再根据τ 1 、 τ 2 τ_1、τ_2τ1、τ2的值,分别计算环路滤波器系数C1,C2。

1.4 理想二阶环的V e r i l o g H D L Verilog HDLVerilogHDL设计

这里只介绍二阶环的环路滤波器的v e r l i o g verliogverliog设计,由前面推导得到的二阶锁相环的Z域公式,将Z域公式转换到时域中,才能转换为我们可以用的形式。

F ( z ) = Y ( z ) X ( z ) = C 1 + C 2 z − 1 1 − z − 1 F(z)=frac{Y(z)}{X(z)}=C_1+frac{C_2 z^{-1}}{1-z^{-1}}F(z)=X(z)Y(z)=C1+1−z−1C2z−1

C 2 z − 1 1 − z − 1 X ( z ) = D ( z ) frac{C_2 z^{-1}}{1-z^{-1}}X(z)=D(z)1−z−1C2z−1X(z)=D(z)


由z zz变换的性质,上式的时域表达式为:

C 2 x ( n ) + d ( n ) = d ( n + 1 ) C_2x(n)+d(n)=d(n+1)C2x(n)+d(n)=d(n+1)


结合整个Z ZZ域表达式,可得出其最终的时域表达式为:

y ( n ) = C 1 x ( n ) + d ( n ) y(n)=C_1x(n)+d(n)y(n)=C1x(n)+d(n)

具体实现代码如下:

/*

MODULE DECLARATION

*/
module LoopFilter(
rst,
clk,
pd,
frequency_df
);




/*

FUNCTION DECLARATION

*/


/*

LOCAL PARAMETER

*/


/*

PORT DECLARATION

*/
input  rst;                              //复位信号,高电平有效
input  clk;                              //FPGA系统时钟:8 kHz
input  signed [29:0]  pd;                // 输入数据:8 kHz,数据源来自fir滤波器的输出
output signed [29:0]  frequency_df;      // 环路滤波器输出数据



/*

REG & WIRE DECLARATION

*/
reg signed[29:0]sum_d;
wire signed[29:0]pd_c2,pd_c1,sum;


/ACHIEVEMENT

assign pd_c1={{1{pd[29]}},pd[29:1]};//C1
assign pd_c2={{9{pd[29]}},pd[29:9]};//C2


always @(posedge clk or posedge rst)  
       if (rst)
          sum_d <= 0;
       else
          sum_d <= sum;
  
assign sum = pd_c2 + sum_d;
assign frequency_df = sum_d + pd_c1;

endmodule

这里需要说明的是,为了简化运算,C1和C2以移位代替了乘法,所以数值采用了近似的方法。

再结合一阶环中的其他代码,就可以得到完整的二阶环v e r l i o g verliogverliog代码。

二.二阶环路滤波器仿真相关结论

经过对二阶环的仿真,我们得出了下面的结论:

理想二阶环路增益直接影响环路的锁定性能,当环路参数设定后,环路的最大增益就确定了,当增益超过这个值时,环路不能锁定。

环路能够正常锁定的情况下,增益越大,锁定时间越大,锁定速度越快。

理想二阶环路的捕获带宽在工程设计中是有限的。

仅改变环路增益,对捕获带宽的影响不大。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1630

    文章

    21776

    浏览量

    604677
  • 锁相环
    +关注

    关注

    35

    文章

    589

    浏览量

    87829

原文标题:数字锁相环:二阶环的FPGA实现

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    FPGA设计一数字锁相环的方法

    本文在说明全数字锁相环的基础上,提出了一种利用FPGA设计一数字锁相环的方法,并给出了关键部
    的头像 发表于 10-25 09:17 8797次阅读

    二阶锁相环

    采用后向Euler数值积分法实现二阶锁相环的一个仿真模型,对二阶锁相环进行仿真,那位大侠做过?可以参考下原代码不?
    发表于 05-28 17:21

    锁相环二阶广义积分?

    本帖最后由 一骥绝尘 于 2017-10-11 09:38 编辑 最近在做锁相环(PLL)原理都看明白了,但是在用DSP编程的时候遇到问题,二阶广义积分模块最后有个积分环节,经过积分后得到两个
    发表于 10-11 09:29

    基于FPGA的全数字锁相环设计

    基于FPGA的全数字锁相环设计:
    发表于 06-26 17:30 144次下载
    基于<b class='flag-5'>FPGA</b>的全<b class='flag-5'>数字</b><b class='flag-5'>锁相环</b>设计

    二阶锁相环的EBPSK信号解调分析

    高效的调制和解调技术对数据传输具有重要的意义。该文在已有的EBPSK 传输系统基础上,详细讨论了EBPSK 信号采用二阶锁相环解调时鉴相器的输出信号结构。首先通过建立锁相环
    发表于 11-24 14:36 35次下载

    锁相环技术在频率跟踪中的应用研究

    本文介绍锁相环及其频率跟踪的基本原理,给出二阶锁相环和四锁相环的设计依据。在此基础上,对四
    发表于 07-29 16:28 43次下载

    宽频带数字锁相环的设计及基于FPGA实现

    宽频带数字锁相环的设计及基于FPGA实现数字锁相环(DPLL)技术在
    发表于 11-23 21:00 1412次阅读
    宽频带<b class='flag-5'>数字</b><b class='flag-5'>锁相环</b>的设计及基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>实现</b>

    数字锁相环(DPLL),数字锁相环(DPLL)是什么?

    数字锁相环(DPLL),数字锁相环(DPLL)是什么? 背景知识: 随着数字电路技术的发展,数字
    发表于 03-23 15:06 5793次阅读

    基于FPGA数字锁相环设计与实现

    基于FPGA数字锁相环设计与实现技术论文
    发表于 10-30 10:38 9次下载

    FPGA实现数字锁相环

    Xilinx FPGA工程例子源码:用FPGA实现数字锁相环
    发表于 06-07 15:07 38次下载

    详解FPGA数字锁相环平台

    一、设计目标 基于锁相环的理论,以载波恢复为依托搭建数字锁相环平台,并在FPGA实现
    发表于 10-16 11:36 18次下载
    详解<b class='flag-5'>FPGA</b><b class='flag-5'>数字</b><b class='flag-5'>锁相环</b>平台

    采用二阶无源环路滤波器实现电荷泵锁相环的设计

    ,为了减小压控振荡器控制电压的纹波,它采用了二阶无源环路滤波器,这样就构成了三电荷泵锁相环。系统级设计与仿真验证是锁相环设计的第一步和关键的一步。本文对一种用作时钟倍频器的三
    发表于 07-24 09:59 3286次阅读
    采用<b class='flag-5'>二阶</b>无源环路滤波器<b class='flag-5'>实现</b>三<b class='flag-5'>阶</b>电荷泵<b class='flag-5'>锁相环</b>的设计

    如何使用FPGA实现高性能全数字锁相环的设计

    本文提出了一种适用范围广泛的全数字锁相环(ADPLL)实现方法.在锁相环输入频率未知的情况下,实现锁相
    发表于 01-26 15:03 65次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>高性能全<b class='flag-5'>数字</b><b class='flag-5'>锁相环</b>的设计

    如何使用FPGA实现高性能全数字锁相环的设计

    本文提出了一种适用范围广泛的全数字锁相环(ADPLL)实现方法.在锁相环输入频率未知的情况下,实现锁相
    发表于 01-26 15:03 20次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>高性能全<b class='flag-5'>数字</b><b class='flag-5'>锁相环</b>的设计

    基于FPGA的宽频带数字锁相环的设计与实现简介

    基于FPGA的宽频带数字锁相环的设计与实现简介说明。
    发表于 06-01 09:41 26次下载