在本文中,我们将进行纯仿真实验,不使用任何硬件设备。但是,我们会考虑无线信号在实际信道传输过程中所面临的一些诸如信道衰落、时钟同步等影响信号传输的问题。我们会在信道仿真模块中,通过设置参数来模拟这些问题,然后一步一步的解决它们,最终实现信号的正确解调解码。
本文的实例只是实现PSK调制解调的一种方法,这里我们使用了GNU Radio自带的PSK信号解调模块。除了本文的方法之外,还有很多其他的PSK解调实现方法,这些不同方法的实现细节相差较大。
本文目标
(1)理解信号失真和信道对信号传输的影响作用
(2)了解信号还原操作所涉及的步骤,如时钟恢复、多径效应消除、相位和频率纠正、符号解码和比特排序重构。
需要具备的基础知识:
(1)Suggested Reading list:SuggestedReading - GNU Radio
"The ARRL Handbook." A kind of hodge-podge of stuff. If you already know what you're looking for, you might be able to find it here. http://www.arrl.org(第11.5节)
(2)GNU Radio系列教程(二):初级篇之GNU Radio介绍
(3)GNU Radio系列教程(六):初级篇之GNU Radio GRC 硬件使用实例之信号频谱分析
目录
一、发射一个信号
本实验的第一步是发射一个QPSK信号。首先,生成一串比特数据,然后将其调制成复数星座数据(这里更准确的说,最好别叫调制,叫映射更合适一些,即将比特数据映射到星座图中的星座点。)为了实现这步操作,我们使用GNU Radio中的Constellation Modulator block模块,该模块通过Constellation Rect. Object和其他参数的设定来实现QPSK调制功能。
“Constellation Rect. Object”参数可以用来决定符号的编码方式。“Constellation Modulator”模块可以基于“Constellation Rect. Object”参数来实现调制(或称为映射)。在“Constellation Modulator”模块中可以设定是否采用差分编码(即“Differential Encoding”参数设置为“Yes”或“No”)。由于“Constellation Modulator”模块需要的输入数据是字节类型的数据,因此,在本例子中,我们使用“Random Source”模块生成取值空间为0-255的字节流。
对于“Constellation Modulator”模块中的“Sample per symbol”参数的取值,一般的取值原则是尽可能小,其最小值为2。通常来说,当确定了硬件设备的采样率之后,这个“Sample per symbol”取值是可以和GRC流图中的“samp_rate”取值一起帮助我们达到要得到的比特速率。由于我们在本文中只是做的纯仿真实验,没有使用任何软件无线电开发板,本例子中的“Sample per symbol”取值只要能满足GRC流图中的数据速率即可。例如,在这里,我们选定了“Sample per symbol”为4,这个取值比实际需要的取值要大,但是有利于在时域或频域来观察信号。
最后,我们需要设定“Constellation Modulator”模块中的“Excess BW”(带外带宽)因子取值,即均方根升余弦脉冲成形滤波器中的roll-off因子“alpha”。下图(mpsk_rrc_rolloff.grc)流图中在五个“Constellation Modulator”中分别设置了五种不同的roll-off因子“alpha”取值,即0.1(100m)、0.22(220m)、0.35(350m)、0.5(500m)、1。
在下边的图形中,红色曲线表示“alpha”取值为0.2,绿色曲线表示“alpha”取值为0.35。
mpsk_stage1.grc生成了QPSK信号,并同时绘制了发射信号(transmitted signal)和接收信号(received signal)的时域图、频域图和星座图。注意,这里还没有加上信道模块,“Throttle”模块的输出信号就看作是QPSK发射信号,“Decimating FIR Filter”模块的输出信号就看作是QPSK接收信号。
在星座图中,我们可以直观的看到过采样(因为我们把Sample per symbol设置成了4,其实实际上我们并不需要这么大的sps,所以叫做过采样)和滤波操作的作用。例如,过采样的结果就是我们在一个符号中生成了4个采样值。在本例子中,均方根升余弦滤波器带来了自干扰,也就是符号间干扰或叫码间干扰(inter-symbol interference, ISI)。ISI对于信号接收和还原来说是一个不利因素。我们将在后续的时钟恢复环节重点解决这个问题。
此刻,我们先观察生成的QPSK信号。在频域图形中,一方面,滤波器可以使得频域信号的带外功率明显降低;另一方面,“Throttle”模块的输出信号被看作是QPSK发射信号,图形中的图标是“Tx”(蓝色曲线),“Decimating FIR