ADC 选型指南


首先看到的指标——分辨率、采样速率

ADC是将模拟信号转换为数字信号的器件,在选择一个音频ADC时,我们会考虑它在各方面的性能。首先是分辨率和采样率,这也是一个ADC手册中所最先会告诉我们的。比如下图这个AKM公司出品的AK5578,就有着 32-bit 的分辨率和 768kHz 的采样率。

在这里插入图片描述

分辨率

分辨率意味着可以将一个采样的模拟信号以多少档位的数字信号进行输出,32位就意味着一个模拟输入被以 2 32 2^{32} 232 个档位划分。仅仅考虑位数是不够的,很高的位数,但伴随着很大的噪声干扰没有任何意义,只是徒增数据量。

在这里插入图片描述

ADC的噪声来自于哪里呢?如果从整个系统设计的角度来看,噪声的来源有很多(如下图),每个元器件都不可避免的带来噪声。如果从ADC芯片的角度来看,那主要就由量化噪声和热噪声组成,对于高精度的音频ADC而言,热噪声占了其中大头,我们会在下个Part详述。

在这里插入图片描述

采样率

或许人们会疑惑,为什么AK5578的最高采样率高达768kHz?有这个必要吗,毕竟人耳的听觉范围最高只到20kHz,考虑奈奎斯特采样率,40kHz的采样率似乎就已绰绰有余。那么高的采样率是为了什么?

不妨从一个老生常谈的案例说起 —— 摄像机以每秒 24 帧的速度拍摄一辆马车驶过,在不同的速度下,它看起来像是车轮在向后旋转,甚至根本没有移动。

这是一种频闪视觉效果,由车轮的旋转频率与相机的拍摄速度之间的谐波关系引起。也许你看过相机快门速度与直升机叶片同步的视频,看起来直升机悬在空中,叶片一动不动。这两个现象就是混叠,而这种现象也会在ADC采样时出现,例如下图:

在这里插入图片描述

在录音和声音制作的过程中,我们面对的是什么信号?这些信号本身绝对不仅仅是人耳可以听到的,即使是我们自己嘴巴产生的信号也往往可以超出这个范围,更不必说许多打击乐器了。我们不妨用Matlab进行验证,对一个50kHz的信号使用48kHz采样频率进行采样。

clc;
clear;

%% 生成一个50kHz的sin信号,以不同采样频率进行采样

%% 以500kHz进行采样
f = 50e3;
fs1 = 500e3;
delta_t1 = 1/fs1;
L = 1000;
t1 = (0:L-1)*delta_t1;
y1 = sin(2*pi*f*t1);

subplot(4,1,1);
plot(t1,y1);
xlabel('t(s)');
title('50kHz sin signal, sampling with 500kHz');

