Pipelined-ADC设计二——结构指标及非理想因素(Part2)
接上文,本章将两个比较重要的非理想因素,因此各项指标制定。后续会对常见的非理想因素给出常见的解决方法,以及设计所采用的方法。
2.2.7. 比较器失调
在流水线 ADC 中,比较器的主要误差来源就是比较器失调,称为失调误差(Offset Error)。比较器失调通常由工艺偏差和交叉耦合导致的不对称所导致,所以几乎无法避免。失调误差会使得比较器比较电平发生偏移,有可能会导致误码,甚至丢码。泛采用冗余校准技术,这大大降低了对比较器失调误差的要求,但仍需使失调误差在校准允许的范围内,同时也要保证比较器的工作速度。
比较器的输入失调电压通常在几十至几百毫伏之间,因此其对子 ADC 整体输出结果产生的影响是不容小觑的。当前解决比较器输入失调电压过大的方法普遍是在前级加入放大器,虽然加入前置比较器会引入更大的功耗,但是对于流水线 ADC 来说,对于 ADC 的位数要求并不高,通常不会超过 4 位,因此加入前置放大器是一个比较合适的方案,既可以降低比较器的输入失调电压,并且也可以作为隔离消除噪声。
发生比较器阈值电压误差的 1.5bit MDAC 传输曲线如图所示,实线表示理想情况,虚线表示误差下的情况。

图 18 存在比较器阈值电压误差的MDAC传输曲线
数字校正算法的分析,这种算法对于比较器的失调电压提供了更加宽松的设计要求。假设一个比较器失调电压为 Vos,如图所示:

图 19 比较器示意图
以 1.5 位子级为例,第 i 级的参考电平设为-1/4Vref 与+1/4Vref,即 Vr1=-1/4Vref,Vr2=+1/4Vref。实际的比较器在应用中,必然存在失调电压 Vos,这里将比较器的误差用参考电平误差来表示,即 Vr1=-1/4Vref+Vos1,Vr2=+1/4Vref+Vos1,当 Vr,i满足式:

此时该级出现的量化误差即为+1 或-1,输出的余量误差可以表示为-Vref或+Vref。如果 Vr,i不在上述范围,该级将不会产生上述误差。
下面详细推导数字校正算法中如何消除比较器的失调,对于第 i 级,假设输入:
![]()
当第 i+1 级为理想比较器时,该级所的到得量化值 Di+1*=2 余量为:


可得出:


综上所述可以得出当流水线采用 1.5 位的子级模块,将比较器的失调电压等效到参考电平的误差,只要该误差值满足一定条件,通过数字校正算法可以进行消除。在电路设计过程中,只要保证比较器失调电压在一定范围内,就不会导致 ADC 量化结果产生误差。
如图所示,如果 |Vos|>1/4*Vref ,该级的余量会超出下一级比较器的量化范围,所以为了不产生量化结果的误差,比较器失调电压必须满足 |Vos|<1/4*Vref 。

图 20 1.5 位子级失调电压示意图
上述推导过程为 1.5 位子级的比较器需要满足的失调电压要求,同理可以推导出本设计采用的 2.5 位子级中对于比较器失调电压的指标要求为:
![]()
2.2.8. 放大器误差
由于实际运放的直流增益以及带宽均为有限值。对于一个运放的闭环系统,运放的直流增益决定了该反馈系统的输出精度,带宽则决定了运放的建立时间,输出要在规定时间内完整建立信号。实际的运放不可能做到理想情况,增益和带宽是有限的,则会造成电路中存在误差。运放的性能决定了 MDAC 电路的性能。
在非理想情况下,运算放大器的增益、带宽以及摆幅都是有限的,还会有失调和噪声,在考虑这些非理想因素的情况下,设 A 为运算放大器开环增益,Vos 为运放输出失调电压,Vn为运放输出总噪声,β 为反馈系数,由运算放大器工作原理可得:

上式中划线部分是理想的输出。其中静态误差和动态误差分别为:

静态误差主要由于运放的开环增益 A 有限而引起的,动态误差则是源于有限的运放带宽。对于 MDAC 电路而言,要想输出精度满足设计指标,要求两种误差之和小于系统总误差。
(1)静态建立误差
对于一个闭环系统,假设运放的直流增益为 A,闭环系统的反馈系数为 β。其传输函数可以表示为:

