数字传输系统的最佳接收与误码分析

本文探讨了数字基带传输系统在不同信道带宽条件下的构建与信号传输,包括无限带宽下的单极性基带传输、受限带宽下的双极性基带传输、QPSK及16QAM传输。通过MATLAB仿真,分析了各系统模型的误码性能,并对比了理论与仿真结果。

1 概述

在数字通信系统中,信源是信息的来源,但信源输出的是消息(或符号)来表达所要传达的信息。若通信信道的传递函数为低通的,则称此信道为基带信道,适合于传送脉冲波形,所以将数字基带信号通过基带信道传输的系统称为数字基带传输系统。
 而在数字基带传输系统中,确定信号在受到加性高斯白噪声干扰下的最佳接收为采用匹配滤波器,使得在最佳采样时刻的信噪比最大,然后再选择合适的判决门限进行判决,可以使得误比特率最小。
 在实际数字通信系统中的信道往往是有限的,为此要进一步考虑适合于限带信道传输的限带信号的设计,而在本文中采用的为基于无码间干扰基带传输的升余弦滤波器。

2 信道带宽无线的单极性基带传输

2.1 系统模型

当信道的带宽无限时,发送滤波器采用矩形脉冲,此处信号为单极性不归零码。
发送序列的幅值 s i s_i si为:
i = 1 , s 1 = A i=1, s_1=A i=1,s1=A i = 2 , s 2 = 0 i=2, s_2=0 i=2,s2=0
发送滤波器的冲激响应如下图所示:
在这里插入图片描述
图 1 发 送 滤 波 器 的 冲 激 响 应 图1 发送滤波器的冲激响应 1
信号波形如下
在这里插入图片描述
图 2 单 极 性 不 归 零 码 图2 单极性不归零码 2
单极性基带传输系统模型如下所示
在这里插入图片描述
图 3 单 极 性 基 带 传 输 系 统 模 型 图3 单极性基带传输系统模型 3

2.2 误码性能分析

发送信号为 s i s_i si,经过接收滤波器为 r 0 ( t ) r_0(t) r0(t)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 仿真模型与仿真过程

matlab代码如下:

%------------------
%带宽无线,单极性不归零码传输
%-----------------
T_start=0;%开始时间
T_stop=0.5;%截止时间
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=25Hz
NumBits=T*r_s;%传输bit数
NumCoff=40;%滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
%-------------------------------
%Transmitter
%-------------------------------
g_T=[ones(1,f_sample/r_s),zeros(1,31)];%发送滤波器,矩形脉冲
b1=(sign(rand(1,NumBits)-0.5)+1)*0.5;%original bits
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits);%原始数字序列
s=conv(b3,g_T);%transmitted signal
%--------------------------------
%AWGN channel
%--------------------------------
N_0=10^(-9);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生白噪声
r=s+noise_w;%叠加白噪声

%--------------------------------
%receiver
%--------------------------------
g_R=[ones(1,f_sample/r_s),zeros(1,30)];%矩形ransmission filter
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(2,2,1);plot(s);
title('传输的波形');
subplot(2,2,2);plot(r);
title('叠加噪声后的传输的波形');
subplot(2,2,3);plot(y1);
title('接收的波形');
subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');

figure(3);
subplot(3,1,1);stem(b3,'.');
title('原始数字序列');
subplot(3,1,2);stem(y3,'.');
title('恢复的数字序列');
subplot(3,1,3);stem(b3,'.');hold on;stem(B,'.');legend('原始数字序列','恢复的数字序列');

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('误比特率')

运行结果如下:
在这里插入图片描述
图 1 单 极 性 不 归 零 码 基 带 传 输 − 眼 图 图1单极性不归零码基带传输-眼图 1

在这里插入图片描述
图 2 单 极 性 不 归 零 码 基 带 传 输 − 调 制 解 调 波 形 图2单极性不归零码基带传输-调制解调波形 2

在这里插入图片描述
图 3 单 极 性 不 归 零 码 基 带 传 输 − 数 字 序 列 图3单极性不归零码基带传输-数字序列 3

在这里插入图片描述
图 4 单 极 性 不 归 零 码 基 带 传 输 − 仿 真 误 码 率 图4单极性不归零码基带传输-仿真误码率 4仿
在这里插入图片描述
图 4 单 极 性 不 归 零 码 基 带 传 输 − 理 论 误 码 率 曲 线 图4单极性不归零码基带传输-理论误码率曲线 4线

3 信道带宽受限的双极性基带传输

3.1 系统模型

