sigma-delta ADC原理

主要是想大致了解Sigma-delta ADC是怎么工作的,写了个乱七八糟的代码来简单看下。很粗略的解释,主要给自己参考。

SAR ADC

successive approximation register adc,简单理解为一个采样开关和采样电容。采样开关定时闭合,忽略暂态,则采样电容上的电压等于采样开关闭合时刻的输入电压。

image-20220403105120710

因此理想的SAR ADC相当于一个采样开关 ,把连续的输入信号变成了离散的采样结果。

或者,另一种画图的方法,就是说,[n*Ts,(n+1)*Ts]期间的采样结果恒定为Vin(n*Ts)

image-20220403102424255

Sigma-delta ADC

核心是sigma-delta调制,如下图。

1-bit DAC的输出只有两种电压,取决于给它提供的电压基准Vref+和Vref-:

  • 输入为0,输出为Vref-
  • 输入为1,输出为Vref+

sigma-delta调制的运算过程:

  • 输入与1-bit DAC相减,得到误差
  • 对误差积分
  • 积分结果与0比较,输出调制信号
  • 同时,调制信号再通过1-bit DAC反馈到输入侧,与输入相减

通过sigma-delta调制,输入的模拟量变为了01的调制信号。而且0和1的比例与输入信号幅值有关。举个极端的例子,

DAC的参考Vref+=3V,Vref-=0。输入信号也是2.99V,那么,

  • 第1次运算,误差2.99V,积分器输出2.99V,调制信号1

  • 第2次运算,误差-0.01V,积分器输出2.98V,调制信号1

  • 第299次运算,误差-0.01V,积分器输出0.01V,调制信号1

  • 第300次运算,误差-0.01V,积分器输出0.00V,调制信号0

大致可以看出,当输入信号电压高时,调制信号中的1占比就更高。

image-20220403103423943

以上过程转换成matlab代码:

    sigma_delta = zeros(1,N_over_sample); 
    for i = 1:N_over_sample  % intput: N samples, output: N sigma_delta values
        vfb = vref * out; % 根据上一次比较结果,vfb可能是0,也可能是Vref
        err = vin(k*N_over_sample+i) -  vfb; % 误差
        vint = vint + err; %积分
        out = (vint > 0); %再与0比较
        sigma_delta(i) = out; %输出的sigma_delta调制结果
    end
    SigD_result(k+1) = mean(sigma_delta)*vref; 
    % 对调制后的信号低通滤波,再乘以Vref可以获得最终ADC结果。
    % 比如,可以用求平均值实现低通滤波
    % ADC results is obtained by averaging the N sigma_delta values and *vref

image-20220403102438382

对比

降低采样频率,便于画图对比两种ADC的区别:

  • 对于SAR ADC,转换结果是输入信号在某个时刻的实际值
  • 对于sigma-delta ADC,转换结果接近输入信号在某一小段时间内的平均值

image-20220403102528263

TI视频的这张图解释得更清楚一些:

image-20220403102926743

参考资料

查到ADI官网上有个教程,里面可以一步一步演示Sigma-delta调制过程,可以参考下。

Sigma-Delta ADC Tutorial | Design Center | Analog Devices

TI有个视频,介绍两种ADC的基本原理。

https://youtu.be/U_Yv69IGAfQ

画各个图的代码:

close all;
clear;

f0 = 1e3; % frequency of the input signal 
T = 1/f0; % period 
dt = 1e-8; % time step 
t = 0:dt:T; 
vin = 1+sin(2*pi*f0*t)+0.3*sin(2*pi*3*f0*t); % input signal


Fs = 20e3; % sample rate
Nt = round((1/Fs)/dt); % 每Nt个点中取一个作为理想SAR ADC的采样结果

SAR_result = vin(1:Nt:length(vin)); % SAR结果
SAR_t_instance = t(1:Nt:length(vin)); % SAR采样时刻

figure(1)
plot(t,vin,SAR_t_instance,SAR_result,'*');
grid

% 换种方式来画SAR ADC的图,就是说,[n*Ts,(n+1)*Ts]期间的采样结果恒定为Vin(n*Ts)
v_sar = vin;
sample = vin(1);
for i = 1:length(vin)
    if mod(i,Nt) == 0 % From Ns*100 points, take Ns samples, thus 1 out of 100 
        sample = vin(i);
    end
    v_sar(i) = sample; 
end
figure(2)
plot(t,vin,t,v_sar)
grid

% 换种方式来画SAR ADC的图