该闭环系统的误差为:

对于本课题中采样保持电路和 MDAC 中的运放,Aβ 远大于 1。同时,由于电路在满摆幅 VFS 时有最大的误差,且 VFS=1V。所以,由运放有限增益带来的误差近似为:
![]()
对于流水线 ADC,为了设计时留有裕量,一般要求误差绝对值小于剩余精度的 1/4LSB,即:

对于流水线不同子级,根据电路结构以及流水线架构,存在不同的 β 值和 N。其中采样保持电路反馈系数 β 为 1/2,在流水线子级的 MDAC 中,反馈系数则为 1/4。由于每一级都会有部分数字码完成转换,所以越靠后的子级,需要达到的精度越低。对于本设计的流水线结构,每级有两位二进制码完成转换,每一级 N 的值减小 2。由此可以计算出每一级所使用的运放所需要的直流增益。
下图为有限增益下 1.5bit MDAC 传输函数曲线,可见实际曲线斜率略小于理想情况。

图 21 运放有限增益误差下的MDAC输出
下图是考虑到运放增益非线性影响下的 1.5bit MDAC 的输出曲线。当运放第 二级的差分输出为 0,即 2 个输出端电平为VCM时,运放开环增益最大;输出越偏离 VCM,开环增益越低。表现为 MDAC 输出曲线越偏离 0,其斜率越低。考虑到为了降 低增益非线性的影响,应该减小第二级输出管的过驱动电压,避免满摆幅输出时第二 级输出管接近线性区引起增益大幅下降。

图 22 运放增益非线性下的MDAC输出
(2)动态建立误差
通常来说 MDAC 的工作过程中离不开对电容的充放电过程,然而电荷的存储和 泄放均需要时间,这也使得电容极板电位不可能产生突变,必然是一个缓慢变化的过程,从变化开始到电平稳定需要一定的建立时间。但流水线 ADC 受到时钟的控制,这就要求其需要在有限的时间周期内完成信号建立,因此该建立时间同时钟周期的相互制约便引入了有限建立误差。

图 23 输出建立不完全下MDAC传输曲线
在流水线 ADC 中,运放的输出信号要在给定的时钟下完成信号建立。运放的有限带宽也会影响到输出信号的建立,这种误差叫做不完全建立误差。当输入为一个大的阶跃信号,输出信号的建立可以分为两个过程,即大信号建立和小信号建立。其中小信号建立与运放的增益带宽有关,大信号建立则与运放的摆率有关。信号的建立过程如图所示:

图 24 运放建立过程示意图
其中 t1、t2 分别为大信号建立时间(和压摆率SR有关)和小信号建立时间(和带宽有关),通常情况下,小信号建立时间更长,这里假设 t1 与 t2 的比为 1:3,运放的总建立时间为 t。为了满足建立精度,输出要在时钟信号的半周期内(t =Ts / 2)完成建立。
a. 大信号建立
在 MDAC 工作过程中,运放首先进入大信号工作状态,建立起静态工作点,然后开始小信号放大。大信号建立的速度主要取决于压摆率(Slew Rate)的大小,一般来说大信号建立时间应小于 T/3,但实际上为了小信号的稳定,大信号建立时间应该越小越好,带宽的大小决定了小信号建立的速度。将 MDAC 中的运放视为一个单极点系统,其压摆率为:
![]()
其中 CL是运放总负载电容,Is 是输出电流,由此可见,电流越大、负载电容越小,运放的压摆率越大,其大信号建立时间也更短。
(对于大信号压摆率,根据网上搜罗的,如果采用二级运放的话,压摆率如下,总之就是电流要大,电容要小)

b. 小信号建立
由有限带宽导致的小信号建立误差同样可以由此单极点系统来近似,在只考虑运放带宽非理想因素的情况下,其传输函数为:

其中 Vout,id 是理想输出,ts 为小信号建立时间,一般要求 ts 小于时钟周期的一半,但实际上,为了后级流水级能够较好的采样到准确的输出信号,ts 越小越好,通常取 ts<1/3T,τ 是建立时间常数,它是运放闭环单位增益带宽 βωu 的倒数,ωu 是运放开环带宽。
则系统的建立误差可以表示为:
![]()

