模拟集成电路设计系列博客——7.2.2 每阶段1.5-bit流水线ADC
7.2.2 每阶段1.5-bit流水线ADC
在每一级中增加一个比较器可以形成每级1.5比特架构,如下图所示[Lewis, 1992]:

每一级对输入进行一个三级量化:
\]
这个结果将会从输入上减去然后放大两倍形成残差\(V_{i+1}\)。上面的方程展示了\(b_{i,0}\)和\(b_{i,1}\)对残差贡献了\(\pm V_{ref}/4\),因此他们以共同的权重决定了转换器的数字输出。最后一级仍然是两比特ADC,因为不需要再产生残差。假定最后一级有着两比特输出,MSB和LSB分别为\(b_{N-1,1}\)和\(b_{N-1,0}\),最终量化的信号为:
\]
每一级的输出比特通过以对应的二进制权重相加获得最终的数字码。当然,在进行相加之前,每一级的输出需要通过可变长度移位寄存器进行延迟来重新对齐比特,如下图所示:

尽管每级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\),残差为:
\]
这个结果输入下一级,一个2比特ADC的完整范围是\(\pm V_{ref}/2=\pm 500mV\)。二进制输出为\((01)_2\)。因此整个解码器的输出为:
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\),残差变为:
\]
第二个两比特ADC的输出值因此变成\((11)_2\),从而解码器输入变成了:
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的更多相关文章
- Flutter 即学即用系列博客——03 在旧有项目引入 Flutter
前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...
- Django 系列博客(七)
Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 ...
- Django 系列博客(一)
Django 系列博客(一) 前言 学习了 python 这么久,终于到了Django 框架.这可以说是 python 名气最大的web 框架了,那么从今天开始会开始从 Django框架的安装到使用一 ...
- ARM的体系结构与编程系列博客——ARM处理器系列介绍
ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
- Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget
前言 上一篇我们对 Flutter UI 有了一个基本的了解. 这一篇我们通过自定义 Widget 来了解下如何写一个 Widget? 然而 Widget 有两个,StatelessWidget 和 ...
- Flutter 即学即用系列博客——04 Flutter UI 初窥
前面三篇可以算是一个小小的里程碑. 主要是介绍了 Flutter 环境的搭建.如何创建 Flutter 项目以及如何在旧有 Android 项目引入 Flutter. 这一篇我们来学习下 Flutte ...
- Flutter 即学即用系列博客——09 MethodChannel 实现原生与 Flutter 通信(二)
前言 上一篇我们讲解了如何通过 EventChannel 实现 Android -> Flutter 的通信. 并且也看到了 Flutter 内部 EventChannel 源码也是对 Meth ...
- Flutter 即学即用系列博客——09 EventChannel 实现原生与 Flutter 通信(一)
前言 紧接着上一篇,这一篇我们讲一下原生怎么给 Flutter 发信号,即原生-> Flutter 还是通过 Flutter 官网的 Example 来讲解. 案例 接着上一次,这一次我们让原生 ...
- Flutter 即学即用系列博客——08 MethodChannel 实现 Flutter 与原生通信
背景 前面我们讲了很多 Flutter 相关的知识点,但是我们并没有介绍怎样实现 Flutter 与原生的通信. 比如我在 Flutter UI 上面点击了一个按钮,我希望原生做一些处理,那么原生怎么 ...
随机推荐
- 解决EasyExcel读取日期为1905年
问题 用EasyExcel导入Excel的时候读取日期出现问题,部分日期读取变成1905年 Excel中的日期格式比较特别,是yyyy.MM格式的,和数字类型的小数非常相似 和Excel中的日期对不上 ...
- 日事清助力制造业IPD全生命周期管理:从开发流程到持续优化的跨部门协作实践
一.先聊聊IPD,它到底是什么 在竞争激烈的市场中,产品的快速.精准开发是企业致胜的关键.而为了确保新产品能够顺利从概念到落地,越来越多的企业采用集成产品开发(IPD, Integrated Prod ...
- 试用完几十款ETL工具后的经验总结,ETL工具用这三款就足够了
1.ETL选型前言 市面上ETL工具国内外加起来估计得有30种之多,其中近20款工具都花时间试用过,现在把试用后总结出来的经验分享一下,目前很多企业在选择ETL工具时不知道怎么选择适合自己的工具也不可 ...
- SciTech-BigDataAIML-Tensorflow-Variables
tf.config.run_functions_eagerly(True) tf.data.experimental.enable_debug_mode() tf.debugging.set_log_ ...
- 编辑器下实现Update
private void OnEnable() { if (Application.isEditor) { SceneView.onSceneGUIDelegate += OnScene; } } p ...
- CSP 失去信心赛
\(\text{A. twentythree}\) 使最后所有数相等,不难想到差分,那么操作就变成: \[\begin{cases} (0, 1) \rightarrow (1, 0)\\ (1, 1 ...
- 几款流行的web前端UI框架开发移动端项目
https://www.likecs.com/show-838798.html#sc=5600 http://aszhi.com/frame/63.html 根据近几年前端框架的热门,在前端开发框架不 ...
- PandasAI连接LLM对MySQL数据库进行数据分析
1. 引言 在之前的文章<PandasAI连接LLM进行智能数据分析>中实现了使用PandasAI连接与DeepSeek模型通过自然语言进行数据分析.不过那个例子中使用的是PandasAI ...
- web图片怎么导入ps?这个方法给你轻松解决!
随着WebP格式图片因其体积小.加载快的优势在网站中日益普及,对于图片编辑者来说,能够直接在Photoshop中打开和编辑WebP文件变得尤为重要. WebPShop插件应运而生,它是一个专为Phot ...
- RPC框架的优化
服务注册 消费者如何知道提供者的调用地址呢? 我们需要注册中心来保存服务提供者的地址.消费者要调用服务时,只需从注册中心获取对应服务的提供者地址即可.注册中心可以使用redis. 负载均衡 如果有多个 ...