0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

调制器及测试平台的Matlab实现 复位/不复位时两种滤波器的转换误差对比

CHANBAEK 来源:臣扬 作者:陈阳 2022-12-02 16:59 次阅读

前言

众所周知,增量式SD-ADC相比传统结构而言,需要在每次测量开始之前进行复位,以此清零积分器积分电容上的剩余电荷以及数字滤波器中寄存器。然后,在ADC连续转换时,清零这一操作需要额外操作一次。如果不进行清零直接进行转换,ADC的精度会损失多少?本文针对这个问题进行了Matlab建模,分析了在两种常用数字滤波器,级联积分滤波器(CoI)和SINC滤波器下这一情况的影响。

调制器及测试平台的Matlab实现

本文Matlab建模了一个常用的二阶Sigma-Delta调制器模型,在这个模型中没有进行系数缩放,具体代码如下:

clear
format long

Vref=2.5;
M=256; % Sinc滤波器抽取率
L=3;   % Sinc滤波器阶数
N=10000; % 测试的直流输入点数

for j=1:N;
Vin(j)=3/N*j-1.5;

% Second_order SD Modulator
Vout1=0;
Vout2=0;
Vout1(1)=0;%rand(1)*5-2.5;
Vout2(1)=0;%rand(1)*5-2.5;
bs=0;
for i=2:M*L;
    if bs(i-1)>0.5;
        Vout1(i)=Vout1(i-1)+(Vin(j)-Vref);
        Vout2(i)=Vout2(i-1)+Vout1(i-1)+(Vin(j)-Vref)*2;
    else
        Vout1(i)=Vout1(i-1)+(Vin(j)+Vref);
        Vout2(i)=Vout2(i-1)+Vout1(i-1)+(Vin(j)+Vref)*2;
    end

    if Vout2(i)>0;
        bs(i)=1;
    else
        bs(i)=0;
    end
end

Dout1(j)=sinc3_filter(M,L,bs);
Dout2(j)=coi_filter(M*L,bs);
end

E_sinc=Vin-(Dout1*5-2.5);
E_coi =Vin-(Dout2*5-2.5);
figure(1)
plot(Vin,E_sinc,'r');
title('使用SINC3滤波器的转换误差')
figure(2)
plot(Vin,E_coi,'b');
title('使用CoI滤波器的转换误差')

这个代码实现的功能包括:

  • 一个二阶单比特量化的Sigma-Delta调制器;
  • 产生N个从-1.5~1.5的直流值输入调制器;
  • 分别使用Sinc3滤波器和CoI滤波器对调制器输出进行处理;
  • 计算ADC在两种滤波器下分别的转换误差。

其中,两种滤波器Matlab函数的实现代码分别为:

Sinc3滤波器

function Dout=sinc3_filter(M,L,bs)

sigma1=0;
sigma2=0;
sigma3=0;
delta1=0;
delta2=0;
delta3=0;
sigma3_reg=0;

for i=1:length(bs)
  sigma1=sigma1+bs(i);
  sigma2=sigma2+sigma1;
  sigma3=sigma3+sigma2;
    delta1_temp=sigma3-sigma3_reg;
    delta2_temp=delta1_temp-delta1;
    delta3_temp=delta2_temp-delta2;
  if(mod(i,M)==0)
    sigma3_reg=sigma3;
    delta1=delta1_temp;
    delta2=delta2_temp;
    delta3=delta3_temp;
  end
end

Dout=delta3/M^3;
end

CoI滤波器

function Dout=coi_filter(N,bs)

sigma1=0;
sigma2=0;

for i=1:N
  sigma2=sigma2+sigma1;
  sigma1=sigma1+bs(i);
end
Dout=sigma2/(N*(N-1)/2);

end

复位/不复位时两种滤波器的转换误差对比

存在复位时,在代码中每次转换开始之前将两个积分器的输出的初值设置为0,如下代码所示:

Vout1(1)=0;
Vout2(1)=0;

这种情况下,两种滤波器的转换误差如下图所示:

图片

上图中使用两种滤波器的转换误差几乎相近,这与文献[1]中的结论相符,即:在相同的转换时钟周期下,Sinc3滤波器可以实现与CoI几乎相同的转换误差。

不复位时,调制器的积分器1和积分器2的输出会保持为上一次结束时的终态值,实际中这一值会和输入电压大小,热噪声等调制器的非理想因素相关,因此很难在模型中根据原理给出。为了简便起见,本文模型通过产生一个±VREF的随机数赋给积分器1和积分器2的输出初态来实现近似的效果,代码如下所示:

Vout1(1)=rand(1)*5-2.5;
Vout2(1)=rand(1)*5-2.5;

这种情况下,两种滤波器的转换误差如下图所示:

图片

如上图所示,不复位时,使用sinc3滤波器并未使转换精度降低太多,而使用CoI滤波器转换精度急剧下降。这是因为两者对输出码处理的权重不同导致的。对Sinc3滤波器而言,在假设转换周期数为N,那么第一个输出码的权重为1,所有输出码权重和为(N/3) ^3^ ,因此第一个输出码对最终输出数据影响的比重为:1/((N/3) ^3^ )。而对CoI滤波器而言,第一个输出码的权重为(N-1),所有输出码权重和为N*(N-1)/2,因此第一个输出码对最终输出数据影响的比重为:2/N. 当不进行复位操作时,直接的影响为第一个输出码(或前几个输出码)所携带的量化噪声很大,而相比采用CoI滤波器而言,采用Sinc3滤波器时第一个输出码的比重小了很多,因此这个因为没有复位造成的超大量化噪声被更好地稀释,从而对输出码的影响相比采用CoI滤波器急剧降低,基本可以忽略不复位的影响。

