调制信号的升余弦成型及误码性能分析

一、原理
1.1 QPSK 的调制原理
QPSK(正交相移键控)是一种四进制数字调制方式。基带信号经调制后,每
一个符号携带 2 比特信息,信息承载在载波的初始相位上,并且相邻符号间所对应的绝对相位相差 90° 。因此,用 4 种绝对相位即可代表所有的符号信息。例如: 00 对应初始相位 0°、 01 对应初始相位 90°、 11 对应初始相位 180°、 10对应初始相位 270° 。此外,从星座图上看,当 QPSK 发生误码的时候,一个符号落在相邻的星座点上的概率总是要比落在非相邻星座点上的概率大。因此, QPSK符号在星座图上应按格雷码顺序排列, 确保相邻的符号间只有 1 个比特不同,在发生误码的时候降低了误比特率。 以下为一种 QPSK 发射机的实现框图: 

调制信号的升余弦成型及误码性能分析

1.2 QPSK 的相干检测
QPSK 接收机接收到 QPSK 信号后,解调步骤如下: 1、 QPSK 信号经过一个低
噪声功率放大器,补偿 AWGN 信道带来的幅度衰减; 2、 经过一个带通滤波器滤除带外噪声; 3、 IQ 解调器完成下变频,得到复包络,再分别送进接收滤波器; 4、对 IQ 两路信号进行采样; 5、 解映射、 解星座,判断符号。最后,进行并串变换得到基本的比特流。此外,由于在提取相干载波的时候可能会发生“倒π”现象从而导致最终得到的比特流全部相反,采用 DQPSK 可消除这种隐患。以下为 QPSK相干解调的实现框图: 

 调制信号的升余弦成型及误码性能分析

1.3 升余弦成型
数字通信系统中,由于总的传输特性不理想,会使传输波形产生畸变,会
引起幅度失真和相位失真,表现为连续传输的脉冲波形会受到破坏,使得接收
端前后脉冲不再能清晰的分开,也就是产生了码间串扰。时域中,抽样时刻无
码间串扰的条件为,抽样时刻仅存在当前码元的抽样值,不存在历史时刻码元
抽样值的加权值。在实际的传输系统中,很少利用方波作为基带脉冲波形,因
为基带脉冲波形的功率谱形状为 Sa(f)形状,旁瓣功率大,容易对其他频带产生
干扰, 也容易失真。 这就需要对基带脉冲进行成型,来压缩带宽,但是由于压
缩了带宽必然会带来时域信号的延长,这是无可避免的。奈奎斯特第一准则告
诉我们,理想成型滤波器是矩形成型滤波器,它是物理无法实现的,但我们并
不为此感到失望,因为其频率响应没有过渡带,这导致了其冲击响应为 Sa(t)形式,拖尾严重,在位定时信息不精准的情况下,会引入较大的码间串扰值。 在
实际中最常用的成型滤波器为升余弦成型滤波器,它具有平滑的特性,拖尾幅
度较小, 可以使得在对当前码元抽样时,免受码元串扰值的影响, 同时在位定
时不精准的情况下,由抽样引入的码间串扰值减小,增加了系统的可靠性,但
滚降因子越大,会造成调制之后的信噪比(SNR)降低。 为了降低滤波器的设计
复杂度,升余弦成型滤波器的设计通常设计为匹配滤波器,也就是在发射端设
置一个均方根升余弦滤波器,接收端同样地设置一个均方根升余弦滤波器,接
收端的均方根升余弦滤波器的频率响应为发射端的共轭。在基带通信系统中,
在满足无码间串扰的条件下,经过理想成型的频带利用率和经过升余弦程序的
频带利用率的极值分别为: 2(Baud/Hz/s)和 2/(1+a)(Baud/Hz/s)。其中, a 为
滚降因子。 

