模拟集成电路设计系列博客——7.1.2 基于电荷重分布的SAR ADC
7.1.2 基于电荷重分布的SAR ADC
实现SAR ADC最直接的方式是使用一个独立的DAC,并将其设置等于输入电压(在一个LSB范围内)进而修改流程图如下:

首个用这种方式实现的开关电容模拟系统即所谓的电荷重分布MOS ADC[McCreary, 1975]。通过这个转换器,采样和保持电路,DAC,以及比较器被组合在了一个单独的电路中,单极性的例子如下图所示:

整个操作过程为:
- 采样模式,第一步,所有的电容被充电到\(V_{in}\),比较器通过\(S_2\)重置到阈值电压,注意在这一步中,电容阵列起到了采样保持作用。
- 保持模式:下一步,比较器通过断开\(S_2\)退出重置状态,进一步的所有电容切换到地,从而使得\(V_x\),原本为接近零,改变成\(-V_{in}\),从而保持住输入信号\(V_{in}\)在开关电容上(这一步有时会合并在转换第一个比特的步骤里)。最后,\(S_1\)发生切换,从而\(V_{ref}\)能够被施加到电容阵列上。
- 比特循环:下一步,最大的电容(在这个例子中是\(16C\)电容)被切换到\(V_{ref}\),从而使得\(V_x\)变为\(-V_{in}+V_{ref}/2\)。如果\(V_x\)为负数,那么\(V_{in}\)就大于\(V_{ref}/2\),那么MSB就需要连接到\(V_{ref}\),并且\(b_1\)应该为1。否则MSB电容应该被接到地,\(b_1\)应该为0。这个过程重复\(N\)次,每次都开关一个更小的电容,直到整个转换完成。
关于\(-V_{in}+V_{ref}/2\)如何得到,利用简单的电荷守恒方程即可,即切换之前电容上的总电荷等于切换之后电容上的总电荷,因此有:
\]
为了能够精确的进行二分,著需要一个容值为\(C\)的额外的单位电容加入电容阵列中,从而使得总的电容值为\(2^N C\),而不是\((2^N-1) C\)。同时,电容的底极板被连接到\(V_{ref}\)上,而不是比较器一侧,这是为了最小化\(V_x\)节点上的寄生电容。尽管在理想比较器的情况下,\(V_x\)上的寄生电容并不会引发任何转换错误,但是确实会影响\(V_x\)的值。
有符号的ADC可以通过增加一个\(-V_{ref}\)的输入来实现。如果\(V_x\)在第一步检测小于0,那么就和单极性时一样,用\(V_{ref}\)来处理。否则,如果\(V_{x}\)大于0,则使用\(-V_{ref}\)来进行处理,通过检测\(V_x\)是否大于零,来决定在每个比特循环中,是否将电容连接到\(-V_{ref}\)。
解答:
首先在采样模式时\(V_x=0\),接下来,在保持模式时,所有的电容开关进行切换,\(V_x\)上的电荷被分享到\(32C\)的总电容外加\(8C\)的寄生电容上,因此:
\]
在第一个比特循环,\(b_1\)开关切换,使得:
\]
由于这个结果大于零,所以\(b_1\)重新切换回地,并且\(V_x\)恢复到\(-0.984V\),\(b_1=0\)。
接着,\(b_2\)切换,我们有:
\]
仍然大于零,以\(b_2\)重新切换回地,并且\(V_x\)恢复到\(-0.984V\),\(b_2=0\)。
接着切换\(b_3\),我们有:
\]
由于这个结果小于零,因此\(b_3=1\),并且\(b_3\)连接到\(V_{ref}\)上。
接着切换\(b_4\),我们有:
\]
仍然小于零,因此\(b_4=1\),\(b_4\)开关连接到\(V_{ref}\)上。
最后切换\(b_5\),我们有:
\]
同样小于零,因此\(b_5=1\)。
因此,最后总的输出为\(B_{out}=00111\),电压\(V_x\)相对地电压在一个\(V_{LSB}\)以内(\(V_{LSB}=5/32V\))。
模拟集成电路设计系列博客——7.1.2 基于电荷重分布的SAR 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 上面点击了一个按钮,我希望原生做一些处理,那么原生怎么 ...
随机推荐
- stdout stdin stderr
#include<stdio.h>int main(){ fprintf(stdout,"hello"); int a; fscanf(stdin,"%d&q ...
- vim卡死 转载
博客园 玩了这么多年linux 居然不知道这个..特此记录. 使用vim时,如果你不小心按了 Ctrl + s后,你会发现不能输入任何东西了,像死掉了一般,其实vim并没有死掉,这时vim只是停止向终 ...
- ABC371
呜呜呜,第一次打完完整的 ABC.才打了 2000 多名,太菜了.( A - Jiro 十分简单,分讨即可. 点击查看代码 #include <iostream> #include < ...
- Day3 备战CCF-CSP练习
Day3 题目描述 目前在一个很大的平面房间里有 \(n\) 个无线路由器,每个无线路由器都固定在某个点上. 任何两个无线路由器只要距离不超过 \(r\) 就能互相建立网络连接. 除此以外,另有 \( ...
- POLIR-Society-Organization-Republic共和+Management: **决策、结网、组织、常政领导、管理、运营沟通的几条重要原则**
组织的不同管理以及共和方式; 世界观.决策.授权.制定和审批计划.网络.风险与资源管理.监督和控制. Networking: ice-break破冰.relationship关系.networking ...
- SciTech-Mathematics-Probability+Statistics-Discrete Binomial Distribution: 离散二项式分布
Binomial Distribution AI, Data Science, and Statistics Statistics and Machine Learning Toolbox Proba ...
- 契约锁pdfverifier远程代码执行漏洞攻防绕过史
前言 之前比较懒一直没安装契约锁进行审计最近正好爆出挺多这个产品的漏洞,于是抽空分析一下近期的漏洞为后续挖掘打基础.这篇文章主要写pdfverifier接口的漏洞以及这个地方补丁被多次绕过的分析. p ...
- Jenkins集成部署SpringBoot
Jenkins集成部署SpringBoot 1. 前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能 ...
- PostgresSql VACUUM 剖析
为什么需要 Vacuum MVCC MVCC:Multi-Version Concurrency Control,即多版本并发控制. PostgreSQL 使用多版本并发控制(MVCC)来支持高并发的 ...
- leedcode 928. 尽量减少恶意软件的传播 II (并查集)
测试链接:https://leetcode.cn/problems/minimize-malware-spread-ii/ 思路 设置sz,inflect,virus[](该节点是否属于感染节点),f ...