全数字锁相环(DPLL)的原理简介以及verilog设计代码

2023-11-12

随着数字电路技术的发展,数字锁相环在调制解调、频率合成、FM 立体声解码、彩色副载波同步、图象处理等各个方面得到了广泛的应用。数字锁相环不仅吸收了数字电路可靠性高、体积小、价格低等优点,还解决了模拟锁相环的直流零点漂移、器件饱和及易受电源和环境温度变化等缺点,此外还具有对离散样值的实时处理能力,已成为锁相技术发展的方向。

所谓数字PLL,就是指应用于数字系统的PLL,也就是说数字PLL中的各个模块都是以数字器件来实现的,是一个数字的电路。 数字锁相环的优点是电路最简单有效,可采用没有压控的晶振,降低了成本,提高了晶振的稳定性。但缺点是和模拟锁相环一样,一旦失去基准频率,输出频率立刻跳回振荡器本身的频率;另外还有一个缺点,就是当进行频率调整的时候,输出频率会产生抖动,频差越大,抖动会越大于密,不利于某些场合的应用。随着大规模、超高速的数字集成电路的发展,为数字锁相环路的研究与应用提供了广阔空间。由于晶体振荡器和数字调整技术的加盟,可以在不降低振荡器的频率稳定度的情况下,加大频率的跟踪范围,从而提高整个环路工作的稳定性与可靠性。

锁相环是一个相位反馈控制系统,在数字锁相环中,由于误差控制信号是离散的数字信号,而不是模拟电压,因而受控的输出电压的改变是离散的而不是连续的;此外,环路组成部件也全用数字电路实现,故而这种锁相环就称之为全数字锁相环(简称PLL)。全数字锁相环主要由数字鉴相器、可逆计数器、频率切换电路及N分频器四部分组成。其中可逆计数器及N分频器的时钟由外部晶振提供。不用VCO,可大大减轻温度及电源电压变化对环路的影响。同时,采用在系统可编程芯片实现有利于提高系统的集成度和可靠性。

一阶全数字锁相环主要由鉴相器、K变模可逆计数器、脉冲加减电路和除N计数器四部分构成。K变模计数器和脉冲加减电路的时钟分别为Mfc和2Nfc。这里fc是环路中心频率,一般情况下M和N都是2的整数幂。本设计中两个时钟使用相同的系统时钟信号。

 

当环路失锁时,异或门鉴相器比较输入信号(fin)和输出信号(fout)之间的相位差异,并产生K变模可逆计数器的计数方向控制信号(dnup); K变模可逆计数器根据计数方向控制信号(dnup)调整计数值,dnup为高进行减计数,并当计数值到达0时,输出借位脉冲信号(borrow);为低进行加计数,并当计数值达到预设的K模值时,输出进位脉冲信号(carryo);脉冲加减电路则根据进位脉冲信号(carryo)和借位脉冲信号(borrow)在电路输出信号(idout)中进行脉冲的增加和扣除操作,来调整输出信号的频率;重复上面的调整过程,当环路进入锁定状态时,异或门鉴相器的输出se为一占空比50%的方波,而K变模可逆计数器则周期性地产生进位脉冲输出carryo和借位脉冲输出borrow,导致脉冲加减电路的输出idout周期性的加入和扣除半个脉冲。这样对于输出的频率没有影响,也正是基于这种原理,可以把等概率出现的噪声很容易的去掉。

全数字锁相环的verilog源代码,仿真已通过

module dpll(reset,clk,signal_in,signal_out,syn);

parameter para_K=4;

parameter para_N=16;

input reset;

input clk;

input signal_in;

output signal_out;

output syn;

reg signal_out;

reg dpout;

reg delclk;

reg addclk;

reg add_del_clkout;

reg [7:0]up_down_cnt;

reg [2:0]cnt8;

reg [8:0]cnt_N;

reg syn;

reg dpout_delay;

reg [8:0]cnt_dpout_high;

reg [8:0]cnt_dpout_low;

