本文是在“GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调”的基础上,给出BPSK调制解调的实例。BPSK与QPSK的主要区别在于每个符号的比特位数,QPSK是一个符号2个比特,BPSK是一个符号1个比特。
需要具备的基础知识:
(1)GNU Radio系列教程(二):初级篇之GNU Radio介绍
(2)GNU Radio系列教程(六):初级篇之GNU Radio GRC 硬件使用实例之信号频谱分析
(3)GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调
目录
一、发射一个BPSK信号
下图与生成QPSK信号的最主要区别在于“Constellation Object”参数设置。
二、加上信道仿真
信道仿真内容,参见“GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调”相应内容。
三、时钟恢复
时钟恢复内容,参见“GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调”相应内容。
四、多径效应消除
多径效应消除内容,参见“GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调”相应内容。
五、相位矫正和频率微调
相位矫正和频率微调内容,参见“GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调”相应内容。
六、解码
到现在为止,前边已经将比较难啃的骨头都解决了。最后一步就是实现解码了。我们在mpsk_stage6.grc程序中,添加一个Constellation Decoder模块来实现解码。并使用“Map”模块来实现符号映射关系的转换。使用“Unpack K Bits”模块来分解bit,得到原始的bit流数据。
但是,我们如何才能判断我们解码的数据是否是正确的呢?由于我们是仿真程序,我们知道发送的原始bit数据,我们通过对比这两份数据来查看解码数据是否正确。但是由于前边做各种同步和均衡等操作,引入了延迟,所以我们需要将发送的原始数据进行延迟后,再跟解码后数据进行比对。