当信道的带宽受限时,可以采用升余弦信号作为发送滤波器,此处信号双单极性不归零码。
发送序列的幅值 s i s_i si为:
i = 1 , s 1 = A i=1, s_1=A i=1,s1=A i = 2 , s 2 = − A i=2, s_2=-A i=2,s2=A
升余弦滤波器的冲激响应如下图所示:
在这里插入图片描述
图 1 升 余 弦 滤 波 器 的 冲 激 响 应 图 1升余弦滤波器的冲激响应 1
双极性基带传输系统模型如下所示
在这里插入图片描述
图 2 双 极 性 基 带 传 输 系 统 模 型 图2 双极性基带传输系统模型 2

3.2 误码性能分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 仿真模型与仿真过程

matlab代码如下:

%------------------
%带宽受限,双极性不归零码传输
%-----------------
T_start=0;%开始时间
T_stop=0.5;%截止时间
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;
%-------------------------------
%Transmitter
%-------------------------------
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%升余弦滤波器transmission filter
b1=sign(rand(1,NumBits)-0.5);%original bits
b2=zeros(f_sample/r_s,NumBits);
b2(1,:)=b1;
b3=reshape(b2,1,f_sample/r_s*NumBits);%原始数字序列
s=conv(b3,g_T);%transmitted signal
%--------------------------------
%AWGN channel
%--------------------------------
N_0=10^(-9);
noise_w=wgn(1,length(s),N_0*f_sample,'linear');%产生白噪声
r=s+noise_w;%叠加白噪声

%--------------------------------
%receiver
%--------------------------------
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%升余弦滤波器transmission filter
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(2,2,1);plot(s);
title('传输的波形');
subplot(2,2,2);plot(r);
title('叠加噪声后的传输的波形');
subplot(2,2,3);plot(y1);
title('接收的波形');
subplot(2,2,4);plot(s);hold on;plot(y1);legend('传输的波形','接受的波形');

figure(3);
subplot(3,1,1);stem(b3,'.');
title('原始数字序列');
subplot(3,1,2);stem(y2,'.');
title('恢复的数字序列');
subplot(3,1,3);stem(b3,'.');hold on;stem(5*B,'.');legend('原始数字序列','恢复的数字序列');

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('输入信噪比');
ylabel('误比特率')

运行结果:
在这里插入图片描述
图 1 双 极 性 不 归 零 码 基 带 传 输 − 眼 图 图1双极性不归零码基带传输-眼图 1
在这里插入图片描述
图 2 双 极 性 不 归 零 码 基 带 传 输 − 波 形 图2双极性不归零码基带传输-波形 2
在这里插入图片描述
图 3 双 极 性 不 归 零 码 基 带 传 输 − 数 字 序 列 图3双极性不归零码基带传输-数字序列 3
在这里插入图片描述
图 4 双 极 性 不 归 零 码 基 带 传 输 − 仿 真 误 码 率 图4双极性不归零码基带传输-仿真误码率 4仿
在这里插入图片描述
图 5 双 极 性 不 归 零 码 基 带 传 输 − l 理 论 误 码 率 曲 线 图5双极性不归零码基带传输-l理论误码率曲线 5l线

4 信道带宽受限时的QPSK传输

4.1 系统模型

QPSK信号的产生
在这里插入图片描述
传输模型:
在这里插入图片描述
发 送 框 图 发送框图
在这里插入图片描述
接 受 框 图 接受框图

4.2 误码性能分析

在这里插入图片描述

4.3 仿真模型与仿真过程

matlab代码:

%------------------
%带宽受限,QPSK传输
%-----------------
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=40;%滤波器阶数
SamplingIns=NumCoff/2;
SamplingStart=NumCoff;
fc1=100;
fc2=200;
%-------------------------------
%Transmitter
%-------------------------------
g_T=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%transmission filter
b0=sign(rand(1,2*NumBits)-0.5);%original bits
bQ1=b0(1:2:2*NumBits-1);
bI1=b0(2:2:2*NumBits);

bQ2=zeros(f_sample/r_s,NumBits);
bQ2(1,:)=bQ1;
bQ3=reshape(bQ2,1,f_sample/r_s*NumBits);%原始数字序列Q
sQ1=conv(bQ3,g_T,'same');%transmitted signalQ

bI2=zeros(f_sample/r_s,NumBits);
bI2(1,:)=bI1;
bI3=reshape(bI2,1,f_sample/r_s*NumBits);%原始数字序列I
sI1=conv(bI3,g_T,'same');%transmitted signalI

