文章目录
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理论误码率曲线
图5双极性不归零码基带传输−l理论误码率曲线
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结论
通过本次的仿真实验可以得出,数字信号基带传输系统的构建与传输信道的带宽有着密切的联系,当信道带宽无限时,信号传输使用的为矩形脉冲,即成型滤波器为矩形不归零脉冲,输出的信号进入信道会收到加性高斯白噪声的干扰,接收端可以采用低通滤波器与匹配滤波器,为得到最小的平均误比特率,一般采用匹配滤波器作为最佳接收。
在这次仿真中,我了解到了自身知识的欠缺;通过这次的仿真,我对基带信号的传输更加的了解,对误比特率有了更清晰的认识。
本文探讨了数字基带传输系统在不同信道带宽条件下的构建与信号传输,包括无限带宽下的单极性基带传输、受限带宽下的双极性基带传输、QPSK及16QAM传输。通过MATLAB仿真,分析了各系统模型的误码性能,并对比了理论与仿真结果。
4234

被折叠的 条评论
为什么被折叠?



