模拟集成电路设计系列博客——8.4.3 数控振荡器

news/2024/7/7 5:43:24/文章来源:https://www.cnblogs.com/sasasatori/p/18283411

8.4.3 数控振荡器

在之前的章节中,我们介绍了一种简单得基于LC振荡器得数控振荡器方式,通过开关控制谐振电路中的电容值实现数控频率方式。

另一种更直接的利用模拟PLL中的LC振荡器VCO的方式是直接通过DAC的方式将数字码转换成模拟量,然后对电容施加控制。值得一提的是这种压控电容一般通过MOS Varactor来实现[P. Andreani et. al. JSSC, 2000]。这样做的好处是DCO可以完全复用模拟PLL中设计好的VCO结构。

image

另一种相对开关直接控制接入电容的DCO的改进方式是采用类似DAC中的分段式架构,如下图所示,具体来说,通过粗控制码控制二进制权重的电容的接入,再通过细控制码控制单位电容的接入。二进制权重阵列在控制上简单,但缺少单调性,而单位电容阵列在控制上复杂,但具备单调性。在实际使用中,粗控制可以用于初始频率修调阶段,而后续的PLL反馈控制只调整细控制的部分。这样实现的DCO在频带范围和频率精度上可以实现一个好的权衡。

image

除了基于LC振荡器的DCO之外,基于环形振荡器的DCO也是一种重要的实现形式。一种直接的实现方式如下图所示,通过使用模拟PLL中环形振荡器VCO的基本结构,利用DAC产生控制电压从而调节单个延时单元的时间常数,进而控制总体的振荡频率;或者通过数字码控制电流源的接入数量,从而控制延时单元电流源大小,进而控制器时间常数和总体振荡频率。这样的好处是可以直接复用模拟PLL中较为成熟的环形振荡器VCO结构。但在先进工艺下,这种方式可能受到供电电压降低,以及PVT等因素的限制。

image

另一种方式是,直接控制接入延时单元的总数来调控总体的延时,进而调整振荡频率。如下图所示,由于\((8.2.1)\),我们知道振荡周期与延时单元数量成正比例。因此可以通过粗控制码直接选择串联的延时单元的数量。而通过并联多个延时单元,利用8.2.1章节中例题的小信号分析模型,负载电容并联\(C_{total}\)变为\(nC\),负载电阻\(R_{total}\)并联变为\(R/n\),但跨导变为\(nG_m\),其中\(n\)为并联延时单元的数量,因此在\(R_{total}C_{total}=RC\),并联后与单个延时单元相同的情况下,驱动能力增强了\(n\)倍,使得并联数量越大,驱动能力越强,延时越小。通过细粒控制码调节并联的接入数量,可以实现细粒度的延时调节。注意此处使用的延时单元均为三态缓冲器。另一种更直接的方式是直接将多个并联的延时单元结构进行串联,这样的好处是对于任一级的延时都可以进行调控,从而满足振荡器匹配时所需要的修调功能,但其所需要的控制码数量庞大,因此需要配合相对复杂的控制逻辑。

image

[Youngmin Park et. al., CICC, 2021]发表了一个65nm下完全使用数字单元综合的ADPLL。这个ADPLL是一个整数N PLL结构,在架构上与我们之前介绍的一样,主要是TDC,DLF,DCO,分频器等部件。但也存在一些额外的TDC和DCO校准电路。

image

在DCO的实现上,论文中的DCO主要使用了将并联延时单元进行串联组合的方案,共设计了五级,每级提供了64个三态缓冲器作为延时单元。由于论文采用的是全数字流程,因此版图上缓冲器被工具自动摆放,导致每级延时之间有较大的失配。为了能够细粒度的调控每级的延时,通过DCO控制器访问一个本地存储器,存储器中的存储单元数量与缓冲器数量一一对应。根据DLF的输出,并结合存储器中访存得到的结果,以及抖动电路产生的伪随机数(用于减小DCO的抖动噪声),来控制振荡器中每级缓冲器的开或关。如下图所示:

image

