数模转换(ADC)的应用笔记

智能时代,数字信号已体现在我们生活的方方面面,A/D,D/A是重要的基础。智能手机触摸信号需要转换为数字信号才能分辨触摸位置、数字去抖;打电话或者麦克风需要将模拟声信号转换为数字信号以便存储回放、语音识别;移动通信到4G时代,速率已经达到了300Mbps,手机和基站之间的通信是模拟电磁信号,同样需要高性能的ADC将其转化为数字信号,才能变成各位看到的电影、微博(当然没这么简单)。上述三个例子是典型的三种应用场景,对应ADC的不同指标。其中速度(采样率)和精度(bit位)是选取ADC的基础指标。各种监测可能需要实时性不高,能转换就行了;大部分医疗电子可能要求精度高,动态高,能分辨大信号下隐藏的小信号,同时速度较快;对于移动通信,您可能要求速度快,同时信号好,那对速度和精度就都有要求了,速度可能几百Msps,精度可能12、14位;更高大上的,针对卫星通讯、软件无线电(SDR),带宽可达数GHz,同时灵敏度要求更高,这种ADC就是核心科技了,只有为数不多的几家美国厂商掌握。

关键词:ADC  SDR 抗混叠滤波器无线通讯 高精度采样

本文主要介绍ADC的模拟前端匹配技术,并分享笔者的几个设计作业,随着认识的不断深入,也会不断更新。关于ADC的互连、中频方案选择等在系列文档中细说。

ADC的前端匹配其实是抗混叠滤波器(anti-aliasing filter)的设计问题,为什么叫抗混叠滤波器,那得从ADC的采样原理说起。ADC的采样遵循Nyquist定理,假设被采样信号的最高频率为Fh,则要使在数字域能完全恢复该信号的最小采样频率为2*Fh;另外还有一个Nyquist带通采样原理,也称为欠采样。即对于带通信号而言,如TDD-LTE的2575MHz—2615MHz,通带50M,需要最小的采样频率为2*BW(50M) = 100Msps。

Fig 1 Nyquist采样混叠原理

在Fig1中,fa为被采样信号,I为其采样后的镜像,fs为采样频率。0.5fs为一个nyqusit区。Fig1中上图表示选择信号中频在1st Nyquist区,那么这个信号会在其他高阶Nyquist区有镜像信号;下图表示选择感兴趣的信号在2nd Nyquist区,采样后,会镜像到1st Nyquist区和其他高阶Nyquist区。同理,在ADC采样时,非感兴趣Nyquist区的噪声信号都会镜像到1st Nyquist区,而1st Nyquist区正式数字域中频处理需要信号。为了抑制噪声,需要在ADC前端加入低通(1st)或者带通(upper)滤波器,该滤波器也称为抗混叠滤波器。

ADC的硬件系统一般都是数模混合系统,板级噪声较复杂,采用差分模拟输入能有效提高共模噪声抑制比。对几十MHz以下的模拟信号一般是直接采样,如医疗中的超声、生物阻抗测量等。这种模拟信号需要将单端转为差分,采用运放可以方便的转换,同时保证ADC需要的偏置电压,如fig2。但要注意运放的直流匹配、共模偏置电压、压摆率、CMRR、频率等参数,这部分有专门的应用笔记可以参考。转为差分信号后,再设计需要的匹配滤波器,与ADC对接,下面会讲到。对于采用1st Nyquist Zone的使用场景,还可以用放大器本身来完成低通滤波。比较典型的有源滤波器是sallen-key结构。

Fig2利用运放实现单端转差分

无线通信的频率较高,经常使用变频器(解调器)+AGC+匹配滤波+ADC的架构。存在变频器,如果采用非零中频设计,必然在射频有镜频抑制要求。为了降低镜频抑制滤波器的设计难度,结合混频杂散分析,一般采用较高的中频,多在5fs/4或者更高。在这种场景下,匹配滤波器为带通滤波器,设计复杂度要高的多。下变频器直接为差分中频输出,ADC也是差分输入,滤波器需要考虑的是阻抗匹配。变频器如AD5801的输出阻抗为200ohm,如果采用4:1的transformer,输出阻抗为50ohm。当然也可以直接采用1:1的transformer,输出阻抗为200ohm。如果采用中频放大器,可根据放大器的直流负载特性,选择合适的负载阻抗,如fig3所示源阻抗为70ohm。ADC的输入阻抗一般较大,如AD9248的输入阻抗为7kohm,输入电容7pF;AD9230的输入阻抗4.3kohm,4pF。如此大的输入阻抗对滤波器来说是极难匹配的,一般在ADC的输入并联电阻到地,使得总输入电阻为几百ohm,作为匹配滤波器的负载电阻。

Fig3抗混叠滤波器阻抗匹配示意图

根据输入阻抗、负载阻抗、ADC的采样率、其他NyquistZone的抑制要求,即可确定滤波器的详细参数。本人习惯采用射频设计软件ADS来仿真滤波器,最好采用murata的电容模型,采用coilcraft的绕线电感模型。如果想一步仿真成功,上板免调试,将PCB布板模型等寄生参数带入ADS进行仿真,比较精确,但实现过程比较复杂。考虑到电容等器件的精度,电容值不能太小,电感值也不要太大。还有一个问题,设计滤波器的负载阻抗是采用纯电阻模型,没有考虑ADC的输入电容,可以将滤波器仿真出来的最后一个并联电容C1减去ADC的输入电容,作为最后的电容值。考虑到对共模干扰的抑制,可以将C1改为两个到地电容,其值为2(C1-Cadc)。

