脉宽调制 (PWM) 是从微控制器或 FPGA 等数字器件产生模拟电压的一种常用方法。大多数微控制器都具有内置的专用 PWM 产生外设,而且其仅需几行 RTL 代码即可从 FPGA 产生一个 PWM 信号。如果模拟信号的性能要求不是太严格,那么这就是一种简单和实用的方法,因为它只需要一个输出引脚,而且与具有一个SPI 或 I2C 接口的数模转换器 (DAC) 相比,其代码开销是非常低。图 1 示出了一款典型应用,其采用一个经滤波的数字输出引脚来产生一个模拟电压。
图 1:PWM 至模拟转换
该方案的诸多不足之处您不必深究就能发现。理想情况下,一个 12 位模拟信号应具有小于 1LSB 的纹波,因而对于一个 5kHz PWM 信号需要采用一个 1.2Hz 低通滤波器。电压输出的阻抗由滤波器电阻决定,如果要保持一个大小合理的滤波电容器,那么它就会相当大。因此,输出必须只驱动一个高阻抗负载。PWM 至模拟转换函数的斜率 (增益) 由微控制器 (很可能是不准确) 的数字电源电压来决定。一个更微妙的影响是:为了保持线性度,在高态中连接至电源之数字输出引脚的有效电阻,以及在低态中连接至地的电阻,相比于滤波器电阻的阻值时, 失配必须很小。最后,PWM信号必须是连续的,旨在把输出电压保持在一个恒定值,假如处理器被置于一种低功率停机状态,这或许会产生问题。 PWM至模拟转换得到改善吗? 图 2 显示了试图弥补这些不足的方法。一个输出缓冲器允许在使用高阻抗滤波器电阻的同时提供一个低阻抗模拟输出。通过采用一个外部 CMOS 缓冲器改善了增益准确度,该缓冲器由一个高精度基准来供电,这样 PWM 信号摆幅在地电位和一个准确的高电平之间。此电路是有用的,但缺点是组件数量多,且无法改善 1.1 秒的稳定时间,再者也没有办法在不使用连续PWM 信号的情况下“保持” 模拟值。
图 2:PWM 至模拟转换得到改善吗?
下一页:改善PWM 至模拟转换改善了 PWM 至模拟转换! LTC2644 和 LTC2645 是具有内部 10ppm/°C 基准的双通道和四通道 PWM 至电压输出 DAC,可从数字PWM 信号提供真正的 8 位、10 位或 12 位性能。LTC2644 和 LTC2645 克服了上面提到的那些问题,采取的方法是直接测量输入 PWM 信号的占空比,并在每个上升沿上将适当的 8、10 或 12 位代码发送至一个高精度 DAC。 一个内部 1.25V 基准把全标度输出设定为 2.5V,如果需要一个不同的全标度输出,则可使用一个外部基准。一个单独的 IOVCC 引脚负责设定数字输入电平,从而允许直接连接至 1.8V FPGA、5V 微控制器或介于其间的任何电压。DC 准确度指标是非常出色的,具有 5mV 偏移、0.8% 最大增益误差和 2.5LSB (12 位) 最大 INL。输出稳定时间为 8μs,即可从 PWM 输入的上升沿稳定到终值 (在 12 位时为 1LSB) 的 0.024% 之内。对于 12 位版本,PWM 频率范围为 30Hz 至 6.25kHz。
图 3:4 通道 PWM 至模拟转换
(点击查看大图)
多用途的输出模式 图 4 示出了一款典型的电源修整 / 裕度调节应用电路,其利用了 LTC2644 的另一项独特特性。把 IDLSEL 连接至高电平将选择“采样 / 保持”操作;输出在启动时为高阻抗 (无裕度调节),输入端上的一个连续高电平将导致输出无限期地保持其数值,而一个连续低电平则把输出置于高阻抗状态。因此,在上电时可利用一个 PWM 突发脉冲 (其后随一个高电平) 对电源进行一次修整。将 PWM 信号拉至低电平可使电路干净地退出裕度调节操作。把 IDLSEL 连接至 GND 将选择“透明模式”,在该模式中,输入端上的一个连续高电平把输出设定至全标度,而一个连续低电平则把输出设定至零标度。
图 4:裕度调节应用电路
结论 倘若遭遇典型 PWM 至模拟转换方法的局限性,请不要绝望。LTC2645 可从脉宽调制数字输出产生准确、快速稳定的模拟信号,同时保持了低组件数目和代码简单性。