在TDC的实现上,论文中的架构采用了游标型TDC与基于振荡器型TDC的结合,实现一个基于DCO的游标型TDC。具体来说,论文使用了一个慢速DCO和一个快速DCO,通过慢速DCO以及粗计数器实现对相位差的低分辨率粗测量,而高分辨率的细粒度测量则利用了快速DCO与慢速DCO之间的频率差,如下图所示:

image

论文最终得到的ADPLL在65nm工艺下,可做到\(1.5-2.7GHz\)的输出频率范围,抖动的均方根控制在\(3.2ps\)

参考资料:

"All-Digital Frequency Synthesizer In Deep-Submicron CMOS", Staszewski et. al.

9. 全数字锁相环基本原理_哔哩哔哩_bilibili

Tutorial on Digital Phase-Locked Loops (cppsim.com)

An all-digital PLL synthesized from a digital standard cell library in 65nm CMOS | IEEE Conference Publication | IEEE Xplore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/738020.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 性能优化 -systrace

简介: Systrace允许监视和跟踪Android系统的行为(trace)。它会指明系统都在哪些工作上花费时间、CPU周期都用在哪里,甚至可以看到每个线程、进程在指定时间内都在干嘛。它同时还会突出观测到的问题,从垃圾回收到渲染内容都可能是问题对象,甚至提供建议的解决方案。但是不能…

故地重游

近来,种种原因让我总觉得对任何事都失去了兴趣,整个人犹如失去灵魂的躯壳一般。一切都在往前走,但我想更快一些却无能为力,比较稳定的环境也就注定了过程的时长,又没有改变当下的勇气,每每思量心猿四起,无法自拔。本诗在故地重游(初到京第一工作地)所做,一步步走在那…

pip安装问题记录

【问题1】 pip安装某第三方库的时候报错:metadata-generation-failed解决办法: 1、确保你的pip和setuptools是最新版本:pip install --upgrade pip setuptools 2. setuptools版本不适配,不能进行构建: pip install --upgrade setuptools==57.5.0

P2286 [HNOI2004] 宠物收养场 题解

P2286 [HNOI2004] 宠物收养场 题解 set 做法P2286 [HNOI2004] 宠物收养场 set做法 题链\(_{洛谷}\) \(_{题库}\) 思路 一眼查找前驱后继的题。注意到一句话:那么用 set 就没有什么阻碍了,方便又快捷。 题意很简单,若宠物多则查找与人需求最接近的上下两个值,人多则找与宠…

Dijkstra算法理解-无人机路径规划

1、理解 Dijkstra算法是路径规划算法中非常经典的一种算法,在很多地方都会用到,特别是在机器人的路径规划中,基本学习机器人运动相关的都会接触到该算法。 Dijkstra算法本身的原理是基于贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的…

Three.js

右手坐标系 //每秒转一圈 const clock = new THREE.Clock() function tick() {const time = clock.getElapsedTime()mesh.rotation.y = time * Math.PI * 2 //一秒转一圈renderer.render(scene, camera)window.requestAnimationFrame(tick) } tick()const client = {x: 0,y: 0 …

关于古书介绍上“单鱼尾”是什么?

在阅读一些古书时,读的往往时某些版本的综合刊定版,而介绍有关原版时,会出现这个词语“单鱼尾”或者双鱼尾,这是什么意思呢? 搜索发现,原来古书也不是一页页,单页的,而是双页印刷,然后中间折叠,装订成册的。而折叠的具体位置在哪呢?就由鱼尾型标志标明,显然鱼尾最凹…

数据特征采样在 MySQL 同步一致性校验中的实践

本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享。作者:vivo 互联网存储研发团队 - Shang Yongxing本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享。 一、背景 在 MySQL 的使用过…

什么是容器镜像?

镜像是容器的模板,容器运行需要借助镜像来装载环境。镜像描述了容器所需的运行时环境,我们以Docker镜像为例来了解镜像到底是什么。Docker镜像实际上是由一层一层的文件系统构成,这种层级的文件系统称为UnionFS。UnionFS文件系统是一种分层、轻量级并且高性能的文件系统,它…

字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析

在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介…

