在电子信息系统的学习中,我们或许早就被告知现实世界是模拟的,而数字化的模拟世界则越来越展现更多的风采。但是所谓的数字和模拟只是相对的而已,你可以把模拟量当做无穷数字量的组合,也可以把数字量当做具有不同间隔特征的模拟量。这模数之间的差别也就是采样和量化的差别而已!

那么Analog如何才能走到Digital?
一、ADC几个步骤
 1、采样和保持
如果把模拟信号比作无限采样点的数字信号,那么我们就需要采取其中一些有限点才能进行真正的数字化传输。采多少点?怎么采?
奈奎斯特(Nyquist)采样定理:
简单来说就是采样频率必须大于信号频率的2倍,fs≥2fn。这样才能重新恢复信号。如果不,会因为频谱混叠而无法复原,具体原因自行查找公式推导及分析。如下图频谱
保持的意思简单理解就是让采样后的数值保存到下一步转换。
2、量化和编码
所谓的量化是把采样后的N多个点数值按照一定标准和步骤转化为数字式的0和1,这个过程根据方式的不同可以分为很多种ADC类型,因此具有不同的性能特性,见下文。
二、ADC的几种架构
1、积分型ADC
顾名思义,积分ADC的基本原理就是利用运放对输入信号和参考信号进行积分输出,这里参考信号一般与输入信号极性相反,这样输出电压就会有上升时间和下降时间,根据计数器来统计时间,最后按照函数关系得到采样信号的值。
特征简介:
A:积分时间决定转换精度,因此牺牲转换速度可以提升精度,在早期的一些仪表转换精度要求不高的场合应用,后来的ADC很少采用这种架构了。
B:抗噪声能力强。对于零点正负的白噪声,积分时可以消除。
2、逐次比较型SAR
顾名思义是利用比较的方式来转换输出数字量,这个用来比较的值由DAC产生,如下图:初始化DAC的输出由寄存器设置为1/2Vref,然后由比较器判断大小来决定输出1或0,进而进行下一步再次设置寄存器输出DAC,如此循环到最后一次LSB。依次输出的0和1即为转换后的数字量。算法核心就是二分法搜索,类似于猜数字值的游戏。
特征简介:
A:100K到1M的中等速度,12到16位的中等精度,综合性能较好,因此是目前应用最多的ADC架构之一。
B:精度主要决定于DAC的转换精度,因此DAC需要校准,比较器也需要满足高速和能够匹配系统的较高精度。
C:功耗可调,由转换速度决定,因此也限制了高速应用。
D:总之SAR型ADC的内部各组成模块需要组合设计性能匹配最优。
3、Flash型ADC 
基本原理如图,利用多个比较器进行并行处理,很明显,高速!
特征简介:
A:很明显够快,比较器并行处理。
B:功耗大,面积大,自然是因为比较器多。
C:分辨率不够,也是因为功耗大,多数小于16位。
D:转换周期需要不断校准以保证一定精度。
两种ADC架构的比较:
4、Σ-Δ型ADC 
Sigma-Delta  型ADC也是目前应用相当多的一种ADC架构,尤其是在高位数分辨率的ADC设计上,这种调制型的ADC转换设计尽可能采用数字电路来处理并结合算法实现更好的性能。核心技术点:过采样和噪声整形
Sigma-Delta 调制过采样:
如图,sigma-delta的意思是差分求和,我们来顾名思义一下这个过程:
假设第一个积分运放输出1,则到后面Q输出也为1,第二个运放输出则为+V。
+V反馈到第一个运放输入,驱动积分器向反方向输出,待采集信号Vi也会驱动积分器输出,综合而言如果积分器输出为0,第二个比较器反馈回来的就是-V,以驱动积分器向输出。这个环路最后的目的是实现运放的基本特性:反相端应该为0!
这样整个输出的1的个数比例对应的电压值其实就是待测信号的电压值!能否理解?就是通过对误差的不断累积求和得到对应值!Q会输出一串01值即完成。
过采样:
上述过程中的触发器时钟非常快,远大于奈奎斯特采样要求,这样可以将量化噪声推到更高频段内。量化噪声:数字量化的最小单位存在的误差被称为量化噪声,即1LSB和2LSB之间的误差值。
噪声整形:
前一步得到的高速01数字流可以通过数字方式进行处理得到最后的输出结果。因为在过采样过程中是以速度换取精度的方式来操作的,高速但是噪声大,在噪声整形过程中通过数字滤波器抽取电路把噪声消除并降低最终的信号输出速率,实现高精度的数据转换结果!
如下图总结:
 
 
几种ADC架构的简单比较:
、ADC的参数
1、分辨率
就是最小能够分辨的模拟电压值,例如12位ADC,Vref为3.3V最小分辨率即:Vref/2的12次方=0.8mv
2、转换速度
即每秒转换的数字量,例如100kSPS,也常表示为每个数字量的转换时间如15us
3、输出接口
有串行或者并行接口
4、工作电压,基准电压(内部或者外部基准),封装。
5、DNL 微分非线性误差
6、INL积分非线性误差
这两种误差具有一定随机性,因此ADC会出现误码。
7、几种重要的交流参数
四、ADC的应用
本来想以我非常粗浅的经验简单说说ADC应用设计要点,可是还是无法写出,也许你不喜欢工程师给别人说看情况,但是工作后我越来越发现确实如此,你无法详尽某一项应用设计的所有点,不同特性配合不同应用的组合在不同运行环境下也是千差万别。你最好的方式就是掌握一定的基础再加以充分的思考验证。
就ADC而言,设计自然从选型开始,什么样的待测信号,什么样的速率要求,精度要求等,这些就可以依据前面的知识予以选型指导。这个过程可以避免盲目设计,浪费性能和成本。ADC的精度自然是相对参考电压而言的,那么基准电压就要稳,电源要稳,作为时钟的晶振要稳,PCB设计中地要处理好,高速信号要匹配好,干扰要隔离开,还有软件上的N多配置选择要恰当,等等等,见识浅薄,尚不能略窥一二。
五、小结
ADC作为信号处理过程中最重要的环节之一,是模拟和数字之间的桥梁,目前的信号处理朝着更高检测精度,更快转换速率发展,在音视频接口,微弱信号检测等领域应用深入,而此类芯片的国产化还远远滞后,不过前途可期。而对于硬件开发中的应用而言,知其然并知其所以然对于应用的把握水平会有更好的提升,假以时日或许最后可达到武学中的手中无剑,心中无剑,俯拾残枝即为利刃的境界吧。

