摘要:叙述了全数字锁相环的工作原理,提出了应用VHDL 技术设计全数字锁相环的方法,并用复杂可编程逻辑器件CPLD 予以实现,给出了系统主要模块的设计过程和仿真结果。

0  引言

全数字锁相环(DPLL) 由于避免了模拟锁相环存在的温度漂移和易受电压变化影响等缺点。从而具备可靠性高、工作稳定、调节方便等优点。在调制解调、频率合成、FM立体声解码、图像处理等各个方面得到广泛的应用。随着电子设计自动化(EDA) 技术的发展,采用大规模可编程逻辑器件(如CPLD 或FPGA) 和VHDL 语言来设计专用芯片ASIC 和数字系统,而且可以把整个系统集成到一个芯片中,实现系统SOC ,构成片内锁相环。下面介绍采用VHDL技术设计DPLL 的一种方案。

1  DPLL 的基本结构

全数字锁相环结构框图如图1 所示, 由数字鉴相器、数字环路滤波器和数控振荡器3 部分组成。

设计中数字鉴相器采用了异或门鉴相器;数字环路滤波器由变模可逆计数器构成(模数K 可预置) ;数控振荡器由加/ 减脉冲控制器和除N 计数器构成。

可逆计数器和加/ 减脉冲控制器的时钟频率分别为Mf0和2Nf0 。这里f0 是环路的中心频率,一般情况下M 和N 为2 的整数幂。时钟2Nf0  经除H( = M/2N) 计数器得到。

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

全数字锁相环原理如图2 所示, 其中: clk 为时钟频率,等于32f 0 ; U1 为输入,频率为f0 ; j 为异或门鉴相器的输出,它作为变模可逆计数器的方向控制信号;out 为加/ 减脉冲控制器的输出; U2 为DPLL 的输出,在相位锁定的频率为f0 , 相位与输入U1 相差Π/ 2 ; D、C、B 、A 可预置变模可逆计数器的模数,它在0001 —1111 范围内变化, 相应的模数在2.3 —2. 17 范围内变化; En 为可逆计数器使能端。

图2 数字锁相环原理图

2. 1  鉴相器的设计

异或门鉴相器用于比较输入信号u1 与数控振荡器输出信号u2 的相位差, 其输出信号ud 作为可逆计数器的计数方向控制信号。当ud 为低电平时( u1 和u2 有同极性时) ,可逆计数器作"加"计数。反之,当ud 为高电平时,可逆计数器作"减"计数。

当环路锁定时, f i 和f o 正交,鉴相器的输出信号Ud 为50 % 占空比的方波,此时定义相位误差为零,在这种情况下,可逆计数器"加"和"减"的周期是相同的,只要可逆计数器只对其时钟的k 值足够大( k> M/ 4) , 其输出端就不会产生进位或借位脉冲, 加/ 减脉冲控制器只对其时钟2Nf o 进行二分频, 使f i和f o 的相位保持正交。在环路未锁定的情况下, 若Ud = 0 时它使可逆计数器向上加计数,并导致进位脉冲产生, 进位脉冲作用到加/ 减脉冲控制器的"加"控制端i , 该控制器便在二分频过程中加入半个时钟周期, 即一个脉冲。反之, 若Ud = 1 时, 可逆计数器进行减计数, 并将反出解围脉冲到加/ 减脉冲控制器的"减"输入端d ,于是,该控制器便在二分频过程中减去半个时钟周期,即一个脉冲。这个过程是连续发生的。加/ 减脉冲控制器的输出经过除N计数后。使得本地估算信号U2 的相位受到调整控制,终达到锁定的状态。

异或门鉴相器在环路锁定时和相位误差达到极的相应波形如图3 所示:

图3  异或门鉴相器工作波形

2. 2  数字环路滤波器的设计

数字环路滤波器是由变模可逆计数器构成的。该计数器设计为一个17 位可编程(可变模数) 可逆计数器,计数范围是,由外部置数DCBA 控制。假设系统工作无相位差,由锁相环原理知, u1 和u2 的相位差0 ,异或门鉴相器输出是一个对称的方波,如图4 (a) 所示。因此可逆计数器在相同的时间间隔内进行加或减计数,只要k 足够大,那么从零开始的计数就不会溢出或不够。若u1 开始落后u2 ,异或门输出不对称,那么计数器加计数时间比减计数时间长,其结果计数器随着时间的增长将溢出,产生一个进位脉冲。相反,若U1 开始滞后U2 ,计数器将产生一个借位脉冲。进位和借位脉冲可用来控制DCO ,使得DCO 输出的脉冲数根据进位和借位来加上或者是删除一些脉冲,实际上也就改变了DCO 的输出频率。变模可逆计数器的设计由VHDL 完成,程序如下:

library ieee ;

