在微控制器(C) 中重建模拟信号的一种流行方法是通过脉宽调制 (PWM)。然而,这种调制会产生大量的谐波分量,这会限制生成信号的带宽,并且需要进行滤波以减少输出纹波(请参阅使用模拟减法消除 PWM DAC 纹波和快速 PWM DAC 没有纹波)。
然而,由于它是一种开关调制,PWM 具有仅需要简单二进制输出的优势。另一种选择是使用具有一定位数分辨率的特定数模 (DAC) 外设。DAC 和 PWM 选项都需要使用特定的外设,而在许多情况下这些外设是不可用的。
一种解决方案是将 8 位微控制器与 4 位固定电压参考 (FVR) 模块结合使用,以使用 sigma-delta 调制 (SDM) 生成模拟信号(参考文献 1)。因为 SDM 可以将噪声移动到更高的频率,所以过滤任务更容易。由于这种效果,实现了分辨率增益,并且增加了有效位数。图 1显示一阶 SDM 框图,图 2显示汇编代码:
图 1一阶 4 位 sigma-delta 调制器
图 2调制器的汇编代码
输出电压 (V) 被截断以将四个有效位 (MSB) 连接到 4 位 DAC 模块,余数 h 被添加到下一个输入样本 x。由于这个简单的 SDM 只接受一半的输入范围以避免饱和,因此数据输入幅度被限制为 7 位,并且其 MSB 固定为“0”。为了测试该设计,使用了由定时器 1 中断以 32 kHz 采样的 128 个正弦点的查找表。定时器 0 用于生成主中断,以 250 kHz 的速率执行 SDM 代码。CPU 时钟配置为 64 MHz,调制器花费的时间少于 2 s。图 3显示了模拟输出响应时间。
图3滤波前生成信号的波形
此外,图 4显示了通过使用逻辑分析仪直接采样 4 位输出生成的信号在频域中的幅度响应。可以得出结论,使用低通滤波器去除 1 kHz 以上的噪声可以实现 60 dB 的无寄生动态范围,这意味着 250 的过采样率 (OSR) 和 4 位的分辨率增益 (0.5*log2 OSR) . 该解决方案对于较少的输出位也是有效的,即使仅使用一(1)个开-关输出位。
图 4输出频率响应(128 ks DFT)