Gnuradio之SSB信号接收

实验目的

学习 GNU Radio 流程图编程。 了解 SSB 信号的接收处理流程, 找到自己需要的模块, 修改模块的参数, 并能根据实验结果分析理论原因。

实验原理

GRC 是基于模块的仿真实验工具。类似于 MATLAB 中的 SIMULINK 工具。基本使用方法就是先将需要用的模块放到窗口。再设置各个模块的参数,然后连接各个模块,绘制信号流程图,之后生成流程图,仿真运行。

实验步骤

1.将数据文件 multi_tx.wav 保存到当前工程目录下。 本例所用 wav 音频信号其采样率为 48KHz,上下边带宽度约 2.6KHz。

2.根据上图创建流程图,文件源设定为保存的数据文件,并将采样率的模块设定为接收信号的采样率 48K。 Float To Complex 将输入数据变为复数,Throttle控制 CPU 占用率,通过 Rational Resample 模块将采样率变为 50K,并将信号幅值扩大 10000 倍,并观察频谱。

3.执行流程图, 当 FFT 显示窗口打开,调节参考平面,使得振幅从 10dB 开始,每格 10dB。 可以观察到一段 50KHz(取决于采样率) 宽度的频谱。同时注意到,在-5KHz~5KHz 内可以看到有信号。

4.数据文件保存的信号载频在基带附近。当 FFT 模块显示后,把坐标移到信号附近,并把信号的左边沿标记,这个值大约为-2.6KHz。由于仅考虑一个下边带(LSB)信号,相当于是基带频率。 因此需要频谱搬移,使 LSB 信号中心频率位于 0 频处。

5.搭建一个接收机的第一步是用一个信道滤波器,作用是保留我们想要的信号,滤去不想要的信号频带。这里,我们需要做的是把想要的信号降频到 0Hz,如图 2 所示。

6.第二步是用一个低通滤波器把其他信号滤除掉

7.在 GRC 中,变频 FIR 滤波器能够完成上述操作。把这个模块插到MultipleyConst 与 AGC2 之间,然后把属性修改为下图所示。 低通滤波器可由 FIR 中的 Taps 实现,具体输入为firdes.low_pass(1,50e3,filter_width/2,300)。其含义为生成一个增益为 1、采样频率 50KHz、截止频率 1.3KHz、变宽 300 的低通滤波器。 tuner 表示下边带频谱, filter_width 表示单边带带宽。

理解为什么中心频率设置为 1.3KHz,可将有用信号搬移到 0 频

中心频率由原来的0变为1.3KHz,相当于整个信号向右平移1.3KHz,把下边带信号放到中心

8.执行流程图,会看到信号被搬移到原点的位置,而且滤除了其它信号。现在我们只定位感兴趣的信号,不关心信号旁边的频谱。可以通过减小采样率来减小信号的频谱范围。再次打开 FIR 滤波器模块,把抽取参数 Decimation 改为5。这时信号的采样率变为 50KHz/5=10KHz。现在看看 FFT 显示的频谱范围有什么变化?

9.再次执行流程图,检查设置是否正确。信号频谱已被扩展,使用 FFT Plot 中的 Autoscale,信号峰值就可以看到了。观察一段时间可能会看到信号水平会下降几秒,这是因为基站停止发射信号。

10.该信号是个复(解析) 信号。为了解调 SSB 信号,我们需要分别处理其实部和虚部。数据转换模块输入复信号,然后分别输出其实部(上面)和虚部(下面)。把流程图改为所示,数据类型转换模块的输出都是实数,所以 FFT 的数据类型也需要改为 float 类型。

67

11.执行流程图,可以观察到信号的实部与虚部的频谱。信号被展宽到1.3KHz,也就是低通滤波器的截断频率。

12.我们用 Weaver 法来解调 SSB 信号。 分别对实部与虚部信号按下图进行处理。 使用 GRC 的信号源模块分别产生余弦和正弦信号,相乘器和相加器可以在运算符菜单中找到。

64

13.在 FFT 窗口观察加法器的输出,这就是从 SSB 信号中解调抽取得到的基带信号。

14.最后一步是收听解调信号。和 AM 电台接收实验类似,增加一个音频模块 Audio Sink,并设置合理的采样率以适应声卡 48KHz 采样率的要求。同时,还需要一个音量控制器 Multiply Const,在信号进入音频模块前降低信号的振幅。当正确配置流程图后,就能听到传输的语音信号。 个人独立完成 SSB 信号的解调和收音工作。

66

65

SSB.grc