二、Matlab 仿真
2.1 QPSK 已调信号的产生
2.1.1 串并变换
QPSK 是四进制调制,每个符号需要携带 2 比特信息,即需要进行 2: 1 的串
并变换。首先,用 4*rand(1,n)来产生一个 1 行 n 列的在(0,3)之间分布的随机数行向量,再用 fix()函数对其进行取整,即可生产一个 1 行 n 列取值为[0,1,2,3]之一的行向量,模拟了串并变换。由最初的只有 0、 1 的 2 种取值到 0、 1、 2、3 的 4 种取值。再经过自定义的格雷码映射规则,使符号按格雷码顺序排列,降低误比特率。
2.1.2 星座映射
在完成串并变换之后,进行星座映射,产生复包络。QPSK 星座映射调用 matlab
中的 pskmod(a,b)函数,其中 a 是输入的码字(00、 01、 11、 10), b 是映射阶数,此处 b 为 4,即 QPSK 星座映射,通过这个函数后,把对应的码字映射成了复包络。其中 00 映射为 1+0j、 01 映射为 0+j、 11 映射为-1+0j、 10 映射为 0-j。
2.1.3 上变频
在完成了串并变换和星座映射之后, QPSK 的基带信号已经形成,但是要想
在带通特性的信道中传输,还必须进行上变频之后才能发送。 QPSK 可以采用正
交上边频,即 IQ 调制,对 I 路信号乘以同相载波,对 Q 路信号乘以相移 90 度之后的正交载波,这个过程等价于复包络乘以一个复载频因子后取其实部。图 2.1为随机发送 10 个没有经过成型的 QPSK 符号的已调信号的波形。 

 调制信号的升余弦成型及误码性能分析

任何一种带通传输系统都可以等效为相应的基带传输系统,它们的区别体现
在两个方面: 1)带通传输系统对基带传输系统进行了上边频,即频谱搬移; 2)
带通传输系统的信道为带通特性信道,基带传输系统的信道为低通特性信道。两
种传输系统的大体框图如图 2.2 所示。为了仿真简便,接下来的仿真中采用的是等效的 QPSK 的基带传输模型 

 调制信号的升余弦成型及误码性能分析

2.2 升余弦成型滤波器的设计
Matlab 中提供了用来设计升余弦或均方根升余弦滤波器的函数,其调用格
式为:[num,den] = rcosine(Fd,Fs,type,a,delay)。各参数意义如下
Fd:符号采样频率
Fs:滤波器采样率, Fs/Fd 必须为大于一的整数,这是因为成型滤波器进行
成型的时候需要内插值,即过采样,这样才能保证成型后的波形足够平滑。
type:选择设计滤波器的类型(iir 根升余弦、 fir 根升余弦、 iir 升余弦、
fir 升余弦)
a:滚降因子
delay:滤波器的时延
num,den 分别为滤波器传递函数的分子系数与分母系数数组
2.3、图 2.4、图 2.5 分别为滚降因子 0.1、 0.3、 0.5 时,根升余弦滤波
器的冲激响应及 30 个随机二进制消息在成型滤波器的作用下所形成的传输波形。 

 调制信号的升余弦成型及误码性能分析

调制信号的升余弦成型及误码性能分析

调制信号的升余弦成型及误码性能分析

2.3 高斯白噪声
本次仿真的选择的信道条件为 AWGN 信道, AWGN 信道中仅存在高斯白噪声的
干扰,高斯白噪声的幅度分布满足正态分布,它的功率谱密度分布满足均匀分布。
Matlab 中提供了多种向信号中加入高斯白噪声的方法和函数,本次仿真采用的
函数是 awgn(x,snr,’measured’)函数。其中, x 表示的是需要加入噪声的信号,snr 表示信噪比,单位为 dB, measured 表示该函数会自动测定信号的功率,之后再往 x 中加入高斯白噪声,使信号功率和噪声功率的比值达到 snr。
本次仿真环境:
发送符号数:100000
信道条件:基带 AWGN 信道
映射方式:QPSK 映射
成型滤波器:FIR 升余弦成型滤波器
滚降因a:0.1、0.3、0.5  

编码方式: 格雷编码
滤波器上采样率: 1: 10
比特信噪比范围: 0:7,单位:dB
频带利用率:满足基带无码间串扰的最大频带利用率
信道均衡:无
导频,训练序列等额外比特开销:无
综上所述,可得原消息经串并变换、 QPSK 映射、格雷编码、升余弦成型后的
最终发射的信噪比 SNR 表达式为 

                                   调制信号的升余弦成型及误码性能分析

换算为 dB 为单位后,则有 

         调制信号的升余弦成型及误码性能分析

上式右边第一项为比特信噪比;第二项由格雷编码引入,格雷编码并没有引
入冗余信息,只是把符号按格雷码顺序重新排列;第三项由升余弦成型滤波器的
过采样引入;第四项为频带利用率。 

