实时从真实信号中获取 I/Q 分量 - 希尔伯特变换还是数字下变频?

信息处理 希尔伯特变换 特别提款权 正交 分析信号
2021-12-22 09:58:40

我正计划为软件定义的无线电接收器构建一个数据采集系统。基本上,它只使用一个 ADC 对模拟信号进行采样并将信号发送到处理器。然后将一串样本输入到带有软件定义无线电软件包的主机中进行信号处理。由于我工作的频率相当低,我想简单地以两倍奈奎斯特频率运行 ADC,而不需要单独的 I/Q 通道,而且我计划使用零中频。

大多数 SDR 程序设计为在本地处理分析信号,而不是真实信号,因此需要在信号到达主机之前动态地将信号的真实样本转换为硬件内部的 I/Q 组件。但是,我对信号处理没有任何先验知识,并且我正在努力想出一个解决方案,但是在阅读了我在网上可以找到的所有内容之后,基本上有两种选择(如前所述,我没有有任何DSP知识,我可能被误导了。)。

  1. 数字下变频:将信号分别与 sin(ωt) 和 cos(ωt) 相乘以获得 I 和 Q。它基本上以数字方式重新创建 I/Q 混频器,在低中频无线电接收器中很常见。

    • 对我来说,这个概念似乎很容易理解,它的实现也很简单,只是乘法。虽然这意味着我的分析信号的频率必须改变,但我认为这没什么大不了的,如果整体上 DDC 更容易的话,我不妨将信号上变频一点或切换到低中频。
  2. 希尔伯特变换:对真实样本进行离散希尔伯特变换,得到解析信号。

    • 对我来说,我不知道如何实现它。似乎有很多不同的方法来做到这一点。

      (1) 通过直接卷积计算希尔伯特变换。这种方法似乎受到许多限制。André Bergner 说: “与基于 FFT 的相比,直接卷积非常慢 [...] 其次,HT 内核在零处具有奇异性,并且卷积积分的数值计算是不适定的”。

      (2) 计算 FFT。删除负频率。应用逆 FFT。

      (3) 将变换建模为时不变滤波器并按此实现。

最初,我认为使用数字下变频会很方便,因为......首先,我不知道我应该做什么来实现希尔伯特变换,尤其是在动态输入样本上使用它时,数字下变频似乎是更容易实施。此外,希尔伯特变换看起来像一个“有损”过程,由于 FFT/滤波器的窗口大小,一些信息会丢失,但 DDC 是“无损”的。此外,由于仅使用乘法,DDC 看起来要快得多。

但仔细一看,事实并非如此。在 DDC 中,I 和 Q 通道也需要在之后进行滤波,根据定义,所有实际的数字滤波器都是近似值,说 DDC 比 DHT“有损”少是不正确的。此外,使用两个滤波器而不是在单个数字滤波器中对 DHT 建模的要求意味着 DDC 可能比 DHT 更慢。DDC 中的数控振荡器也存在各种问题。

我的问题是,

  1. 如果目标只是创建一个简单的实现,以便从实时信号的样本流中获取 I/Q 分量,那么哪种方法在简单性和易于理解方面更好?

  2. 如果目标是创建最佳“质量”的输出,哪种方法更可取?

  3. 如果目标是在计算能力有限的信号处理器上创建高效程序,那么哪种方法在性能方面更好?

  4. 如果希尔伯特变压器是可取的,那么实现它的合适方法是什么?有没有参考实现?我应该从什么开始?特别是,该hilbert()功能是大多数科学计算软件包似乎只设计用于处理现有的数据数组,而不是连续的数据流,赞赏使用窗口演示的实现。

  5. 总的来说,哪种方法适合我的应用?

1个回答

[更新:我提到了可能的 +3dB 处理增益,通过在 DDC 之前包含希尔伯特变换来处理本文第一版中的真实 IF 信号,@MattL 对此提出质疑,因此我进一步研究并确认存在没有这样的处理增益,所以这样做的唯一好处是简化滤波,因为它会提供镜像抑制。]

  1. 为了快速实施,我建议采样到数字 IF 频率(Fs/4是一个很好的选择),然后使用复杂的 NCO(正交下变频)进行数字下变频,从而为您的基带信号创建 I/Q 分量。注意是否可以保证中频频率准确Fs/4,或者如果近似结果是可以的,因为您可以在基带进行相位旋转以校正残余频率偏移,那么复数 NCO 的两个输出(正弦和余弦)将简单地为:

    1 0 -1 0 1 0 -1 0

    0 1 0 -1 0 1 0 -1

    很方便!

    Fs/4或其任何倍数,例如3Fs/4,5Fs/4等用于提供与上述相同结果的欠采样也简化了您的模拟滤波,因为在这种情况下,您的混叠频率(您必须在转换之前过滤掉)将以相等的距离间隔开。

  2. 为了获得最佳性能,可以在正交下变频之前的数字 IF 频率上以数字方式包含希尔伯特变换,或者在 ADC 之前的模拟中包含希尔伯特变换以转换您的真实信号s(t)对一个复杂的信号s(t)+js^(t)在哪里s^(t)是希尔伯特变换s(t). 作为 IF 频率的一部分,您的实际信号带宽越窄,实现起来就越容易。在模拟中,它们使用正交混合器完成,提供信号的同相和正交表示,如下所示:https ://www.minicircuits.com/WebStore/90_180_degree_hybrid.html并且有常见的数字滤波器设计技术(在 Matlab/Octave 和 Python 中)可用于以数字方式设计希尔伯特变换。

    这种方法的好处是消除了镜像频率,从而简化了滤波要求。我在这里发布的图形帮助下更详细地解释了这一点:正交混合信号的频移

    其他变体:在模拟中进行正交混合,然后使用两个 ADC 将每个输出采样为 I 和 Q。如果采样率在正交混合输出的载波频率处,则 ADC 将执行下变频功能,或者 ADC 可以处于 IF 频率,并带有以数字方式完成的全复数数字下变频器。使用两个模拟混频器进行下变频,其中 RF 或 IF 信号馈入两个混频器的输入,载波的正弦和余弦乘以每个创建基带 I 和 Q 信号,然后可以由双 ADC 直接采样。当混频器直接位于 RF 载波上时,这称为零中频。如果可以在混频器之前包括正交混合器,这将提供与上述相同的优点,但这样做的复杂性。

  3. 对于这一点,我认为一旦您熟悉了这些选项,您就需要回答。对于有限的计算能力,什么具有最佳性能通常很难回答。当然,选项 1 更简单,并且比执行 2 有 3 dB 的损失,但这对您来说可能不是问题。这就是您需要进行的交易。

  4. 我无法提供详细的设计说明(超出此处通常回答的内容),但从数字上讲,这是作为数字滤波器设计完成的;您设计了两个全通数字滤波器,它们通过您的通带中的所有频率,并且每个都有一个相位跟踪另一个偏移 90°(相位跟踪滤波器)。我提到的工具(Matlab/Octave/Python Scipy.Signal)都有工具来帮助提出这样的滤波器系数。

  5. 期待听到您的进展以及您为此做出的决定!