use ieee. std_logic_1164. all ;

use ieee. std_logic_unsigned. all ;

entity li is

port (clk ,j ,en ,d ,c ,b ,a :in std_logic ;

r1 ,r2 :out std_logic) ;

end li ;

architecture behave of li is

signal cq ,k ,mo :std_logic_vector (16 downto 0) ;

signal cao1 ,cao2 :std_logic ;

signal instruction :std_logic_vector (3 downto 0) ;

begin

instruction < = d &c &b &a ;

with instruction select

mo < ="00000000000000111"when"0001",

"00000000000001111"when"0010",

"00000000000011111"when"0011",

"00000000000111111"when"0100",

"00000000001111111"when"0101",

"00000000011111111"when"0110",

"00000000111111111"when"0111",

"00000001111111111"when"1000",

"00000011111111111"when"1001",

"00000111111111111"when"1010",

"00001111111111111"when"1011",

"00011111111111111"when"1100",

"00111111111111111"when"1101",

"01111111111111111"when"1110",

"11111111111111111"when"1111",

"00000000000000111"when others ;

process (clk ,en ,j ,k ,cq)

begin

if clk'event and clk = '1'then

k < = mo ;

if en = '1'then

if j = '0'then

if cq < k then cq < = cq + 1 ;

else cq < = (others = > '0') ;

end if ;

else

if cq > 0 then cq < = cq - 1 ;

else cq < = k ;

end if ;

end if ;

else cq < = (others = > '0') ;

end if ;

end if ;

end process ;

process (en ,j ,cq ,k)

begin

if en = '1'then

if j = '0'then

f cq = k then cao1 < = '1';

else cao1 < = '0';

end if ;

cao2 < = '0';

else

if cq ="00000000000000000"then

cao2 < = '1';

else cao2 < = '0';

end if ;

cao1 < = '0';

end if ;

else cao1 < = '0';cao2 < = '0';

end if ;

end process ;

r1 < = cao1 ; r2 < = cao2 ;

end behave ;

变模可逆计数器(取k = 24) 的仿真波形图如图4 所示。

图4  变模可逆计数器(取k = 24) 的仿真波形图

2. 3  数控振荡器的设计

数控振荡器由加/ 减脉冲控制器和除N 计数器组成的。加/ 减脉冲控制器其实是一个增量—减量计数器式DCO。它和环路滤波器连用。如果在环路滤波器无进位、错位的时候,加/ 减脉冲控制器对时钟2NFo 进行二分频。当加/ 减脉冲控制的增量输入端( I = 1) 输入一个进位脉冲时, 输出脉冲中通过该计数器内部加上一个时钟脉冲。反之,当加/ 减脉冲控制的减量输入端( D = 1) 时输入一个借位脉冲输出脉冲中就减去一个时钟脉冲。因此通过借位和进位脉冲可以使输出频率得到改变, 输出频率能被进位和借位脉冲的频率控制在一个给定的范围内。加/ 减脉冲控制器由D 触发器和J K 触发器构成,根据功能分析,可以设计出相应的VHDL 程序。其运行后仿真波形如图5 所示:

图5  加/ 减脉冲控制器仿真波形图

3  实验仿真结果与分析

本设计中全数字锁相环路采用软件来实现的,通过用VHDL 语言编写模块,然后仿真,例化,逐渐由下而上的实现整个电路,终达到整体仿真成功。

环路锁定( k = 2^5) ,DPLL 系统仿真波形如图6所示。

图6  环路锁定(取k = 2^5) 时的仿真波形

由仿真波形可以看出, u1 和u2 达到锁定状态时的仿真时间是70us。

环路锁定( k = 27) 时,DPLL 系统的仿真波形如图7 所示:

图7  环路锁定(取k = 27) 时的波形仿真图

在这种情况下, u1 和u2 达到锁定状态的仿真时间是180ms。

显然,模k 愈大,环路进入锁定状态的时间越长。k 取得过大,对抑制噪声、减少相位抖动有利,但是同时又加大了环路进入锁定状态的时间。反之, k 取得过小,可以加速环路的锁定,而对噪声的抑制能力却随之降低。

4  结语

采用VHDL 设计全数字锁相环路,具有设计灵活,修改方便和易于实现的优点,并能够制成嵌入式片内锁相环。该类数字锁相环路中计数器的模数可以随意修改,这样,就能够根据不同的情况限度地、灵活地设计环路。