2.4 解星座、 判决、误码统计、作图
    接收机的解星座与判决由 depskmod(r,M)函数完成, r 为需要解星座的信号,M 为调制阶数。经过该函数后,得到的是经过格雷编码的符号,然后将这些符号再经过格雷解码,即可与原符号通过函数 bitter(s1,s2,M)作误码统计,s1 为格雷编码的原始符号, s2 为判决后经格雷解码得到的符号, M 为调制阶数。最后,采用 semilogy()函数在一个图上画出 QPSK 在格雷编码后,经过不同滚降因子成型, 经过 AWGN 信道后的 BER 曲线。

3 仿真结果与分析
结合 2.3 的仿真条件,得到的仿真结果如图 3 所示 

 调制信号的升余弦成型及误码性能分析

分析:
1. 对于升余弦成型滤波器,滚降因子越大,原消息序列经成型后,时域波
形的拖尾越轻,衰减较快,滤波器设计复杂度越小,但信号所占据的带
宽越宽;滚降因子越小,成型后,时域波形的拖尾越严重,衰减较慢,
滤波器设计复杂度越大,但信号所占据的带宽较前者窄。在这种情况下,
若接收机的位定时脉冲恢复得不精准,由拖尾引入的码间串扰较前者大。
2. 对于 BER 曲线,在同一比特信噪比的情况下,滚降因子越大,误码率越
高;滚降因子越小,误码率越小。这是因为调制后的信号的信噪比 SNR 与
频带利用率有关,而频带利用率又与滚降因子有关,滚降因子越大, SNR
越小,造成的误码率也就高了。
3. 对于 BER 曲线,若要实现同一误码性能,成型滤波器的滚降因子越大,
需要的比特信噪比越大,意味着要增加发射机功率;成型滤波器的滚降
因子越小,需要的比特信噪比越小,意味着发射机功率可以适当减小。
换句话说,在功率受限的情况下,可以通过降低滚降因子来换取误码性
能的提升,但是这会增加滤波器设计的硬件复杂度;在频带受限的情况
下,可以增加发射机功率来得到误码性能的提高。 

四、 Matlab 仿真代码
2.3~2.5
clear all 

Fd = 1; %符号采样频率

Fs = 10; %滤波器采样频率

a = [0.1 0.3 0.5]; %滤波器滚降系数

delay = 4; %滤波器时延

x=fix(2*rand(1,30));

