我正在开始使用GNUradio和便宜的SDR进行项目。

http://www.amazon.com/gp/product/B00SXZDUAQ?psc=1&redirect=true&ref_=oh_aui_search_detailpage

该项目的一部分要求我生成引用音频音调,并将该音调的相位与解调后的音频进行比较。

为了模拟系统的这一部分,我生成了一个简单的GNUradio流程图:

audio - AM解调的gnuradio相移-LMLPHP

我对源和解调后的音频存在一些问题,因为它们会相对于彼此漂移。这发生在原始流程图的示波器同步上。为了帮助进行故障排除,我通过声卡的第二个通道发送了解调后的音频,并在外部示波器上监视了两个音频流以及调制后的RF:

audio - AM解调的gnuradio相移-LMLPHP

最初看起来一切都很好,但是解调后的音频相对于原始源和RF漂移:

audio - AM解调的gnuradio相移-LMLPHP

我的问题是:我在流程图中做错了吗?还是期望廉价的SDR带来太多的性能?

预先感谢您的任何见解

最佳答案

在没有完全数字仿真或带有一个振荡器的完全模拟电路的情况下,您不会期望看到零相位漂移,因为没有两个(物理)振荡器具有相同的频率。

在您的情况下,涉及两个相关的振荡器:

  • RTL-SDR单元中的采样时钟。
  • 声卡输出中的采样时钟。

  • 在GNU Radio流程图中,本身就没有时间引用,并且一切都取决于连接到硬件的源和接收器。

    流程图中的相关资源是RTL-SDR硬件。只要其振荡器与其标称值(发生时为28.8 MHz)不同,它产生的所有信号在绝对意义上都将是非频率的(RF载波频率和解调输出的音频频率)。

    但是您实际上没有绝对的频率引用;您有声卡发出的音调。声卡具有自己的振荡器,该振荡器确定将样本转换为模拟信号的速率,从而确定从流程图消耗样本的速率。

    因此,您的引用信号将相对于您接收和解调的信号漂移,其速率由两个振荡器之间的频率误差之差确定。

    此外,由于您的声卡将以与RTL-SDR产生它们的实时速率稍有不同的实时速率接收流程图中的样本,因此随着错误的累积,您会注意到音频中的周期性毛刺,必须加以处理;它们将立即开始发生(如果源比接收器慢,则需要声卡播放静音),或者延迟一段时间后缓冲区达到最大大小(如果源比接收器快,则需要RTL- SDR删除一些样本)。

    关于audio - AM解调的gnuradio相移,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33636807/

    10-10 22:23