n=1:N_sample;
Q1=sqrt(1/2)*cos(2*pi*fc1*n*T_sample);
I1=sqrt(1/2)*sin(2*pi*fc1*n*T_sample);
Q2=sqrt(1/2)*cos(2*pi*fc2*n*T_sample);
I2=sqrt(1/2)*sin(2*pi*fc2*n*T_sample);
sQ2=sQ1.*Q1;
sI2=sI1.*I1;
sQ3=sQ1.*Q2;
sI3=sI1.*I2;
s1=sQ2-sI2;
s2=sQ3-sI3;
%--------------------------------
%AWGN channel
%--------------------------------
N_0=10^(-9);
noise1_w=wgn(1,length(s1),N_0*f_sample,'linear');%产生白噪声
noise2_w=wgn(1,length(s2),N_0*f_sample,'linear');%产生白噪声
r1=s1+noise1_w;%叠加白噪声
r2=s2+noise2_w;


%--------------------------------
%receiver
%--------------------------------
g_R=firrcos(NumCoff,r_s/2,alpha*r_s,f_sample);%transmission filter
sample1=zeros(f_sample/r_s,NumBits);
sample1(1,:)=ones(1,NumBits);
sample2=reshape(sample1,1,f_sample/r_s*NumBits);

y1Q1=r1.*Q1;
y1I1=-r1.*I1;
[B,A] = butter(4,0.1,'low');
y1Q1=filter(B,A,y1Q1);%qpsk需进行判决的一路信号
y1I1=filter(B,A,y1I1);%qpsk需进行判决的另一路信号
y1Q2=conv(y1Q1,g_R);%匹配滤波
y1I2=conv(y1I1,g_R);%匹配滤波

y2Q1=r2.*Q2;
y2I1=-r2.*I2;
[B,A] = butter(4,0.1,'low');
y2Q1=filter(B,A,y2Q1);%qpsk需进行判决的一路信号
y2I1=filter(B,A,y2I1);%qpsk需进行判决的另一路信号
y2Q2=conv(y2Q1,g_R);%匹配滤波
y2I2=conv(y2I1,g_R);%匹配滤波

sampleQ3=zeros(1,length(y1Q2));
sampleQ3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y1Q3=y1Q2.*sampleQ3;
y1Q3(:,all(y1Q3==0,1))=[];%恢复的数字序列
C1 = zeros(9,length(y1Q3));
B1 = [C1;y1Q3];
B1 = B1(:)';

sampleI3=zeros(1,length(y2I2));
sampleI3(NumCoff+1:NumCoff+f_sample/r_s*NumBits)=sample2;
y2I3=y2I2.*sampleI3;
y2I3(:,all(y2I3==0,1))=[];%恢复的数字序列
C2 = zeros(9,length(y2I3));
B2 = [C2;y2I3];
B2 = B2(:)';

y2(1:2:2*NumBits-1)=sign(y1Q3);
y2(2:2:2*NumBits)=sign(y2I3);
y3=[0,0,y2];
y3=y3(1:length(y3)-2);

b_t=sign(b0);
b_r=sign(y3);
BER=length(find(b_t~= b_r))/NumBits;%仿真误码率
fprintf('BER=%f \n',BER);

myeyediagram1=eyediagram(y1Q2(1:length(y1Q2)),f_sample/r_s);%眼图
myeyediagram2=eyediagram(y2I2(1:length(y2I2)),f_sample/r_s);%眼图

figure(2);
subplot(4,1,1);plot(s1);
title('传输的波形1');
subplot(4,1,2);plot(r1);
title('叠加噪声后的传输的波形1');
subplot(4,1,3);plot(s2);
title('传输的波形2');
subplot(4,1,4);plot(r2);
title('叠加噪声后的传输的波形2');

figure(3);
subplot(3,1,1);stem(bQ3,'.');hold on;stem(20*B1,'.');
title('数字序列奇');
subplot(3,1,2);stem(bI3,'.');hold on;stem(20*B2,'.');
title('数字序列偶');
subplot(3,1,3);stem(b0,'.');hold on;stem(y3/2,'.');legend('原始数字序列','恢复的数字序列');

%误码率曲线的绘制
SNR=0:1:20;                 %信噪比变化范围
SNR1=0.5*(10.^(SNR/10));    %将信噪比转化成直角坐标
N=1000000;                  %仿真点数
X=4;                        %进制数
x=randi([0,1],1,N);         %产生随机信号
h=pskmod(x,X);              %调用matlab自带的psk调制函数
hR=h.*R;
for i=1:length(SNR);
    yAn=awgn(h,SNR(i),'measured'); 
    yA=pskdemod(yAn,X);     %QPSK属于4PSK
    [bit_A,l]=biterr(x,yA); 
    QPSK_s_AWGN(i)=bit_A/N;
    
    yRn=awgn(hR,SNR(i),'measured');
    yR=pskdemod(yRn,X);     %调用matlab自带的psk解调函数
    [bit_R,ll]=biterr(x,yR);
    QPSK_s_Ray(i)=bit_R/N; 