%30 个随机二进制数据,研究同一二进制消息序列不同滚降因子下的成型效果
%----------------------------------- a = 0.1 --------------------------%
[num,den] = rcosine(Fd,Fs,'default',a(1),delay); %设计滤波器
figure;
subplot(211)
impz(num,den);
%滤波器的冲激响应,num为传递函数的分子系数,1为传递函数的分母系数
title('a = 0.1 的均方根升余弦滤波器的冲激响应');
[y,ty]=rcosflt(x,Fd,Fs,'filter',num,den); %对二进制数据进行脉冲成形
t=delay:length(x)+delay-1;
subplot(212);
stem(t,x,'-b');
hold on %画出二进制数据
plot(ty,y,'r') %画出脉冲成形后的数据
legend('原二进制消息数据','a=0.1成形后的消息波形')
axis([-1 40 -0.5 2])
%---------------------------------------------------------------------------%
%-------------------------------- a = 0.3 -----------------------------%
[num,den] = rcosine(Fd,Fs,'default',a(2),delay); %设计滤波器
figure;
subplot(211);
impz(num,den);
%滤波器的冲激响应,num为传递函数的分子系数,1为传递函数的分母系数
title('a = 0.3 的均方根升余弦滤波器的冲激响应');
[y,ty]=rcosflt(x,Fd,Fs,'filter',num,den); %对二进制数据进行脉冲成形
t=delay:length(x)+delay-1;
subplot(212);
stem(t,x,'-b');
hold on %画出二进制数据
plot(ty,y,'r') %画出脉冲成形后的数据
legend('原二进制消息数据','a=0.3成形后的消息波形')
axis([-1 40 -0.5 2])
%--------------------------------------------------------------------------%
%----------------------------- a = 0.5 --------------------------------%
[num,den] = rcosine(Fd,Fs,'default',a(3),delay); %设计滤波器
figure;
subplot(211);
impz(num,den);
%滤波器的冲激响应,num为传递函数的分子系数,1为传递函数的分母系数
title('a = 0.5 的均方根升余弦滤波器的冲激响应');
[y,ty]=rcosflt(x,Fd,Fs,'filter',num,den); %对二进制数据进行脉冲成形
t=delay:length(x)+delay-1;
subplot(212);
stem(t,x,'-b');%画出二进制数据
hold on
plot(ty,y,'r') %%画出脉冲成形后的数据
legend('原二进制消息数据','a=0.5成形后的消息波形')
axis([-1 40 -0.5 2])
%--------------------------------------------------------------------------%
3
clear all;
n_symbol = 100000;
%发送10万个符号下研究QPSK经过升余弦成型的误比特性能
Fd = 1; %符号采样频率
Fs = 10; %升余弦成型滤波器采样频率
a = [0.1 0.3 0.5]; %滚降因子
delay = 5; %滤波器时延
M = 4; %QPSK 4进制调制
grayCodeRule = [0 1 3 2];
%格雷码编码规则
EbN0 = 0:7;
%比特信噪比,Eb/N0,单位为dB
msgOriginal = fix(4*rand(1,n_symbol));
%消息数据,模拟了串并变换
msgCoded = grayCodeRule(msgOriginal+1);
%对未经编码的原4进制消息进行格雷编码
msgMap = pskmod(msgCoded,M);
%QPSK 映射
%00->0° ~ (1+0j)
%01->90° ~(0+1j)
%11->180°~(-1+0j)
%10->270°~(0+(-1)j)
berSave = zeros(1,24);%保存不同滚降因子下的误比特率
errSave = zeros(1,24);%保存不同滚降因子下的误比特个数
for index_A = 1:length(a)
srcFilter = rcosine(Fd,Fs,'fir/sqrt',a(index_A),delay);
%设计根升余弦滤波器
s = rcosflt(msgMap,Fd,Fs,'filter',srcFilter);
%将映射好的QPSK基带信号进行升余弦成型
for index_EbN0=1:length(EbN0)
rxAddNoise=awgn(s,EbN0(index_EbN0)10+10*log10(M/(1+a(index_A))),'measured'
);
%snr = (Eb/n0)*(1/10)*(1/1)*(Rb/B),无量纲,取对数运算后单位为dB.
%(1/10)由滤波器的过采样引入, Fd/Fs = 1/10.
%(1/1)由格雷编码引入,格雷编码没有引入冗余信息,只是将符号进行了格
雷排列.
%(Rb/B)设置为基带信号经成型后满足无ISI的最大频带利用率,
log2(M)/(1+a),a 为滚降因子.
rxAddNosieSrcFilter = rcosflt(rxAddNoise,Fd,Fs,'Fs/filter',srcFilter);
%信号在接收端经过一个根升余弦滤波器,与发送端的滤波器匹配,行成一
个升余弦滤波器
rxDownsample = downsample(rxAddNosieSrcFilter,Fs);
%下采样,因为发送端经过了上采样,接收端进行下采样恢复
rxEnd = rxDownsample(2*delay+1:end-2*delay);
%去滤波器时延
msgDemod = pskdemod(rxEnd,M); %解映射+判决
decmsg= grayCodeRule(msgDemod+1);
%Gray 逆映射,得到原四进制消息序列
[errSave((index_A-1)*8+index_EbN0),berSave((index_A-
1)*8+index_EbN0)]=biterr(msgOriginal,decmsg,log2(M));
%求不同滚降因子下的误比特个数和误比特率,存放置数组的相应位置,方
便统一画图
end
end
semilogy(EbN0,berSave(1:8),'-ko',EbN0,berSave(9:16),'-k*',EbN0,berSave(17:24),'-
ks');
grid on;
%带圈线条为a=0.1,带星线条为a=0.3,带矩形线条为a=0.5
%作出基带QPSK信号在经过不同滚降因子的升余弦成型滤波器后的BER曲线
title('QPSK 信号经升余弦成型后在AWGN理想带限信道下的BER曲线')
xlabel('比特信噪比:Eb/N0');
ylabel('误比特率');
legend('a=0.1','a=0.3','a=0.5');