% Sigma-delta ADC 
vref = 3; %这里Vref_P=3V  Vref_N = 0V

Fs_sigma = 20e3;
N_over_sample = round((1/Fs_sigma)/dt); %例如,sigma delta 对1000次采样进行运算,输出1个最终结果
N_sample = round(length(vin)/N_over_sample); 
%例如采样周期是dt=100MHz,每1000个
SigD_t_instance = zeros(1,N_sample);
SigD_result = zeros(1,N_sample);
for k = 0:N_sample-1
    sigma_delta = zeros(1,N_over_sample); 
    vint = 0;
    out = 0;
    for i = 1:N_over_sample  % intput: N samples, output: N sigma_delta values
        vfb = vref * out; % 根据上一次比较结果,vfb可能是0,也可能是Vref
        err = vin(k*N_over_sample+i) -  vfb; % 误差
        vint = vint + err; %积分
        out = (vint > 0); %再与0比较
        sigma_delta(i) = out; %输出的sigma_delta调制结果
    end
    SigD_result(k+1) = mean(sigma_delta)*vref; 
    % 对调制后的信号低通滤波,再乘以Vref可以获得最终ADC结果。
    % 比如,可以用求平均值实现低通滤波
    % ADC results is obtained by averaging the N sigma_delta values and *vref
    SigD_t_instance(k+1) = t((k+1)*N_over_sample);
end
figure(3)
plot(t,vin,SigD_t_instance,SigD_result,'*')
grid


figure(4)
plot(t,vin,t,v_sar)
hold on
plot(SigD_t_instance, SigD_result,'*')
grid



  • 46
    点赞
  • 236
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: sigma-delta-adc是一种基于sigma-delta调制的模拟数字转换器。这种转换器采用两个低通滤波器来减小噪声和降低采样频率。 在sigma-delta-adc中,模拟信号先通过一个高速取样电路,然后进入一个sigma-delta调制器。该调制器将模拟信号和反馈信号相减,并通过一个比较器来进行比较。根据比较器的结果,该调制器会输出两种电平的脉冲,分别对应于高位和低位数字。 这些数字被发送到一个数字滤波器中,在那里它们被处理成一个平均值。然后,数字信号被转换成二进制数字,并发送到后续的数字处理器中。 sigma-delta-adc的一个重要特点是其高分辨率和低成本。由于这种转换器使用数字滤波器进行平滑处理,因此可以通过增加滤波器的阶数来进一步提高分辨率。此外,由于sigma-delta-adc采用了一种很简单的电路结构,因此可以以较低的成本进行生产。 总的来说,sigma-delta-adc是一种越来越受欢迎的模拟数字转换器,其高精度、低成本以及容易集成到数字电路中,使其在许多应用领域中都有广泛的应用。 ### 回答2: Sigma-delta ADC是一种高精度的数字模拟转换器,其工作原理是将模拟信号用过采样和量化技术转化为数字信号,然后用数字信号处理器对该数字信号进行进一步的处理。 具体来说,sigma-delta ADC采用一种差分信号运算技术,将模拟信号与一个参考信号进行比较,并调整采样率和量化位数以达到高精度的数字信号输出。为减小系统误差,通常采用多级嵌套的结构来实现。 sigma-delta ADC的优点是高精度、抗干扰能力强、带宽宽、成本低等,广泛应用于电源管理、音频处理、通信等领域。 ### 回答3: Sigma-delta ADC(模数转换器)原理是将模拟信号按照一定的采样频率进行采样,然后通过一个差分放大器将采样值进行比较,并将差值数字化。数字化的比较值将被输入到一个积分器中,然后被不停地积分,产生一个高频噪声。这个噪声信号被送入一个比较器中进行判断,若其超过一定的阈值,则将模数转换器的输出置为高电平,反之则置为低电平。 通过这个过程,sigma-delta ADC能够将模拟信号转换为一个比较粗糙的数字信号,但是对于实时应用来说,这样的数字信号并不可用。为了精确地获取原始的模拟信号,需要将这个数字信号进行低通滤波。低通滤波器的作用是,将原始信号的高频噪声去除,留下有效的信号,从而得到一个更为准确的数字信号输出。 总体而言,sigma-delta ADC原理是通过在模拟信号采样过程中引入高频噪声来提高数字信号的精度,进而通过低通滤波重新获取原始信号。这种技术可以减少电路中噪声的影响,提高信号的质量。同时,由于其简单而高效的技术原理sigma-delta ADC已成为现代电子设备中高速数字信号转换的首选方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值