在ADC输入还需要考虑到模拟信号的共模电平Vcom,Vpp。为了达到ADC的最大SNR,输入信号尽量能达到满功率(高峰均比需要回退),有的ADC提供片内偏置,有的ADC需要外部偏置。Vpp影响ADC的动态范围,注意前端放大器的压摆率与Vpp匹配,并留一定余量。

参考资料Analog Devices application note cn-0238

ADC应用的更多相关文章

  1. STM32之DMA+ADC

    借用小甲鱼的经典:各位互联网的广大网友们.大家早上中午晚上好..(打下小广告,因为小甲鱼的视频真的很不错).每次看小甲鱼的视频自学都是比较轻松愉快的..我在想,如果小甲鱼出STM32的视频,我会一集不 ...

  2. STM32之ADC+步骤小技巧(英文)

    神通广大的各位互联网的网友们.大家早上中午晚上好好好.今早起来很准时的收到了两条10086的扣月租的信息.心痛不已.怀着这心情.又开始了STM32的研究.早上做了计算机控制的PID实验,又让我想起了飞 ...

  3. [nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC

    一.本实验ADC 配置 分辨率:10 位. 输入通道:5,即使用输入通道AIN5 检测电位器的电压. ADC 基准电压:1.2V. 二.NRF51822 ADC 管脚分布 NRF51822 的ADC ...

  4. 基于STM32Cube的ADC模数采样设计

    1.背景         此实验建立在STM32F429核心板基础上,对于深刻了解STM32Cube使用具有深刻意义.利用DMA进行ADC采样,具有速度快,极大减少CPU消耗的优势,对于数据采集系统具 ...

  5. ADC

    ADC转换分为两种通道组 1.规则通道组 2.注入通道组(可打断规则通道组) 工作模式 通道模式 转换模式 复位校准 AD校准

  6. 对ADC(DAC)的线性度(INL和DNL)的一点理解 [转]

    大家在使用ADC的时候,往往最关注位数,而对ADC的线性度往往会忽略. 其实这个线性度也是ADC非常重要的指标,ADC(或DAC,其实ADC也是由DAC组成的)线性度指标有两个: INL:翻译过来叫“ ...

  7. HAL驱动库学习-ADC

    如何使用ADC驱动库 1  实现如下两个函数     a: HAL_ADC_MspInit()使能ADC时钟,设置时钟源, 使能ADC Pin,设置为输入模式,可选 DMA,中断     b:HAL_ ...

  8. STM32 ADC 测电压

    1. STM32F103 ADC 本例使用STM32F103芯片的PA1引脚测试模拟输入的电压值. 查看文档<STM32F103X.pdf>第31页,引脚定义图: 得知PA1使用ADC1的 ...

  9. ADC测试matlab代码

    前面有做过ADC性能测试,测试方式是先使用ADC采集一个单频信号,然后利用matlab进行性能分析. 下面把matlab分析的代码记录下来: %The following program code p ...

  10. NRF51822之ADC(1)

    在开始讲解的前,我们不生产水,我们只是大自然的搬运工.开始搬手册(nRF51 Series Reference Manual Version 3.0)上的资料

随机推荐

  1. Linux 安装mysql mariadb配置

    CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置 1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server ...

  2. 洛谷P4396 作业 [AHOI2013] 莫队

    正解:莫队 解题报告: 传送门! 天呐太久没做莫队了连板子都认不出来了,,,所以复健下做下莫队的题目QAQ 就很板子鸭,和莫队板子比好像只有一个离散化,,,?就不讲了QAQ 等下直接放代码QAQ ov ...

  3. 解决web资源跨域请求问题

    参考地址: http://my.oschina.net/lichaoqiang/blog/317823 在浏览器请求中,出现跨域访问资源的问题,我们肯定会遇到.如果跨域请求被阻止,有可能导致css.j ...

  4. (4.8)mysql备份还原——binlog查看工具之show binlog的使用

    (4.8)mysql备份还原——binlog查看工具之mysqlbinlog及show binlog的使用 关键词:show binlog,mysql binlog查看,二进制文件查看,binlog查 ...

  5. git常用操作命令使用说明

    设置用户名和邮箱 git config --global user.email 'xxx' git config --global user.name 'xxx' 创建分支 git branch xx ...

  6. cocos2d-x 贡献一个oss上传脚本

    平常写前端项目和H5游戏时特别频繁的一个操作就是上传到oss上,特别浪费时间.所以用ali-oss写了一个脚本.配置属性后直接npm run oss就能上传到oss上了.再也不需要手动操作.现在是脚本 ...

  7. Python基础(一)常用函数

    1.map() 此函数可以,将列表内每一个元素进行操作,并返回列表 原型 map(function,[list]) def fc(x): return x * 2 print(map(fc,[1,2, ...

  8. larave----------通过composer.json下载laravel包----barryvdh/laravel-debugbar

    1.去Packagist网站https://packagist.org/packages/barryvdh/laravel-debugbar#dev-master找到

  9. VCS

    timing check相关的, +notimingcheck命令,可以用在compile时,也可以用在run time的时候, 都是将检查timing的系统函数,都disable掉了, 加在comp ...

  10. hdu5517 二维树状数组

    题意是给了 n个二元组 m个三元组, 二元组可以和三元组 合并生成3元组,合并条件是<a,b> 与<c,d,e>合并成 <a,c,d> 前提是 b==e, 如果存在 ...