matlabHDB3编码译码数字信号调制解调.docx

上传人:b****5 文档编号:12087595 上传时间:2023-04-17 格式:DOCX 页数:19 大小:472.28KB
下载 相关 举报
matlabHDB3编码译码数字信号调制解调.docx_第1页
第1页 / 共19页
matlabHDB3编码译码数字信号调制解调.docx_第2页
第2页 / 共19页
matlabHDB3编码译码数字信号调制解调.docx_第3页
第3页 / 共19页
matlabHDB3编码译码数字信号调制解调.docx_第4页
第4页 / 共19页
matlabHDB3编码译码数字信号调制解调.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

matlabHDB3编码译码数字信号调制解调.docx

《matlabHDB3编码译码数字信号调制解调.docx》由会员分享,可在线阅读,更多相关《matlabHDB3编码译码数字信号调制解调.docx(19页珍藏版)》请在冰豆网上搜索。

matlabHDB3编码译码数字信号调制解调.docx

matlabHDB3编码译码数字信号调制解调

matlab-HDB3编码译码数字信号调制解调

一、HDB3码的编码和译码

1、实验要求:

掌握HDB3码的编码规则,利用MATLAB设计并实现HDB3码的编码和译码。

2、原理简述:

编码规则:

  1)先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码;

  2)若AMI码中连0的个数大于3,则将每4个连0小段的第4个0变换成与前一个非0符号(+1或-1)同极性的符号,用表示(+1+,-1-);

  3)为了不破坏极性交替反转,当相邻符号之间有偶数个非0符号时,再将该小段的第1个0变换成+B或-B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。

 例如:

  消息代码:

100001 0000 11000011

  AMI码:

+10000-1 0000 +1-10000+1-1

  HDB3码:

+1000+V-1 000-V +1-1+B00+V-1+1

简易编码方法:

原理:

HDB3码既要包含AMI的交替特性使输出无直流特性,又要不出现四个以上的连0,因此可以先满足后者。

  1)把"0000"换为取代节。

  规则:

先将"0000"分离开来,第一个"0000"直接变为"000V",然后数相邻两个"0000"之间"1"的个数,奇数则变为"000V",偶数则变为"B00V"。

  2)更新符号。

  根据教材有:

B总是与其前面的1或V符号相反,V总是与前面的1或B相符号相同,1总是与前面的V或B符号相反,就可以编符号了。

 例如:

  消息代码:

100001 0000 11000011 0000 0000111 0000 1

  中间码:

1000V1 000V 11B00V11 B00V B00V111 000V 1

HDB3码:

+1000+V-1 000-V +1-1+B0

else

yn(k)=-1;

end

end

end

%HDB3编码

num=0;%连零计数器初始化

yh=yn;%输出初始化

sign=0;%极性标志初始化为0

V=zeros(1,length(yn));%V脉冲位置记录变量

B=zeros(1,length(yn));%B脉冲位置记录变量

fork=1:

length(yn)

ifyn(k)==0

num=num+1;%连“0”个数计数

ifnum==4%如果4连“0”

num=0;%计数器清零

yh(k)=1*yh(k-4);

%让0000的最后一个0改变为与前一个非零符号相同极性的符号

V(k)=yh(k);%V脉冲位置记录

ifyh(k)==sign%如果当前V符号与前一个V符号的极性相同

yh(k)=-1*yh(k);%则让当前V符号极性反转,以满足V符号间相互极性反转要求

yh(k-3)=yh(k);%添加B符号,与V符号同极性

B(k-3)=yh(k);%B脉冲位置记录

V(k)=yh(k);%V脉冲位置记录

yh(k+1:

length(yn))=-1*yh(k+1:

length(yn));

%并让后面的非零符号从V符号开始再交替变化

end

sign=yh(k);%记录前一个V符号的极性

end

else

num=0;%当前输入为“1”则连“0”计数器清零

end

end%编码完成

