数字可编程增益放大器(DPGA)放大或减弱模拟信号,可最大限度地扩大模数转换器(ADC)的动态范围。大多数单片DPGA都在运算放大器的反馈环路中使用了多路复用乘法数模转换器(DAC),如Maxim LTC6910和National Semiconductor LPM8100,以便DAC的输入代码可以设置放大器的闭环增益。不使用单片DPGA,而是使用两个运算放大器和三个模拟开关来构建基于负时间常数的DPGA。
无疑,工程师对e–t/RC 收敛指数非常熟悉,其中RC电路内的电容器以渐进方式放电到零。对于输入VIN,在t = T = loge(2)RC时V = VIN/2,在t = 2T时V = VIN /4,在t =3T时V = VIN /8,依此类推。
当用一个合成负电阻的有源电路代替R时,工程师可能不太熟悉同一RC拓扑结构的特性,不过同样简单。当用–R代替电阻R时,可以创建一个正RC时间常数。这样就创建了一个发散指数VINe+t/RC。
该波形并非收敛为零,而是在理论上发散为无穷大,当t=T时V=2VIN,当t=2T时V=4VIN,当t=3T时V=8VIN,依此类推。因此,在启动“负放电”之后只须等待适当的时间(t = log2(V/VIN),就可放大VIN。发散指数和负时间常数是图2中的电路的核心概念。
可用由微控制器或其他电路生成的脉冲宽度调制(PWM)信号对放大器增益进行编程。当PWM信号到达逻辑0时,采样保持电容器C1充电至VIN。当PWM信号循环到逻辑1时,运算放大器A1驱动R1C1正反馈环路,创建一个负时间常数。
只要PWM信号保持在逻辑1,导致C1充电的发散指数的上升就会继续。这将创建为VOUT(t) = VIN2(t/10?s + .5) 的净电压增益。因此,增益= 2(t/10?s + .5),log(增益) = 3 + 0.6 dB/?s。在放大周期结束时,PWM返回到逻辑0,放大器A2捕捉并保持放大的VIN。
增益和时序之间的对数关系可提供卓越的增益分辨率,即使是在PWM信号只有8位分辨率,而且其可编程增益在宽范围情况下,也优于0.2 dB/LSB_step。
指数信号的时序精度和可重复性、ADC采样、抖动,以及RC时间常数稳定性都会限制放大器的增益编程精度。在图2中,1 ns时序误差或抖动都会导致0.007%的增益编程误差。幸运的是,微控制器和数据采集系统中几乎普遍包括可编程的定时器/计数器硬件,这通常便于以数字方式生成可重复的PWM控制信号。