% 计算FFT并输出
Y1 = fft(y1);
P2 = abs(Y1/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f1_values = (0:L/2)*fs1/L;
subplot(4,1,2);
plot(f1_values, P1);
xlim([0 100e3]);
title('Single Sine Wave FFT Spectrum');
xlabel('Frequency (Hz)');
ylabel('Power Spectrum');

%% 以48kHz进行采样
fs2 = 48e3;
delta_t2 = 1/fs2;
t2 = (0:L)*delta_t2;
y2 = sin(2*pi*f*t2);
subplot(4,1,3);
plot(t2,y2);
xlabel('t(s)');
xlim([0 2e-3]);
title('50kHz sin signal, sampling with 48kHz');

% 计算FFT并输出
Y2 = fft(y2);
P2 = abs(Y2/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f2_values = (0:L/2)*fs2/L;
subplot(4,1,4);
plot(f2_values, P1);
xlim([0 100e3]);
title('Single Sine Wave FFT Spectrum');
xlabel('Frequency (Hz)');
ylabel('Power Spectrum');

下图是输出的结果,可以看到50kHz的波形在以48kHz采样后变成了2kHz,倘若在实际的音频中存在这样的高频乐器分量,这便会造成采样后的数字信号中存在2kHz的噪声干扰。

在这里插入图片描述

上述现象叫做“混叠”,混叠的产生原因在于信号的频率成分超出了采样频率所能捕捉的范围,导致高频信号在数字化后“折叠”到较低的频率范围内。这不仅会导致信号频率的错误表示,还可能引起相位和幅度的失真,严重影响信号分析和处理的准确性。

为了防止混叠,通常在采样前使用抗混叠滤波器来滤除高于奈奎斯特频率的信号成分。此外,增加采样频率可以减少混叠的风险,但这也可能增加数据处理的复杂性和存储需求。

如果想继续了解高采样率的意义,不妨参考下面这个系列的文章——

ADC的量化噪声与热噪声

从芯片选型的角度,我们主要关注在ADC芯片固有的噪声。Fundamentals of Precision ADC Noise Analysis (ti.com) 这篇文章的 Chapter1 中介绍了ADC内部的固有噪声,包括:量化噪声热噪声,这两个噪声互不相关。

  • 量化噪声我们刚刚提到过,看下图,用总量程(full-scale range, FSR)除以总量化档位( 2 N 2^N 2N)即可得到 LSB(least significant bit),倘若将这个误差换算到 dB 单位,我们可以发现,这个噪声并不是 AK5578 芯片噪声的主要来源。
    在这里插入图片描述
  • 热噪声是芯片的固有物理属性,我们没有办法改变,其服从高斯分布。对于一个低分辨率的ADC而言,热噪声并不是噪声的主要来源,但对于高分辨率的ADC而言,热噪声占整体噪声的大头。

在这里插入图片描述

ADC的关键性能指标

用于定量表示ADC动态性能的常用指标有六个,分别是:SINAD(信纳比)、ENOB(有效位数)、SNR(信噪比)、THD(总谐波失真)、THD+N (总谐波失真加噪声)和 SFDR(无杂散动态范围)。

先来看一张图,我们需要关注的是谐波功率(Harmonics Power)、噪声功率(Noise Power);

在这里插入图片描述

  • 总谐波失真(THD, Total Harmonic Distortion) —— 指的是基波信号的均方根值与其谐波(一般仅前5次谐波比较重要)的和方根的平均值之比。ADC的THD虽然可以用任何电平来规定,但是一般也用接近满量程的输入信号来规定。
  • SINAD (Signal-to-Noise and Distortion Ratio, 信纳比) —— 包括所有构成噪声和失真的成分(包括谐波),反映ADC的整体动态性能。一个更常用的叫法是 THD + N (Total Harmonic Distortion plus Noise, 总谐波失真加噪声),这两个叫法的含义等价。
  • SNR (Signal-to-Noise Ratio, 信噪比) —— 与SINAD类似,但在计算时剔除了信号谐波,仅考虑噪声项。
  • SFDR (Spurious-Free Dynamic Range, 无杂散动态范围) —— 信号的均方根值与最差杂散信号的均方根值之比,无论杂散信号位于频谱中何处。

在这里插入图片描述

  • ENOB (Effective Number Of Bits, 有效位数) —— 基于SINAD的值,通过特定公式计算得出的有效位数,用于衡量ADC的实际分辨率。
    在这里插入图片描述

ADC 的发展历史

模数转换器(ADC)的发展历程是一段跨越数个世纪的技术革新史。早在17世纪,土耳其就发展了一种“数字”水表系统,这可以看作是模拟信号测量技术的早期形式。进入20世纪初,通信技术的进步催生了对模拟信号数字化的需求,李·德弗雷斯特在1906年发明的真空管为放大和信号处理提供了关键技术,并成为早期电话系统的重要组成部分。

1920年代,工程师们为了增加电报线路的数据传输量,发展了脉冲编码调制(PCM),由 Paul Rainey 在1921年获得专利。同时,哈里·奈奎斯特提出了著名的奈奎斯特定理,为信号的数字化提供了理论基础,确定了采样频率与信号最高频率之间的关系。

在这里插入图片描述

到了1930年代,Alec Harley Reeves在PCM设计上取得了重大进展,实现了5位分辨率和6kHz的采样率,通过比较生成的斜坡电压与信号电压并在它们相等时产生脉冲,为模拟到数字的转换和反向转换铺平了道路。

1940年代,贝尔实验室在与国际电话电报公司(ITT)的合作中,发明了逐次逼近ADC(SAR ADC),主要用于二战期间的军事通信加密。战后,真空管技术的局限性日益明显,这促使了固态技术的快速发展。1954年,戈登·基德尔发明了第一个基于硅的晶体管,随后集成电路(IC)被发明,为电子设备小型化和成本降低奠定了基础。

1950年代末至1960年代,随着计算机技术的发展,ADC和DAC技术开始被用于计算发射轨迹和武器瞄准系统。1960年代,ADC作为商业现成产品(COTS)上市,Pastoriza Electronics等公司开始提供标准化的ADC产品。

1970年代,几乎所有我们今天使用的ADC技术都已知晓。制造商在ADC和DAC中添加了“锁存器”,允许它们与CPU芯片轻松接口。到了1980年代,随着对更高采样率和分辨率的需求,单片ADC开始出现,16位和18位ADC被开发用于CD播放器和其他高保真音频设备。

1990年代,Sigma-Delta ADC技术开始商业化,广泛应用于音频和视频设备中。这种技术以其高分辨率和低噪声性能而受到青睐。进入21世纪,随着CMOS技术的发展,ADC被集成到更复杂的系统级芯片(SoC)中。


ADC的分类

常用ADC分类

尽管常见的音频ADC主要为 Sigma-Delta 型,在这里仍然介绍一下目前流行的ADC架构及其各自的基本原理,当下流行的ADC架构主要有:

  • 逐次逼近(SAR)
  • Sigma-Delta(Σ-Δ)
  • 流水线(Pipelined)
    在这里插入图片描述
  1. 逐次逼近(SAR)ADCs —— SAR ADC是数据采集应用中最受欢迎的架构,尤其适用于需要输入多路复用的应用。SAR ADC具有无管道延迟、易于使用的特点,并且可用分辨率从8位到18位,采样率可达数MHz。
  2. Sigma-Delta(Σ-Δ)ADCs —— Σ-Δ ADC已几乎取代了需要高分辨率(16位到24位)和有效采样率到几百赫兹的积分型ADC。它们适用于精密工业测量和仪器,以及语音频段和音频应用,提供高分辨率和小信号的直接数字化。
  3. 流水线(Pipelined)ADCs —— 流水线ADC适用于采样率大于5 MSPS的高速应用。这些应用通常需要分辨率高达14位,并且要求在5 MSPS到超过100 MSPS的采样频率下具有高SNR和SFDR。

SAR ADCs 工作原理

不妨直接看这个视频,印度佬的口音虽然听着有些难受……

SAR ADC其基本结构非常简单。其通过将输入与既定电压对比,以此来判定输入电压的值。我们具体来看下图左:

模拟输入电压(Analog In)由采样/保持电路保持,输入进比较器的一端;比较器的另一端为基准电压,基准电压应该如何变化呢?其通过一个DAC进行调整,宏观上来看,这其实是个负反馈,通过DAC的不断变化来逼近模拟输入电压的真实值,而这个逼近的过程类似于二分查找。

为实现二分查找,N位寄存器首先设置在中间刻度(即:100… .00,MSB设置为1)。这样,DAC输出(VDAC)被设为 VREF/2(VREF是提供给ADC的基准电压)。然后,比较 VIN 是小于还是大于 VDAC。如果VIN大于 VDAC,则比较器输出逻辑高电平或1,N位寄存器的 MSB 保持为1。相反,如果 VIN 小于 VDAC,则比较器输出逻辑低电平,N位寄存器的MSB清0。随后,SAR控制逻辑移至下一位,并将该位设置为高电平,进行下一次比较。这个过程一直持续到LSB。上述操作结束后,也就完成了转换,N位转换结果储存在寄存器内。

下图右展示了这个逼近的过程,SAR ADC的采样速率最高可达5Msps,分辨率为8位至18位。相较于速度更快的 Flash ADC, 有着更高的分辨率,但速度会慢很多,之所以 Flash ADC 可以达到很高的速率,是由于其采用了多个比较器并行的结构。

在这里插入图片描述


Sigma-Delta ADCs 工作原理

在了解 Sigma-Delta ADC 的工作原理前,我们不妨先理解其核心的计算方法。

或许可以通过这个网站:Σ-Δ型ADC指南 动手操作一下,可以交互式的了解 Sigma-Delta ADC 的工作原理。

“UNDERSTANDING DELTA-SIGMA DATA CONVERTERS” 这本书的一开始就用两个生动的案例解释了通过过采样来实现模数转换的魅力。第一个案例是买咖啡,第二个案例是量字典厚度,我们来看第一个案例。

  • 咖啡售价 $3.47,学生每天都要买一杯咖啡。为了避免找不开零钱,学生要么付款 $5,要么不付钱。
  • 如果学生欠咖啡馆超过 $2.5,她就向售货员交一张 $5。相反,若她欠了不到 $2.5,则不用支付。

在这里插入图片描述

  • 第一天,学生按照约定支付5美元。她注意到,在第一天结束的时候,她欠咖啡馆 $-1.53。负号表示学生付的钱多了。
  • 第二天在咖啡厅点餐时,学生提醒店员昨天多付了多少钱,学生只需支付 3.47-1.53 = $1.94。按照约定,她什么也不用付,但她欠咖啡馆$1.94。
  • 第三天,学生需要支付 $5.41,并按照约定,她交给售货员一张5美元的钞票。她欠咖啡馆0.41美元。这种情况持续下去,日复一日。

我们以信号流图的形式来体现这个过程:

  • u u u 为咖啡价格(指代ADC的模拟输入);
  • v [ n ] v[n] v[n] 为第 n n n 天学生的支付额,为0或者5;
  • y y y 为量化器的输入,表示学生在第 n n n 天下单时的欠款总额;
  • 这个信号流图中的量化器表示的是: y y y 大于 2.5 时, v = 5 v=5 v=5,否则 v = 0 v=0 v=0
  • 图中z变化表示延迟一天;

在这里插入图片描述

Sigma-Delta ADC 的工作原理就是这样的,但此时的输出 v v v 还不是ADC最终的输出,其还是一个PDM波形,需要对输出的序列进行数字滤波和抽取,数字滤波可以将我们需要的信号滤出,并将量化噪声滤除。

在这里插入图片描述
在这里插入图片描述

MATLAB 有一个 SD ADC 的仿真案例,不妨看一看其中各个节点的实际输出。如果安装了simulink和dsp相关的包,应该可以直接打开运行。通过对比模拟输入和 Two Level ADC 的 PDM 波形输出,可以更好的理解这个过程。同时通过数字输出与模拟输入的延时,我们也可以理解这种 ADC 是难以高速运行的。

openExample('dsp/SigmaDeltaADConversionExample')

在这里插入图片描述
在这里插入图片描述


Pipelined ADCs 工作原理

流水线 ADC 不指望一次性把模拟数据全部转换成数字的,其通过多个低精度ADC实现高精度的ADC。模拟信号输入后,流水线 ADC 通过 3bit-ADC 得到最高的几个bit,而后把生成的数字信号经由一个 3bit-DAC 转换成低精度模拟信号,并于输入信号进行比较,将误差通过放大器进行放大,下一级再如法炮制。这个流程倒有点像递归?
流水线 ADC 之所以称为 “流水线”,是因为其能够一定程度的并行工作,也正是这种设计,它可以实现高吞吐。stage1的比较器在完成了一次比较后,可以立马接受新的模拟信号输入,继续干活。所以流水线ADC的吞吐量大,但由于ADC级数多,所以延迟也相对高。

在这里插入图片描述

在此原理图中,模拟输入 VIN 首先由采样保持器 (S&H) 进行采样并保持稳定,而第一阶段的 ADC 将其量化为 3 位。然后将 3 位输出并送到 3 位 DAC,通过放大器求两者之差,然后将此“残差”放大四倍并馈送到下一阶段(第 2 阶段)。此放大的残差继续通过管道,每阶段提供三位,直到到达 4 位 ADC,后者解析最后 4 LSB 位。由于每个阶段的位都是在不同时间点确定的,因此在馈送到数字纠错逻辑之前,与同一样本相对应的所有位都与移位寄存器进行时间对齐。请注意,当一个阶段完成样本处理、确定位并将残差传递到下一阶段时,它就可以开始处理从每个阶段中嵌入的采样保持接收到的下一个样本。这种流水线操作是高吞吐量的原因。

流水器 ADC 巧妙的利用了模拟放大器的准确性,通过低精度采样,误差放大的循环,实现了巧妙的数字采样设计。


参考

本文有不少内容取自这些材料——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值