前言
通信原理课程仿真
针对下列两种系统
(1)信道带宽无限时的单极性基带传输
(2)信道带宽受限时的双极性基带传输
采用匹配滤波器(相关接收机),对误码性能进行仿真:
1.给出系统模型,以及对系统模型的分析,推导误码率理论结果。
2.选择适当仿真工具,搭建仿真模型,设置仿真参数进行仿真并得到误码率仿真结果。
3.将仿真结果与误码率结果进行比较,对误差进行分析得出结论。
以下是本篇文章正文内容
一、概述
1.概述
在数字通信系统中,需要将输入的数字序列映射为信号波形在信道中传输,此时信源输出数字序列,经过信号映射后成为适于信道传输的数字调制信号。由于数字符号是按码元间隔不断产生的,经过讲数字符号一一映射为相应的信号波形后,就形成了数字调制信号。根据映射后信号的频谱特性,可以分成基带信号和频带信号。
数字基带传输系统模型如图1所示。我们把它分成三个模块:发射机、信道、接收机。
数字系统通用模型如下图所示:
数字基带传输系统模型如下图所示:
1.1 脉冲调制
脉冲调制框图如下图所示:
信源的二进制随机序列{
b
n
b_n
bn}通过线路编码、窄脉冲生成器和成型滤波器后变为信号波形
s
(
t
)
s(t)
s(t)。
1.2 AWGN信道
-
发射机(脉冲调制模块)产生的发送信号,首先经过信道,再进入接收机。在这门课程里面,我们主要考虑加性高斯白噪声(AWGN)信道,在移动通 信等课程里面,会讨论更为复杂的衰落信道。
-
我们将讨论两种AWGN信道,即带宽无限的AWGN信道,以及带宽有限的AWGN信道。
带宽无限AWGN信道
信号在进入接收机之前,叠加加性高斯白噪声nw(t),接收信号为
r
(
t
)
=
s
(
t
)
+
n
w
(
t
)
r(t)=s(t)+n_w(t)
r(t)=s(t)+nw(t)
带宽受限AWGN信道
信道模块的频率传递函数 C ( f ) C(f) C(f)类似于理想低通滤波器,其带宽为B。对于这一类信道,发送信号 s ( t ) s(t) s(t)通过 C ( f ) C(f) C(f)时,其波形及频谱会发生改变。接收信号为
r ( t ) = s ( t ) ∗ c ( t ) + n w ( t ) r(t)=s(t)*c(t)+n_w(t) r(t)=s(t)∗c(t)+nw(t)
1.3 接收机:检测
\qquad\qquad\qquad\qquad\qquad\qquad\qquad
来自信道的信号波形 r ( t ) r(t) r(t)恢复成二进制序列{ b ^ n {\hat{b}_n} b^n}。理想情况下,{ b ^ n {\hat{b}_n} b^n}应该与{ b n {b_n} bn}完全相同,但由于噪声等影响,会发生误码。
二、信道带宽无限时的单极性基带传输
2.1 系统模型
信道带宽无限时,发送滤波器采用矩形波脉冲。
单极性不归零码(NRZ)
i = 1 , a 1 = + A i=1, a_1=+A i=1,a1=+A i = 2 , a 2 = 0 i=2, a_2=0 i=2,a2=0
\qquad\qquad\qquad\qquad\qquad
发送滤波器的冲激响应如下图所示:
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
单极性归零码(RZ)
发送序列的幅值ai为:
i = 1 , a 1 = + A i=1, a_1=+A i=1,a1=+A i = 2 , a 2 = 0 i=2, a_2=0 i=2,a2=0
发送滤波器的冲激响应 g T ( t ) g_T(t) gT(t)是归零脉冲。
2.2 误码性能分析
以单极性不归零码为例:
假设信源等概发送
s
i
(
t
)
=
{
s
1
(
t
)
=
A
,
s
2
(
t
)
=
0
,
s_i(t)= \begin{cases} s_1(t)=A,\\ s_2(t)=0, \end{cases}
si(t)={s1(t)=A,s2(t)=0,
经过匹配滤波器接收
r
(
t
)
=
s
i
(
t
)
+
n
w
(
t
)
=
{
s
1
(
t
)
=
A
+
n
w
(
t
)
,
s
2
(
t
)
=
0
+
n
w
(
t
)
,
r(t)=s_i(t)+n_w(t)= \begin{cases} s_1(t)=A+n_w(t),\\ s_2(t)=0+n_w(t), \end{cases}
r(t)=si(t)+nw(t)={s1(t)=A+nw(t),s2(t)=0+nw(t),
判决量中的噪声:
滤波器输入:
r
(
t
)
=
s
i
(
t
)
+
n
w
(
t
)
r(t)=s_i(t)+n_w(t)
r(t)=si(t)+nw(t)
采样前的信号:
y
(
t
)
=
∫
r
(
T
b
−
τ
)
h
(
τ
)
d
τ
y(t)=∫ r( T_b − τ ) h ( τ ) d τ
y(t)=∫r(Tb−τ)h(τ)dτ
采样值中的噪声:
Z
=
∫
n
w
(
T
b
−
τ
)
h
(
τ
)
d
τ
(
0
,
σ
2
)
Z=∫ n_w( T_b − τ ) h ( τ ) d τ (0,\sigma^2)
Z=∫nw(Tb−τ)h(τ)dτ(0,σ2)
其中
σ
2
=
N
0
2
E
h
=
N
0
2
E
1
=
N
0
E
b
,
E
b
=
E
1
+
E
2
2
\sigma^2=\frac{N_0}{2} E_h=\frac{N_0}{2}E_1=N_0E_b, E_b=\frac{E_1+E_2}{2}
σ2=2N0Eh=2N0E1=N0Eb, Eb=2E1+E2
判决量中的有用信号:
最佳抽样时刻
t
=
T
b
t=T_b
t=Tb时,采样值中的有用信号:
∫
s
i
(
T
b
−
τ
)
h
(
τ
)
d
x
=
∫
s
i
(
T
b
−
τ
)
s
1
(
t
−
τ
)
d
x
=
{
E
1
,
发
送
s
1
0
,
发
送
s
2
\int s_i(T_b-\tau)h(\tau){\rm d}x=\int s_i(T_b-\tau)s_1(t-\tau){\rm d}x=\begin{cases} E_1,发送s_1\\ 0, \qquad发送s_2 \end{cases}
∫si(Tb−τ)h(τ)dx=∫si(Tb−τ)s1(t−τ)dx={E1,发送s10,发送s2
条件概率密度:
f
(
r
∣
s
1
)
=
1
2
π
×
σ
2
e
−
(
r
−
A
)
2
2
σ
2
f(r|s_1)=\frac{1}{\sqrt{2\pi\times\sigma^2}}e^{-\frac{(r-A)^2}{2\sigma^2}}
f(r∣s1)=2π×σ21e−2σ2(r−A)2
f
(
r
∣
s
2
)
=
1
2
π
×
σ
2
e
−
(
r
)
2
2
σ
2
f(r|s_2)=\frac{1}{\sqrt{2\pi\times\sigma^2}}e^{-\frac{(r)^2}{2\sigma^2}}
f(r∣s2)=2π×σ21e−2σ2(r)2
\qquad\qquad\qquad\qquad\qquad\qquad
\qquad\qquad\qquad
\qquad\qquad\qquad
\qquad\qquad\qquad
2.3 仿真模型与仿真过程
clear;close all;
%信道带宽无限时的单极性基带传输
%----------------参数设置------------------
T_start=0; %开始时间
T_stop=1; %截止时间
T=T_stop-T_start; %仿真持续时间
T_sample=1/1000; %采样间隔
f_sample=1/T_sample; %采样速率
N_sample=T/T_sample; %采样点数
n=0:N_sample-1; %采用序列
r_s=100; %传输速率
alpha=0; %升余弦系数[df=alpha*rs]
NumBits=T*r_s; %传输bit数
NumCoff=40; %滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%---------------发送滤波器----------------
g_T=[ones(1,f_sample/r_s),zeros(1,31)]; %发送滤波器,矩形脉冲
b1=(sign(rand(1,NumBits)-0.5)+1)*0.5; %随机产生0、1等概信号序列
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits); %原始数字序列
s=conv(b3,g_T); %将脉冲序列转换为矩形序列
%-------信道传输时加入加性高斯白噪声--------
N_0=10^(-6); %噪声功率谱
noise_w=wgn(1,length(s),N_0*f_sample,'linear'); %产生白噪声
r=s+noise_w; %叠加白噪声
%------------------接收机------------------
g_R=[ones(1,f_sample/r_s),zeros(1,30)]; %匹配滤波器
y1=conv(r,g_R)/5; %接收的波形
%采样序列
sample1=zeros(f_sample/r_s,NumBits);
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);
sample3=zeros(1,length(y1));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y2=y1.*sample3;
y2(:,all(y2==0,1))=[]; %恢复的数字序列
y2(y2<1)=[0];
y3=[0,0,0,y2];
y3=y3(1:length(y3)-3);
C=zeros(9,length(y3));
B=[C;y3];
B=B(:)';
%----------------误码率分析-----------------
b_t=sign(b1);
b_r=sign(y3);
BER=length(find(b_t~= b_r))/NumBits; %仿真误码率
fprintf('BER=%f \n',BER);
%------------------画图--------------------
myeyediagram=eyediagram(y1(1:length(y1)),f_sample/r_s); %眼图
figure(2);
subplot(311);plot(s);
title('发射器发出信号序列s(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)");
subplot(312);plot(r);
title('传输序列加噪s(t)+n_w(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)+n_w(t)");
subplot(313);plot(y1);
title('接收机获得的信号波形');
xlabel("Time t (s)");ylabel("Symbol y(t)");
% subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');
figure(3);
subplot(3,1,1);stem(b3,'.');
title('原始信号序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n\}");
subplot(3,1,2);stem(y3,'.');
title('接收数字序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n'\}");
subplot(3,1,3);stem(b3,'.');hold on;stem(B,'.');legend('原始数字序列','接收数字序列');
title('原始与接收数字序列对比');
xlabel("Time t (s)");ylabel("Symbol \{b_n\} and \{b_n'\}");
sn=0.1:0.01:100; %定义信噪比序列
snlg=20*log10(sn); %将信噪比转化为dB表示
ssingle=sqrt(sn/2);
bsingle=erfc(ssingle)/sqrt(2); %求单极性的误比特率序列
figure(4);
semilogy(snlg,bsingle);
axis([-20 30 0.0000001 1]);
title('NRZ');
xlabel('输单极性不归零码入信噪比');
ylabel('误比特率')
运行结果如下:
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
单极性不归零码-调制解调波形
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
单极性不归零码-原始信号与接受序列比较
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
单极性码接收信号眼图
\qquad\qquad\qquad\qquad\qquad\qquad\qquad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\qquad\qquad
单极性不归零码基带传输−仿真误码率
\qquad\qquad\quad\quad\quad\quad
\qquad\qquad\qquad\qquad\qquad\quad\quad\quad\quad\quad\qquad\qquad 单极性不归零码基带传输−理论误码率曲线
三、信道带宽受限的双极性基带传输
3.1 系统模型
双极性不归零码
发送序列的幅值ai为:
i
=
1
,
a
1
=
+
A
i=1, a_1=+A
i=1,a1=+A
i
=
2
,
a
2
=
−
A
i=2, a_2=-A
i=2,a2=−A
发送滤波器的冲激响应为不归零脉冲。
双极性归零码
发送序列的幅值ai为:
i = 1 , a 1 = + A i=1, a_1=+A i=1,a1=+A i = 2 , a 2 = − A i=2, a_2=-A i=2,a2=−A
发送滤波器的冲激响应为归零脉冲。
当信道的带宽受限时,可以采用升余弦信号作为发送滤波器
\qquad\qquad\qquad
3.2 误码性能分析
以双极性不归零码为例:
假设信源等概发送
s
i
(
t
)
=
{
s
1
(
t
)
=
+
A
,
s
2
(
t
)
=
−
A
,
s_i ( t ) = \begin{cases} s 1 ( t ) = + A ,\\ s 2 ( t ) = − A , \end{cases}
si(t)={s1(t)=+A,s2(t)=−A,
经过匹配滤波器接收
r
(
t
)
=
s
i
(
t
)
×
c
(
t
)
+
n
w
(
t
)
r(t)=s_i(t)\times c(t)+n_w(t)
r(t)=si(t)×c(t)+nw(t)
假定发送s1(t):
匹配滤波器的输入:
r
(
t
)
=
s
1
(
t
)
+
n
w
(
t
)
r(t)=s_1(t)+n_w(t)
r(t)=s1(t)+nw(t)
匹配滤波器输出(采样前的信号):
∫
−
∞
+
∞
r
(
t
−
τ
)
h
(
τ
)
d
τ
\int_{-\infty}^{+\infty} {r(t-τ)h(τ)} \,{\rm d}τ
∫−∞+∞r(t−τ)h(τ)dτ
最佳抽样时刻
t
=
T
b
t=T_b
t=Tb处,采样值中的有用信号:
∫
−
∞
+
∞
s
1
(
T
b
−
τ
)
s
1
(
T
b
−
τ
)
d
τ
=
E
b
\int_{-\infty}^{+\infty} {s_1(T_b-τ)s_1(T_b-τ)} \,{\rm d}τ =Eb
∫−∞+∞s1(Tb−τ)s1(Tb−τ)dτ=Eb
E
b
E_b
Eb是平均比特能量,
E
b
=
E
1
=
E
2
E_b=E_1=E_2
Eb=E1=E2
采样值中的噪声:
Z
=
∫
−
∞
+
∞
n
w
(
T
b
−
τ
)
h
(
τ
)
d
τ
∼
N
(
0
,
σ
2
)
Z=\int_{-\infty}^{+\infty} {n_w(T_b-τ)h(τ)} \,{\rm d}τ \sim N(0,σ^2)
Z=∫−∞+∞nw(Tb−τ)h(τ)dτ∼N(0,σ2)其中
σ
2
=
N
0
E
b
2
σ^2=\frac{N_0E_b}{2}
σ2=2N0Eb
发送s1(t)条件下的判决量为
y
=
y
(
T
b
)
=
E
b
+
Z
y=y(T_b)=E_b+Z
y=y(Tb)=Eb+Z。
y
y
y是均值为
E
b
E_b
Eb、方差为
σ
2
σ^2
σ2的高斯随机变量,其概率密度函数为
p
1
(
y
)
=
p
(
y
∣
s
1
)
=
1
2
π
σ
2
e
−
(
y
+
E
b
)
2
2
σ
2
p1(y)=p(y|s1)=\frac{1}{\sqrt{2\pi \sigma^2}} \quad e^{-\frac{(y+E_b)^2}{2\sigma^2}}
p1(y)=p(y∣s1)=2πσ21e−2σ2(y+Eb)2
发送s1(t),如果判决量y低于门限VT,则判决出错, P ( e ∣ s 1 ) = P ( Y < V T ∣ s 1 ) = ∫ − ∞ V T p 1 ( y ) d y P(e|s_1)=P(Y<V_T|s_1)=\int_{-\infty}^{V_T} {p_1(y)} \,{dy} P(e∣s1)=P(Y<VT∣s1)=∫−∞VTp1(y)dy
\qquad\qquad\qquad\qquad\qquad\qquad
发送s2(t)同理。
因此等概时的平均误比特率:
P
b
=
1
2
P
(
e
∣
s
1
)
+
1
2
P
(
e
∣
s
2
)
=
1
2
e
r
f
c
(
E
b
N
0
)
=
Q
(
2
E
b
N
0
)
P_b=\frac{1}{2}P(e|s_1)+\frac{1}{2}P(e|s_2)=\frac{1}{2}erfc(\sqrt\frac{E_b}{N_0})=Q(\sqrt\frac{2E_b}{N_0})
Pb=21P(e∣s1)+21P(e∣s2)=21erfc(N0Eb)=Q(N02Eb)
3.3 仿真模型与仿真过程
clear;close all;
%带宽受限,双极性不归零码传输
%-------参数设置--------
T_start=0; %开始时间
T_stop=1; %截止时间
T=T_stop-T_start; %仿真持续时间
T_sample=1/1000; %采样间隔
f_sample=1/T_sample; %采样速率
N_sample=T/T_sample; %采样点数
n=0:N_sample-1; %采样序列
r_s=100; %传输速率
alpha=0.25; %升余弦滚降系数
%df=alpha*rs=25Hz
NumBits=T*r_s; %传输bit数
NumCoff=30; %滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%----------信号发生器-------------
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器
b1=sign(rand(1,NumBits)-0.5); %原始0、1数字序列
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits); %原始数字序列
s=conv(b3,g_T); %发送的信号波形
%-------AWGN高斯信道-------
%加入高斯白噪声
N_0=10^(-6); %功率谱密度
noise_w=wgn(1,length(s),N_0*f_sample,'linear'); %产生白噪声
r=s+noise_w; %叠加白噪声
%----------接收机------------
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample); %升余弦滤波器(MF)
y1=conv(r,g_R); %接收的波形
sample1=zeros(f_sample/r_s,NumBits);
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);
sample3=zeros(1,length(y1));
sample3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y2=y1.*sample3;
y2(:,all(y2==0,1))=[]; %恢复的数字序列
C = zeros(9,length(y2));
B = [C;y2];
B = B(:)';
%------------误码率---------
b_t=(sign(b1)+1)*0.5;
b_r=(sign(y2)+1)*0.5;
BER=length(find(b_t~= b_r))/NumBits; %仿真误码率
fprintf('BER=%f \n',BER);
%--------------作图-----------
myeyediagram=eyediagram(y1(1:length(y1)),f_sample/r_s);%眼图
figure(2);
subplot(311);plot(s);
title('发射器发出信号序列s(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)");
subplot(312);plot(r);
title('传输序列加噪s(t)+n_w(t)');
xlabel("Time t (s)");ylabel("Symbol s(t)+n_w(t)");
subplot(313);plot(y1);
title('接收机获得的信号波形');
xlabel("Time t (s)");ylabel("Symbol y(t)");
% subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');
figure(3);
subplot(3,1,1);stem(b3,'.');
title('原始信号序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n\}");
subplot(3,1,2);stem(y2,'.');
title('接收数字序列');
xlabel("Time t (s)");ylabel("Symbol \{b_n'\}");
subplot(3,1,3);stem(b3,'.');hold on;stem(5*B,'.');legend('原始数字序列','恢复的数字序列');
title('原始与接收数字序列对比');
xlabel("Time t (s)");ylabel("Symbol \{b_n\} and \{b_n'\}");
sn=0.1:0.01:100; %定义信噪比序列
snlg=20*log10(sn); %将信噪比转化为dB表示
sdouble=sqrt(sn);
bdouble=erfc(sdouble)/sqrt(2); %求双极性的误比特率序列
figure(4);
semilogy(snlg,bdouble);
axis([-20 30 0.0000001 1]);
title('双极性不归零码NRZ');
xlabel('输入信噪比/dB');
ylabel('误比特率')
运行结果:
\qquad\qquad\qquad\qquad\qquad\qquad\quad\qquad\qquad\qquad
双极性不归零码-调制解调波形
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
双极性不归零码-数字序列
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
双极性码接收信号眼图
\qquad\qquad\qquad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad 双极性不归零码-理论误码率
四、信道带宽受限的QPSK传输
4.1 系统模型
QPSK有4个可能的离散相位状态,每个载波相位携带两个二进制符号,将这四个相位设计为间隔π/2的均匀相位。
QPSK(四进制移相键控)信号的产生与解调
对于a图形式的QPSK:
θ
i
=
(
2
i
−
1
)
∗
π
4
\theta_i=(2i-1)*\frac{\pi}{4}
θi=(2i−1)∗4π
对于b图形式的QPSK:
θ
i
=
(
i
−
1
)
∗
π
2
\theta_i=(i-1)*\frac{\pi}{2}
θi=(i−1)∗2π
QPSK的产生:
s
i
(
t
)
=
A
c
o
s
(
w
c
t
+
θ
i
)
=
A
(
c
o
s
θ
i
∗
c
o
s
w
c
t
−
s
i
n
θ
i
∗
s
i
n
w
c
t
)
s_i(t)=Acos(w_ct+\theta_i)=A(cos\theta_i *cosw_ct-sin\theta_i *sinw_ct)
si(t)=Acos(wct+θi)=A(cosθi∗coswct−sinθi∗sinwct)
s
i
(
t
)
=
A
[
I
(
t
)
c
o
s
w
c
t
−
Q
(
t
)
s
i
n
w
c
t
]
s_i(t)=A[I(t)cosw_ct-Q(t)sinw_ct]
si(t)=A[I(t)coswct−Q(t)sinwct]
I
(
t
)
=
c
o
s
θ
i
;
Q
(
t
)
=
s
i
n
θ
i
0
≤
t
≤
T
s
I(t)=cos\theta_i;Q(t)=sin\theta_i\quad 0\leq t\leq T_s
I(t)=cosθi;Q(t)=sinθi0≤t≤Ts
\qquad\qquad\qquad\qquad\qquad
\qquad\qquad\qquad
\qquad\qquad\qquad\qquad\qquad
正交调制原理图
QPSK信号,功率谱密度
\qquad\qquad\qquad
\qquad\qquad\qquad\qquad\qquad
QPSK信号功率谱密度图
发送端:
首先产生一串比特流,经过串并变换,分为两路( I I I 路和 Q Q Q路),奇数进I路并与 c o s ( w c t ) cos(w_ct) cos(wct)相乘、偶数进 Q Q Q路并与 s i n ( w c t ) sin(w_ct) sin(wct)相乘,然后 I I I路信号减 Q Q Q路信号即可得到QPSK信号。
\qquad\qquad\qquad
QPSK相关解调器最佳接收
接收端:
\qquad
( 基本不考虑带通滤波器,只让
w
c
w_c
wc载波进入)接收端接到信号分别进入
I
I
I路和
Q
Q
Q路,
I
I
I路与
c
o
s
(
w
c
t
)
cos(w_ct)
cos(wct)相乘、
Q
Q
Q路与
−
s
i
n
(
w
c
t
)
-sin(w_ct)
−sin(wct)相乘, 相乘后通过低通滤波器、抽样判决,还原为原来的
I
I
I路和
Q
Q
Q路信息,然后通过并/串变换变成比特流。这时候比较该比特流与发送端产生的比特流…
[
a
k
,
b
k
]
[a_k,b_k]
[ak,bk]…到底错了多少比特。
\qquad
这次实验是了解并仿真以上每个步骤对应的波形,该实验用积分器代替了接收端的载波恢复、低通滤波器、抽样判决对应的功能及式子。
4.2 误码性能分析
\quad
由于QPSK信号可看作同相及正交支路2PSK的叠加,所以在解调时可对两路信号分别进行2PSK的解调,然后进行并串变换,得到所传输的数据。计算QPSK解调的误比特率有两种办法:一是先计算误符率(平均判错四进制符号的概率),然后再根据误符率计算从四进制符号译为二进制符号的误比特率;另一计算方法是沿用2PSK匹配滤波器的误比特率计算公式。下面采用第二种方法进行计算。
\quad
I
I
I路功率是QPSK功率(
A
2
2
\frac{A^2}{2}
2A2)的一半,为
A
2
4
\frac{A^2}{4}
4A2,
I
I
I路比特周期是QPSK比特周期
T
b
T_b
Tb的二倍,为
2
T
b
2T_b
2Tb。
I
I
I路比特能量是
A
2
4
∗
2
T
b
=
E
b
\frac{A^2}{4}*2T_b=E_b
4A2∗2Tb=Eb,与QPSK的比特能量相同。在给定QPSK发端信源输出的二进制符号“1”和“0”等概出现,二进制码元经串并变换后在同向支路及正交支路也是等概分布的,所以在收端的同向及正交支路解调的输出经并串变换后的数据,其总的平均误比特率与
I
I
I支路及Q
支
路
支路
支路的 平均错判概率为
P
e
I
=
P
e
Q
=
1
2
[
(
A
2
2
)
(
2
T
b
)
2
N
0
]
=
1
2
e
r
f
c
(
E
b
N
0
)
P_{eI}=P_{eQ}=\frac{1}{2}[\sqrt{\frac{(\frac{A^2}{2})(2T_b)}{2N_0}}]=\frac{1}{2}erfc(\sqrt\frac{E_b}{N_0})
PeI=PeQ=21[2N0(2A2)(2Tb)]=21erfc(N0Eb)
4.3 仿真模型与仿真过程
1.发送端产生的比特流 . . . [ a k , b k ] . . . ...[a_k,b_k]... ...[ak,bk]...,奇数进I路、偶数进Q路对应的比特数和波形图如下所示
\qquad\qquad\qquad
用matlab仿真出来的波形图与表格数据一致。
2.QPSK调制乘以载波信号后传输的I路和Q路、IQ路和信号(QPSK) 对应波形图如图所示
3.QPSK经过解调产生的二进制信息比特流、I 路和Q路信息波形图如图所示
\qquad\qquad\qquad
clear all;clc;
N=20;%比特数
T=1;%比特周期
fc=2;%载波频率
Fs=100;%抽样频率
bitstream=randi([0,1],1,N);%随机产生的比特数0、1
bitstream=2*bitstream-1;%单极性变为双极性(0到-1;1到1)
I=[];Q=[];
%奇数进I路,偶数进Q路
for i=1:N
if mod(i,2)~=0
I=[I,bitstream(i)];
else
Q=[Q,bitstream(i)];
end
end
%采用绘图比较I、Q比特流
bit_data=[];
for i=1:N
bit_data=[bit_data,bitstream(i)*ones(1,T*Fs)];%在一个比特周期里面有T*Fs个1和采样点一模一样
end
I_data=[];Q_data=[];
for i=1:N/2
%I路和Q路是原来比特周期的两倍,2Tb=Ts(码元周期),因此采样点个数为T*Fs*2
I_data=[I_data,I(i)*ones(1,T*Fs*2)];
Q_data=[Q_data,Q(i)*ones(1,T*Fs*2)];
end
%绘图
figure();
%时间轴
t=0:1/Fs:N*T-1/Fs;
subplot(3,1,1)
plot(t,bit_data);legend('Bitstream')%比特信息
subplot(3,1,2)
plot(t,I_data);legend('I Bitstream')%I路信息
subplot(3,1,3)
plot(t,Q_data);legend('Q Bitstream')%Q路信息
%载波信号
bit_t=0:1/Fs:2*T-1/Fs;%载波周期为2倍比特周期,定义时间轴
%定义I路和Q路的载波
I_carrier=[];Q_carrier=[];
for i=1:N/2
I_carrier=[I_carrier,I(i)*cos(2*pi*fc*bit_t)];%I路载波信号
Q_carrier=[Q_carrier,Q(i)*cos(2*pi*fc*bit_t+pi/2)];%Q路载波信号
end
%传输信号
QPSK_signal=I_carrier+Q_carrier;
%绘图
figure();%产生一个新图
subplot(3,1,1)
plot(t,I_carrier);legend('I signal')%I路信号
subplot(3,1,2)
plot(t,Q_carrier);legend('Q signal')%Q路信号
subplot(3,1,3)
plot(t,QPSK_signal);legend('QPSK signal')%I路、Q路和的信号
snr=1;%信躁比
%接收信号
QPSK_receive=awgn(QPSK_signal,snr);%awgn()添加噪声
%解调
for i=1:N/2
I_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2*pi*fc*bit_t);
if sum(I_output)>0 %积分器求和,大于0为1,否则为-1
I_recover(i)=1;
else
I_recover(i)=-1;
end
Q_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2*pi*fc*bit_t+ pi/2);
if sum(Q_output)>0
Q_recover(i)=1;
else
Q_recover(i)=-1;
end
end
%并/串变换
bit_recover=[];
for i=1:N
if mod(i,2)~=0
bit_recover=[bit_recover,I_recover((i-1)/2+1)];%奇数取I路信息
else
bit_recover=[bit_recover,Q_recover(i/2)];%偶数取Q路信息
end
end
%适用绘图比较I、Q比特流
recover_data=[];
for i=1:N
recover_data=[recover_data,bit_recover(i)*ones(1,T*Fs)];
end
I_recover_data=[];Q_recover_data=[];
for i=1:N/2
I_recover_data=[I_recover_data,I_recover(i)*ones(1,T*Fs*2)];
Q_recover_data=[Q_recover_data,Q_recover(i)*ones(1,T*Fs*2)];
end
%绘图
figure();
t=0:1/Fs:N*T-1/Fs;
subplot(3,1,1)
plot(t,recover_data);legend('Bitstream')%恢复的比特信息
subplot(3,1,2)
plot(t,I_recover_data);legend('I Bitstream')%恢复的I路信息
subplot(3,1,3)
plot(t,Q_recover_data);legend('Q Bitstream')%恢复的Q路信息
五、信道带宽受限的16QAM传输
5.1 系统模型
MQAM信号表达式
s
Q
A
M
(
t
)
=
a
i
c
g
T
(
t
)
c
o
s
w
c
t
−
a
i
s
g
T
(
t
)
s
i
n
w
c
t
i
=
1
,
2
,
.
.
.
,
M
0
≤
t
≤
T
s
s_QAM(t)=a_{i_c}g_T(t)cosw_ct-a_{i_s}g_T(t)sinw_ct\quad i=1,2,...,M\quad 0\leq t\leq T_s
sQAM(t)=aicgT(t)coswct−aisgT(t)sinwcti=1,2,...,M0≤t≤Ts
式中
{
a
i
c
}
\{a_{i_c}\}
{aic}及
{
a
i
s
}
\{a_{i_s}\}
{ais}是一组离散电平的集合,
g
T
(
t
)
g_T(t)
gT(t)是基带成形滤波器的冲激响应
\qquad\qquad\qquad\qquad
\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\qquad
MQAM基带传输的系统模型
5.2 误码性能分析
矩形星座QAM的最佳接收误符率与MASK的一样,取决于数字基带MPAM的误符率。MQAM的正确判决符号的概率为
P
c
=
(
1
−
P
M
)
2
P_c=(1-P_{\sqrt{M}})^2
Pc=(1−PM)2
式中,
P
M
P_{\sqrt{M}}
PM表示同相或正交支路
M
\sqrt{M}
M进制ASK的误符率,该
M
\sqrt{M}
M进制ASK的平均功率是MQAM信号总的平均功率
P
s
P_s
Ps的一半,即
P
M
=
2
(
1
−
1
M
)
Q
[
3
P
s
T
s
(
M
−
1
)
N
0
]
P_{\sqrt{M}}=2(1-\frac{1}{\sqrt{M}})Q[\sqrt{\frac{3P_sT_s}{(M-1)N_0}}]
PM=2(1−M1)Q[(M−1)N03PsTs]
=
2
(
1
−
1
M
)
Q
[
3
E
s
(
M
−
1
)
N
0
]
\qquad =2(1-\frac{1}{\sqrt{M}})Q[\sqrt{\frac{3E_s}{(M-1)N_0}}]
=2(1−M1)Q[(M−1)N03Es]
=
2
(
1
−
1
M
)
Q
[
3
l
o
g
2
M
∗
E
b
(
M
−
1
)
N
0
]
\qquad=2(1-\frac{1}{\sqrt{M}})Q[\sqrt{\frac{3log_2M*E_b}{(M-1)N_0}}]
=2(1−M1)Q[(M−1)N03log2M∗Eb]
=
2
(
1
−
1
M
)
Q
[
d
m
i
n
2
2
N
0
]
=2(1-\frac{1}{\sqrt{M}})Q[\sqrt{\frac{d^2_{min}}{2N_0}}]
=2(1−M1)Q[2N0dmin2]
MQAM信号的误符率为
P
M
=
1
−
P
c
=
1
−
(
1
−
P
M
)
2
=
2
P
M
−
P
M
2
P_M=1-P_c=1-(1-P_{\sqrt{M}})^2=2P_{\sqrt{M}}-P^2_{\sqrt{M}}
PM=1−Pc=1−(1−PM)2=2PM−PM2
MQAM的误符率曲线如图
\qquad\qquad\qquad\qquad\qquad\quad
\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\qquad
16QAM和64QAM的误符率曲线
5.3 仿真模型与仿真过程
clc;clear all;close all;
nsymbol=100000;%表示一共有多少个符号,这里定义100000个符号
M=16;%M表示QAM调制的阶数,表示16QAM,16QAM采用格雷映射(所有星座点图均采用格雷映射)
N=64;
%格雷映射编码规则
graycode=[0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10];
%格雷映射十进制的表示
graycode1=[0 1 3 2 6 7 5 4 8 9 11 10 14 15 13 12 24 25 27 26 30 31 29 28 16 17 19 18 22 23 21 20 48 49 51 50 54 55 53 52 56 57 59 58 62 63 61 60 40 41 43 42 46 47 45 44 32 33 35 34 38 39 37 36];
EsN0=5:20;%信噪比范围
snr1=10.^(EsN0/10);%将db转换为线性值
%0到15之间随机产生一个数,数的个数为:1乘nsymbol,得到原始数据
msg=randi([0,M-1],1,nsymbol);
%对数据进行格雷映射
msg1=graycode(msg+1);
%调用matlab中的qammod函数,16QAM调制方式的调用(输入0到15的数,M表示QAM调制的阶数)得到调制后符号
msgmod=qammod(msg1,M);
%调用matlab中的scatterplot函数,画星座点图
scatterplot(msgmod);
%取a+bj的模.^2得到功率除整个符号得到每个符号的平均功率
spow=norm(msgmod).^2/nsymbol;
%64QAM
nsg=randi([0,N-1],1,nsymbol);
nsg1=graycode1(nsg+1);
nsgmod=qammod(nsg1,N);
%调用matlab中的scatterplot函数,画星座点图
scatterplot(nsgmod);
spow1=norm(nsgmod).^2/nsymbol;
for i=1:length(EsN0)
sigma=sqrt(spow/(2*snr1(i)));%16QAM根据符号功率求出噪声的功率
sigma1=sqrt(spow1/(2*snr1(i)));%64QAM根据符号功率求出噪声的功率
%16QAM混入高斯加性白噪声
rx=msgmod+sigma*(randn(1,length(msgmod))+1i*randn(1,length(msgmod)));
%64QAM混入高斯加性白噪声
rx1=nsgmod+sigma*(randn(1,length(nsgmod))+1i*randn(1,length(nsgmod)));
%16QAM的解调
y=qamdemod(rx,M);
%64QAM的解调
y1=qamdemod(rx1,N);
decmsg=graycode(y+1);%16QAM接收端格雷逆映射,返回译码出来的信息,十进制
decnsg=graycode1(y1+1);%64QAM接收端格雷逆映射
%一个符号四个比特,比较发送端信号msg和解调信号decmsg转换为二进制,ber(i)错误的比特率
[err1,ber(i)]=biterr(msg,decmsg,log2(M));
[err2,ser(i)]=symerr(msg,decmsg);%16QAM求实际误码率
[err1,ber1(i)]=biterr(nsg,decnsg,log2(N));
[err2,ser1(i)]=symerr(nsg,decnsg);%64QAM求实际误码率
end
%16QAM
scatterplot(rx);%调用matlab中的scatterplot函数,画rx星座点图
p = 2*(1-1/sqrt(M))*qfunc(sqrt(3*snr1/(M-1)));
ser_theory=1-(1-p).^2;%16QAM理论误码率
ber_theory=1/log2(M)*ser_theory;
%64QAM
scatterplot(rx1);
p1=2*(1-1/sqrt(N))*qfunc(sqrt(3*snr1/(N-1)));
ser1_theory=1-(1-p1).^2;%64QAM理论误码率
ber1_theory=1/log2(N)*ser1_theory;%得到误比特率
%绘图
figure()
%使用 y 轴的以 10 为基数的对数刻度和 x 轴的线性刻度创建一个绘图
semilogy(EsN0,ber,"o", EsN0, ser, "*",EsN0, ser_theory, "-", EsN0, ber_theory, "-");
title("16-QAM载波调制信号在AWGN信道下的误比特率性能")
xlabel("EsN0");
ylabel("误比特率和误符号率");
legend("误比特率", "误符号率","理论误符号率","理论误比特率");
%阶数不同,16和64QAM调制信号在AWGN信道的性能比较
figure()
semilogy(EsN0,ser_theory,'o',EsN0,ser1_theory,'o');%ber ser比特仿真值 ser1理论误码率 ber1理论误比特率
title('16和64QAM调制信号在AWGN信道的性能比较');grid;
xlabel('Es/N0(dB)');%性躁比
ylabel('误码率');%误码率
legend('16QAM理论误码率','64QAM理论误码率');
\qquad\qquad\qquad\qquad\qquad\quad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad
16QAM的星座点图
\qquad\qquad\qquad\qquad\qquad\quad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad
64QAM的星座点图
\qquad\qquad\qquad\qquad\qquad\quad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\quad
16QAM加噪声后的星座点图
\qquad\qquad\qquad\qquad\qquad\quad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad
64QAM加噪声后的星座点图
\qquad\qquad\qquad\qquad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad
16-QAM载波调制信号在AWGN信道下的误比特率性能比较
\qquad\qquad\qquad\qquad
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad
16和64QAM调制信号在AWGN信道的性能比较
结论
由图可知,在同一个性躁比条件下,64QAM比16QAM的误码率更高,因此可以得出普遍的结论,阶数越高,误码率越高。
总结
\quad
通过本次的仿真实验可以得出,数字信号基带传输系统的构建与传输信道的带宽有着密切的联系,当信道带宽无限时,信号传输使用的为矩形脉冲,即成型滤波器为矩形不归零脉冲,输出的信号进入信道会收到加性高斯白噪声的干扰,接收端可以采用低通滤波器与匹配滤波器,为得到最小的平均误比特率,一般采用匹配滤波器作为最佳接收。
\qquad
当信道中信噪比减小时,眼图波动增大,“眼睛”张开的程度减弱。单极性码与双极性相比,双极性码的平均误比特率比单极性的更小。16QAM的编码效率比QPSK高,但容错性不如QPSK好。16QAM与64QAM相比,16QAM的误码性能更优。