7.2.2 每阶段1.5-bit流水线ADC

在每一级中增加一个比较器可以形成每级1.5比特架构,如下图所示[Lewis, 1992]:

每一级对输入进行一个三级量化:

\[V_{i,x}=(b_{i,0}-0.5)\frac{V_{ref}}{4}+(b_{i,1}-0.5)\frac{V_{ref}}{4}=(b_{i,0}+b_{i,1}-1)\frac{V_{ref}}{4} \tag{7.2.6}
\]

这个结果将会从输入上减去然后放大两倍形成残差\(V_{i+1}\)。上面的方程展示了\(b_{i,0}\)和\(b_{i,1}\)对残差贡献了\(\pm V_{ref}/4\),因此他们以共同的权重决定了转换器的数字输出。最后一级仍然是两比特ADC,因为不需要再产生残差。假定最后一级有着两比特输出,MSB和LSB分别为\(b_{N-1,1}\)和\(b_{N-1,0}\),最终量化的信号为:

\[V_{in}=\frac{V_{ref}}{2}(\sum_{i=1}^{N-2}(b_{i,0}+b_{i,1}-1)2^{-i}+b_{N-1,1}2^{N-2}+b_{N-1,0}2^{N-2}) \tag{7.2.7}
\]

每一级的输出比特通过以对应的二进制权重相加获得最终的数字码。当然,在进行相加之前,每一级的输出需要通过可变长度移位寄存器进行延迟来重新对齐比特,如下图所示:

尽管每级1.5比特架构增加了一些冗余的数字解码逻辑,它使得ADC对于比较器偏差变得更加鲁棒。假设一个随机的比较器偏差\(\varepsilon_0\)和\(\varepsilon_1\)出现在流水线级的输入输出关系上(如上上图中(b)所示)。显然偏移会对于输入电平\(V_{i,x}\)引入一个\(\pm V_{ref}/4\)的误差,并反映在\(b_{i,0}\)和\(b_{i,1}\)上。他们同样会对\(V_{i+1}\)引入一个\(\pm V_{ref}/2\)的误差,并通过流水线的下一级的输出比特捕捉。但所有的比特通过解码器(7.2.7)组合时错误可以得到抵消,只要\(|\varepsilon_{0,1}|<V_{ref}/4\)使得残差结果保持在\(\pm V_{ref}/2\)的范围内。总而言之,每个1.5比特级中的比较器偏移通过下一级来消除,只有最后一级中的偏移是没有消除的。幸运的是,这样偏移只会影响ADC的最后两位LSB,因此在设计每级1.5比特ADC时只有很小的限制。

MDAC中引入的误差整体上限制了流水线ADC的性能。例如,DAC的\(\pm V_{ref}/4\)失配误差,不精确性会进入两倍增益,还有MDAC的热噪声会出现残差\(V_{i+1}\),但不会影响比较器输出\(b_{i,0}\)和\(b_{i,1}\),因此无法被抵消。这些错误的影响在流水线输入的第一级最大,因为在第一级他们影响的是ADC的MSB。因此,第一级往往被设计的最大,并且相比后级消耗更多的功耗从而最小化其失配与噪声。

例题:

考虑一个3比特,每级1.5比特的流水线转换器,取\(V_{ref}=1V\),\(V_{in}=150mV\)。求残差电压\(V_2\),每一级输出的数字码,以及最终解码后的数字码输出。然后在假设第一级上比较器有\(30mV\)偏移的情况下再重新做一次计算。

解答:

假设没有比较器偏移,第一级数字码输出为\(b_{1,1}=1\),\(b_{1,0}=1\),且DAC输出为\(V_{1,x}=V_{ref}/4=250mV\),残差为:

\[V_2=2(V_1-V_{1,x})=-200mV \tag{7.2.8}
\]

这个结果输入下一级,一个2比特ADC的完整范围是\(\pm V_{ref}/2=\pm 500mV\)。二进制输出为\((01)_2\)。因此整个解码器的输出为:

\[b_{1,1}: 1 \\
b_{1,0}: 1 \\
b_{2,1}b_{2,0}: 01 \\
b_1b_2b_3=101
\]

接下来考虑如果第一级的上比较器有着\(30mV\)误差,导致其产生输出误差\(b_{1,1}=0\),作为结果\(V_{1,x}=0\),残差变为:

\[V_x=300mV \tag{7.2.9}
\]

第二个两比特ADC的输出值因此变成\((11)_2\),从而解码器输入变成了:

\[b_{1,1}: 0 \\
b_{1,0}: 1 \\
b_{2,1}b_{2,0}: 11 \\
b_1b_2b_3=101
\]

第一级的误差会被第二级捕捉,从而使得解码器的输出与理想情况保持一致。

一种常见的1.5比特流水级的实现如下图所示[Sutarja, 1988]:

在大部分高性能应用中会使用全差分的实现方式。在第一个时钟周期,输入\(V_i\)被采样在总电容\(2C\)上,如上图(a)所示。然后在第二个时钟,如图(b)所示,一半的总电容切换为反馈电容,通过复用采样电容来实现一个反馈系数\(\beta=1/2\),从而实现二倍增益。在传统的开关电容增益级,一个独立的反馈电容\(C\)额外加在\(2C\)的输入采样电容,导致更低的反馈稀疏\(\beta=1/3\),因此闭环带宽更低,导致最大时钟频率更低。