由A到D中间可不止“B、C”的更多相关文章

  1. tornado远远不止

    大家的回答都有点片面,更多的关注web框架成,其实tornado远远不止这些,且听我慢慢到来1.高性能的网络库,这可以和gevent,twisted,libevent等做对.提供了异步io支持,超时事 ...

  2. Sql中联合查询中的”子查询返回的值不止一个“的问题

    在子查询中,如果想实现如下的功能: select lib,count(*),select sum(newsNo) from Table1 group by lib from Tabel1 T1,Tab ...

  3. 读书笔记系列01-《收获、不止Oracle》

    读书笔记系列01-<收获.不止Oracle> 最近计划将看过的Oracle书籍依次系统的总结下读书笔记. 这本书是我个人觉得写的最有趣的Oracle书籍,也是我接触Oracle后第一本完全 ...

  4. SQL server 查询出现:---“子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”SQL查询错误解析---

    最近用select进行数据筛选,碰到下面的这个错误: ---子查询返回的值不止一个.当子查询跟随在 =.!=.<.<=.>.>= 之后,或子查询用作表达式时,这种情况是不允许的 ...

  5. 【转】福利大放送--不止是Android,Github超高影响力开源大放送,学习开发必备教科书

    [福利大放送]不止是Android,Github超高影响力开源大放送,学习开发必备教科书   目录 一.写在前面 1.free-programming-books 2.oh-my-zsh 3.awes ...

  6. 【js】了解前端缓存,收获不止于此!

    了解前端缓存,收获不止于此! 这次我们来讲一下关于前端缓存的问题.感谢赵欢同学提供doc素材. 首先,开局我画了一张图,你会对文章有一个大局了解. 今天讲的是前端缓存. 前端缓存有3大种:如图,分为H ...

  7. 未来-区块链-Aliyun:阿里云IoT - 所知不止于感知

    ylbtech-未来-区块链-Aliyun:阿里云IoT - 所知不止于感知 1.返回顶部 1. 基础产品接入 设备接入 设备管理 数据分析 应用开发 网络管理 边缘计算 设备认证 安全运营 AliO ...

  8. 创成汇丨投脑风暴·创心不止|路演日 第2期,寻IT创业者

    创成汇丨投脑风暴·创心不止|路演日 第2期   无畏荆棘之路的风雨 誓做浪潮之巅的勇者 你说,创业是一场孤注一掷的较量 你说,创新从来都是与过去battle 你还说,坚持总是比开始更让你难以琢磨 所以 ...

  9. 不止是联网!教你玩转PC自带Wi-Fi网卡

    前言:Wi-Fi对于现在的智能手机来说已经是再熟悉不过的配置了,而主板自带Wi-Fi网卡的设计也越来越普及,但有些玩家可能思维还停留在“Wi-Fi网卡 = 连无线网络用的网卡,我用有线就不需要”的层次 ...

  10. “子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”SQL查询错误解析

    为了实现下述代码,首先得有数据库和相应的表格,本文用的是https://blog.csdn.net/qaz13177_58_/article/details/5575711/中的案例,即先用链接中那些 ...

