sigma-delta ADC原理

这篇具有很好参考价值的文章主要介绍了sigma-delta ADC原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

SAR ADC

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

sigma-delta ADC原理

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

sigma-delta ADC原理

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

sigma-delta ADC原理

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占比就更高。

sigma-delta ADC原理

以上过程转换成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

sigma-delta ADC原理

对比

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

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

sigma-delta ADC原理

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

sigma-delta ADC原理

参考资料

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

Sigma-Delta ADC Tutorial | Design Center | Analog Devices

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

https://youtu.be/U_Yv69IGAfQ

画各个图的代码:文章来源地址https://www.toymoban.com/news/detail-410093.html

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



到了这里,关于sigma-delta ADC原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT的大致原理

    国外有个博主写了一篇博文,名字叫TChatGPT: Explained to KidsQ」, 直译过来就是,给小孩子解释什么是ChatGPT。 因为现实是很多的小孩子已经可以用父母的手机版ChatGPT玩了 ,ChatGPT几乎可以算得上无所不知,起码给小孩子讲故事,回 答一些简单的回答不在话下。其实这里面就涉

    2024年02月19日
    浏览(39)
  • chatgpt的大致技术原理

    当然可以,让我们从技术层面更详细地探讨一下ChatGPT的工作原理。 数据收集与预处理: 数据收集:ChatGPT首先会从各种来源(如网页、新闻、书籍等)收集大量的文本数据。这些数据为模型提供了丰富的语言模式和表达方式,使得ChatGPT能够理解和生成各种类型的文本。 预处

    2024年02月20日
    浏览(36)
  • Mr. Cappuccino的第57杯咖啡——简单手写Mybatis大致原理

    底层基于JDK动态代理技术实现 pom.xml config.properties UserEntity.java UserMapper.java Insert.java JdbcUtils.java MapperProxy.java SqlSession.java MybatisTest.java 运行MybatisTest类 SqlSession.java MapperProxy.java MybatisTest.java MapperProxy.java MybatisTest.java 运行结果

    2024年02月14日
    浏览(66)
  • 快速了解STM32的ADC功能,从入门到精通

    快速了解STM32的ADC功能,从入门到精通 1.关于ADC输入通道与GPIO口的输入关系需要查看STM32芯片手册(p31)而非数据手册。 2.外部触发源指的是触发ADC采样的触发信号,这与1的GPIO口输入是两个不同概念。而JEXTBEL[2:0]或者EXTBEL[2:0]决定具体是哪个触发源。 3.大的方向,触发模式分

    2024年01月16日
    浏览(29)
  • ADC内部工作原理

    ADC : A nalog to D igtal C onverter Digtal signal has no actual significant meaning, it just implies relative size not absolute size, then ADC needs a reference analog as converting standard. 数字信号没有实际的意义,仅仅代表一个相对大小而不是绝对大小,所以ADC转换模块需要有一个参考的模拟量( REF )作为转换标

    2024年02月10日
    浏览(39)
  • SAR ADC工作原理

    SAR ADC有着电路结构简单的优势,其中的模拟模块只有采样开关和比较器,其余均为数字模块。这不仅使设计变得简单,更是与数字CMOS工艺有着非常好的兼容性。其工作原理也是十分简单,即采用二进制搜索算法对输入信号进行转换。 ​ 图1是一个差分输入的SAR ADC基本结构,

    2024年02月13日
    浏览(35)
  • ADC0804工作原理及过程

    前言:本文详细说明了ADC0804工作原理及过程,还附有一个ADC0804在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用ADC0804芯片。 本文引用了百度文库一篇文章,原文链接: https://wenku.baidu.com/view/823c5913964bcf84b9d57b78.html? wkts =1672974785

    2024年02月01日
    浏览(34)
  • STM32——ADC基本原理

    ADC :Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器,是指将连续变量的模拟信号转换位离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。 STM32F4x ADC特点: 1、可配置12位、10位、8位或6位分辨率。 2、在转换

    2024年02月08日
    浏览(119)
  • ADC0809原理及控制详解

    ​ADC0809 的逻辑结构        ADC0809 是带有 8 位 A/D转换器、 8 路模拟开关以及微处理机兼容的控制逻辑的 CMOS组件。它是逐次逼近式 A/D转换器,是目前应用比较广泛的 A/D转换芯片之一,主要适用于对精度和采样速率要求不高的场合或一般的工业控制领域,可以和单片机直接相

    2024年02月16日
    浏览(28)
  • SAR型ADC结构原理

           SAR型 ADC,即逐次渐进逼近型 ADC,采用的是多次比较的方式来获得最终的输出结果,具有简单易用,功耗低的特点。下图这个结构可以帮助我们容易地理解SAR型 ADC的工作过程:         如上图,假设输入信号的伪代码为 45,ADC为一个 6位的 ADC,满量程输出为 63。

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包