模拟集成电路设计系列博客——7.2.1 流水线ADC基本介绍

news/2024/9/30 13:26:38

7.2.1 流水线ADC基本介绍

流水线ADC和逐次比较型ADC类似,通过迭代搜索查找能够精确反应模拟输入信号的数字码。但是,相比较于通过单个模拟电路执行迭代,流水线ADC有着独立的模拟级来专门执行每次转换。流水线ADC的信号流如下图所示:

image

所有的模拟级在每个时钟周期时进行工作,并且每个执行一个差分输入采样。由于\(N\)个迭代同时在进行,所以流水线ADC相比逐次比较型ADC会快上\(N\)倍,并且能够每个周期都进行一次输出。因此,流水线ADC经常被用于需要高速的应用。尽管\(N\)次转换能够并行,每次输入采样的完整转换在整个流水线中仍然需要\(N\)个周期,因此在流水线转换器中存在着\(N\)个时钟周期的延迟,这点与逐次逼近型转换器一样。

先从最简单的每级1比特流水线ADC开始介绍,每一级都接受上一级的输出作为输入,将其与一个参考阈值进行比较,并通过一个乘法DAC(MDAC)来形成一个残差信号:

\[V_{i+1}=2[V_i+(b_i-0.5)V_{ref}/2] \tag{7.2.1} \]

如下图所示:

image

流水线ADC的每一级进行一个比较,找到一比特的结果\(b_i\)。但是由于每一级都工作在不同的采样上,这些数字信号必须通过可变长度的移位寄存器进行重新对齐,如下图所示:

image

转换的结果可以视作对原始输入采样进行\(N\)比特量化,误差范围在\(\pm V_{ref}/2\)

\[V_{in}=V_{ref}\sum_{i=1}^N(b_{i}-0.5)2^{-i} \tag{7.2.2} \]

最后,注意最终的残差信号不需要再被送入到下一个残差级,因此最后的MDAC可以省略掉,最后一级仅仅需要一个1比特的ADC(比较器)来产生\(b_N\)

例题1:

考虑一个3比特,每阶段1比特的流水线ADC,其\(V_{ref}=1V\)。求所有级的残差电压\(V_i\)以及最终的输出码,采样输入电压为\(V_{in}=240mV\)

解答:

输入信号给定\(V_1=V_{in}=240mV\),流水线ADC的第一级的比较器将会输出一个正的结果,\(b_1=1\)。这之后,从输入减去\(V_{ref}/4=250mV\)并将结果乘以2倍。

\[V_2=2(V_1-V_{ref}/4)=-20mV \tag{7.2.3} \]

由于\(V_2<0\),在下一个时钟周期,第二级流水级将会产生一个逻辑低电平,\(b_2=0\),使得\(V_{ref}/4\)被加入到下一级的残差结果上:

\[V_3=2(V_2+V_{ref}/4)=460mV \tag{7.2.4} \]

最后,第三级将会输出一个逻辑高电平,使得最终的输出码为\(b_1b_2b_3=101\),等效为一个量化后的输入电压\(V_{in}=187.5mV\)

每级1比特流水线ADC架构的问题是,任何比较器的偏移会导致不可修复的错误。为了使得每级1比特流水线ADC有着\(10mV\)分辨率,第一级比较器需要有着高于\(10mV\)的精度,第二级必须高于\(20mV\),第三级高于\(40mV\),以此类推。进度需求逐级递减,因为沿着流水线前进时,后一级工作在放大后的残差信号,因此他们对于转换器的整体精度影响也随着流水线前进而逐级递减。尽管如此,对于比较器的限制意味着每级1比特流水线结构很少使用。

例题2:

重复例子1中的计算,但此次假定比较器总的第二级有\(30mV\)的偏移。

解答:

如例题1中的分析,流水线ADC第一级会输出一个正的结果\(b_1=1\),使得\(V_2=-20mV\),这一次由于第二级比较器的偏移导致第二级产生一个逻辑电平\(b_2=1\),使得残差项上减去一个\(V_{ref}/4\)

\[V_3=2(V_2-V_{ref}/4)=-540mV \tag{7.2.5} \]

这个残差结果超过了\(\pm V_{ref}/2\)的范围,因此进一步导致下一级的错误。最后一级会输出逻辑低电平,使得最终输出的码字为\(b_1b_2b_3=110\),或者\(V_{in}=375mV\),相比上一个例题中没有偏移的情况,最终的量化误差更大。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

vue2 实现可拖拽悬浮球

实现效果相关代码点击查看代码 <template><div class="float-box"><divclass="button-box"@mousedown="mousedown"@mousemove="mousemove"@touchmove="mousemove"@mouseup="mouseup"@touchstart=&…

Linux 提权-MySQL UDF

本文通过 Google 翻译 MySQL User Defined Functions – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航0 前言 1 什么是用户定义函数 (UDF) ? 2 枚举 UDF 漏洞利用条件2.1 手动枚举 UDF 漏洞利用条件2.1…

1.2 陶瓷电容(MLCC)选型----硬件设计指南(持续补充更新)

本系列文章是笔者总结多年工作经验,结合理论与实践进行整理备忘的笔记。希望能直接指导硬件工程师的设计实操,争取每一条设计要点指南都做到有理有据。既能帮助自己温习整理避免遗忘也能帮助其他需要参考的朋友。笔者也会不定期根据遇到的问题和想起的要点进行查漏补缺。如有…

Profibus转Modbus网关帮助PLC实现智能激光设备通讯

通过Profibus转Modbus网关(XD-MDPB100),可以实现PLC与激光设备之间的无缝连接,实现数据的实时传输与指令的可靠执行。本文将深入探讨PLC通过Profibus转Modbus网关(XD-MDPB100)与激光设备进行通讯的应用案例,带您一窥其中的奥秘。它简单易实现,具有良好的兼容性和可靠性…

【Spring】Bean管理

获取Bean 要从IOC容器当中来获取到bean对象,需要先拿到IOC容器对象@Autowiredprivate ApplicationContext applicationContext; //IOC容器对象Spring容器中提供了一些方法,可以主动从IOC容器中获取到bean对象,下面介绍3种常用方式:根据name获取bean Object getBean(String …

记录--createObjectURL这个API真好用,我举几个场景你们就懂了

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 前言 随着我用 URL.createObjectURL 这个 API 越来越多次,越发感觉真的是一个很好用的方法,列举一下我在项目中用到它的场景吧~图片预览 以前我们想要预览图片,只能是上传图片到后端后,获取到url然后赋予给img标签,…

linux 部署jar包

1.准备工作 linux如果没有配置java环境变量的话,具体操作见文末推荐。 2.启动jar包 linux操作系统下启动jar包的方式和windows操作系统没有区别。 用法都是遵循java语法规范。 前提:跳转到要启动的jar包所在目录。cd jar包所在绝对路径使用默认jdk启动 查看当前jdk版本 java …