异或鉴相器 matlab 数字鉴相器,采用VHDL设计的全数字锁相环电路设计相关推荐

  1. MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列

    FPCA.数字IC笔试题系列 不容错过的FPGA/数字IC秋招笔试面试汇总帖(2022届) 1. FPGA.数字IC系列(1)--乐鑫科技2021数字IC提前批笔试 2. FPGA.数字IC系列(2) ...

  2. 用matlab对基带信号进行调频,基于SIMULINK的模拟锁相环调频调制器研究与设计

    设计应用飞基于SIMULINK的模拟锁相环调频调制器研究与设计 广州大学物理与电子工程学院黄俊奇 [要]利用賴相坏能够对偿号进行自动跟踪和捕提>代通信屎统广'泛是将锁相坯应用总调频技.杷0生柞盔 ...

  3. 高性能全数字嵌入式仿真测试软件SkyEye支持多达70余种核心

    全数字仿真平台作为工业领域不可缺少的重要软件之一,除了可以与MATLAB或者Simulink集成外,还支持哪些优秀的功能?在了解新一代全数字仿真平台SkyEye之前,先来学习一下什么是全数字仿真平台. ...

  4. 一种全数字实时仿真的安全关键领域解决方案

    随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通.航空航天.核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题.最近比较火热的基于 ...

  5. matlab提取电压基波分量,基于复系数陷波滤波器锁相环的电网正序分量检测

    摘  要: 为满足在电网电压不平衡情况下的系统控制需求,需要快速而准确地检测出基波正负序分量的幅值和相位.采用无限脉冲响应(IIR)复杂系数陷波滤波器结合锁相环来提取基波分量中的正序分量,利用MATL ...

  6. 异或鉴相器 matlab 数字鉴相器,一款采用CPLD的光伏并网逆变器锁相及保护电路设计...

    在这种情况下,设计采用对电网电压进行过零检测后再将信号送人CPLD,然后由CPLD实现对电网电压进行数字锁相的方法,可以有效地防止相位因干扰而发生抖动或者失锁的现象,保证系统的正常运行.另外,本系统还 ...

  7. matlab谐波含量,基于谐波检测中的数字低通滤波器的MATLAB设计

    由于电力系统中非线性电子元件的大量使用,使得谐波污染问题日益严重,当谐波含量超过一定限度时就可能对电网和用户造成极大的危害,且增加线路损耗,降低线路传输能力,干扰通信信号等.因此,应该积极寻找一种治理 ...

  8. 基于Matlab的交通限速标志的识别系统 数字图像处理大作业

    本大作业为基于Matlab的交通限速标志的识别系统, 考虑到在科技发展的今天,智能汽车行业发展迅速,所以交通限速标志的快速检测及识别对车辆的安全行驶极为重要,因此本系统可以检测到图中的交通限速标志并对 ...

  9. MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试

    文章目录 MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试 一.题目要求 二.完整的目录结构说明 三.Mnist数据集及数据格式转换 四.BP神经网络相关知识 4.1 ...

  10. matlab调制解调开题报告,基于MATLB的数字调制与解调设计与仿真开题报告.doc

    基于MATLB的数字调制与解调设计与仿真开题报告 毕业(设计)论文 开 题 报 告 系 别 电子信息工程系 专 业 电子信息工程专业 班 级 122102 学生姓名 朱椰子 学 号 111861 指导 ...

最新文章

  1. js中获取时间new date()的用法
  2. 没想到这家老牌AI公司越来越不“纯粹”了
  3. S210-设置通过X130-Profinet口进行配置
  4. bootstrap 模态窗口 多重/多个弹窗滚动条补丁
  5. CF双端总决赛还是LGD总决赛?端游战队挺进决赛,手游已拿三连冠
  6. JAVA判定参数类型进行赋值_java – 为什么泛型方法在赋值中更改了参数化类型?...
  7. 深度学习与TensorFlow:FCN论文学习笔记
  8. 21个强大漂亮Ajax/CSS表格设计
  9. 强者不能恒强,偏向虎山行
  10. LTE下行物理层传输机制(9)-集中式和分布式资源映射
  11. Windows官网下载Win10原版镜像文件
  12. oracle误删数据恢复的方法
  13. xcode打包ipa配置手动配置证书
  14. vw/vh:移动适配之vw/vh(使用方法)
  15. ocr人脸识别是什么原理,ocr的工作原理是什么
  16. 如何解决计算工作日的问题?
  17. notify()和notifyAll()的区别
  18. C++ 插件机制的实现原理、过程、及使用
  19. 基于微信在线考试小程序系统设计与实现 开题报告
  20. 2019年美亚杯电子数据取证大赛-内存取证

热门文章

  1. Excel电子表格操作
  2. Rails PayPal 支付对接
  3. Java技术未来十年发展
  4. 拉普拉斯变换解微分方程
  5. AES加密和解密详解
  6. OSError: could not get source code
  7. 1.8版道士装备取向与PK方法
  8. gazebo创建机器人模型01
  9. 解决Chrome 的右键谷歌网页翻译失效 20221107更新
  10. 如何把自己打造成技术圈的papi酱