ω-3dB为系统的-3dB 带宽,fu 为运放单位增益带宽。为了满足 ADC 精度要求以及留出设计裕量,小信号建立误差要求小于 1/4LSB,假设小信号建立完成需要的时间为 tset,则有:

VFS为 1V,N 为该子级需要达到的精度。由此可以得出,时常数 τ 应该满足式:
![]()
进而推导出运放的单位增益带宽应该满足:

(注意这里的VFS为1V,若范围有变的话,带宽要求是不一样的)
从上述分析中可以看出,运放小信号建立的过程中,输出信号之中多了一个指数项,运放闭环单位增益带宽越大,达到相应精度所需的时间越少,建立误差越小,但带宽越大也会带来更多的功耗和噪声,需要依据实际需求进行折中。
还需要注意的是,这个单位增益带宽是以假设运放是单级点系统计算得出的,实际运放由于次级点,第三极点等影响,单位增益带宽会变低,而运放工作时始终是闭环状态,因此只用保证运放的闭环带宽达到要求,对单位增益带宽的设计可放松要求,以减小设计难度以及运放的功耗。
====未完待续====
2.3. 指标初定
2.3.1. 采样电容大小
(1)考虑电容失配
前文说到,为满足 ADC 转换精度要求,由电容失配造成的误差一般要小于 1/2LSB,式中中 k 为工艺参数,WL 为电容的面积。由此可以计算出最小的电容面积,从而确定电容值。

根据TSMC180工艺文件,MIM电容失配的曲线如下图所示,得出上式中k=2.51。按照工艺文件,达到12位精度需要大约50pF的电容,这是不可能实现的。因此采样电容的选择主要由热噪声来决定,对于电容失配通过版图优化。也可以做失配校准。

图 25 PDK MIM电容失配
(2)考虑热噪声
根据上文,本设计流水线ADC的总的噪声功率为6.67*KT/C,则采样电容需要满足,总的噪声小于量化噪声:

采样电容 C 的取值至少为 5.5pF。由此可以初步确定各级的采样电容的值,后级每级电容值以倍数关系缩减,要注意的是,实际电路中,当电容值缩减到与运放输入端寄生电容相当时,由于寄生电容的影响不可忽略,所以电容值将不再缩减。同时,实际电路中更大的缩减倍数数意味着后级电路的功耗降低,但是噪声的贡献更大,对于给定的总噪声,前级的噪声需要更低,电容值就需要更大,功耗也随之上升。所以缩减的比例系数可以看作是在噪声与功耗之间的折衷设计,该系数的值需要通过仿真仔细模拟,使电路总噪声在满足量化噪声要求的情况下保持较低的功耗。
2.3.2. 放大器指标
本设计12位50Mhz的Pipelined,放大器工作时间只有1/2*Ts(10ns),这其中要给Sub-ADC和非交叠时钟预留部分时间,实际工作周期假设只有7~8 ns(按8ns算),其中放大器的工作时间,1/3的时间用于大信号建立(SR),2/3的时间用于小信号建立(BW)。根据公式:
静态建立:


动态建立:




