一种数字锁相环的FPGA实现
2018-05-14李荃项顺祥黄麟舒
李荃 项顺祥 黄麟舒
摘要:本文介绍了一种数字锁相环的FPGA实现,简单介绍了锁相环的基本原理,并对每一模块的FPGA实现的设计进行了介绍,最后通过仿真验证了其性能。
关键词:数字锁相环;FPGA;ModelSim
中图分类号:TM764 文献标识码:A 文章编号:1007-9416(2018)02-0083-02
随着科技的发展,产品的信息化数字化程度越来越高,数字电路的应用也是越来越广泛,而锁相环是绝大部分数字电路的必备模块,信号的运算、传输、存储都应用到了锁相环技术,因此锁相环设计的好坏,直接对产品整体性能产生影响。从1965年第一片集成电路锁相环诞生,广泛应用于广播电视领域,当时的锁相环是纯模拟电路,利用模拟乘法器实现鉴相,随着数字电路技术的发展,在20世纪70年代慢慢出现了数字锁相环,因其在数字化、集成化以及低功耗方面的优势,得以迅速发展。本文介绍了一种数字锁相环的FPGA实现。
1 锁相环基本原理
锁相环(Phase Locked Loop,PLL)本质上是一个闭环相位负反馈控制系统,针对不同的应用场合,锁相环的实际电路可能是多种多样的,但是一个典型的锁相环电路都应包含这如图1所示三个模块:鉴相器(Phase Detector,PD),环路滤波器(Loop Filter,LF)、压控振荡器(Voltage Controlled Oscillator,VCO)[1]。
鉴相器将输入的周期信号与压控振荡器输出的信号的相位进行比较,鉴相器输出一个与相位误差成正比例关系的电压信号,误差电压信号输入到环路滤波器,输出一个直流的控制电压来对压控振荡器的输出频率进行控制,通过反馈电路使输入信号和输出信号的相位差控制在一个比较小的区间。
2 数字锁相环各模块的FPGA实现
2.1 数字鉴相器的FPGA实现
鉴相器可以有多种设计方案,本文采用如图2所示一个乘法器和一个低通滤波器串联构成。
设乘法器的相乘系数为Km,则输入信号与反馈信号的输出为:
其中Ud为鉴相器最大输出电压,θe(t)为误差相位。
对于乘法器的实现,直接可以用FPGA中的乘法器来进行实现,对于低通滤波器常用的数字滤波器有FIR和IIR两种,本设计选用FIR来作为鉴相器中的滤波器,原因主要有以下几点[2]:
(1)只要当FIR滤波器系数选取恰当(具有对称性)的时候其具有严格的线性相位特性;(2)FIR滤波器为有限脉冲响应滤波器,必为问题系统,其单位脉冲为有限长,受限于寄存器长度有限、计算精度有限的影响较小。而IIR极点在圆内才能稳定受限于有限字长,运算误差较大;(3)FIR滤波器进行的是卷积运算,可以使用快速傅里叶变换等快速算法得到,易于实现。
实践中FIR滤波器我们使用Quartus II中提供的FIR Compiler IP核来实现,但我们要对其系数进行设置,为了得到我们所需要性能的滤波器系数,我们在MATLAB中进行仿真,得到最优滤波器设计[3]。仿真结果如图3所示。最后对得到的系数进行量化转换成二进制,进而对FPGA中FIR Compiler IP核进行配置。
2.2 数控振荡器的FPGA实现
数控振荡器可以将数字处理延续到正交调制之后或正交解调之前,滤波器和增益控制就可以用数字方法实现。Quartus II中提供的NCO 核功能十分强大,可以进行多种算法的运算,本文选用使用较为广泛的,最为直接的CORDIC迭代算法作为迭代算法。这也是通过FPGA来实现较为有优势的一种算法。我们在对一些参数进行设置就可以完成数控振荡器的配置。
2.3 顶层模块设计
顶层模块(主模块)是对整个系统进行设计,简单点说就是将各个功能子模块的管脚进行定义,将各个模块进行组合连接。顶层文件的部分程序代码如下:
wire signed[19:0] pd_mult_out; //鉴相乘法器输出;
wire fir_filter_rst_n; //鉴相滤波器接口;
wire fir_filter_sink_valid;
wire fir_filter_source_ready;
wire fir_filter_source_valid_nc;
wire signed [29:0]fir_ filter_out; //鉴相滤波输出
接下来我们就可以对整个系统进行综合,图4为进过编译综合后的RTL原理图。
3 ModelSim仿真测试
针对上述设计,使用Verilog HDL语音实现了该数字锁相环的FPGA实现,并通过Modesim进行仿真测试。测试当中我们使用的输入信号采用MATLAB来进行得到,方法是产生一个单频信号,然后对其进行量化处理,并将其转换为2进制存储在工程目录中。编写对应的激励文件,进行仿真,我们得到了如图5所示的仿真结果:
仿真结果显示,通过一定的捕捉时间,环路成功锁定,鉴相器的输出很快的收敛为一条平滑的直線。通过对输入信号和输出信号的局部放大如图6所示,我们可以看到,环路锁定后,输入信号和输出信号频率和相位都相同。实现了锁相环的功能。
4 结语
本文介绍了一种数字锁相环的FPGA实现的设计,对锁相环的基本工作原理进行了阐述,并对相关模块的FPGA实现设计进行了说明。通过仿真实现表明,该数字锁相环,结构简单,性能优良。
参考文献
[1]张厥盛,郑继禹,万心平.锁相技术[M].西安:西安电子科技大学出版社,2012.
[2]鞠芳,马昕,田岚.基于FPGA的数字乘法器性能比较[J].电子器件,2011,(06):718-722.
[3]郭勇,杨欢.基于IP核FIR滤波器的设计与FPGA实现[J].无线电工程,2017,(01):79-82.