多年前N2PK VNA挺火的,我也自制了一块,花了差不多近1000大洋,用的myVNA这个软件,随后因为要带电脑使用不方便,就一直闲置。
最近心血来潮,想把这玩意儿改成自带LCD显示的独立设备(我在最初设计板子的时候各个部分是分离的),所以又去翻了下Paul Kiciak的网站了解下更多信息,这个网站已经关掉了,我在另一个地方找到了备份。
有个网页中提到了,测量时会因为谐波的影响产生“假像”,Paul使用了一种谐波抑制的算法来去除这个影响,但该算法的原理网页中并未给出。Dave Roberts的myVNA软件也包含了这个算法。
为此我写邮件给Paul希望能介绍下这个算法的原理,但Paul表示这个算法是不开源的,然后给了我一篇他在Yahoo社区发的贴子,里面提到使用不同的相位进行采样,所以我研究了下找到了下面的方法,写出来大家讨论。
我们知道N2PK分别使用0和90度相位的参考信号和目标信号相乘,然后取直流分量得到目标信号在X轴和Y轴的投影,实现向量测量,实际测量中,使用的是CDS算法,即使用0度和180度参考的采样值相减得到X轴投影,使用90度和270度参考采样值相减得到Y轴投影,这个方法可以去除直流偏移和偶次谐波带来的误差。分析了CDS算法的原理,发现其就是数字相干检波(单点DFT)的一种特例。
下面说谐波抑制的方法。
将参考信号以45度相位进行步进,采样8个值,那么各个采样值的含义如下:
v0 = offset + a1*cos(x) + a2*cos(2x) + a3*cos(3x) + a4*cos(4x) + a5*cos(5x) ...v1 = offset + a1*cos(x+1/4π) + a2*cos(2x+2/4π) + a3*cos(3x+3/4π) + a4*cos(4x+π) + a5*cos(5x+5/4π) ...v2 = offset + a1*cos(x+2/4π) + a2*cos(2x+4/4π) + a3*cos(3x+6/4π) + a4*cos(4x) + a5*cos(5x+2/4π) ...v3 = offset + a1*cos(x+3/4π) + a2*cos(2x+6/4π) + a3*cos(3x+1/4π) + a4*cos(4x+π) + a5*cos(5x+7/4π) ...v4 = offset + a1*cos(x+π) + a2*cos(2x) + a3*cos(3x+π) + a4*cos(4x) + a5*cos(5x+π) ...v5 = offset + a1*cos(x+5/4π) + a2*cos(2x+2/4π) + a3*cos(3x+7/4π) + a4*cos(4x+π) + a5*cos(5x+1/4π) ...v6 = offset + a1*cos(x+6/4π) + a2*cos(2x+4/4π) + a3*cos(3x+2/4π) + a4*cos(4x) + a5*cos(5x+6/4π) ...v7 = offset + a1*cos(x+7/4π) + a2*cos(2x+6/4π) + a3*cos(3x+5/4π) + a4*cos(4x+π) + a5*cos(5x+3/4π) ...这里x的含义是基波的相位,观察v0到v7,如果我们把cos(x)当作基波信号,是不是和“对一个包含谐波的正弦波每周期进行8次均匀采样”得到的结果一样?
这样问题就简单了,要取出cos(x)或sin(x),甚至cos(nx)或sin(nx),只需要对这个序列进行数字相干检波,即单点DFT算法,取出期望的分量即可。
前面说了CDS其实是这个算法的一个特例,对于CDS,相当于对cos(x)每周期采样4次(即v0, v2, v4, v6),对cos(x)进行数字相干检波时,需要一个余弦表[1, 0, -1, 0],需要一个正弦表[0, 1, 0, -1],进行单点DFT,则cos(x) = (v0 * 1 + v2 * 0 + v4 * -1 + v6 * 0) * 2 / 4,这里先乘以2是因为a1这个系数是基于1/2的(经过乘法器相乘)
sin(x) = (v0 * 0 + v2 * 1 + v4 * 0 + v6 * -1) * 2 / 4所以cos(x) = (v0 - v4) / 2,即0度参考采样值和180度参考采样值相减,sin(x)类似。
直流偏移可以认为是一个特殊的谐波(0次谐波),它永远在DFT的奈奎斯特点以内,所以单点DFT算法可以消除它,对于4个采样点的DFT来说,2次谐波刚好落在奈奎斯特点,而这个点的数学响应是0,同样其他偶次谐波虽然都在奈奎斯特区以外,但其镜像经过混叠,刚好出现在奈奎斯特点,所以统统消失了。对于奇次谐波,均在奈奎斯特区以外,而且会混叠到内奎斯特区,因此4点CDS算法无法取出奇次谐波的影响。
用这个方法可以从采样数据中分离出想要的分量,所以可以消除谐波,同样的,如果你的VNA激励信号和参考信号使用的是谐波丰富的源,比如方波,这个方法还可以检出特定的谐波,从而扩展VNA的频率范围,当然,因为方波中的谐波幅度更低,所以动态范围是要缩减的,但这依然是一个好方法。Dave Roberts的myVNA软件现在也包含这个功能。
要分离出特定的分量,则采样点的数量必须使得该分量落在奈奎斯特区以内,比如要分离3次谐波,至少需要6个采样点(60度步进),要分离5次谐波,至少需要10个采样点(36度步进)。
[ 此帖被MF35_在2020-09-11 14:59重新编辑 ]