GNU radio AM调制解调实验
系统:Ubuntu 20.04
软件:GNU Radio 3.8.1.0
1. 基本原理
1.1 实验原理
调制是改变高频载波信号特征来传递信号的过程,虽然理论上存在未经数据调就直接传输基带信号或信息的可能,但是将该信息条知道载波上在进行发送效率更高。
模拟调制和数字调制都有多种调制方法。
幅度调制是一种模拟调制方法,通过连续改变固定频率载波信号的幅度来表示数据。该载波信号通常是一个高频的正弦波,用来“负载”该消息包络中的信息。正弦波有三个可变参数——幅度
1.2 AM调制
幅度调制使用调制信号来控制高频正弦载波的幅度
其中,
为了简化公式描述,通常假设载波信号
经过AM调制,已调信号
从上述表达式可知,已调信号
上述已调信号
一般地,调幅系数定义为,用A和B分别表示AM波形包络垂直方向上的最大和最小值,则调幅系数
调制信号
载波信号
如图4所示,为调幅系数为
假设调制信号
假设调制信号
则此时AM信号表达式可写成:
1.3 AM解调
经过AM调制后的已调信号为:
其中,调制信号
AM接收机需要从接收到的已调信号
因此,我们可以按照以下三步来进行AM解调:
1) 用载波
2) 利用低通滤波器得到调制信号
3) 滤除直流电压后,得到
2. 实验内容
2.1 AM调制
按照图5所示,搭建一个AM调制的GRC程序。
其中,包括信号源(Signal Source)、节流阀(Throttle)、乘常数(Multiply Const)、加常数(Add Const)、QT信号时域用户界面(QT GUI Time Sink)、QT信号频域FFT展示用户界面(QT GUI Frequency Sink)、文件保存(File Sink)等模块。
可使用QT GUI Range 模块定义一个可被用户再范围内调节的参数,此处定义
可使用QT GUI Tab Widget模块将不同标签(Tab)的图形显示在一个窗口内。
如图6所示,不过需要注意的是,使用标签时应注意QT GUI Tab Widget模块的ID,应使各个图形用户界面的标号及GUI Hint与QT GUI Tab Widget模块ID对应,如此时该模块ID为:notebook,则图形用户界面应如图7设置,其余类推。
Throttle模块中的sample_rate设置为变量sample_rate,起主要作用是在电脑没有连接软件无线电设备时,防止GRC仿真程序占用过多的系统资源而导致系统崩溃。
multiply const模块中的const为变量
在运行后,对波形图使用鼠标中键,再选择control panel,可以对探头进行调节,如图8所示。
调制信号
载波信号
调节QT GUI Time Sink模块中的 Number of Inputs为
2.2 AM解调
按图14搭建一个AM解调的GRC程序。
其中,包括信源(File Source 和 Signal Source),乘(Multiply),节流阀(Throttle),低通滤波器(Low Pass Filter),乘常数(Multiply Const),直流消除器(DC Blocker),重采样器(Rational Resampler),QT信号时域用户界面(QT GUI Time Sink),QT信号频域用户界面(QT GUI Frequency Sink)等模块。
为了从AM已调信号中解调处调制信号,我们需要通过将已调信号乘上一个载波信号,并经过一个低通滤波器得到基带信号
File source模块读取AM调制实验中保存的AM已调信号,并将Repeat设置为Yes,以获得一个持续的信号效果。
Decimation是重采样过程中的抽取操作,本例中将 Decimation设置成了变量
Gain设置为1,sample_rate设置为变量,值为
已调信号
由公式
可知,已调信号
低通滤波器的输出与一个常数Amplifier相乘,以此来增强信号的功率强度,将其设置为一个可由用户调控的参数范围
DC Blocker模块用于消除直流分量。
在低通滤波器中设置的抽取系数Decimation为
最后AM解调后得到的原始调制信号时域图如图16所示,频域图如图17所示。
由图可知还原得到的调制信号频率为
3. 信源编码
3.1.1 概念
信息传播过程:信源→信道→信宿
通信系统模型:[信源]->[信源编码]->[信道编码]->[信道传输+噪声]->[信道解码]->[信源解码]->[信宿]
信源:是产生各类信息的实体。信源给出的符号是不确定的,可用随机变量及其统计特性描述。信息是抽象的,信源是具体的;也就是信息的发布者。
信道:信道就是信息传递的通道,是将信号进行传输、存储和处理的媒介。
信宿:信息的接收者。
信源编码:以提高通信有效性为目的而对信源符号进行的变换,或者说为了减少或消除信源冗余度而进行的信源符号变换;即针对信源输出符号序列的统计特性来寻找某种方法,把信源输出符号序列变换为最短的码字序列,使后者的各码元所载荷的平均信息量最大,同时又能保证无失真地恢复原来的符号序列。
信源剩余度:信源剩余度是用来衡量信源的相关性程度(有时也称为冗余度或多余度)。信源的剩余度等于1减去熵的相对率,即
渐进等分性:当随机变量的序列足够长时,其中一部分序列就显现出一种典型的性质:这些序列中各个符号的出现频数非常接近于各自的出现概率,而这些序列的概率则趋近于相等,且它们的和非常接近于1,这些序列就称为典型序列。其余的非典型序列的出现概率之和接近于零。序列的长度越长,典型序列的总概率越接近于1,它的各个序列的出现概率越趋于相等。
克拉夫特不等式:
设符号表中的原始符号为:
在大小为
则,
反之,给定一个满足上述不等式的自然数集合,则在大小为
3.1.2 目的
- 提高通信有效性
- 减少或消除信源冗余度而进行的信源符号变换
- 数据压缩
- 将信源的模拟信号转化成数字信号
3.1.3 定理
信源编码定理
一定存在一种无失真编码,当把N个符号进行编码时,平均每个符号所需二进码的码长满足
。 其中,
是信源的符号熵(比特),也就是说最佳的信源编码应是与信源信息熵 统计匹配的编码,代码长度可接近符号熵。即可按概率特性变成不等长度码。对不同类型的的信源(如离散或连续、无或有记忆、平稳或非平稳、无或限定失真等)可以构成不同的组合信源,其都存在各自的信源编码定理。 离散无记忆信源的定长编码定理
对于任意给定的
,只要满足条件 那么,当
足够大时,上述编码几乎没有失真;反之,若这个条件不满足,就不可能实现无失真的编码。时钟 是信源输出序列的符号熵。通常,信源的符号熵 ,因此,上述条件还可以表示为 特别地,若有
,那么只要 ,就可能有 ,从而提高信息荷载的效率。由此可以看出 离 越远,通过编码所能获得的效率改善就越显著。实质上,定长编码方法提高信息载荷能力的关键是利用了渐进等分性,通过选择足够大的 ,把本来各个符号概率不等( )的信源输出符号序列变换为概率均匀的典型序列,而码字的唯一可译性则由码字的定长性来解决。 离散无记忆信源的变长编码定理
变长编码是指
的各个码字的长度不相等。只要 中各个码字的长度 满足克拉夫特不等式。这 个码字就能唯一地正确划分和译码。
3.1.4 分类
- 根据信源的性质进行分类
- 信源统计特性已知/未知
- 无失真/限定失真
- 无记忆/有记忆
- 根据编码方式进行分类
- 分组码/非分组码
- 等长码/变长码
常讨论统计特性已知条件下,离散、平稳、无失真心愿的编码,消除这类信源剩余度的主要方法有统计匹配编码和解除相关性编码。
信源编码举例
- 不等长度分组码
- 香农码、费诺码、赫夫曼码
- 非分组码
- 算术编码
- 接触相关性编码
- 预测编码、变换编码
- 对限定失真的信源编码
- 矢量量化编码
- 统计性位置的信源编码
- 通用编码
3.1.5 一般问题表述
减少信源输出符号序列中的剩余度、提高符号平均信息量的基本途径:
- 使序列中的各个符号尽可能地互相独立(接触相关性)
- 使序列中各个符号的出现概率尽可能地相等(概率均匀化)
若信源的输出为长度等于
记
所谓对这个信源的输出进行编码,就是用一个新的符号表
类似地,记
为了使信源的每个输出符号序列都能分配到一个独特的码字与之对应,至少应满足关系
假如编码符号表
3.1.6 赫夫曼编码
首先把信源的各个输出符号序列按概率递降的顺序排列起来,求其中概率最小的两个序列的概率之和,并把这个概率之和看作是一个符号序列的概率,再与其他序列依概率递降顺序排列(参与求概率之和的这两个序列不再出现在新的排列之中),然后,对参与概率求和的两个符号序列分别赋予二进制数字0和1。继续这样的操作,直到剩下一个以1为概率的符号序列。最后,按照与编码过程相反的顺序读出各个符号序列所对应的二进制数字组,就可分别得到各该符号序列的码字。
例.假设要传输的字符串为i like like like java do you like a java
统计各个字符对应的个数
d:1 y:1 u:1 j:2 v:2 o:2 l:4 k:4 e:4 i:5 a:5 :9
按照上面字符出现的次数构建一颗赫夫曼树,次数作为权值(如图18所示)
- 从小到大排序,每个数据都是一个节点,每个节点可以看成是一棵最简单的二叉树
- 取出根节点权值最小的两棵二叉树;
- 组成一棵新的二叉树,该新的二叉树的根节点的权值是前面两棵二叉树根节点权值的和;
- 再将这棵新的二叉树,一根结点的权值大小再次排序,不断重复,直到数列中所有的数据都被处理,就得到一棵赫夫曼树。
根据赫夫曼树,给各个字符规定编码(前缀编码),向左的路径为,向右的路径为1
- 编码如下
- o:1000 u:10010 d:100110 y:100111 i:101 a:110 k:1110 e:1111 j:0000 v:0001 l:001 :01
按照上面的赫夫曼编码,处理字符串
4. 信道编码
4.1.1 概念
信道编码器:信道编码器是针对信道对传输信号的损伤而设置的一个功能部件,通过对信息序列进行编码的方式来提高接收机识别差错的能力,从而降低误码率以改善恢复信息的质量。它的作用有:加密;根据传播介质特点变更数字信号。
信道编码:通过信道编码器和译码器实现的用于提高信道可靠性的理论和方法;由于移动通信存在干扰和衰落,在信号传输过程中将出现差错,故对数字信号必须采用纠、检错技术,即纠、检错编码技术,以增强数据在信道中传输时抵御各种干扰的能力,提高系统的可靠性。对要在信道中传送的数字信号进行的纠、检错编码就是信道编码。
4.1.2 目的
- 信道编码定理,从理论上解决理想编码器、译码器的存在性问题,也就是解决信道能传送的最大信息绿的可能性和超过这个最大值的传输问题。
- 构造性的编码方法以及这些方法能达到的性能界限
- 使系统具有一定的纠错能力和抗干扰能力,可极大地避免码流传送中误码的发生
4.1.3 分类
- 分组码
- 卷积码
4.1.4 纠错编码
5. 参考资料
- GNU Radio AM调制解调(一)_开源SDR实验室的博客-CSDN博客
- QT GUI Tab Widget - GNU Radio
- QT GUI Time Sink - GNU Radio
- 重采样_百度百科 (baidu.com)
- FM数字解调过程中为什么使用降采样? - 知乎 (zhihu.com)
- 信源编码_百度百科 (baidu.com)
- 信源_百度百科 (baidu.com)
- 信源剩余度_百度百科 (baidu.com)
- 渐近等分性_百度百科 (baidu.com)
- 克拉夫特不等式_百度百科 (baidu.com)
- 赫夫曼编码_chengqiuming的博客-CSDN博客_霍夫曼编码
- 信道编码_百度百科 (baidu.com)
- 信道编码器_百度百科 (baidu.com)
- RS编码过程通俗理解__Celeste_的博客-CSDN博客_rs编码
- 卷积码_百度百科 (baidu.com)
- 卷积码(Convolutional Code)_纸上谈芯的博客-CSDN博客_卷积码
- Turbo码(Turbo Codes)_纸上谈芯的博客-CSDN博客_turbo码
- 通信中的“交织”技术_super尚的博客-CSDN博客_交织技术
- 星星之火-30:什么是WCDMA的伪随机码与扰码?_文火冰糖的硅基工坊的博客-CSDN博客_wcdma 扰码