由于基带传输系统在数字传输系统中有不可替代的作用,其应用范围也随着技术的发展渗入网络通信、卫星通信及测控、手机通信、数字电视、数字电话等生活、科技的各方面,日益成为数字通信传输系统中的关键技术。
一:是因为数字基带系统的许多问题也是频带传输系统必须考虑的问题。二:随着数字通信技术的发展,基带传输这种方式也有迅速发展的趋势,它不仅用于低速数据传输,而且还用于高速数据传输;三:理论上,任何一个线性调制的频带传输系统,总是可以有一个等效的基带载波调制系统所替代。
没有经过调制的原始数字信号,如计算机输出的二进制序列,各种文字、数字、图象的二进制代码,电传机输出的代码,pcm方式和m 方式输出的代码等都是数字基带信号。数字基带信号主要特点:信号频谱的带宽基本上集中在零频谱附近。数字基带传输系统是用来传输基带信号的系统。基带传输系统应用于短距离利用电传机直接进行电报通信,或者利用中继方式在长距离直接传输pcm信号等。
系统基带波形被脉冲变换器变换成适应信道传输的码型后,就送入信道,一方面受到信道特性的影响,使信号产生畸变;另一方面信号被信道中的加性噪声所叠加,造成信号的随即畸变。因此,在接收端必须有一个接收滤波器,使噪声尽可能受到抑制,为了提高系统的可靠性,在安排一个有限整形器和抽样判决器组成的识别电路,进一步排除噪声干扰和提取有用信号。对于抽样判决,必须有同步信号提取电路。在基带传输中,主要采用位同步。同步信号的提取方式采用自同步方式(直接法)。同步系统性能的好坏将直接影响通信质量的好坏,甚至会影响通信能否正常进行。
图1
如图1各部分的作用简述如下:
脉冲信号形成器:基带传输系统的输入是由终端设备或编码器产生的脉冲序列,它往往不适合直接送到信道中传输。信道信号形成器的作用就是把原始基带信号变换成适合于信道传输的基带信号,这种变换主要是通过码型变换和波形变换实现的,其目的是与信道匹配,便于传输,减小码间串扰,利于同步提取和抽样判决。
信道:是允许基带信号通过的媒质。信道的传输特性通常不满足无失真传输条件,恒参信道如(明线、同轴电缆、对称电缆、光纤通道、无线电视距中继、卫星中继信道)对信号传输的影响主要是线形畸变;随参信道如(短波电离层反射、对流层散射信道等)对信号传输的影响主要有频率弥散现象(多径传播)、频率的选择性衰落。信道的线性噪声和加性噪声的影响。
接收滤波器:它的主要作用的滤除带外噪声,对信道特性均衡,使输出的基带波形有利于抽样判决。
抽样判决器:它是在传输特性不理想及噪声背景下,在由位定时脉冲控制的特殊点对接收滤波器的输出波形进行抽样判决,以恢复或再生基带信号。
自同步法的同步提取电路:有两部分组成,包括非线型变换处理电路和窄带滤波器
或锁相环。非线型变换处理电路的作用是使接收信号或解调后的数字基带信号经过非线型变换处理电路后含有位同步分量或位同步信息。窄带滤波器或锁相环的作用是滤除噪声和其他频谱分量,提取纯净的位同步信号。
在实际基带传输系统中,并非所有的原始基带数字信号都能在信道中传输。例如,有的信号含有丰富的直流和低频成分,不便提取同步信号;有的信号易于形成码间串扰等。因此,基带传输系统首先面临的问题是选择什么样的信号形式,即传输码型的选择和基带脉冲波形的选择。
为了在传输信道中获得优良的传输特性,一般要将信码信号变化为适合于信道传输特性的传输码,即进行适当的码型变换。
对传输码型的要求如下:
传输信号的频谱中不应有直流分量,低频分量和高频分量也要小。码型中应包含定时信息,有利于定时信息的提取,尽量减小定时抖动。码型变换设备要简单可靠。码型具有一定检错能力,若传输码型有一定的规律性,则可根据这一规律性检测传输质量,以便做到自动检测。
编码对信息类型不应有任何限制,即对信源具有透明性。常用的码型有AMI码、HDB3码、分相码、反转码AMI等。
美国Mathwork公司于1967年推出了“Matrix Laboratory”(缩写为Matlab)软件包,不断更新和扩充。并目前最新的5.x版本(windows环境)是一种功能强、效率高便于进行科学和工程计算的交互式软件包。其中包括:一般数值分析、矩阵运算、数字信号处理、建模和系统控制和优化等应用程序,并集应用程序和图形于一便于使用的集成环境中。
结合MATLAB的功能与特点,在基带传输系统仿真中有如下应用:
(一)高效方便的矩阵和数组运算
1.全零距阵zeros及全1距阵ones
zeros(n,m)产生一个尺寸为n * m,元素全为零的距阵。Ones(n,m)产生一个尺寸为n*m的距阵。Zeros(N)产生一个N维全零方阵。Ones(size(A))产生一个尺寸与A相同的全1距阵。
2.随机数产生命令rand及正态随机数产生命令randn
rand(n,m)产生一个尺寸为n*m的距阵,其元素按均匀分布随机取值于区间[0,1]。
Randn(n,m)产生一个尺寸为n*m的距阵,其元素服从标准正态分布(均值为零,方差为1)。
Randn(size(a))产生一个与a相同的正态分布随机矩阵。Rand(size(a))产生一个尺寸与a相同的均匀分布随机矩阵。
例如:
?a=sign(randn(1,8000));
?b=(a+1)/2;
?c=b+0.1*randn(size(b));
b包含8000个取值1、0等概的随机二进制数。C是b加上了0.1的高斯干扰。
3.元素均匀分割命令linspace
函数linspace(a,b,N)产生一个N维矢量,N个元素均匀分割区间[a,b],第一个是a ,第二个是b。
4.矩阵元素重排命令reshape
reshape(x,m,n)把矩阵x的元素重排列成m*n的矩阵形式,按逆时针方向取数。
5.矩阵元素左右倒转fliplr
fliplr可以把矩阵或向量倒置过来。
例如:
A=[1 1 0 1 0;3 3 1 3 1]
B=fliplr(A)
B=[0 1 0 1 1 ;1 2 1 3 3 ]
(二)方便的绘图功能
MATLAB提供了丰富的绘图功能。结合在基带系统中的仿真实验的需要,我们简要介绍一下二维绘图函数的绘制方法。
1.二维绘图函数plot
若X、Y是两个相同长度的矢量,函数plot(X、Y)将激活一个图形窗口,并画出一条以X为横坐标,以Y为纵坐标的曲线。例如:
t=[0:0.01:2*pi];
plot(t,sin(t))
即绘出函数sin(t)在区间[0,2*pi]上的曲线。
使用plot(X,Y)函数时若省略参数X,matlab将把Y中的元素的顺序作为横坐标的坐标值。使用plot时也可加入另一个参数S :plot(X,Y,S ),S 用来规定绘图时使用的颜色和绘制方式。可以选择不同的线型如实线、虚线、点划线、波折线,也可以不划线而用不同的标记标出点的位置。过程S 的字符有两部分,第一部分是颜色(用一个字符表示),第二部分是绘制方式(用一到二个字符表示)。S的定义如下图。
在缺省状态下,执行plot是matlab先清除图形窗口再绘图。执行hold on 后再执行plot时,matlab将不清除图形窗口。这样,就可以在同一图形内画多条曲线。执行hold off将使图形窗口变回原来的状态。单独执行hold而不带参数on或off,将图形窗口的hold状态反转。命令clf则是清除当前的图形窗口,但它不改变hold的状态。
3.函数 semilogy()
函数semilogy()与plot()一样,只是Y轴是对数坐标。类似还有semilogx(),
loglog()等。
4.标签
xlable(str)给X轴加上一个以字符串str为内容的标签。Ylable(str)则给Y轴加标签。Title(str)则给整个兔加上标题。
5.Figure 与close
如果想在同一个程序中开出多个图形窗口,可以使用figure命令。单独执行figure后,MATLAB将创建一个新的图形窗口,并以此作为当前窗口。执行figure(N)将使第N个图形成为当前图形窗口。如果第N个窗口不存在,则figure(N)可创建一个新的窗口。命令close关闭当前图形窗口。Close(N)关闭第N个图形窗口。Close all 关闭所有图形窗口。
6. 创建子图命令subplot
subplot(m,n,p)命令把当前图形窗口分割成m*n个绘画区域,并选择第P个区域为激活区域。
matlab工具有很强的仿真能力可以仿真NR码、NRZ码、AMI码、PAM码等各种编码及分析其功率谱。同时可以仿真通信系统的应用。Matlab在通信系统的仿真详细的在第三章研究。
这里主要介绍仿真的理论基础:
1.统的时域抽样和频域抽样
若信号函数 s(t)为定义在时间区间(-¥,+¥)上的连续函数,按区间[-T/2,T/2]
截短为ST(t),再对ST(t)按时间间隔Dt均匀取样,取样点数:
N(t)=T/Dt;仿真时用这个样值函数来表示S(t)
如果信号的最高频率为fH,那么必须有fH〈〈0.5/Dt,设为Bs,Bs=0.5/Dt 称为仿真系统
的系统带宽。
若信号s(t)的频谱S(f)为定义在频率区间 (-¥,+¥)上的连续函数,按区间[-Bs,Bs]截断S(f),然后Df均匀取样
N(t)=2 Bs /Df=N;Df=1/T
如果仿真程序设定的频域采样间隔是Df,那么就不能仿真截断时间1/Df的信号。
2.频域分析
函数t2f的功能是作傅立叶变换 格式:X=t2f(x)
函数f2t的功能是作傅立叶反变换 格式:x=t2f(X)
其中x是时域信号x是时域信号x(t)的截短抽样取得的取样值矢量。
X是傅立叶X(f)的取样值矢量。
3.取样判决和误码率的测量。
设矢量a表示发送的码序列,矢量y表示在判决观测到的叠加有噪声的接收信号。接收端在每隔一个码元间隔Ts取一个点作为判决量。所有取样结果构成一个矢量;若取样时刻无偏差则b=y(1:L:N),若取样时刻有K*△t的恒定偏差,则b=y(1+k:L:N)。若判决门限为vth,则判决结果为c=sign(b-vth)双极性或c=sign(b-vth)+1)/2 单极性。
若在一次观察中发送的码元是长度为M的矢量a,,对应的判决结果是c。误码数是a与c中不相同的符号数,即n_err=length(find(a~=c)),于是误码率为Pe=n_err/M.
对于基带系统的研究,误码率是一个非常重要的概念,也是评价系统好坏的重要参数。在用matlab仿真系统中,在模拟实际的条件下,达到理想的误码率是我们的目标。
附录
程序1
%AMI码的产生
n=1;M=20;L=4;
a=round(rand(1,M))
while rem(M,2)~=0;
a=round(rand(1,M));
n=length(find(a==1))
end %保证a为偶数个“1”
bb=find(a==1); %将偶数个“1”为1,-1交替出现
cc=bb(1:2:length(bb));
b=a;
b(cc)=-ones(size(cc));
bc=ones(1,L); %定义复制的次数
e=b(bc,:); %复制随机码L次
ami=reshape(e,1,L*M) %L*M矩阵重排为1*(L*M)矩阵
t=1:L*M;
plot(t,ami)
axis([0 40 -1 1]);
程序2
close all
Na=2;l=32;
Ts=1;t=[1:0.0125:10];
N=length(t);
S=sin(2*pi*t)+sin(pi*t);%假设-s(t)信号
len=Na*l;%示波器-屏幕显示的点数,Na为一屏幕显示的码元数
tt=linspace(0,Na*Ts,len);%将时间轴等份成len个点
hold on
for ii=1:len:(N-len)%figure(2)
plot(tt,S(ii+(1:len)))%绘出眼图
end
程序3
%本程序中时间单位是us
%频率单位为MHZ
%码速率单位是Mb/s
global dt t df N
close all
N=2^8; %采样点数
L=4; %每个码元的采样点数
M=N/L; %码元数
Rb=2; %码速率是2MB/s
Ts=1/Rb; %码元间隔
dt=Ts/L; %时域采样间隔
df=1/Rb; %频域采样间隔
T=N*dt; %截短时间
Bs=N*df/2 %系统带宽
Na=4; %示波器扫描宽度为4个码元
alpha=input('滚降系数=[0.5]');
if alpha==[],alpha=0.5;end
t=[-T/2+dt/2:dt:T/2]; %时域横坐标
f=[-Bs+df/2:df:Bs]; %频域横坐标
g1=sin(pi.*t/Ts)./(pi.*t/Ts);
g2=cos(alpha*pi.*t/Ts)./(1-(2*alpha.*t/Ts).^2);
g=g1.*g2; %升余弦脉冲波形
G=t2f(g);
figure(1)
set(1,'position',[10,50,300,200])
figure(2)
set(2,'position',[400,50,300,200])
hold on
grid
xlabel('t in us')
ylabel('s(t) in V')
EP=zeros(size(f))+eps
for ii=1:100
a=sign(randn(1,M));
imp=zeros(1,N); %产生脉冲序列
imp(L/2:L:N)=a/dt;
S=t2f(imp).*G; %升余弦信号的傅立叶变换
s=f2t(t2f(imp).*G);%升余弦信号的时域波形
P=S.*conj(S)/T; %升余弦信号的功率谱
s=real(s);
EP=(EP*(ii-1)+P+eps)/ii;
figure(1)
plot(f,60+10*log10(EP),'g')
grid
axis([-50,+50,-60,80])
Xlabel('f(MHZ)')
Ylabel('Ps(f) (dbm/MHZ)')
figure(2)
tt=[0:dt:Na*L*dt];
for jj=1:Na*L:N-Na*L
plot(tt,s(jj:jj+Na*L))
end
end
程序4
%本程序中时间单位是us
%频率单位为MHZ
%码速率单位是Mb/s
global dt t df N
close all
N=2^8; %采样点数
L=4; %每个码元的采样点数
M=N/L; %码元数
Rb=2; %码速率是2MB/s
Ts=1/Rb; %码元间隔
dt=Ts/L; %时域采样间隔
df=1/Rb; %频域采样间隔
T=N*dt; %截短时间
Bs=N*df/2 %系统带宽
Na=4; %示波器扫描宽度为4个码元
R1=input('R1=[-1 1 2]');if R1==[],R1=1;end
R2=input('R2=[-1 0 1 2]');if R2==[],R2=1;end
R3=input('R3=[-1 0 1 2]');if R3==[],R3=0;end
R4=input('R4=[-1 0 1 2]');if R4==[],R4=0;end
R5=input('R5=[-1 0 1 2]');if R5==[],R5=0;end
t=[-T/2+dt/2:dt:T/2]; %时域横坐标
f=[-Bs+df/2:df:Bs]; %频域横坐标
g1=R1*sin(pi.*t/Ts)./(pi.*t/Ts);
g2=R2*sin(pi.*(t-Ts)/Ts)./(pi.*(t-Ts)/Ts);
g3=R3*sin(pi.*(t-2*Ts)/Ts)./(pi.*(t-2*Ts)/Ts);
g4=R4*sin(pi.*(t-3*Ts)/Ts)./(pi.*(t-3*Ts)/Ts);
g5=R5*sin(pi.*(t-4*Ts)/Ts)./(pi.*(t-4*Ts)/Ts);
g=g1+g2+g3+g4+g5; %部分响应波形的一般形式
G=t2f(g);
figure(1)
set(1,'position',[10,50,500,500])
figure(2)
set(2,'position',[400,50,500,500])
hold on
grid
xlabel('t in us')
ylabel('s(t) in V')
EP=zeros(size(f))+eps
for ii=1:100
a=sign(randn(1,M));
imp=zeros(1,N); %产生脉冲序列
imp(L/2:L:N)=a/dt;
S=t2f(imp).*G; %升余弦信号的傅立叶变换
s=f2t(t2f(imp).*G);%升余弦信号的时域波形
P=S.*conj(S)/T; %升余弦信号的功率谱
s=real(s);
EP=(EP*(ii-1)+P+eps)/ii;
figure(1)
plot(f,30+10*log10(EP),'g')
grid
axis([-50,+50,-60,80])
Xlabel('f(MHZ)')
Ylabel('Ps(f) (dbm/MHZ)')
figure(2)
tt=[0:dt:Na*L*dt];
for jj=1:Na*L:N-Na*L
plot(tt,s(jj:jj+Na*L))%升余弦信号的眼图
end
end
程序5
%本程序中时间单位是us
%频率单位为MHZ
%码速率单位是Mb/s
global dt df t f N T
close all
clear Eb_N0 Pe
N=2^13; %采样点数
L=8; %每个码元的采样点数
M=N/L; %码元数
Rb=2; %码速率是2MB/s
Ts=1/Rb; %码元间隔
dt=Ts/L; %时域采样间隔
df=1/(N*dt); %频域采样间隔
T=N*dt; %截短时间
Bs=N*df/2 %系统带宽
alpha=1;
t=linspace(-T/2,T/2,N);
f=linspace(-Bs,Bs,N)+eps;%eps为了避免f=0;
figure(1)
set(1,'position',[10,50,500,500])
hr1=sin(pi.*t/Ts)./(pi.*t/Ts);
hr2=cos(alpha*pi.*t/Ts)./(1-(2*alpha.*t/Ts).^2);
hr=hr1.*hr2; %升余弦脉冲波形
HR=abs(t2f(hr)); %取模是为了忽略时延
GT=sqrt(HR);
GR=GT;
for loop1=1:10
Eb_N0(loop1)=(loop1-1)
eb_n0(loop1)=10^(Eb_N0(loop1)/10);
Eb=1;
n0=Eb/eb_n0(loop1);%信道的噪声谱密度
sita=n0*Bs; %信道中噪声功率
n_err=0; %误码计数
for loop2=1:5
a=sign(randn(1,M));
imp=zeros(1,N);
imp(L/2:L:N)=a/dt; %产生冲激序列
IMP=t2f(imp);
n_ch=sqrt(sita)*randn(size(t));%信道噪声
nr=real(f2t(t2f(n_ch).*GR)); %输出噪声
sr=real(f2t(IMP.*HR))+nr;
y=sr(L/2:L:N);
aa=sign(y); %判决
n_err=n_err+length(find(aa~=a));
end
pe(loop1)=n_err/(M*loop2)
figure(1)
semilogy(Eb_N0,pe,'r');
eb_n0=10.^(Eb_N0/10);
hold on
semilogy(Eb_N0,0.5*erfc(sqrt(eb_n0)));
axis([0,9,1e-4,1])
title('最佳接收基带接收系统的误码率分析')
Xlabel('Eb/N0')
Ylabel('Pe')
end
end