设为首页收藏本站

美丽的网站-英华家电维修论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 649|回复: 0
打印 上一主题 下一主题

全数字锁相环的设计

[复制链接]
跳转到指定楼层
楼主
发表于 2011-3-27 10:12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
?锁相环(PLL)技术在众多领域得到了广泛的应用。如信号处理,调制解调,时钟同步,倍频,频率综合等都应用到了锁相环技术。传统的锁相环由模拟电路实现,而全数字锁相环(DPLL)与传统的模拟电路实现的PLL相比,具有精度高且不受温度和电压影响,环路带宽和中心频率编程可调,易于构建高阶锁相环等优点,并且应用在数字系统中时,不需A/D及D/A转换。随着通讯技术、集成电路技术的飞速发展和系统芯片(SoC)的深入研究,DPLL必然会在其中得到更为广泛的应用。[/table]  这里先容一种采用VERILOG硬件描述语言设计DPLL的方案。 DPLL结构及工作原理  一阶DPLL的基本结构如图1所示。主要由鉴相器、K变模可逆计数器、脉冲加减电路和除N计数器四部分构成。K变模计数器和脉冲加减电路的时钟分别为Mfc和2Nfc。这里fc是环路中心频率,一般情况下M和N都是2的整数幂。本设计中两个时钟使用相同的系统时钟信号。[table]                                                    ?        图1 数字锁相环基本结构图鉴相器  常用的鉴相器有两种类型:异或门(XOR)鉴相器和边沿控制鉴相器(ECPD),本设计中采用异或门(XOR)鉴相器。异或门鉴相器比较输入信号Fin相位和输出信号Fout相位之间的相位差Фe=Фin-Фout,并输出误差信号Se作为K变模可逆计数器的计数方向信号。环路锁定时,Se为一占空比50%的方波,此时的绝对相为差为90°。因此异或门鉴相器相位差极限为±90°。异或门鉴相器工作波形如图2所示。                                        ?        图2 异或门鉴相器在环路锁定及极限相位差下的波形K变模可逆计数器  K变模可逆计数器消除了鉴相器输出的相位差信号Se中的高频成分,保证环路的性能稳定。K变模可逆计数器根据相差信号Se来进行加减运算。当Se为低电平时,计数器进行加运算,假如相加的结果达到预设的模值,则输出一个进位脉冲信号CARRY给脉冲加减电路;当Se为高电平时,计数器进行减运算,假如结果为零,则输出一个借位脉冲信号BORROW给脉冲加减电路。脉冲加减电路  脉冲加减电路实现了对输入信号频率和相位的跟踪和调整,终极使输出信号锁定在输入信号的频率和信号上,工作波形如图3所示。                                        ?        图3 脉冲加减电路工作波形除N计数器  除N计数器对脉冲加减电路的输出IDOUT再进行N分频,得到整个环路的输出信号Fout。同时,由于fc=IDCLOCK/2N,因此通过改变分频值N可以得到不同的环路中心频率fc。DPLL部件的设计实现  了解了DPLL的工作原理,我们就可以据此对DPLL的各部件进行设计。DPLL的四个主要部件中,异或门鉴相器和除N计数器的设计比较简单:异或门鉴相器就是一个异或门;除N计数器则是一个简单的N分频器。下面主要先容K变模可逆计数器和脉冲加减电路的设计实现。K变模可逆计数器的设计实现  K变模可逆计数器模块中使用了一个可逆计数器Count,当鉴相器的输出信号dnup为低时,进行加法运算,达到预设模值则输出进位脉冲CARRY;为高时,进行减法运算,为零时,输出借位脉冲BORROW。Count的模值Ktop由输入信号Kmode预设,一般为2的整数幂,这里模值的变化范围是23-29。模值的大小决定了DPLL的跟踪步长,模值越大,跟踪步长越小,锁定时的相位误差越小,但捕捉时间越长;模值越小,跟踪步长越大,锁定时的相位误差越大,但捕捉时间越短。  K变模可逆计数器的VERILOG设计代码如下(其中作了部分注释,用斜体表示):   module KCounter(Kclock,reset,dnup,enable, Kmode,carry,borrow);  input Kclock; /*系统时钟信号*/  input reset; /*全局复位信号*/  input dnup; /*鉴相器输出的加减控制信号*/  input enable; /*可逆计数器计数答应信号*/  input [2:0]Kmode; /*计数器模值设置信号*/  output carry; /*进位脉冲输出信号*/  output borrow; /*借位脉冲输出信号*/  reg [8:0]Count; /*可逆计数器*/  reg [8:0]Ktop; /*预设模值寄存器*/  /*根据计数器模值设置信号Kmode来设置预设模值寄存器的值*/  always @(Kmode)  begin  case(Kmode)  3'b001:Ktop
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|粤ICP备13038386号|粤ICP备13038386号|美丽的网站-英华家电维修论坛 ( 粤ICP备13038386号 )     站长邮箱 505966338@qq.com

GMT+8, 2025-5-3 03:05 , Processed in 0.157583 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表