(感兴趣的读者可以进一步证明,第一级积分器不复位对CoI滤波器的影响比第二级积分器不复位的影响大很多。)

总结

由上述模型可以发现,设计增量式Sigma-Delta调制器时,如果采用Sinc滤波器,那么即使在开始转换的时候不进行复位,积分器仍然保存上次转换结束所残余的输出值,也不会对输出结果造成太多的误差。因此,如果设计者所设计的增量式SD-ADC采用了Sinc滤波器,那么可以不设计额外的复位操作,尤其是连续转换时,这样仍然不会影响ADC的精度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    185

    文章

    2977

    浏览量

    230644
  • 滤波器
    +关注

    关注

    161

    文章

    7843

    浏览量

    178374
  • adc
    adc
    +关注

    关注

    98

    文章

    6512

    浏览量

    545014
  • 调制器
    +关注

    关注

    3

    文章

    841

    浏览量

    45194
收藏 人收藏

    评论

    相关推荐

    Σ-Δ模数转换器之数字滤波器类型与用途

    具有有限脉冲响应(FIR)。这些滤波器本质上是稳定的,易于通过线性相位响应进行设计。让我们来对比Σ-Δ ADC中的两种FIR滤波器。第一
    发表于 08-30 14:51

    Δ-Σ 调制器是如何工作的?

    Δ-Σ ADC由Δ-Σ调制器和数字滤波器构成。调制器将模拟输入转换为数字比特流,而数字滤波器将比特流转换
    发表于 08-12 04:45

    了解这两种滤波器原理,各式尽在掌握

    滤波器作为电子系统中十分常见的工具,在信号处理中占有重要地位。本文将对两种典型的滤波器原理进行分析,并借以理解其他各式滤波器。  滤波器是一
    发表于 12-01 08:00

    隔离型Σ-Δ调制器的简化框图

    进行采样,以进一步滤波和抽取。在本文中,将详细研究这类隔离Σ-Δ调制器的输出数据信号完整性。并通过简单的电磁干扰(EMI)测试设置、对由这
    发表于 10-21 16:12

    滤波器设计与信号处理的MATLAB实现

    2 步模拟滤波器的设计,我们主要学习的是巴特沃斯设计方法,因此这里以“巴特沃斯滤波器双线性变换”设计法为例来阐述 IIR 滤波器的设计方法和 matlab
    发表于 09-26 07:22

    电光调制器,电光调制器工作原理是什么?

    电光调制器,电光调制器工作原理是什么? 电光调制器是利用某些晶体材料在外加电场的作用下所产生的电光效应而制成的器件。常用的有两种
    发表于 04-02 15:50 2.1w次阅读

    FPGA实现OFDM调制器设计

    提出一 OFDM 高性能数字调制器的FPGA实现方案;采用自顶向下的设计思想,将系统分成FIR滤波器、数控振荡、移相器、乘法电路和加法电
    发表于 08-15 11:15 62次下载
    FPGA<b class='flag-5'>实现</b>OFDM<b class='flag-5'>调制器</b>设计

    CIC滤波器调制器应用中的性能研究

    为了补偿级联积分梳状(B3B)滤波器固有的通带衰减,提出在B3B滤波器之前插入脉冲成形滤波器(CDE)进行预补偿的新算法,该算法不增加硬件复杂度9以多速率正交调制器为例分析了补
    发表于 08-26 15:11 26次下载
    CIC<b class='flag-5'>滤波器</b>在<b class='flag-5'>调制器</b>应用中的性能研究

    基于Matlab的FIR带通滤波器设计与实现

    本文通过介绍一借助Matlab的FDATOOL滤波器设计分析软件,设计了一FIR数字带通滤波器,并对一段含噪语音信号进行
    发表于 07-26 10:45 2.9w次阅读
    基于<b class='flag-5'>Matlab</b>的FIR带通<b class='flag-5'>滤波器</b>设计与<b class='flag-5'>实现</b>

    基于Matlab/Simulink的FIR数字滤波器的设计与实现

    基于Matlab/Simulink的FIR数字滤波器的设计与实现
    发表于 01-15 15:16 39次下载

    单片机实现利用中断复位两种方式

    如果想要实现利用中断复位,我所知道的有两种方式:看门狗中断和无中断服务程序的中断。
    的头像 发表于 10-30 15:55 9673次阅读

    LMS自适应滤波器MATLAB仿真和DSP实现

    LMS自适应滤波器MATLAB仿真和DSP实现
    发表于 06-09 10:47 65次下载

    电源滤波器安装常见的两种错误

    很多人在安装电源滤波器时容易出现问题,这直接影响到滤波器的使用。今天,维爱普小编要给大家介绍一下电源滤波器安装常见的两种错误,希望大家能很好地规避。
    发表于 08-05 16:06 886次阅读

    abb变频怎么复位

    设置和调整的目的。那么,ABB变频如何进行复位呢?本文将为大家详细讲解ABB变频复位的方法和步骤。 一、ABB变频
    的头像 发表于 08-23 17:26 1.4w次阅读

    ABB变频怎么复位 | 复位时可能会出现哪些问题?

    ,ABB变频如何进行复位呢?本文将为大家详细讲解ABB变频复位的方法和步骤。 一、ABB变频复位
    的头像 发表于 02-21 10:50 8069次阅读
    ABB变频<b class='flag-5'>器</b>怎么<b class='flag-5'>复位</b> | <b class='flag-5'>复位</b>时可能会出现哪些问题?