我希望采集一个大约5kHz的纯正弦波的FFT。问题是,要获得一个纯正弦波的FFT,就需要也是一个纯正弦波。但大多数可编程信号发生器的噪声性能与失真性能都不怎么样,更别提与专用运放和好ADC相比较的“嘈杂”数字背景了。你不可能使用“约60dB”的源去测出90dB的失真与噪声。所以我没有尝试去找一台近乎理想的可编程信号发生器,而是决定使用一只超低失真运放LT1468-2,做一个低失真的Meacham灯泡稳定(Meacham-bulb-stabilized)Wien桥振荡器(图1)。
灯泡的波幅稳定技术是利用了灯泡阻抗的正温度系数,以稳定运放的增益,使之与Wien桥中心频率处的衰减系数3相匹配。当输出幅度增加时,灯丝被加热,阻抗增加,降低了增益,因而降低了幅度。我手边没能立即找到常见的所谓327灯泡,决定尝试用一个较小功率的高压灯泡,即图1中的C7 Christmas灯。在室温下,测得其阻抗为316Ω,经过冷冻后(大约15°C),测得阻抗为270Ω。在120V、5W规格下,它在白热状态下应该为2.8k。似乎有一个阻抗区间都能稳定地获得增益3,因此我决定将它串联一只100Ω电阻,使之更加线性化。
在增益为3时,灯泡与100Ω之和必须是1.24 k反馈的一半(或等于612Ω),因此灯泡必须稳定在512Ω。用(316-270)Ω/[25-(-15)] =1.15Ω/ 的电阻温度系数做粗略计算,得灯丝温度约为195 。
振荡器起振正常,在输出端有数伏的良好5.15 kHz正弦波,单独的测量表明其二次与三次谐波分量都小于-120dBc。用图2中的电容与电位器做隔直和调节直流电平后,将振荡器加在LTC6255的输入端。交流幅度调节在-1dBFS,而调节直流电平,使信号位于ADC范围的中心处。不过,这个振荡器是纯模拟的,后台没有用于与ADC同步的“10MHz基准输入”。结果是FFT中有明显的频谱泄漏,因此看上去更像一个马戏团帐篷,而不是一个脉冲。为减少FFT泄漏,给数据加一个92dB的Blackman-Harris窗口,可得到一个好看的FFT(图3)。
尽管这个FFT有一定的准确度,但仔细检查就会发现一些问题。例如,输入信号是-1dBFS,但从图形上看,它显然低于-1dB。其原因是,即便出色的窗口功能也会在主脉冲附近的频率窗口内留下一些基波功率。软件将这些窗口包含在其功率计算中,这理所应当,但事实是脉冲过低,不能做出好的图形。
谐波高度也有相同的情况,虽然它们计算无误,相对基波是精确的,但它们的绝对项也看似过低。所以,对一个一致的锁相系统来说,开窗口是没有替代的。
当发现这些缺点时,我绝望地认为自己大概得重新回去画图了,否则就得找到一款低失真和低噪声的锁定振荡器,或者有超好的后滤波。我怎么样才能在这种优势的数字环境中,做出与一个FFT窗口相一致的基础模拟振荡器?在5 kHz时,一个陷波的无源滤波器既大又繁杂。我打算通过减少增益的方法使Wien桥振荡器失谐,从而将其转换成为一个滤波器。
但我忽然想到,一个模拟正弦波会失真,但锁定良好的外接振荡器可能足以将Wien桥频率修改为需要的值。于是我决定尝试将一个正弦波注入到Wien桥运放电路的输入端,并选择了一个大的串联阻抗,避免同时注入噪声与失真。我想用200 k阻抗,这是现有阻抗的大约1000倍,并将其放在图4所示的左侧(“新输入端”)。我将Agilent 33250A设为5kHz正弦波,将其加在新输入端上,同时用一台示波器观察33250A和Wien桥输出端,然后慢慢调高33250A频率。我紧张地看到,两个正弦波最终“重合”了,然后进入了锁定状态。
我连上了10MHz的背板基准信号,将33250A的频率改为5.157kHz,这是FFT中最近的相干窗口了。两个正弦波维持锁定,可编程的33250A发生器成功地将Wien桥振荡器略微拉偏其自然频率,而达到了所需要的频率。结果就是一个几乎理想的FFT。所有相干的基波功率和失真功率都位于唯一的窗口内,并精准地表示(图5)。
可编程正弦波发生器通常有很好的相位噪声特性,以及10 MHz的锁定能力,但它们也有高输出带宽的背景噪声与失真。一个FFT会对所有这些形式的破坏源很敏感,也有一个固定数量的输出窗口频率。为了测试高性能的模拟与混合信号系统,经典的Wien桥振荡器与可编程发生器的恰当组合,可以提供一个近乎完美的同步采样信号源,获得精确的FFT。