一、GNU Radio 介绍
GNU Radio是一个用来帮助无线通信开发者设计、搭建和实现无线通信系统的框架和工具。GNU Radio具有高度模块化、基于流程图的特点,针对复杂的信号处理应用场景,提供了丰富全面的处理模块。
个人理解就是GNU Radio软件无线电开发平台和大家熟悉的MATLAB中的simulink相似,也是通过模块搭建信号流图,可以分析信号的波形图、频谱图、星座图、瀑布图等,当然搭建好信号仿真模拟流程图之后(.GRC 文件),可以结合软件无电线硬件平台进行发射和接收测试。此外,对于平台没有的一些模块,开发者也可以采用C++或者Python等语言自己编写模块,预留出接口和通用模块一块使用。
二、AM 信号
调制原理:调制的原理使用基带信号(频率比较低,不适合信道传输,需要天线尺寸大)去控制高频载波的参数,利用这些参数的变化来传递信息。正弦载波信号的参数主要有幅度、频率和相位。相对于就衍生除了控制幅度的信号(AM、DSB、SSB、ASK)、控制频率的信号(FM、FSK) ,控制相位的信号(PM、PSK),还有联合控制多个参数的(QAM)等。
AM信号:首先是模拟信号,利用基带信号控制载波的幅度,利用幅度的变化来传递信息。根据基带信号的不同:可以分为单音AM调制、多音AM调制和话音AM调制。特点:实现简单、最早使用,但是功率利用率低,利用幅度变化传递信息容易受到噪声的干扰。
公式:
1.单音AM信号
搭建的GRC流程图:
波形图:
频谱图:
2.多音AM信号:
3. 话音AM 信号:
采用低通滤波器截取了一段话音信号。
三、DSB信号
在AM 调制中,载波信号占用大量能量,但是不传递信息,为了提高功率利用率,就有了新的调制方式,抑制掉载波的振幅调制方式(DSB).直接看话音信号流图,相比am信号,就是去除了常数。
四、SSB信号
DSB信号两个边带信号传递信息完全一样,为了提高信道带宽的利用率,传递一个边带信号就能实现信息的传递了,所以可以滤除一个边带信号再进行传输。SSB 话音信号为例:
观察下边带为例:
五、FM 信号
控制幅度调制的方式产生的信号,波形幅度容易受到噪声的干扰而失真。先比于幅度,频率的抗噪声性能更好,可以通过控制频率的方式来传递信息。
推荐一篇博客,介绍FM调制解调很清楚:
数字信号处理基础----FM的调制与解调(1)_black_pigeon博客-CSDN博客_fm解调
波形特征表现为已调信号的频率随着调制信号的变化而变化,调制信号幅度大时,频偏大,频点大对应已调信号的频率大,所以频率大表现为比较密集,反之幅度小,对应波形稀疏,但是幅度是不变的。简单概括波形就是疏密程度缓慢变化的等幅波。
六 、ASK信号
数字调制:利用数字基带信号控制载波信号的幅度、频率和相位。
ASK信号:利用幅度的变化来传递信息。实现方法:模拟相乘法和开关控制法。以模拟相乘法为例:
波形:
频谱:
MASK信号:4ASK信号为例。
4ASK信号的波形:
七、FSK信号
调制原理:数字基带信号控制载波信号的频率,利用频率的变化来传递数字信息。
原理图、波形和频谱如下所示:
八、PSK信号
调制原理:控制载波信号的相位,利用相位的变化传递信息。
九、QAM信号
调制原理:幅度和相位的联合控制。以64QAM信号为例:
波形及频谱图:
星座图:
十、LINK11信号
基带LINK11信号为16个单载波的QPSK调制信号,射频调制分为SSB调制、DSB调制和FM调制。基带LINK11信号如下,直接采用播放采集的基带LINK11信号文件:
基带信号频谱:
瀑布图:
十一、跳频信号
跳频信号原理:载波信号的频率随伪随机序列的变化而随机变化。seed种子确定的话,跳变规律是一定的。
频率跳变模块可以用Python进行编写。
瀑布图如下:
AM单音调制的跳频信号,8个频点:
梳状谱信号:
十二、信号的发送
信号发送基于选择的SDR硬件平台,SDR可以是hackrfone、USRP以及AD9361+zedboard等。
以ad9361+zedboard为例,搭建好lIbiio系统之后,直接发射单音:
配置IP地址,选择发射通道、发射频率等参数信息:
FM调制信号的发送:
总结:GNU Radio 软件无线平台提供了很好的平台去模拟实现各种常规通信信号,波形图、频谱图、瀑布图和星座图的使用也很方便,可以用于通信工程类专业的调制解调教学,直观的分析信号的波形、频谱变化。
参考博客:
开源SDR实验室_CSDN博客-GNU Radio,LimeSDR,HackRF领域博主