实验五基带码型产生实验33.docx
《实验五基带码型产生实验33.docx》由会员分享,可在线阅读,更多相关《实验五基带码型产生实验33.docx(15页珍藏版)》请在冰豆网上搜索。
实验五基带码型产生实验33
实验五基带码型产生实验
1、实验目的
1、掌握基带传输码型的特点;
2、掌握常用的基带传输码的产生方法;
3、能用matlab编写程序产生一些常用的码型,如RZ、NRZ、AMI、Miller、双相码等。
2、实验原理
1、数字基带信号
设消息代码由二进制符号0和1组成
(1)单极性码:
基带信号的0电位及正电位分别与二进制符号的0与1对应;
(2)双极性码:
二进制符号0、1分别与正、负电位相对应;
(3)单极性归零码:
有电脉冲比码元宽度窄,每个脉冲都回到零电位;
(4)双极性归零码:
相邻脉冲之间必定留有零电位的间隙。
(5)差分波形:
用相邻码元的电平的跳变和不变来表示消息代码,以电平跳变表示“1”,以电平不变表示“0”。
2、基带传输码的要求
(1)能从其相应的基带信号中获取定时信息;
(2)相应的基带信号无直流成分和只有很少的低频成分;
(3)不受信源统计特性的影响,即能适应于信源的变化;
(4)尽可能地提高传输码型的传输效率;
(5)具有内在的检错能力。
3、基带传输常用码型
(1)AMI码-传号交替反转码
编码规则:
“1”交替变成“+1”和“-1”;“0”仍保持为“0”。
消息码
1
1
0
0
1
0
1
AMI码
+1
-1
0
0
+1
0
-1
特点:
无直流成分,且只有很少的低频成分,编码简单,提取定时信号困难。
(2)HDB3码-三阶高密度双极性码
编码规则:
先检查消息代码中的连0情况,当没有4个或4个以上连0时,按AMI码的编码原则;当有时则将每4个连0小段的第4个0变换成与前一个非0符号同极性的符号。
但这可能会破“环极性交替反转”的规律。
这个符号被称为破环符号,用V表示(即+1记为+V,-1记为-V)。
为使附加V符号后原码仍为无直流分量,还必须保证相邻V符号也极性交替。
这一点,当相邻V符号之间有奇数个非0符号时,是能保证的;当有偶数个非0符号时,则不能保证,这时再将该小段的第1个0变换成+B或-B,B符号的极性与前一个非0符号极性相反,并让后面的非0符号从V符号开始在交替变化。
消息码
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
1
AMI码
-1
0
0
0
0
+1
0
0
0
0
-1
+1
0
0
0
0
-1
+1
HDB3码
-1
0
0
0
-V
+1
0
0
0
+V
-1
+1
-B
0
0
-V
+1
-1
-1
0
0
0
-1
+1
0
0
0
+1
-1
+1
-1
0
0
-1
+1
-1
译码
-1
0
0
0
0
+1
0
0
0
0
-1
+1
0
0
0
0
+1
-1
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
1
(3)、双相码-曼彻斯特码
编码规则为:
每个二进制代码分别用两个具有不同相位的二进制新码去取代的码。
0→01;1→10。
消息码
1
1
0
0
1
0
1
双相码
10
10
01
01
10
01
10
(4)Miller码-延迟调制码
编码规则:
“1”码用码元持续时间中心点出现跃变来表示,即用“10”或“01”表示。
“0”码分两种情况处理:
对于单个“0”时,在码元持续时间内不出现电平跃变,且与相邻码元的边界处也不跃变;对于连“0”时,在两个“0”码的边界处出现电平跃变,即“00”与“11”交替。
双相码的下降沿正好对应于密勒码的跃变沿。
(5)CMI码-传号反转码
编码规则:
“1”码交替用“11”和“00”表示;“0”码用“01”表示。
(6)条件双相码(差分曼彻斯特码):
编码方法:
不仅与当前的信息有关,而且与前一个信息也有关,也就是说同一个码元的电平有关,即用中央时刻的电平跳变来表示信息。
与绝对双相码的不同的是:
对于信息1,则前半时间的电平与前一码元的后半时间电平相同,后半时间与本码元前半时间值相反;对信息0,则前半时间的电平与前一
3、实验步骤
1.产生一组单极性码,并绘制出其时域波形(16个)和功率谱波形
M=10000;%产生码元数
L=20;%每码元复制32次
dt=0.001;%采样间隔
T=L*dt;%码元时间
TotalT=M*T;%总时间
t=0:
dt:
TotalT;%时间
F=1/dt;%仿真频宽
df=1/TotalT;%频率间隔
f=-F/2:
df:
F/2-df;%频率
N=M*L;%总长度
ShowM=16;%显示码元数
ShowN=ShowM*L;
ShowT=(ShowN-1)*dt;
Showt=0:
dt:
ShowT;%时间
dutyradio=0.5;%占空比
%单极性码
randwave=round(rand(1,M));%产生二进制随机码,M为码元个数
onessample=ones(1,L);%定义复制的次数L,L为每码元的采样点数
rerandwave=randwave(onessample,:
);%复制的第1行复制L次
unipolarwave=reshape(rerandwave,1,L*M);%重排成1*L*M数组
X=fft(unipolarwave);
X=X/N;
mPSD=abs(X).^2/(df^2);
PSD=fftshift(mPSD);
PSD=(1/TotalT).*PSD;
figure;subplot(2,1,1);plot(Showt,unipolarwave(1:
ShowN));
subplot(2,1,2);plot(f,10*log(PSD));
2.产生步骤1中极性码对应的双极性码、单极性归零码和双极性归零码的时域波形和功率谱波形;
%双极性码
bipolarwave=unipolarwave*2-1;%转换成双极性的
X1=fft(bipolarwave);
X1=X1/N;
mPSD1=abs(X1).^2/(df^2);
PSD1=fftshift(mPSD1);
PSD1=(1/TotalT).*PSD1;
figure;subplot(3,2,1);plot(Showt,bipolarwave(1:
ShowN));
subplot(3,2,2);plot(f,10*log(PSD1));
%单极性归零波形
unipolarzerowave=zeros(1,N);
fori=1:
dutyradio*L%dutyradio为占空比
unipolarzerowave(i+[0:
M-1]*L)=randwave;
end
X2=fft(unipolarzerowave);
X2=X2/N;
mPSD2=abs(X2).^2/(df^2);
PSD2=fftshift(mPSD2);
PSD2=(1/TotalT).*PSD2;
subplot(3,2,3);plot(Showt,unipolarzerowave(1:
ShowN));
subplot(3,2,4);plot(f,10*log(PSD2));
%双极性归零波形
bipolarzerowave=unipolarzerowave*2-1;%转换成双极性的
X3=fft(bipolarzerowave);
X3=X3/N;
mPSD3=abs(X3).^2/(df^2);
PSD3=fftshift(mPSD3);
PSD3=(1/TotalT).*PSD3;
subplot(3,2,5);plot(Showt,bipolarzerowave(1:
ShowN));
subplot(3,2,6);plot(f,10*log(PSD3));
3.产生步骤1中极性码对应的曼彻斯特码、差分曼彻斯特码和CMI码的时域波形和功率谱波形;
%曼彻斯特码
manchesewave=zeros(1,N);
fori=0:
M-1%
if(randwave(i+1)==1)
manchesewave(i*L+1:
i*L+L/2)=0;
manchesewave(i*L+L/2+1:
i*L+L)=1;
else
manchesewave(i*L+1:
i*L+L/2)=1;
manchesewave(i*L+L/2+1:
i*L+L)=0;
end
end
X4=fft(manchesewave);
X4=X4/N;
mPSD4=abs(X4).^2/(df^2);
PSD4=fftshift(mPSD4);
PSD4=(1/TotalT).*PSD4;
figure;subplot(2,2,1);plot(Showt,manchesewave(1:
ShowN));
subplot(2,2,2);plot(f,10*log(PSD4));
%差分曼彻斯特码
diffmanchesewave=zeros(1,N);
lastcode=1;
fori=0:
M-1%
if(randwave(i+1)==1)%有跳变
if(lastcode==1)
diffmanchesewave(i*L+1:
i*L+L/2)=0;
diffmanchesewave(i*L+L/2+1:
i*L+L)=1;
lastcode=1;
else
diffmanchesewave(i*L+1:
i*L+L/2)=1;
diffmanchesewave(i*L+L/2+1:
i*L+L)=0;
lastcode=0;
end
else
if(lastcode==1)
diffmanchesewave(i*L+1:
i*L+L/2)=1;
diffmanchesewave(i*L+L/2+1:
i*L+L)=0;
lastcode=0;
else
diffmanchesewave(i*L+1:
i*L+L/2)=0;
diffmanchesewave(i*L+L/2+1:
i*L+L)=1;
lastcode=1;
end
end
end
X5=fft(diffmanchesewave);
X5=X5/N;
mPSD5=abs(X5).^2/(df^2);
PSD5=fftshift(mPSD5);
PSD5=(1/TotalT).*PSD5;
subplot(2,2,3);plot(Showt,diffmanchesewave(1:
ShowN));
subplot(2,2,4);plot(f,10*log(PSD5));
4、产生步骤1中极性码对应的密勒码、AMI码和HDB3码的时域波形和功率谱波形。
%密勒码
millwave=zeros(1,N);
lastcode=1;
zeronum=0;
fori=0:
M-1%
if(randwave(i+1)==1)%有跳变
if(lastcode==1)
millwave(i*L+1:
i*L+L/2)=1;
millwave(i*L+L/2+1:
i*L+L)=0;
lastcode=0;
zeronum=0;
else
millwave(i*L+1:
i*L+L/2)=0;
millwave(i*L+L/2+1:
i*L+L)=1;
lastcode=1;
zeronum=0;
end
else
if(lastcode==1)
if(zeronum==0)%单零不跳
millwave(i*L+1:
i*L+L/2)=1;
millwave(i*L+L/2+1:
i*L+L)=1;
lastcode=1;
else
millwave(i*L+1:
i*L+L/2)=0;
millwave(i*L+L/2+1:
i*L+L)=0;
lastcode=0;
end
zeronum=zeronum+1;
else
if(zeronum==0)%单零不跳
millwave(i*L+1:
i*L+L/2)=0;
millwave(i*L+L/2+1:
i*L+L)=0;
lastcode=0;
else
millwave(i*L+1:
i*L+L/2)=1;
millwave(i*L+L/2+1:
i*L+L)=1;
lastcode=1;
end
zeronum=zeronum+1;
end
end
end
X7=fft(millwave);
X7=X7/N;
mPSD7=abs(X4).^2/(df^2);
PSD7=fftshift(mPSD7);
PSD7=(1/TotalT).*PSD7;
%figure;subplot(3,2,1);plot(Showt,millwave(1:
ShowN));
%subplot(3,2,2);plot(f,10*log(PSD7));
%AMI码
amiwave=zeros(1,N);
lastcode=1;
fori=0:
M-1%
if(randwave(i+1)==1)%有跳变
if(lastcode==1)
amiwave(i*L+1:
i*L+L)=-1;
lastcode=-1;
else
amiwave(i*L+1:
i*L+L)=1;
lastcode=1;
end
else
amiwave(i*L+1:
i*L+L)=0;
end
end
X8=fft(amiwave);
X8=X8/N;
mPSD8=abs(X8).^2/(df^2);
PSD8=fftshift(mPSD8);
PSD8=(1/TotalT).*PSD8;
%subplot(3,2,3);plot(Showt,amiwave(1:
ShowN));
%subplot(3,2,4);plot(f,10*log(PSD8));
%HDB3码
hdb3wave=zeros(1,N);
lastcode=1;%上一个1状态
vonevcount=0;%相邻V之间连1数目
zerocount=0;%连零数目
fori=0:
M-1%
if(randwave(i+1)==1)%有跳变
if(lastcode==1)
hdb3wave(i*L+1:
i*L+L)=-1;
lastcode=-1;
vonevcount=vonevcount+1;
else
hdb3wave(i*L+1:
i*L+L)=1;
lastcode=1;
vonevcount=vonevcount+1;
end
else
zerocount=zerocount+1;
if(zerocount==4)
if(mod(vonevcount,2)==1)%相邻V之间有奇数个1
if(lastcode==1)%插入000+V
hdb3wave(i*L+1:
i*L+L)=1;
else%插入000-V
hdb3wave(i*L+1:
i*L+L)=-1;
end
vonevcount=0;
else
if(lastcode==1)%插入-B00-V
hdb3wave((i-3)*L+1:
(i-3)*L+L)=-1;
hdb3wave(i*L+1:
i*L+L)=-1;
lastcode=-1;
else%插入+B00+V
hdb3wave((i-3)*L+1:
(i-3)*L+L)=+1;
hdb3wave(i*L+1:
i*L+L)=1;
lastcode=1;
end
vonevcount=0;
end
zerocount=0;
else
hdb3wave(i*L+1:
i*L+L)=0;
end
end
end
X9=fft(hdb3wave);
X9=X9/N;
mPSD9=abs(X9).^2/(df^2);
PSD9=fftshift(mPSD3);
PSD9=(1/TotalT).*PSD3;
%subplot(3,2,5);plot(Showt,hdb3wave(1:
ShowN));
%subplot(3,2,6);plot(f,10*log(PSD9));
四、思考题
1、分析产生的各种基带码型的时域波形和功率谱特性;
2、试从曼彻斯特码、差分曼彻斯特码、CMI码密勒码、AMI码和HDB3码中任选一种设计其解码波形;
2、试从曼彻斯特码、差分曼彻斯特码、CMI码密勒码、AMI码和HDB3码中任选一种设计其基于VHDL的编解码波形。