/******phase detector*****/

always@(signal_in or signal_out)

begin

dpout<=signal_in^signal_out;

end

/******synchronization establish detector*****/

always@(posedge clk or negedge reset)

begin

if(!reset)    dpout_delay<='b0;

else          dpout_delay<=dpout;

end

always@(posedge clk or negedge reset)

begin

if(!reset)

begin

cnt_dpout_high<='b0; cnt_dpout_low<='b0;

end

else if(dpout)

if(dpout_delay==0)  cnt_dpout_high<='b0;

else

if(cnt_dpout_high==8'b11111111)  cnt_dpout_high<='b0;

else  cnt_dpout_high<=cnt_dpout_high+1;

else if(!dpout)

if(dpout_delay==1)  cnt_dpout_low<='b0;

else

if(cnt_dpout_low==8'b11111111)  cnt_dpout_low<='b0;

else  cnt_dpout_low<=cnt_dpout_low+1;

end

always@(posedge clk or negedge reset)

begin

if(!reset)  syn<='b0;

else if((dpout&&!dpout_delay)||(!dpout&&dpout_delay))

if(cnt_dpout_high[8:0]-cnt_dpout_low[8:0]<=4||cnt_dpout_low[8:0]-cnt_dpout_high[8:0]<=4)  syn<='b1;

else  syn<='b0;

end

/****up down couter with mod=K****/

always@(posedge clk or negedge reset)

begin

if(!reset)

begin

delclk<='b0;

addclk<='b0;

up_down_cnt<='b00000000;

end

else

begin

if(!dpout)

begin

delclk<='b0;

if(up_down_cnt==para_K-1)

begin

up_down_cnt<='b00000000;

addclk<='b0;

end

else

begin

up_down_cnt<=up_down_cnt+1;

addclk<='b0;

end

end

else

begin

addclk<='b0;

if(up_down_cnt=='b0)

begin

up_down_cnt<=para_K-1;

delclk<='b0;

end

else

if(up_down_cnt==1)

begin

delclk<='b1;

up_down_cnt<=up_down_cnt-1;

end

else

up_down_cnt<=up_down_cnt-1;

end

end

end

/******add and delete clk*****/

always@(posedge clk or negedge reset)

begin

if(!reset)

begin

cnt8<='b000;

end

else

begin

if(cnt8=='b111)

begin

cnt8<='b000;

end

else

if(addclk&&!syn)

begin

cnt8<=cnt8+2;

end

else

if(delclk&&!syn)

cnt8<=cnt8;

else

cnt8<=cnt8+1;

end

end

always@(cnt8 or reset)

begin

if(!reset)

add_del_clkout<='b0;

else

add_del_clkout<=cnt8[2];

end

/******counter with mod=N******/

always@(posedge add_del_clkout or negedge reset)

begin

if(!reset)

begin

cnt_N<='b0000;

signal_out<='b0;

end

else

begin

if(cnt_N==para_N-1)

begin

cnt_N<='b0000;

signal_out<='b0;

end

else

if(cnt_N==(para_N-1)/2)

begin

signal_out<='b1;

cnt_N<=cnt_N+1;

end

else

cnt_N<=cnt_N+1;

end

end

endmodule

DPLL由  鉴相器  模K加减计数器  脉冲加减电路  同步建立侦察电路 模N分频器 构成.

整个系统的中心频率(即signal_in和signal_out的码速率的2倍)

为clk/8/N.  模K加减计数器的K值决定DPLL的精度和同步建立时间,K越大,则同步建立时间长,同步精度高.反之则短,低

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全数字锁相环(DPLL)的原理简介以及verilog设计代码 的相关文章

  • C++ tbb_debug.dll 丢失

    我是 openCV 的新手 我尝试遵循一些教程 一切工作正常 直到我包含 opencv2 imgproc imgproc hpp 并使用 filter2D 函数 当我启动我的程序时 出现以下错误 程序无法启动 因为您的计算机缺少 tbb d
  • 尝试 Azure 与 Unity 连接时出现“NotImplementedException”(c#)

    我使用的是Unity 2019 3 6f1 我创建了一个简单的 DLL 用于连接到 Azure 并上传文件 但是 当我调用此 DLL 来尝试连接到 Azure blob 存储时 我得到以下堆栈跟踪 NotImplementedExcepti
  • 使用 COM 对象的 Python ctypes 和 DLL

    在 Windows 下 我尝试使用第 3 方 DLL SomeLib dll 使用 Python 2 7 用 C 编程ctypes 对于其某些功能 该库使用另一个 COM DLL SomeCOMlib dll 它本身使用其他DLL LibA
  • 调用 SWIG 生成的 JNI 时出现 UnsatisfiedLinkError?

    我正在尝试创建一个可从 Java 调用的 C 动态库 我在下面编译了一个DLLCygwin http www cygwin com using SWIG http www swig org Doc1 3 Java html compilin
  • 不使用 Obfuscator 的 DLL 加密

    事实上 我被分配了一项任务来保护我的 DLL 这样 如果我将我的软件部署到任何系统 就没有人可以修改或读取我的 DLL 你能帮我如何在不使用混淆器的情况下对其进行加密吗 您将需要软件来执行此操作 以下是您可能需要考虑的一些软件 Eazfus
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • Visual Studio 设置以在运行时删除对 dll 文件的依赖

    到处都有人建议当 Visual Studio 在运行时找不到 DLL 时如何让 Visual Studio 知道 但我想知道在哪里删除该选项 以便 Visual Studio 在运行时不会尝试查找 dll 文件 我昨天也有类似的问题 但没有
  • 如何将参数传递给 DLL 初始化(例如,通过 LoadLibrary 加载时)?

    如何将参数传递给通过 LoadLibrary 加载的 DLL 的初始化函数 有可能吗 也就是说 无需求助于某种导出函数或共享内存 没有直接的方法 最简单的可能是通过环境变量 它们可以在调用之前轻松设置LoadLibray with sete
  • 如何在 C# 库中创建全局对象[重复]

    这个问题在这里已经有答案了 可能的重复 使整个应用程序可以访问数据 可能在运行时发生变化 的最佳方法是什么 https stackoverflow com questions 11781131 best way to make data t
  • 如何在 Visual C++ 中创建 ActiveX DLL

    是否有在 Visual Studio 2008 C 中创建 ActiveX DLL 的教程 参考 我有一个使用 DLLRegisterServer UnregisterServer 构建的 DLL 并且已注册 但我在弄清楚使用什么名称来引用
  • Visual Studio 2013 设计器尝试加载错误版本的项目 DLL

    我的解决方案中有一个 Visual Studio 项目 它引用同一解决方案中的类库项目 该项目编译并执行得很好 但是 当我尝试在设计器中打开一个表单时 我收到一条消息 无法加载文件或程序集 MyLibName Version 1 0 547
  • 如何使用 DLL 来模拟静态库的“应用程序内全局变量的多个实例”行为?

    我们有一个用 C C 编写的应用程序 它被分解为单个 EXE 和多个 DLL 这些 DLL 中的每一个都使用相同的静态库 utilities lib 实用程序静态库中的任何全局变量实际上在应用程序内运行时都会有多个实例 每个模块 即 DLL
  • 如何在Java程序中调用DLL中的方法

    我正在尝试使用 JNA 调用 DLL 中的方法 到目前为止已经使用加载了DLL Runtime getRuntime load myworkspace test dll 该 dll 包含我需要访问的方法 如何在我的 Java 文件中执行 D
  • WPF 向我的 GUI 添加时钟

    简单请求 我希望能够在 WPF 应用程序窗口中显示当前时间 有免费的控件吗 只需要显示时间 没有别的 您可以有一个标签或文本块 并将其内容绑定到 System DateTime Now
  • 捕获由纯 C++ dll 中的 MFC 应用程序生成的 Windows 消息

    首先 这可能吗 我有一个与某些硬件接口的第三方 dll 它是用MFC编写的 我 从 dll 供应商处 收到了一个示例 Visual Studio 2010 解决方案 该解决方案只有一个项目 调用相关第三方 dll 的 MFC 应用程序 ex
  • 链接到大地址感知 DLL

    假设我有一个使用 LARGEADDRESSAWARE 链接器标志集构建的 DLL 现在我有一个动态链接到该 DLL 的应用程序 这是否会使我的应用程序具有大型地址意识 如果不是 那么为任何 DLL 设置此标志是否有意义 讨论here htt
  • 如何使用 java/vb 脚本调用自定义 ActiveX dll 中的方法

    我使用 VB6 创建了一个 ActiveX dll 并使用打包和部署向导将其打包 生成了一个 cab 文件和一个演示 HTML 页面 此 ActiveX dll 包含一个 simgle 方法 该方法返回字符串且不接受任何参数 我遇到的麻烦是
  • Powershell 调用程序集委托

    我有一个用于过程控制应用程序的 dll 程序集 我在我的内部使用 load电源外壳 script 该DLL包含我需要使用的委托类型 委托名称是 X Y Delegate 我在该 DLL 中有另一个方法 应该这样调用 Method deleg
  • 我如何在 Visual Studio 2012 中同时构建项目(dll 和 lib)

    我设法在 dll 模式和库模式下设置构建项目 但不能同时设置 对于构建在 dll 中 项目 gt 属性 gt 配置类型 动态库 dll 项目 gt 属性 gt 目标扩展名 dll 对于内置库 项目 gt 属性 gt 配置类型 静态库 lib
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更

随机推荐

  • RocketMQ消费者端消息列队六种负载均衡算法分析

    在RocketMQ启动的时候会启动负载均衡线程 过程如下 DefaultMQPullConsumerImpl start mQClientFactory start 上面点进去 gt MQClientInstance start rebal
  • 区间调度1.找到移除区间的最小数量

    求出最多有几个互不相交的区间 则做法是按end升序排序 选择一个结束最早的x 然后把区间中与它冲突的全部删除 别的区间的start要大于这个区间的end 接着重复步骤直到堆中没有区间 不用堆只用数组的话可以用一个for循环遍历整个数组 记录
  • 火猴之arc以及gesturemanager的应用(firemonkey)

    效果 目标 1 向左滑动 环形进度条从0 100 2 向右滑动 环形进度条从100 0 思路 1 放置3个arc组件 rotationangle设置为270 stroke的thickness设为30 2 放置gesturemanager组件
  • [Windows] 在磁盘管理中,脱机选项不可选,无法将磁盘脱机

    1 在磁盘管理中遇到无法脱机磁盘的情况 脱机选项不可选 可能是由于将虚拟内存设置到该磁盘上导致的 2 进入电脑属性 gt 高级系统设置 gt 高级 gt 性能设置 gt 高级 gt 更改 3 取消在该磁盘上设置的虚拟内存 4 再进入磁盘管理
  • Qt 智能指针

    C 11 标准中的提供的智能指针 在 Qt 中也提供了类似的替代功能 并且比 C 11 标准中提供的功能还要强大 所以如果我们使用 Qt 作为基础库 Qt 智能指针包括 QSharedPointer QScopedPointer QScop
  • 【react】js表达式和js语句(代码)的区别

    何为表达式 一定注意区分 js语句 代码 与 js表达式 1 表达式 一个表达式会产生一个值 可以放在任何一个需要值的地方 下面这些都是表达式 1 a 2 a b 3 demo 1 4 arr map 5 function test 2 语
  • Tomcat载入配置

    错误出现原因 未配置环境变量
  • (N1盒子) Openwrt 下 docker 容器访问互联网故障排除

    环境 硬件 N1盒子 Openwrt版本 openwrt flippy 60 o 情况描述 先是跑了个运行php的docker容器 日志里报错信息为 cURL error 7 Failed to connect to 域名 port 端口号
  • 《基于Linux物联网综合项目》常见问题汇总fae

    关于该课程说明 1 本课程目标 通过web浏览器访问服务器 实现登录 注册 数据库操作 远程操控硬件 采集环境信息 远程监控 拍照 图片显示等功能 将单片机 linux html 摄像头 数据库等知识点融入到一个项目中 2 什么群体适合学习
  • 自然语言处理卷积神经网络c 代码,卷积神经网络CNN 在自然语言处理中的应用

    序言 CNN在文本分类中取得了不俗的结果 而运用在这里的卷积可以分为1d 2d甚至是3d的 我们知道 CNN一般用来做图像 图像是可以通过预处理 将每幅照片都处理成一样的size的 也就是height和width具有一样的像素值 然后用一个
  • SPRINGBOOT学习记录

    SPRINGBOOT 1 入门 1 1 springBoot具体流程 1yaml 配置文件 2 自动装配 3集成web框架 4 集成数据库 5分布式开发 Dubbo rpc zookeeper 6 swagger 接口文档 7 任务调度 8
  • 图论--差分约束

    小引入 如果一个系统由n个变量和m个约束条件组成 形成如xi xj lt k ij 1 n 的不等式 则称其为查分约束系统 写成一个矩阵形式的不等式组的话则系数有且仅有一个1和一个 1 解这种不等式组为何会与图论扯上关系呢 在我们求解最短路
  • kindle刷机ttl_[原创]只需USB线对Kindle 3修砖的小白教程

    文章的最后有笔者用的电池测试方法和笔者在网盘上传的文件链接 正式开工 1 运行ATK 把i MX CPU设为iMX35 TO2 Device memory initial设为MDDR Host Setting设成USB 2 连接Kindle
  • WCF系列(五) -- 也谈序列化(下)

    1 DataContractSerializer支持的类型 2 1 1 用 DataContract 属性标记的类型 2 1 2 net 原生类型
  • 在Visual Studio 2017 中编写C#安装NuGet、使用元组特性的详细步骤

    主要是解决一下小白的迷茫 一 安装NuGet管理器 1 打开vs2017 打开 工具 扩展与更新 2 左侧目录点 联机 右上侧搜索栏输入 Nuget 搜索 3 下载NuPack NuGet Packager扩展 一次点击可能会下载不成功 那
  • 04_Qt信号与槽机制

    文章目录 一 信号和槽 1 1 Qt5的书写方式 1 1 1 处理子窗口的信号不带参数 1 1 2 处理子窗口的信号带参数 使用函数指针 1 2 Qt4的书写方式 1 3 Lambda表达式 匿名函数对象 二 自定义信号槽 2 1 信号 2
  • Linux学习之权限

    在学习Linux权限之前 我们先理解一下关于Linux内核与shell外壳之间的关系 shell命令以及运行原理 Linux严格意义上说的是一个操作系统 我们称之为 核心 kernel 但我们一般用户 不能直接使用kernel 而是通过ke
  • 室友打了一把端游,我入门了Vue

    快速入门Vue 多种选择器 class选择器 标签选择器 data数据对象 Vue 指令 设置标签的文本值 textContent 设置标签的innerHtml v html 为元素绑定事件 v on 根据表达式的真假 切换元素的显示和隐藏
  • 【Python基础】matplotlib字体设置看这一篇就够了

    本文示例文件已上传至我的Github仓库https github com CNFeffery DataScienceStudyNotes 1 简介 matplotlib作为数据可视化的利器 被广泛用于数据分析之中 但不太友好的是matplo
  • 全数字锁相环(DPLL)的原理简介以及verilog设计代码

    随着数字电路技术的发展 数字锁相环在调制解调 频率合成 FM 立体声解码 彩色副载波同步 图象处理等各个方面得到了广泛的应用 数字锁相环不仅吸收了数字电路可靠性高 体积小 价格低等优点 还解决了模拟锁相环的直流零点漂移 器件饱和及易受电源和