学习ADPLL的一些总结2
来源:互联网 发布:php argv 数组 编辑:程序博客网 时间:2024/06/18 13:46
单模块描述:
一、鉴相器:代码中是使用异或(EXOR)鉴相器,输出信号。
1.当se信号的输出为占空比为50%时(Uin与Uout的相差为90°),即cnt_dpout_high与cnt_dpout_low个数相同,为零相位误差。
2.当se信号的输出占空比不为50%(Uin与Uout的相差为90°),即cnt_dpout_high与cnt_dpout_low个数有差别,则存在相位误差。不过此时要经过同步建立侦查电路来判断是否大于4,来判断是否失锁。
3.相差与相位误差的区别:当相差为90°时,此时占空比为50%,所以相位误差为0;因此规定A处相差90°为相位误差0°,从而相位误差为-180°、180°、0°处均为锁相。
二、同步建立侦察电路(代码中有):对se为高进行计数cnt_dpout_high,对se为低进行计数cnt_dpout_low。当cnt_dpout_high与cnt_dpout_low个数相差4以内(即相位误差小于4),则为同步,否则不同步。
三、可变模控制电路:
在锁相过程中,根据量化相位误差的大小准确、自动地调节模数K值的变化,实现对环路带宽的实时控制,大大提高了锁相速度,消除了缩短捕捉时间与减小同步误差的矛盾。
当鉴相器输出的相位误差较大时,这时锁相环环路处于捕获过稅,我们需要使环路尽快的达到锁定状态,所以就需要较大的步进校正量,这就要求除K计数器模块的校值K要较小,所以自动变模控制模块会将相位误差处现成量化值,然后根据这个较大的量化相位误差使模值K变小。当鉴相器输出的相位误差较小时,这时锁相环环路即将进入锁定状态,我们可以将模值K稍微增大些,使锁相环进入稍慢一些的捕获状态,这时的校正的稍度会稍高一些。当鉴相器输出的相位误差在零值左右时,这时锁相环达到了锁定状态,就不需要较大的步进校正量了,自动变模控制模块会调节模值K使之增大,以提高全数字锁相环精度。
自动变模控制校块可以分为三个部分,即检测部分、比较部分和控制部分。
四、K计数器(环路滤波):时钟为Mf0
去除高频(噪声、干扰)部分,例如高频:se为加-减-加-减-...,不会导致K计数器发出进位或者借位;而模值K就相当于滤波器带宽,当加或者减达到模值,则发出进位和借位信号。
①实现一:
包含加计数器和减计数器,当鉴相器输出的se信号为高,则减计数器加1,同时加计数器保持不变;反之,加计数器加1,减计数器保持不变。他们计数时互不干扰,这两个计数器的范围都是[0,K-1]。
②实现二:
只包含一个模K的可逆计数器。当se为高,则进行减计数,达到0 时产生一个借位脉冲信号(BORROW)作为“借位”指令;当se为低,则进行加计数,达到K 时产生一个进位脉冲信号(CARRY)作为“进位”指令。计数容量(模数)K值的大小由自动变模控制器控制。
一般情况下K都是2的整数次幂。当参考频率增加,异或门鉴相器的输出信号将变为非对称,致使K计数器进位的平均数多于借位(IDout频率增大)。
五、数字控制振荡器DCO:时钟为2Nf0
I/D电路:一般与K计数器一起使用,根据进位、借位的指令,实现相位和频率的跟踪和调整。
翻转触发器(Toggle-FF):
1.没有进位和借位脉冲的情况下:Toggle-FF在每个ID时钟的上升沿翻转,即把外部参考时钟进行二分频;
2.在有进位和借位每次的情况下:当有进位信号carry时,在输出的二分频信号中插入半个脉冲(即提前一个ID时钟周期),以提高输出信号的频率;当有借位信号borrow时,在输出的二分频信号中减去半个脉冲,以降低输出信号的频率。详细原理如下:
①借位端仅在Toggle-FF处在低电平时有效。当借位脉冲来到,假如Toggle-FF处在高电平,等待Toggle-FF置低触发借位端,在ID时钟的下一个上升沿,Toggle-FF将置高两个ID时钟周期。因此,下一个IDout脉冲将滞后一个IDclock(频率减小)。
②进位端仅在Toggle-FF处在高电平时有效。当进位脉冲来到,假如Toggle-FF处在低电平,等待Toggle-FF置高触发进位端,在ID时钟的下一个上升沿,Toggle-FF将置低两个ID时钟周期。因此,下一个IDout脉冲将提前一个IDclock(频率增大)。
ID电路的输出为:。
六、N分频计数器:对ID电路的输出信号IDout进行N分频,同时也把ID输出的相位按比例缩小N倍。因此,N分频器仅仅是一个1/N的“增益模块”。
- 学习ADPLL的一些总结2
- 学习ADPLL的一些总结1
- 对于计算机语言学习的一些总结2
- 总结的一些学习站点
- 学习.net的一些总结
- 学习枚举的一些总结
- 学习OpenCV的一些总结
- 学习继续的一些总结
- 学习继承的一些总结
- 函数学习的一些总结
- 学习MVC的一些总结
- netty学习的一些总结
- git学习的一些总结:
- python的一些学习总结
- 学习Http的一些总结
- 一些学习资料的总结
- 学习PWM的一些总结
- Shell编程学习(2)----输入输出的一些命令总结
- android studio的使用
- Spring MVC 实践笔记
- Android开发—Volley 的使用
- 微信公众帐号开发教程第2篇-开发模式启用及接口配置
- SPSS 分布类型的检验
- 学习ADPLL的一些总结2
- C++学习之路-开篇
- SPSS t 检验
- java 学习笔记
- Maven 学习笔记
- Entity Framework 入门
- 领域驱动设计学习笔记
- 关于多任务和多线程
- 理解多线程管理类 CWorkQueue