在微控制器(MCU)中重建模拟信号的一种常用方法是脉宽调制(PWM)。但是,这种调制会产生大量的谐波分量,从而限制所生成信号的带宽,而且需要通过滤波来减少输出纹波(请参阅“Cancel PWM DAC ripple with analog subtraction”和“Fast PWM DAC has no ripple”两篇文章)。
然而,由于是一种开关调制,PWM的优势是只需要使用简单的二进制输出。另一种方法是采用具有一定分辨率位数的特定数模转换器(DAC)外设。DAC和PWM这两种方案都需要使用特定外设,但是在很多情况下它们都无法获得。
一种解决方案是将8位MCU与4位固定参考电压(FVR)模块结合使用,然后采用Σ-Δ调制(SDM)生成模拟信号。由于SDM可以将噪声移动到更高频率,因此就更容易实现滤波。这样就可以提高分辨率并增加有效位数。图1给出了此一阶SDM框图,图2给出了其汇编程序代码。
图1:一阶4位Σ-Δ调制器。
图2:调制器的汇编程序代码。
如图1所示,我们将输出电压(V)截断,将其四个最高有效位(MSB)连接到4位DAC模块,而残差h则送往与下一个输入样本x相加。由于这个简单的SDM只接受一半的输入范围(从而避免饱和),因此数据输入幅度被限制为7位,而其MSB则固定为“0”。为了对该设计进行测试,这里使用了一个查找表,它包含128个正弦点,由定时器1中断以32kHz进行采样。定时器0用于产生主中断,而以250kHz的速率执行SDM代码。CPU时钟配置为64MHz,调制器所用时间小于2μs。图3显示了模拟输出响应时间。
图3:滤波前生成的信号波形。
此外,我们通过逻辑分析仪对4位输出进行直接采样,测试了所生成的信号在频域中的幅度响应,如图4所示。由此可以得出结论,使用低通滤波器去除1kHz以上的噪声,可以实现60dB的无杂散动态范围,这意味着过采样率(OSR)为250,分辨率可以提高4位(0.5×log2OSR)。该解决方案也适用于较少的输出位数,即使只使用了一个开关输出位也行。
图4:输出频率响应(128ks DFT)。
(原文刊登于EDN美国版,参考链接:Sigma-delta modulation improves resolution in programmable interrupt controller analog outputs)
本文为《电子技术设计》2020年3月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里。