re=[xn',yn',yh',V',B'];%结果输出:

xnAMIHDB3V&B符号

%HDB3解码

input=yh;%HDB3码输入

decode=input;%输出初始化

sign=0;%极性标志初始化

fork=1:

length(yh)

ifinput(k)~=0

ifsign==yh(k)%如果当前码与前一个非零码的极性相同

decode(k-3:

k)=[0000];%则该码判为V码并将*00V清零

end

sign=input(k);%极性标志

end

end

decode=abs(decode);%整流

error=sum([xn'-decode']);%解码的正确性检验,作图

subplot(3,1,1);stairs([0:

length(xn)-1],xn);axis([0length(xn)-22]);

subplot(3,1,2);stairs([0:

length(xn)-1],yh);axis([0length(xn)-22]);

subplot(3,1,3);stairs([0:

length(xn)-1],decode);axis([0length(xn)-22]);

二、数字带通系统的调制解调

1、实验要求:

利用MATLAB程序设计语言实现数字带通系统的调制解调。

2、原理简述:

数字调制:

用数字基带信号控制载波,把数字基带信号变换为数字带通信号(已调信号)的过程成为数字调制。

数字调制与模拟调制的基本原理相同,但数字信号有离散取值的特点。

因此数字调制技术有两种方法:

①利用模拟调制的方法实现数字调制,即把数字调制看成是模拟调制的特例把数字基带信号当成是模拟信号的特殊情况处理;②利用数字信号的离散取值特点通过开关键控制载波,从而实现数字调制。

这种方法称为键控法,比如对载波的振幅,频率和相位进行键控,便可得到振幅键控ASK,频移键控FSK和相移键控PSK三种基本的数字调制方式。

振幅键控ASK

振幅键控利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。

在2ASK中,载波的幅度只有两种变化状态,分别为对应二进制信息“0”或“1”。

常用的二进制振幅键控方式称为通断键控,2ASK信号的一般表达式为其中

2ASK有两种基本的解调方法:

非相干解调和相干解调,解调方式如下:

非相干解调方式:

带通滤波器——全波整流器——低通滤波器——抽样判决器——输出

想干解调方式:

带通滤波器——相乘器——低通滤波器——抽样判决器——输出

频移键控FSK

频移键控是利用载波的频率变化来传递数字信息。

在2FSK中,载波的频率随二进制基带信号在f1和f2两个频率点检变化。

一个2FSK信号可以看成是两个不同载频的2ASK信号的叠加。

其产生方式有两种:

①采用模拟调频来实现②也可采用键控法实现,即在二进制基带矩形序列的控制下通过开关电路对两个不同的独立频率源进行选通。

但相邻码元之间的相位不一定连续。

2FSK信号的常用解调方法也采用相干解调和非相干解调两种方式。

其解调原理是将2FSK信号分解为上下两路2ASK信号分别进行解调,然后进行判决。

相移键控PSK

二进制相移键控2PSK

相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。

在2PSK中,通常用初始相位0和π分别表示二进制“1”和“0”。

与2ASK信号的产生方式相比,只是对s(t)的要求不同,在2ASK中是单极性的,而在2PSK中是双极性的基带信号。

2PSK信号的解调通常采用相干解调法。

二进制差分相移键控2DPSK

2PSK相干解调时,由于载波恢复中相位有0、π模糊性,导致解调过程出现“反向工作”现象,恢复出的数字信号“1”“0”倒置,使得2PSK难以实际应用。

而2DPSK是利用前后相邻码元的载波相对相位变化传递数字信息,对于相同的基带数字信息序列,由于初始相位不同,2DPSK的相位可以不同。

也就是说,2DPSK信号的相位并不直接代表基带信号,而前后码元相对相位的差才唯一决定信号符号。

2DPSK信号的解调方法为相干解调(极性比较法)加码反变换法。

其原理为:

带通滤波器——相乘器——低通滤波器——抽样判决器——码反变换——输出

3、程序运行结果

2ASK调制后的信号以及2ASK解调后的信号

2PSK基带信号,2PSK调制后的信号以及2PSK解调后的信号

2FSK调制后的信号以及使用2FSK解调后的信号

随机产生得二进制原始信号以及2DPSK调制之后得信号

使用2DPSK解调之后的信号

4、程序源代码

2ASK

clearall;

clear;

N=10;%调制序列的长度

fc=20;%载波频率

datat=0.01;%时域采样间隔

data=1/datat;

df=0.01;%频率分辨率

t=0:

datat:

N;%设每个码元长度为1ms时间矢量:

0:

N

m=randint(1,N);%产生调制序列

fs=1/datat;

c=cos(2*pi*fc*t);

fori=1:

length(m)

if(m(i)==1)

forj=1:

1/datat;

ask_pre(j+(i-1)*(1/datat))=1;

end

elseif(m(i==0))

ask_pre(j+(i-1)*(1/datat))=0;

end

end

ask_pre=[ask_pre,m(i)];

ask=ask_pre.*c;

[ask_F,ask,df1]=fftseq(ask,datat,df);

[C,c,df1]=fftseq(c,datat,df);

[M,ask_pre,df1]=fftseq(ask_pre,datat,df);

f=[0:

df1:

df1*(length(c)-1)]-fs/2;

subplot(2,1,1);plot(t,ask_pre(1:

length(t)));axis([0,N,-1.5,1.5]);xlabel('时间ms');title('未调信号');ylabel('幅值:

v');

subplot(2,1,2);plot(t,ask(1:

length(t)));axis([0,N,-1.5,1.5]);xlabel('时间ms');title('2ASK信号');ylabel('幅值:

v');

%--------------------------------------------------------------------------

%---------------------解调------------------------------

%--------------------------------------------------------------------------

ask_n=(ask_pre+rand(1,length(ask_pre))).*c;%(高斯白噪声)

[ask_NF,ask_n,df1]=fftseq(ask_n,datat,df);

f_strain=8;

n_off=floor(f_strain/df1);

f=[0:

df1:

df1*(length(ask)-1)]-fs/2;

n0=floor((fc-8)/df1):

floor((fc+8)/df1);

BP=zeros(1,length(f));

BP(min(n0):

max(n0))=ones(1,length(n0));%带通滤波器设计

BP(length(BP)-max(n0):

length(BP)-min(n0))=ones(1,length(n0));

H=zeros(1,length(f));

H(1:

n_off)=2*ones(1,n_off);%矩形窗截取

H(length(f)-n_off+1:

length(f))=2*ones(1,n_off);

%H(1:

n_off)=2*hamming(n_off);%hamning窗截取

%H(length(f)-n_off+1:

length(f))=2*hamming(n_off);

BP1=BP.*ask_F;

BPN=BP.*ask_NF;

ask_re1=ifft(BP1);

ask_ren1=ifft(BPN);

ask_re=2*ask_re1.*c;%相干解调法

ask_ren=2*ask_ren1.*c;%相干解调(高斯白噪声)

[ask_reF,ask_re,df1]=fftseq(ask_re,datat,df);

[ask_reNF,ask_ren,df1]=fftseq(ask_ren,datat,df);

D1=H.*ask_reF;

DN=H.*ask_reNF;

d1=ifft(D1);

dn=ifft(DN);

fori=1:

length(m)%判决

if(d1((i-1)*(1/datat)+(1/(2*datat)))>=0.5)%判决规则:

d1>0.5=>1

m_de(i)=1;%否则d1<0.5=>0

forj=1:

1/datat

d11(j+(i-1)*(1/datat))=1;%为了画解调波形需要

end

elsem_de(i)=0;

forj=1:

1/datat

d11(j+(i-1)*(1/datat))=0;%为了画解调波形需要

end

end

end

fori=1:

length(m)%判决

if(dn((i-1)*(1/datat)+(1/(2*datat)))>=0.5)%判决规则:

d1>0.5=>1

m_den(i)=1;%否则d1<0.5=>0

forj=1:

1/datat

dnn(j+(i-1)*(1/datat))=1;%为了画解调波形需要

end

elsem_den(i)=0;

forj=1:

1/datat

dnn(j+(i-1)*(1/datat))=0;%为了画解调波形需要

end

end

end

figure

(2);

subplot(4,1,1);plot(t,ask(1:

length(t)));axis([0,N,-1.5,1.5]);xlabel('时间');title('解调器接收波形');

subplot(4,1,2);plot(t,ask_re1(1:

length(t)));axis([0,N,-1.5,1.5]);xlabel('时间');title('经过带通滤波器波形');

subplot(4,1,3);plot(t,d1(1:

length(t)));axis([0,N,-0.5,2.5]);xlabel('时间');title('经过低通滤波器波形');

subplot(4,1,4);plot(t(1:

length(d11)),d11);axis([0,N,-1.5,1.5]);xlabel('时间');title('经过判决器波形');

2FSK

clear;

N=20;%调制序列的长度

fc=5;%载波基频

datat=0.01;%时域采样间隔

fs=1/datat;%频率分辨率

df=0.01%频率缩放系数

t=0:

datat:

N;%设每个码元长度为1ms时间矢量:

0:

N

m=randint(1,N);%产生调制序列

fori=1:

length(m)

if(m(i)==1)

forj=1:

1/datat;

fsk_f(j+(i-1)*(1/datat))=4;%1码的载波基波倍频系数20hz

mm(j+(i-1)*(1/datat))=1;%为了画码元时域波形需要

end

elseif(m(i)==0)

forj=1:

1/datat;

fsk_f(j+(i-1)*(1/datat))=1;%0码的载波基波倍频系数5hz

mm(j+(i-1)*(1/datat))=0;%为了画码元时域波形需要

end

end

end

if(m(i)==1)nn=4;

elsenn=1;

end

fsk_f=[fsk_f,nn];%使fsk_f的长度与t相同

fsk_c=fsk_f*fc;%根据不同的倍频系数产生不同的载波频率

c=cos(2*pi*fsk_c.*t);%2fsk信号产生

[C,c,df1]=fftseq(c,datat,df);%2fsk信号的傅立叶变换

[MM,mm,df1]=fftseq(mm,datat,df);%基带信号的傅立叶变换

f=[0:

df1:

df1*(length(mm)-1)]-fs/2;%频率作图矢量

figure

(1);

subplot(2,1,1);plot(t,mm(1:

length(t)));axis([0,N,-1.5,1.5]);xlabel('时间ms');title('未调信号');ylabel('幅值:

v');

subplot(2,1,2);plot(t,c(1:

length(t)));axis([0,N,-1.5,1.5]);xlabel('时间ms');title('2FSK信号');ylabel('幅值:

v');

%--------------------------------------------------------------------------

%----------------解调-----------------------------

%--------------------------------------------------------------------------

B0=[fc-2,fc+2];%0码频带宽

B1=[fc*4-2,fc*4+2];%1码频带宽

n0=floor((fc-2)/df1):

floor((fc+2)/df1);

n1=floor((4*fc-2)/df1):

floor((4*fc+2)/df1);

H0=zeros(1,length(C));

H0(min(n0):

max(n0))=ones(1,length(n0));%滤波器设计(0码带通滤波器)

H0(length(H0)-max(n0):

length(H0)-min(n0))=ones(1,length(n0));

H1=zeros(1,length(C));

H1(min(n1):

max(n1))=ones(1,length(n1));%滤波器设计(1码带通滤波器)

H1(length(H1)-max(n1):

length(H1)-min(n1))=ones(1,length(n1));

n_off0=fc/df1;

n_off1=4*fc/df1;

L0=zeros(1,length(C));%(0码低通滤波器)

L0(1:

n_off0)=2*ones(1,n_off0);

L0(length(L0)-n_off0+1:

length(L0))=2*ones(1,n_off0);

L1=zeros(1,length(C));%%(1码低通滤波器)

L1(1:

n_off1)=2*ones(1,n_off1);

L1(length(L1)-n_off1+1:

length(L1))=2*ones(1,n_off1);

C0=C.*H0;

C1=C.*H1;

m0=ifft(C0);

m1=ifft(C1);

mm0=abs(m0);%包络检波

mm1=abs(m1);

[MM0,mm0,df1]=fftseq(mm0,datat,df);

[MM1,mm1,df1]=fftseq(mm1,datat,df);

MM0=MM0.*L0;

MM1=MM1.*L1;

mm0=ifft(MM0);

mm1=ifft(MM1);

fori=1:

length(m)%比较器判决

if(abs(m0((i-1)*(1/datat)+(1/(2*datat))))>=abs(m1((i-1)*(1/datat)+(1/(datat*2)))))%判决规则:

mo>m1=>0

m_de(i)=0;%否则=>1

forj=1:

1/datat

m_anti(j+(i-1)*(1/datat))=0;%为了画解调波形需要

end

elsem_de(i)=1;

forj=1:

1/datat

m_anti(j+(i-1)*(1/datat))=1;%为了画解调波形需要

end

end

end

m_anti=[m_anti,m_de(i)];

figure

(2)

subplot(5,1,1);plot(t,m0(1:

length(t)));xlabel('时间');title('经过带通滤波器1后波形');

subplot(5,1,2);plot(t,m1(1:

length(t)));xlabel('时间');title('经过带通滤波器2后波形');

subplot(5,1,3);plot(t,mm0(1:

length(t)));xlabel('时间');axis([0,N,-0.1,2]);title('经过低通滤波器1后波形');

subplot(5,1,4);plot(t,mm1(1:

length(t)));xlabel('时间');axis([0,N,-0.1,2]);title('经过低通滤波器2后波形');

subplot(5,1,5);plot(t,m_anti(1:

length(t)));xlabel('时间');axis([0,N,-0.5,1.5]);title('经过比较起判决后波形');

2PSK

clear;

N=10;%调制序列的长度

fc=10;%载波频率

datat=0.01;%时域采样间隔

fs=1/datat;%频率分辨率

df=0.01%频率缩放系数

t=0:

datat:

N;%设每个码元长度为1ms时间矢量:

0:

N

m=randint(1,N);%产生调制序列

%--------------------------------------------------------------------------

%--------------------调制----------------------

%--------------------------------------------------------------------------

fori=1:

length(m)

if(m(i)==1)

forj=1:

1/datat;

psk_p(j+(i-1)*(1/datat))=pi;%1码的对应的相位为[pi](采用a方式)

mm(j+(i-1)*(1/datat))=1;%为了画码元时域波形需要

end

elseif(m(i)==0)

forj=1:

1/datat;

psk_p(j+(i-1)*(1/datat))=0;%0码的对应的相位为[0](采用a方式)

mm(j+(i-1)*(1/datat))=0;%为了画码元时域波形需要

end

end

end

if(m(i)==1)nn=pi/2;

elsenn=-(pi/2);

end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1