end
QPSK_t_AWGN=1/2*erfc(sqrt(10.^(SNR/10)/2));   %AWGN信道下QPSK理论误码率
QPSK_t_Ray= -(1/4)*(1-sqrt(SNR1./(SNR1+1))).^2+(1-sqrt(SNR1./(SNR1+1)));
%Rayleigh信道下QPSK理论误码率

%绘制图形
figure(4)
semilogy(SNR,QPSK_s_AWGN,':b*');hold on;
semilogy(SNR,QPSK_t_AWGN,':go');hold on;
axis([-1 20 10^-4 1]);
legend('AWGN仿真','AWGN理论');
title('QPSK误码性能分析');
xlabel('信噪比(dB)');ylabel('BER');

运行结果:
在这里插入图片描述
图 1 Q P S K 基 带 传 输 − 眼 图 图1QPSK基带传输-眼图 1QPSK
在这里插入图片描述
图 2 Q P S K 基 带 传 输 − 波 形 图2QPSK基带传输-波形 2QPSK
在这里插入图片描述
图 3 Q P S K 基 带 传 输 − 数 字 序 列 图3QPSK基带传输-数字序列 3QPSK在这里插入图片描述
图 4 Q P S K 基 带 传 输 − 仿 真 误 码 率 图4QPSK基带传输-仿真误码率 4QPSK仿
在这里插入图片描述
图 5 Q P S K 基 带 传 输 − 仿 真 和 理 论 误 码 率 曲 线 图5QPSK基带传输-仿真和理论误码率曲线 5QPSK仿线

5 信道带宽受限时的16QAM传输

5.1 系统模型

MQAM的系统模型如下所示,16QAM即MQAM中M=16时的模型,与下图一致。
在这里插入图片描述
M Q A M 基 带 传 输 的 系 统 模 型 MQAM基带传输的系统模型 MQAM

5.2 误码性能分析

在这里插入图片描述

5.3 仿真模型与仿真过程

matlab代码:

%带宽有限的16QAM基带传输
FRM = 2048;
MaxNumErrs = 200;
MaxNumBits = 1e7;
EbNo_vector = 0:10;
BER_vector = zeros(size(EbNo_vector));
% Initializations
Modulator = comm.QPSKModulator('BitInput',true);
AWGN = comm.AWGNChannel;
DeModulator = comm.QPSKDemodulator('BitOutput',true);
BitError = comm.ErrorRate;
% Outer Loop computing Bit-error rate as a function of EbNo
for EbNo = EbNo_vector
    snr = EbNo + 10*log10(2);
    AWGN.EbNo = snr;
    numErrs = 0;
    numBits = 0;
    results = zeros(3,1);
% Inner loop modeling transmitter, chanel model and receiver for each EbNo
  while((numErrs<MaxNumErrs)&&(numBits<MaxNumBits))
% Transmitter
    u = randi([0,1],FRM,1);
    mod_sig = step(Modulator,u);
 % Channel
    rx_sig = step(AWGN,mod_sig);
%Receiver
    y = step(DeModulator,rx_sig);
    results = step(BitError,u,y);
    numErrs = results(2);
    numBits = results(3);
  end
% Compute BER
 ber = results(1);
 bits = results(3);
% Clean up & collect results
 reset(BitError);
 BER_vector(EbNo+1) = ber;
end
% Visualize results
EbNoLin = 10.^(EbNo_vector/10);
theoretical_results = 0.5*erfc(sqrt(EbNoLin));
semilogy(EbNo_vector,BER_vector)
grid;
title('BER vs. EbNo - QPSK modulation');
xlabel('信噪比(dB)');
ylabel('误比特率');
hold;
semilogy(EbNo_vector,theoretical_results,'dr');
hold;
legend('仿真误码率','理论误码率');

运行结果:
在这里插入图片描述
16 Q A M 基 带 传 输 − 仿 真 和 理 论 误 码 率 曲 线 16QAM基带传输-仿真和理论误码率曲线 16QAM仿线

6结论

通过本次的仿真实验可以得出,数字信号基带传输系统的构建与传输信道的带宽有着密切的联系,当信道带宽无限时,信号传输使用的为矩形脉冲,即成型滤波器为矩形不归零脉冲,输出的信号进入信道会收到加性高斯白噪声的干扰,接收端可以采用低通滤波器与匹配滤波器,为得到最小的平均误比特率,一般采用匹配滤波器作为最佳接收。
在这次仿真中,我了解到了自身知识的欠缺;通过这次的仿真,我对基带信号的传输更加的了解,对误比特率有了更清晰的认识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值