Avalonia应用在基于Linux的国产操作deepin上运行

本文介绍了Avalonia应用如何在基于Linux的国产操作deepin上运行。deepin系统介绍 deepin(原名Linux Deepin)致力于为全球用户提供美观易用,安全可靠的 Linux发行版。deepin项目于2008年发起,并在2009年发布了以 linux deepin为名称的第一个版本。2014年4月更名为 deepin,在中…

java中的测试片段和include控制器使用

1.作用 可复用,提高测试计划的可维护性和效率。 2.具体使用 2.1在jmeter中将写好的一组请求保存为测试片段,保存到一个jmx文件 2.2新建一个线程组,添加include控制器,选择刚刚保存的测试片段文件即可将刚刚的测试片段重用。

splay-前驱后继

在平衡树中,经常会让我们查一下一个值的前驱或后继是谁,写两个函数就非常麻烦好吧,所以这里咱们用一点小技巧来让他变 成一个函数(这里的前驱后继定义时包括与本身相等的值) 代码点击查看代码 int nxt(int k){if(!m[rt].size) return 0;int root=rt;while(k!=m[root].val&…

softlockup detector

1 简介 从内核稳定性问题的角度来看内核安全,是基础,也是必备技能。很多时候,一个内核稳定性问题,就是造成系统安全的罪魁祸首。 当出现异常死锁、Hang up、死机等问题时,watchdog的作用就很好的体现出来。Watchdog主要用于监测系统运行情况,一旦出现以上异常情况,就会重…

drduino串口通信中文乱码

​ 第一次使用 Arduino 板学习时,遇到了串口工具接收乱码的问题。 最初认为可能是数据位或停止位设置不正确。当前设置如下:波特率:9600 数据位:8 校验位:无 停止位:1在 Arduino 代码中使用 Serial.begin(9600) 进行初始化。 Serial.begin(9600):- 波特率:9600- 数据位…

合理利用符号,用负反馈解决正反馈系统

首先,系统框图:此处的Kyrg当成是1,aircraft的状态方程系数为:A=[-0.0558 -0.9968 0.0802 0.0415; 0.598 -0.115 -0.0318 0; -3.05 0.388 -0.4650 0; 0 0.0805 1 0]; B=[0.00729 -0.475 0.153 0]; C=[0 1 0 0]; D=0;使用函数ss2tf和tf求出系统的传递函数为:sysGs =-0.475 …

若依框架前端表格自适应

1. 背景 问题描述: 如图,若依前端表格高度都是固定写死的,因此会出现底部空一部分,现在希望自适应表格,使得表格一屏展示,且在隐藏查询条件等操作,导致屏幕大小变化时,表格可以同步自适应。问题现状:很多时候,前端开发都是尽可能本机调整到刚刚好的高度,但不同用户不…

CentOS 7 升级 OpenSSH 9.8p1

背景 OpenSSH 官方发布安全通告,披露CVE-2024-6387 OpenSSH Server远程代码执行漏洞。 环境操作系统 内核 openssh 版本 openssl 版本7.8.2003 3.10.0-1127 7.4p1 1.0.2k-fips安装编译软件和下载 OpenSSH9.8p1 软件包 mkdir -p /data/software cd /data/software/yum install…

ComfyUI基础篇:为什么要学 ComfyUI?

前言:在AI生成图像领域,有许多产品,例如 Midjourney 和 Stability AI 等。为什么要学习 ComfyUI 呢?我斗胆带大家一起分析一下。目录1.Midjourney VS Stable Diffusion2.SD Web UI VS ComfyUI3.总结Midjourney VS Stable Diffusion在回答这个问题之前,我觉得有必要介绍下目…

功能齐全!一套基于AGPL3开源协议开源的智慧物业社区系统!!

ejyy —— 一套开源的智慧物业解决方案。实现了微信公众号、小程序、PC、H5、智能硬件多端打通,旨在提升物业公司效率、规范物业服务流程、提升物业服务满意度、加强小区智慧化建设、便捷业主服务。大家好,我是 Java陈序员。 今天,给大家介绍一套开源的物业社区管理系统,涵…