根据公式,计算出各级放大器指标如下表。其中,采样频率为50Mhz,放大器工作时间为10ns,考虑到Sub-ADC延迟以及非交叠时钟时间,假设放大器实际工作时间为8ns,其中3/4用来大信号建立,3/4用来小信号建立。
表 1 各级放大器指标初定
| 子级 | 反馈系数 | 输出精度 | 设计精度 | 开环增益 | 0dB带宽 | 12dB带宽 | 压摆率 | 采样电容 | 等效负载 |
| SHA | 1/2 | 12bit | 14bit | 90dB | 550Mhz | \ | 500V/us | 4or5pF | 8pF |
| MDAC1 | 1/4 | 10bit | 12bit | 85dB | 900Mhz | 225Mhz | \ | 4pF | 4pF |
| MDAC2 | 1/4 | 8bit | 10bit | 72dB | 750Mhz | 200Mhz | \ | 2pF | 2pF |
| MDAC3 | 1/4 | 6bit | 8bit | 60dB | 600Mhz | 150Mhz | \ | 1pF | 2pF |
| MDAC4 | 1/4 | 4bit | 6bit | 50dB | 450Mhz | 150Mhz | \ | 1pF | 2pF |
| MDAC5 | 1/4 | 2bit | 4bit | 36dB | 300Mhz | 75Mhz | \ | 1pF | 2pF |
实际设计过程中,最起码需要满足上表指标,并留有余量。其中为了简化设计,对于SHA以及每级MDAC的放大器,不用每一级都单独设计,根据需要可以进行复用。
2.3.3. 比较器指标
应用于流水线ADC中的比较器,由于存在流水线级间冗余,根据数字校正算法,对于失调的要求大大放宽,对于噪声的要求也没有那么严苛,但是对于传输延迟和功耗提出了一定的要求。
表 2 比较器指标初定
| 设计参数 | 要求 |
| 差分输入摆幅 | 2Vpp |
| 失调电压3σ | < 62.5mV |
| 传输延时 | < 1ns |
| 等效输入噪声 | < 2mV |
| 误码率 | < 10e-14 |
====未完待续====
至此,影响流水线ADC(Pipelined ADC)性能的各种主要的非理想因素带来的影响介绍完毕,初步制定了个流水线子级模块的指标。
下一步会分模块介绍。会介绍各个模块常用的结构以及工作原理。并给出本设计各个模块所采用的电路结构。
接着会在Cadence中进行电路搭建和仿真。(工作量限制,只会考虑 Typical case,不会进行PVT仿真以及MC仿真)
有能力的话,会进行版图的学习,对部分版图进行绘制,做做DRC和LVS。不过能力有限,不会进行后仿。
会整理一份完整的报告教程,包括各种介绍,原理及仿真等,博客就是摘自撰写的报告内容。电路设计和报告到时候都会放出来。
尽量也出一份MATLAB建模。
研究方向为:Pipeline-SAR ADC with NoiseShaping,有同方向大佬可以交流一下。
相关文章:
Pipelined-ADC设计二——结构指标及非理想因素(Part2)
接上文,本章将两个比较重要的非理想因素,因此各项指标制定。后续会对常见的非理想因素给出常见的解决方法,以及设计所采用的方法。 2.2.7. 比较器失调 在流水线 ADC 中,比较器的主要误差来源就是比较器失调,称为失调误…...
Ubuntu 常用命令之 clear 命令用法介绍
📑Linux/Ubuntu 常用命令归类整理 clear命令在Ubuntu系统下用于清除终端屏幕的内容。这个命令没有任何参数,它的主要作用就是清理终端屏幕上的所有信息,使得屏幕看起来像是新打开的一样。 使用clear命令非常简单,只需要在终端中…...
【JAVA面试题】什么是对象锁?什么是类锁?
🍎 个人博客 :个 人 主 页 🏆个人专栏:多线程JAVA ⛳️ 功 不 唐 捐 ,玉 汝 于 成 目录 前言 回答 对象锁(Object Lock): 类锁(Class Lock)࿱…...
飞天使-k8s知识点5-kubernetes基础名词扫盲
文章目录 deploymentspodNodeserviceskubectl 实现应用伸缩kubectl 实现滚动更新kubernetes架构 deployments 中文文档 http://docs.kubernetes.org.cn/251.htmldeployment是用来创建和更新应用的,master 会负责将创建好的应用实例调度到集群中的各个节点 应用实例…...
【视觉实践】使用Mediapipe进行目标检测:杯子检测和椅子检测实践
目录 1 Mediapipe 2 Solutions 3 安装mediapipe 4 实践 1 Mediapipe Mediapipe是google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning,ML)方案。MediaPipe是一个用于构建机器学习管道</...
C++之深拷贝进阶
目录 拷贝构造函数的深拷贝进阶版本 赋值运算符重载的深拷贝进阶 总结 上期我们学习了C中深拷贝的传统版本,今天我们将学习更为高效的版本。 拷贝构造函数的深拷贝进阶版本 传统版本代码如下: string(string& s):_str(new char[strlen(s._str)…...
导行电磁波从纵向场分量求其他方向分量的矩阵表示
导行电磁波从纵向场分量求解其他方向分量的矩阵表示 导行电磁波传播的特点 电磁波在均匀、线性、各向同性的空间中沿着 z z z轴传播,可用分离变量法将时间轴、 z z z轴与 x , y x,y x,y轴分离,电磁波的形式可表示为: E ⃗ E ⃗ ( x , y )…...
融资项目——swagger2的注解
1. ApiModel与ApiModelProperty(在实体类中使用) 如上图,ApiModel加在实体类上方,用于整体描述实体类。ApiModelProperty(value"xxx",example"xxx")放于每个属性上方,用于对属性进行描述。swagger2网页上的效果如下图&am…...
【性能优化】MySql数据库查询优化方案
阅读本文你的收获 了解系统运行效率提升的整体解决思路和方向学会MySQl中进行数据库查询优化的步骤学会看慢查询、执行计划、进行性能分析、调优 一、问题:如果你的系统运行很慢,你有什么解决方案? 关于这个问题,我们通常首先…...
Chrome浏览器http自动跳https问题
现象: Chrome浏览器访问http页面时有时会自动跳转https,导致一些问题。比如: 开发阶段访问dev环境网址跳https,后端还是http,导致接口跨域。 复现: 先访问http网址,再改成https访问…...
【C++进阶02】多态
一、多态的概念及定义 1.1 多态的概念 多态简单来说就是多种形态 同一个行为,不同对象去完成时 会产生出不同的状态 多态分为静态多态和动态多态 静态多态指的是编译时 在程序编译期间确定了程序的行为 比如:函数重载 动态多态指的是运行时 在程序运行…...
PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)
十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想php8时代会不会有所变化,结果其实也还是和当年一样,但当年没写博客,但现在可以把数据记录下来了。 PHP_loop_ireflies_dark_forest 项目…...
【Seata源码学习 】 扫描@GlobalTransaction注解 篇一
1. SeataAutoConfiguration 自动配置类的加载 基于SpringBoot的starter机制,在应用上下文启动时,会加载SeataAutoConfiguration自动配置类 # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfigurationio.seata.spring.boot.aut…...
DBA-MySql面试问题及答案-上
文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎?6.可以针对表设置引擎吗?如何设置?6.选择合适的存储引擎?7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…...
网络爬虫之Ajax动态数据采集
动态数据采集 规则 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面教据,但是使用 requests 得到的结果并没有,这是因为requests 获取的都是原始的 HTML 文档…...
c语言的初始学习(练习)
##初学c语言---MOOC浙江大学翁恺先生学习c语言 那么我们先看看这个题目吧,这是初始语法的应用。 记住,我们的程序是按步骤执行的,并不是在不同的两行同时进行。 程序设计:1.了解题目的需要,几个变量需要用到&#x…...
研究论文 2022-Oncoimmunology:AI+癌RNA-seq数据 识别细胞景观
Wang, Xin, et al. "Deep learning using bulk RNA-seq data expands cell landscape identification in tumor microenvironment." Oncoimmunology 11.1 (2022): 2043662. https://www.tandfonline.com/doi/full/10.1080/2162402X.2022.2043662 被引次数࿱…...
ChatGPT4与ArcGIS Pro3助力AI 地理空间分析和可视化及助力科研论文写作
在地学领域,ArcGIS几乎成为了每位科研工作者作图、数据分析的必备工具,而ArcGIS Pro3除了良好地继承了ArcMap强大的数据管理、制图、空间分析等能力,还具有二三维融合、大数据、矢量切片制作及发布、任务工作流、时空立方体等特色功能&#x…...
okhttp系列-一些上限值
1.正在执行的任务数量最大值是64 异步请求放入readyAsyncCalls后,遍历readyAsyncCalls取出任务去执行的时候,如果发现runningAsyncCalls的数量大于等于64,就不从readyAsyncCalls取出任务执行。 public final class Dispatcher {private int …...
C++面向对象(OOP)编程-STL详解(vector)
本文主要介绍STL六大组件,并主要介绍一些容器的使用。 目录 1 泛型编程 2 CSTL 3 STL 六大组件 4 容器 4.1 顺序性容器 4.1.1 顺序性容器的使用场景 4.2 关联式容器 4.2.1 关联式容器的使用场景 4.3 容器适配器 4.3.1 容器适配器的使用场景 5 具体容器的…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
