发布时间:02-24
编辑:音频应用
用傅立叶测量声卡的频率失真
使用声卡是玩转软件定义无线电(SDR)技术并聆听其结果的一种有趣、低成本的方法。大多数简单的 SDR 数字调制方案都将数据编码为正弦波的相位或频率。因此,我对声卡如何再现这些波形很感兴趣,特别是它对波形相位和频率的扭曲程度。这些信息对配置调制方法很有价值,即使在声卡有限制的情况下也能传输信息。我可以通过测量正弦波形的相位来量化相位和频率的失真,并以此计算其瞬时频率,即相位随时间的变化率。对于以固定频率传输的正弦波,相位应该以恒定的速率随时间变化,这就好比一个物体以恒定的速度沿着无摩擦的水平面运动。如果正弦波的频率或物体的速度发生变化,那么捕捉到的 “畸变 ”就表明系统中存在非理想效应。测量正弦波失真的技术就是本文的主题。但只有相位失真才是我们感兴趣的,因此该技术必须不受声卡引起的振幅波动的影响。
注:在本文中,正弦波和 “正弦波 ”这两个术语将交替使用,并指具有任意相位偏移的波形。例如,本文将余弦波称为正弦波,因为它是相位偏移 90 度的正弦波。
查找相位的一种技术是将反正弦函数应用于捕获的信号;但是,这种方法假定是振幅在 -1 和 +1 之间摆动的完美正弦波。振幅波动违反了这一假设,因此无法直接使用反正弦函数。
另一种技术是将正弦波的视角从一维实信号扩展到二维复平面中旋转矢量的投影。图 1A 展示了以恒定速度(因此相位变化恒定)逆时针旋转的相位矢量,矢量在实轴(图 1B)和虚轴(图 1C)上的投影产生了具有不同相位偏移的 12 kHz 正弦波,从而说明了这一概念。声卡可以传输和记录每个通道的单个信号。由于我将音频系统限制为一个通道,类似于使用单根天线的 SDR,因此我需要在两个矢量轴中选择一个信号。我任意选择该矢量的实部(X 坐标),因为它更容易在文章中引用。因此,音频通道上的虚部(Y 坐标)将保持不变。因此,该技术的目标是通过瞬时频率计算,将旋转矢量的记录相位角(ϑ)与传输相位进行比较,以揭示声卡引入的失真。
图 1:用于表示正弦波的复矢量概念概览。(A) 显示了一个以恒定速度逆时针旋转的相位矢量,建立了稳定的相位变化率。(B) 显示旋转矢量在实轴上的投影,产生一个相位偏移 90 度的 12 kHz 正弦波。(C) 表示投影到虚轴上,产生一个没有相位偏移的 12 kHz 正弦波。
仅从记录的实部分量测量相位的挑战在于,正弦波的一个周期可以对应两个不同的相位值,如果振幅波动,相位值还会更多。图 2A 和 2D 演示了这种情况:两个不同的矢量--标为矢量 1 和矢量 2--长度固定为 1,可以共享相同的实坐标,同时对应不同的相位偏移。虽然在这种情况下,反三角函数可以得到两个相位值,但如果矢量的长度发生变化,就不能直接应用反函数。图 2B、2C、2E 和 2F 展示了这一问题,其中矢量长度现在大于 1,导致不同的相位角对应相同的实数值。
图 2:该图展示了当不同的矢量属性产生相同的实坐标时,相位确定的模糊性是如何产生的。(A) 展示了一个固定长度(单位长度)的矢量(矢量 1),它与另一种相位可能性共享一个实坐标。(B) 显示了一个比一个长的矢量导致多个相位角对应相同实数值的情况。(C) 进一步说明了增加矢量长度对相位测量模糊性的影响。(D) 显示固定长度(单位长度)的矢量(矢量 2),尽管共享相同的实坐标,但也表现出相位模糊。(E) 继续展示长度大于 1 的矢量如何导致同一实部的相位值重叠。(F) 强化了矢量长度增加对从实部产生非唯一相位表示的影响。
在图 3A 中,矢量长度问题随着矢量旋转速度的增加而加剧,这种情况可能是声卡振荡器分量漂移或放大器增益变化造成的。根据相应的实分量计算矢量的相位(如图 3B 所示)非常困难,因此需要改变底层矢量模型。
图 3:该图强调了时变旋转速度对从实际分量提取相位的影响。(A)说明了矢量的长度问题以及随时间增加的旋转速度问题。(B) 描述了从实分量中计算出的相位,强调了在动态条件下准确恢复相位的难度。
改变底层矢量模型的目的是恢复与记录信号相位相同的隐藏矢量相位。如果能直接获得矢量的实分量(x 坐标)和虚分量(y 坐标),相位测量就会变得简单易行。然而,由于只有 x 坐标可用,因此该技术不能依赖于未观测到的 y 坐标。消除这种依赖性的方法是添加一个反向旋转(顺时针)的矢量,镜像原始矢量的 y 坐标,这样得到的 y 坐标始终为零。此外,两个矢量的比例都是二分之一,以保持 x 坐标的正确值。图 4A 显示了两个矢量的旋转关系,在保持原有 x 坐标值的同时抵消了 y 坐标。图 4B 显示产生的信号(x 坐标)与图 3B 中的单旋转矢量完全相同。由于 x 坐标完全相同,因此无法确定信号是由一个还是两个矢量产生的,所以我假设是两个矢量模型。
图 4:当只观察到实分量时,引入修正的矢量模型来恢复隐藏相位。(A)显示了原始的逆时针旋转矢量和一个按二分之一比例缩放的顺时针旋转矢量,其排列方式抵消了 y 坐标。(B) 表明所产生的 x 坐标信号与之前计算的单一旋转矢量信号相同。(C) 通过傅立叶变换峰值,说明如何根据频率符号来表示和分离两个相反的矢量
随着第二个矢量抵消了 y 分量,任务转移到分离两个旋转矢量的贡献。黑色矢量按传统的逆时针方向旋转,而灰色矢量则按顺时针方向旋转。之所以选择逆时针方向的矢量,只是出于惯例。按照惯例,逆时针矢量对应正频率,用于分析信号形成和调制方案。同样,按照惯例,顺时针矢量对应负频率。这两个矢量的分离是通过傅立叶变换完成的,傅立叶变换将信号分离为正频和负频。在此过程中,傅立叶变换将分离顺时针和逆时针旋转矢量。如图 5A 所示,由两个旋转矢量产生的固定频率、固定振幅的正弦波会产生图 5B 中的实信号。如图 5C 所示,当应用傅立叶变换时,所得到的曲线图沿水平轴显示出两个明显的幅度峰,与旋转矢量的符号频率相对应。图 4C 进一步展示了这些峰值如何代表两个相反的矢量。在这一分析中,只显示了傅立叶变换的幅度部分(通常以分贝为单位),而省略了每个频率的完整复数值。其中的关键之处在于,当矢量以固定的速度和振幅旋转时,傅立叶变换能有效分离逆时针和顺时针分量。这种分离意味着逆时针矢量是孤立的,可用于测量其随时间变化的相位。
图 5:双旋转矢量实信号的产生及其频率分解。(A) 显示两个旋转矢量(一个逆时针,一个顺时针)共同产生一个固定频率、固定振幅的正弦波。(B) 显示这些矢量组合产生的实信号。(C) 显示傅里叶变换输出,沿水平轴线有明显的幅度峰,对应于各个旋转分量的符号频率。
但在实际应用中,采集到的信号在振幅和频率上都会发生变化,如图 4B 和 6B 所示。对这种动态信号进行傅立叶变换会产生一个频谱(图 6C),其特征是由多个频率组成的两个宽峰,而不是两个尖峰。之所以会产生这种宽峰,是因为傅立叶变换将信号的振幅和频率变化分解为固定频率、固定振幅矢量的等效和。
图 6:该图探讨了振幅和频率可变信号的动态及其频谱表示。(A)描述了两个旋转矢量(一个逆时针,一个顺时针)共同产生的变频变幅正弦波。(B) 显示捕捉到的信号,其中振幅和频率都随时间变化。(C) 显示了相应的傅立叶变换频谱,其特点是峰值较宽,反映了分解为多个固定频率分量的情况。
图 7 和图 8 从概念上说明,长度和旋转速度不断变化的旋转矢量等同于多个固定矢量的总和,而逆傅里叶变换可从这些固定分量中重新组合出原始矢量的动态行为。
图 7:概念图说明动态变化的旋转矢量可以表示为多个固定矢量之和。
图 8:概念图展示了逆傅里叶变换如何从固定频率分量重新组合原始矢量的动态行为。
使用傅立叶变换测量瞬时频率的处理链如图 9 所示。首先,利用傅里叶变换将信号(图 9A)的基本矢量分离为逆时针和顺时针矢量。接着,负(顺时针)频率(图 9B)被清零,只留下逆时针旋转的矢量。逆傅里叶变换重建(图 9C)单个逆时针旋转矢量的实(x 坐标)和虚(y 坐标)值。实分量和虚分量也会产生振幅波动。通过计算矢量幅度归一化坐标的相位角(图 9D)可以消除这些波动,从而得到一个单位幅度的旋转矢量(图 9E),其旋转速度变化反映了其相位变化率。由于瞬时频率被定义为相位随时间的变化,因此计算连续相位测量值之间的差值并按采样率除以 2π 的比例缩放,就能得到图 9F 所示的瞬时频率图。通过分析瞬时频率值的边界,可以了解各种相位和频率调制方案的预期误差率。
图 9:利用傅立叶变换技术概述了测量瞬时频率的完整处理链。(A) 描述了通过傅立叶变换初步分离底层矢量的过程。(B) 将负(顺时针)频率分量清零,以分离出逆时针旋转的矢量。(C) 反傅里叶变换重建逆时针矢量的实部和虚部。(D) 根据归一化坐标计算相位角,消除振幅波动。(E) 得出的单位幅度旋转矢量,其旋转速度的变化反映了其相位变化。(F) 通过对连续相位测量值进行微分并按适当系数缩放得到的瞬时频率图。
如图 10 所示,使用已知参数的测试数据对整个处理链进行了验证。在图 10A 中,由旋转频率从 11,999.5 Hz 到 12,000.5 Hz 的矢量产生的正弦波被添加的噪声干扰。计算出的瞬时频率与预期值非常吻合,观测到的最小值为 11996.24 赫兹,最大值为 12003.68 赫兹。在另一项测试中(图 10B),旋转频率范围为 11,965 Hz 至 12,035 Hz 的宽带信号的最小值为 11,962.70 Hz,最大值为 12,037.96 Hz。
在测试数据取得定性成功后,该技术被应用于同一声卡以 44.1 kHz 采样率和 16 位采样率传输和记录的 12 kHz 正弦波。生成的正弦波没有添加合成噪声,因此观察到的任何波动都来自声卡和量化效应。图 10C 的结果显示,声卡产生的最小瞬时频率为 11,999.29 赫兹,最大为 12,000.64 赫兹--这表明在一分钟的测量时间内,变化幅度约为 1.5 赫兹。相位可通过对瞬时频率进行积分来获得。
图 10:显示已知参数测试数据的验证结果,以确认该技术的准确性。(A) 展示了旋转频率在 11999.5 赫兹和 12000.5 赫兹之间变化的正弦波测试数据,包括观测到的瞬时频率最小值和最大值。(B) 显示宽带信号测试的验证结果,其旋转频率范围更广,相应的频率极值也更大。(C) 显示声卡记录的测量结果,显示一分钟内的变化率约为 1.5 赫兹。
结论
使用价值 15 美元的 USB 声卡,在约一分钟的时间内测得 1.5 赫兹的不对称变化,这表明此类硬件对于基本的 SDR 应用而言足够稳定。这些结果表明,基于傅立叶变换的方法可以从记录的正弦波中提取相位信息。未来的工作将探索相位和频率调制技术,确保任何符号调制都保持在可变阈值范围内。初步测试设想采用一种简单的频移键控方法,包括两个相距 100 赫兹、频率为 12 千赫的频率,每秒传输几个比特。进一步的调查还将研究声卡所能达到的数据传输速率极限,并评估其他调制方案。
与此同时,对声卡进行更多的特征描述将有助于了解其局限性并找出潜在的解决方法。除了使用傅立叶变换将信号从噪声本底中分离出来之外,其他分析技术--如频谱直方图分析、时频分析和噪声建模--也可以更深入地了解声卡的信道特性。这些方法可以揭示噪声频谱中的微妙特征,利用这些特征可以提高系统的整体性能。
消除不需要的顺时针旋转矢量(对应负频率)的方法相当于应用希尔伯特变换。希尔伯特变换用于数学和信号处理,从实值信号创建解析信号。这就是本文所做的工作。通过抑制负频率成分,创建出一个解析信号,即逆时针矢量,从而实现瞬时频率分析。Python 的 SciPy 工具箱中有一个希尔伯特函数可以实现这一功能。本文的代码可在https://github.com/potto216/gnuradio-examples/tree/main/analysis
编写过程中使用了 ChatGPT 的 GPT-4o 和 o3-mini-high。
我对产品很感兴趣,请尽快联系我!
请问我所在的地区有商家吗?
我想详细了解购买流程!
购买该产品享受八折优惠,还能得到技术支持?
我想购买请电话联系我!
购买所需要的费用有哪些?
产品很好,请尽快联系我详谈!
声明:该文观点仅代表作者本人,音频应用发布平台仅提供信息存储空间服务。加微信:254969084带你进群学习!百家号免费发布
发布
电话
微博
公众号
回顶部