超前-滞后型DPLL提取位同步时钟的FPGA实现
来源:互联网 发布:优化布林线 编辑:程序博客网 时间:2024/06/07 03:24
好久没更新了。这几天研究了DPLL提取位同步时钟的FPGA实现。DPLL和PLL一样,由鉴相器、环路滤波器和数控振荡器组成。
下面就是DPLL的基本框图。
1.超前-滞后性数字鉴相器
鉴相器的功能是检测本地估量信号和输入信号sigIn的相位关系。但只提取输入信号sigIn边沿处的相位关系。所以我们先由D触发器和异或门获得携带输入信号边沿信息的脉冲序列。在输入信号sigIn边沿处,如果本地估量信号为高电平则超前信号置“1”,本地估量信号为低电平则滞后信号置“1”。
moduleDPD(inputclk,inputrst_n,inputM_Data,//输入信号inputclk_Para,//本地参考信号outputbothEdge,//携带输入信号边沿信息的脉冲序列outputregsign_hou,//滞后信号outputregsign_qian//超前信号);regQ;always @ (posedge clk or negedge rst_n)beginif(!rst_n)Q <= 'd0;else Q <= M_Data;end//携带输入信号边沿的脉冲序列assignbothEdge = M_Data ^ Q;always @ (posedge clk or negedge rst_n)beginif(!rst_n)beginsign_hou <= 'd0;sign_qian <= 'd0;endelse if(bothEdge == 1'b1 && clk_Para == 1'b0)sign_hou <= 1'b1;else if(bothEdge == 1'b1 && clk_Para == 1'b1)sign_qian <= 1'b1;else beginsign_hou <= 'd0;sign_qian <= 'd0;endendendmodule
2.环路滤波器的实现
随机噪声可能会引起DPD的相位抖动,所以通过一个Mod为8的计数器来实现滤波功能,当超前信号为1时开始加计数,逐次加到15,进位变为8,此时环路滤波器输出一个进位信号,当滞后信号为1时开始减计数,逐次减到0,借位变为8,此时环路滤波器输出一个借位信号。因为噪声抖动是无序的,除非噪声在同一方向出现8次,滤波器才会输出误动作。Mod越小,锁相速度越快,精度越低。(为在仿真的时候效果明显,这里我没有加入环路滤波器,也就是Mod为0,锁相速度最快,损失了锁相精度)
3. 数字振荡器的实现
以200KHz的时钟作为参考信号。内部的时钟信号是50MHz,需要一个200KHz的时钟周期有250个clk时钟周期,即参数C = 250,当进位信号置1时,C - 1,当借位信号置1时,C + 1;通过这种方式一步步逼近输入信号。
moduleDCO(inputclk,inputrst_n,inputcarryPulse,inputsubtractionPulse,inputbothEdge,outputregclk_Para);//200K的参考时钟parameterC = 249;reg[9:0]count_cnt;always @ (posedge clk or negedge rst_n)beginif(!rst_n)count_cnt <= C;else if(carryPulse)count_cnt <= count_cnt - 1'b1;else if(subtractionPulse)count_cnt <= count_cnt + 1'b1;elsecount_cnt <= count_cnt;endreg[9:0]count;always @ (posedge clk or negedge rst_n)beginif(!rst_n)count <= 'd0;else if(count >= count_cnt)count <= 'd0;else if(bothEdge)count <= 'd0;else count <= count + 1'b1;endalways @ (posedge clk or negedge rst_n)beginif(!rst_n)clk_Para <= 'd1;else if(count < (count_cnt >> 1))clk_Para <= 1'b1;elseclk_Para <= 1'b0;endendmodule
下面附一张烧录到板子后的提取位同步时钟信号的效果图。黄色信号是提取的位同步时钟信号,蓝色信号是输入信号。
阅读全文
1 0
- 超前-滞后型DPLL提取位同步时钟的FPGA实现
- 基于FPGA的提取位同步时钟DPLL设计-解决方案-机电在线
- 滞后-超前或者超前滞后
- 对于超前,滞后,超前滞后使用范围
- 滞后超前型低通滤波器
- 滞后超前型低通滤波器
- imx53 时钟dpll分析
- FPGA verilog 实现的1602 时钟计数器
- FPGA源同步时钟输出
- FPGA异步时钟同步化
- 现代控制系统-基于MATLAB和根轨迹的滞后超前校正
- 滞后超前型低通滤波器 (2)
- rc超前滞后移相网络
- 交流电路中相位超前和滞后问题
- 交流电路中相位超前和滞后问题
- FPGA异步时钟设计中的同步策略
- 使用Verilog HDL语言实现4位超前进位加法器
- 基于FPGA的数字时钟
- Linux网络编程--(1)网络体系架构
- Kafka LEADER_NOT_AVAILABLE问题解决
- HTTP请求行、请求头、请求体详解
- 多个按钮调用同一个方法
- HDU4069-Squiggly Sudoku
- 超前-滞后型DPLL提取位同步时钟的FPGA实现
- LeetCode 452 射气球问题
- SSL2810 2017年10月30日提高组T2 数论(math)
- MapReduce MapTask任务数量,切片大小笔记
- Leetcode 645 FindErrorNum
- Mycat安装部署简单使用
- Okhttp带证书封装
- Android视频编辑器(四)通过OpenGL给视频增加不同滤镜效果
- 【bzoj3712】[PA2014]Fiolki