另一半的采样电容被分成两个\(C/2\)电容并被重用为一个电荷重分布DAC,在第二个时钟相位中,如上图(b)所示,1.5比特码\(b_{i,1}\)和\(b_{i,0}\)作为数字码输入DAC中,并对输入\(V_{i+1}\)产生\(\pm V_{ref}/2\)或者0的改变。

模拟集成电路设计系列博客——7.2.2 每阶段1.5-bit流水线ADC的更多相关文章

  1. Flutter 即学即用系列博客——03 在旧有项目引入 Flutter

    前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...

  2. Django 系列博客(七)

    Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 ...

  3. Django 系列博客(一)

    Django 系列博客(一) 前言 学习了 python 这么久,终于到了Django 框架.这可以说是 python 名气最大的web 框架了,那么从今天开始会开始从 Django框架的安装到使用一 ...

  4. ARM的体系结构与编程系列博客——ARM处理器系列介绍

    ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...

  5. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

  6. Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget

    前言 上一篇我们对 Flutter UI 有了一个基本的了解. 这一篇我们通过自定义 Widget 来了解下如何写一个 Widget? 然而 Widget 有两个,StatelessWidget 和 ...

  7. Flutter 即学即用系列博客——04 Flutter UI 初窥

    前面三篇可以算是一个小小的里程碑. 主要是介绍了 Flutter 环境的搭建.如何创建 Flutter 项目以及如何在旧有 Android 项目引入 Flutter. 这一篇我们来学习下 Flutte ...

  8. Flutter 即学即用系列博客——09 MethodChannel 实现原生与 Flutter 通信(二)

    前言 上一篇我们讲解了如何通过 EventChannel 实现 Android -> Flutter 的通信. 并且也看到了 Flutter 内部 EventChannel 源码也是对 Meth ...

  9. Flutter 即学即用系列博客——09 EventChannel 实现原生与 Flutter 通信(一)

    前言 紧接着上一篇,这一篇我们讲一下原生怎么给 Flutter 发信号,即原生-> Flutter 还是通过 Flutter 官网的 Example 来讲解. 案例 接着上一次,这一次我们让原生 ...

  10. Flutter 即学即用系列博客——08 MethodChannel 实现 Flutter 与原生通信

    背景 前面我们讲了很多 Flutter 相关的知识点,但是我们并没有介绍怎样实现 Flutter 与原生的通信. 比如我在 Flutter UI 上面点击了一个按钮,我希望原生做一些处理,那么原生怎么 ...

随机推荐

  1. SciTech-BigDataAIML-LangChain 完整指南:使用大语言模型构建强大的应用程序 + Cursor AI Editor(用AI驱动的IDE与代码编辑器) + ComfyUI(视频音频领域的AI Workflow LLM) + Cursor

    可以先在github上研究一下: livetalking, 数字人的直播系统: metahuman-stream 已经有的成功案例:https://www.bilibili.com/video/BV1 ...

  2. 神奇的LLVM与llvmlite之JIT编译。

    https://releases.llvm.org/11.0.0/docs/LangRef.html llvmlite Documentation, Release 0.41.0dev0-64-gbb ...

  3. SciTech-Mathmatics-Analysis-Infinite Series+Limit: 无穷级数+极限: $\large e = \lim{(1+\frac{1}{n})^n}$

    SciTech-Mathmatics-Analysis Infinite Series: 无穷级数 Limit: 极限: \(\large e = \underset{n \rightarrow \i ...

  4. SciTech-BigDataAIML-TensorFlow-Model模型的 建立与训练 与 Layer层的inputs/outputs参数可自适应训练建模(投入产出)

    TensorFlow 模型建立与训练 TensorFlow 模型建立与训练 本章介绍如何使用 TensorFlow 快速搭建动态模型. 模型的构建: tf.keras.Model 和 tf.keras ...

  5. SpringBoot集成测试笔记:缩小测试范围、提高测试效率

    背景 在 SpringBoot 中,除了基于 Mock 的单元测试,往往还需要执行几个模块组合的集成测试.一种简单的方法就是在测试类上加入 @SpringBootTest 注解,但是,如果不对该注解做 ...

  6. mysql中利用sql语句修改字段名称,字段长度等操作--九五小庞

    在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...

  7. 电脑安装Win11专业版出现卡住不动的问题

    有很多深度官网的用户都想安装体验win11系统,但是因为win11专业版对系统配置有挺高的要求!这不有一位用户在安装win11系统的时候,就遇到了电脑安装时出现卡死不动的问题,接下来,深度技术系统小编 ...

  8. mysql的存储引擎选择

    (1) InnoDB : 是Mysql的默认存储引擎,支持事务.外键.如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新.删除操作,那么I ...

  9. 一名ICer的博客开帖记录

    前言 看园子内容已有3-4年之久,虽然对于一名ICer来说,园子内容偏少.但是仍然"咸鱼IC"等一众大佬的优质好文,让我知道这是我未来学习技术的一个好地方.也在我心中埋下了一个未来 ...

  10. 【x86】DRAM、SRAM、DDR、FLASH、双通道的概念科普

    内存的DRAM.SRAM 在学习数电的时候就学习过,RAM分为两大类,有DRAM(Dynamic RAM).SRAM(Static RAM),在装机器的时候也经常会听到DDR3 DDR4 DDR5等概 ...