随机推荐

  1. java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml'

    java.lang.IllegalStateException: Failed to load property source from location 'classpath:/applicatio ...

  2. oracle10g学习笔记

    1.简介 1.1.sql:Structured Query Language 结构化查询语言 1.2.windows在目录路径中使用反斜线\,unix和linux使用正斜线/ 1.3.Number(a ...

  3. archLinux 学习笔记--mlocate的安装与使用

    locate - 查找文件的简单方法 locate 程序会执行一次快速的路径名数据库搜索,并且输出每个与给定子字符串相匹配的路径名. 使用时却发现archlinux出现 bash: locate:未找 ...

  4. 修复支付宝后台报错session IP change to many

    在项目的web.xml 中添加: <init-param> <param-name>sessionStatEnable</param-name> <param ...

  5. redis迁移复制数据,主从关系建立实践

    装redis的机器出了点问题,需要转移数据然后初始化系统,然后我就研究了下redis的数据复制,发现了slaveof 192.168.0.1 6379这个命令,开始踩下这个坑 首先要新的服务器上进入r ...

  6. go语言 os.Rename() cannot move the file to a different disk drive 怎么办

    时值我小病在家休养生息,喜欢跳广场舞的外公来寻求我的帮助,他们跳广场舞是将存有歌曲的U盘插到音响上面,而音响大部分都是只能显示歌曲的索引index,不能直接显示歌曲名,所以为了方便他们会在U盘里面对歌 ...

  7. 重学Veriliog(2)——高级编程语句

    1.判断 1.1 if ... else ... 有优先级 在组合逻辑电路中,需要避免产生Latch(避免结构不完整) Latch容易引起竞争冒险,同时静态时序分析工具也不好分析穿过Latch的路径? ...

  8. C#基础 const和readonly关键字

    静态常量 所谓静态常量就是在编译期间会对变量进行解析,再将常量的值替换成初始化的值.动态常量 所谓动态常量就是编译期间会将变量标记只读常量,而不用常量的值代替,这样在声明时可以不初始化,可以延迟到构造 ...

  9. 20155210潘滢昊 Java第二次试验

    20155210潘滢昊 Java第二次试验 实验内容 学会JunitTest的使用 实验代码 MyUtilTest代码: import org.junit.*; import junit.framew ...

  10. 20155235 2016-2017-2 《Java程序设计》第9周学习总结

    20155235 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 JDBC简介 连接数据库 使用Statement.Res ...