(完整word版)_matlab_HDB3编码译码数字通带调制解调_第1页
(完整word版)_matlab_HDB3编码译码数字通带调制解调_第2页
(完整word版)_matlab_HDB3编码译码数字通带调制解调_第3页
(完整word版)_matlab_HDB3编码译码数字通带调制解调_第4页
(完整word版)_matlab_HDB3编码译码数字通带调制解调_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、通信原理实验报告姓名:班级:学号:指导老师:时间:一、HDB3的编码和译码1、实验要求:掌握 HDB涮的编码规则,利用 MATLA段计并实现 HDB陋的编码和译码。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, 符号的极性

2、与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。例如 :消息代码: 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1AMI 码 : +1 0 0 0 0 -1 0 0 0 0 +1 -1 0 0 0 0 +1 -1HDB3 码: +1 0 0 0 +V -1 0 0 0 -V +1 -1 +B 0 0 +V -1 +1简易编码方法:原理:HDB3 码既要包含AMI 的交替特性使输出无直流特性,又要不出现四个以上的连 0 ,因此可以先满足后者。1 )把"0000" 换为取代节。规则:先将"0000" 分离开来,第一个&q

3、uot;0000" 直接变为"000V" ,然后数相邻两个"0000"之间"1"的个数,奇数则变为"000V" ,偶数则变为" B00V" 。2)更新符号。根据教材有:B 总是与其前面的1 或 V 符号相反,V 总是与前面的1 或 B 相符号相同,1 总是与前面的V 或 B 符号相反,就可以编符号了。例如 :消息代码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1中间码:1 0 0 0 V 1 0

4、0 0 V 1 1 B 0 0 V 1 1 B 0 0 V B 0 0 V 1 1 1 0 0 0 V 1HDB3 码: +1 0 0 0 +V -1 0 0 0 -V +1 -1 +B 0 0 + V -1 +1 - B 0 0 -V +B 0 0 +V -1 +1 -1 0 0 0 -V +1解码规则:1 )虽然编码很复杂,但解码规则很简单,若3 连 “ 0前后非零脉冲同极性,则将最后一个 ”非零元素译为零,如+1000+1 就应该译成“ 10000”;若2 连 “ 0前后非零脉冲极性相同,则”两零前后都译为零,如-100-1 ,就应该译为0000.2 )再将所有的-1 变换成 +1 后,

5、就可以得到原消息代码。£/!1_. tdi I V.LK1 * EtioXiE LaraJcI_E £, Eidlaiw H-】E,D- Q刍|层|负以仃 .1 口即 日运行程序可自定义二进制序列,第一个窗口显示所输入的二进制码元,第二个窗口为HDB3编码后的结果,最后一个窗口为解码后的窗口。4、程序源代码% ch7example6prog1.m% AMI码的编码xn=1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0;%输入单极性码yn=xn;%输出yn初始化num=0;%计数器初始化for k=1:length(xn)if xn(k)=1

6、num=num+1;% "1"计数器if num/2 = fix(num/2) %奇数个1时输出-1,进行极性交替yn(k)=1;elseyn(k)=-1;endendend% HDB3编码num=0; %连零计数器初始化yh=yn; %输出初始化sign=0; %极性标志初始化为 0V=zeros(1,length(yn);% V脉冲位置记录变量B=zeros(1,length(yn);% B脉冲位置记录变量for k=1:length(yn)if yn(k)=0num=num+1; % 连“0”个数计数if num=4 % 如果 4 连“0”num=0; % 计数器清零

7、yh(k)=1*yh(k-4);% 让 0000 的最后一个0 改变为与前一个非零符号相同极性的符号V(k)=yh(k);% V 脉冲位置记录if yh(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 符号开始再交替变化endsign=yh

8、(k);% 记录前一个V 符号的极性endelsenum=0;% 当前输入为“1 ”则连“0”计数器清零endendre=xn',yn',yh',V',B'input=yh;decode=input;sign=0;for k=1:length(yh)if input(k) = 0if sign=yh(k)% 编码完成% 结果输出: xn AMI HDB3 V&B 符号% HDB3 解码% HDB3 码输入% 输出初始化% 极性标志初始化% 如果当前码与前一个非零码的极性相同decode(k-3:k)=0 0 0 0;% 则该码判为V 码并将 *0

9、0V 清零endsign=input(k);% 极性标志endenddecode=abs(decode);error=sum(xn'-decode');% 整流% 解码的正确性检验, 作图subplot(3,1,1);stairs(0:length(xn)-1,xn);axis(0 length(xn) -2 2)subplot(3,1,2);stairs(0:length(xn)-1,yh);axis(0 length(xn) -2 2)subplot(3,1,3);stairs(0:length(xn)-1,decode);axis(0 length(xn) -2 2);二

10、、数字带通系统的调制解调1、实验要求:利用MATLA翼序设计语言实现 数字带通系统的调制解调。2、原理简述:数字调制:用数字基带信号控制载波,把数字基带信号变换为数字带通信号(已调信号)的过程成为数字调制。数字调制与模拟调制的基本原理相同,但数字信号有离散取值的特点。因此数字调制技术有两种方法:利用模拟调制的方法实现数字调制, 即把数字调制看成是模拟调制的特例 把数字基带信号当成是模拟信号的特殊情况处理; 利用数字信号的离散取值特点通过开关 键控制载波,从而实现数字调制。这种方法称为键控法,比如对载波的振幅,频率和相位进行键控,便可得到振幅键控 ASK频移键控FSK和相移键控PSK三种基本的数

11、字调制方式。 振幅键控ASK振幅键控利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。在2ASK中,载波的幅度只有两种变化状态,分别为对应二进制信息“0”或“1”。常用的二进制振幅键控方式称为通断键控,2ASK信号的一般表达式为= 3鼠)口位加 其中=地-心J;2ASK有两种基本的解调方法:非相干解调和相干解调,解调方式如下:非相干解调方式:带通滤波器一一全波整流器一一低通滤波器一一抽样判决器一一输出 想干解调方式:带通滤波器一一相乘器一一低通滤波器一一抽样判决器一一输出频移键控FSK频移键控是利用载波的频率变化来传递数字信息。在2FSK中,载波的频率随二进制基带信号在fl和f2两

12、个频率点检变化。一个2FSK信号可以看成是两个不同载频的2ASK信号的叠加。其产生方式有两种: 采用模拟调频来实现也可采用键控法实现,即在二进制基带矩形序列的控制下通过开关电路对两个不同的独立频率源进行选通。但相邻码元之间的相位不一定连续。2FSK信号的常用解调方法也采用相干解调和非相干解调两种方式。其解调原理是将2FSK信号分解为上下两路 2ASK信号分别进行解调,然后进行判决。 相移键控PSK二进制相移键控 2PSK相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。在2PSK中,通常用初始相位0和兀分别表示二进制“ 1”和“0"。与2ASK信号的产生方式相比,只是

13、对 s(t)的要求不同,在2ASK中是单极性的,而在 2PSK中是双极性的基带信号。2PSK信号的解调通常采用相干解调法。二进制差分相移键控 2DPSK2PSK相干解调时,由于载波恢复中相位有 0、兀模糊性,导致解调过程出现“反向工作” 现象,恢复出的数字信号“ 1” “0”倒置,使得2PSK隹以实际应用。而 2DPS&利用前后相 邻码元的载波相对相位变化传递数字信息,对于相同的基带数字信息序列,由于初始相位不同,2DPSK勺相位可以不同。也就是说,2DPSK言号的相位并不直接代表基带信号,而前后码元相对相位的差才唯一决定信号符号。2DPSKW号的解调方法为相干解调(极性比较法)加码反

14、变换法。 其原理为:带通滤波器一一相乘器一一低通滤波器一一抽样判决器一一码反变换一一输出2ASK调制后的信号以及2ASK解调后的信号2PSK基带信号,2PSK调制后的信号以及2PSK解调后的信号2FSK调制后的信号以及使用 2FSK解调后的信号随机产生得二进制原始信号以及2DPSK制之后得信号解国后悖目使用2DPS懈调之后的信号4、程序源代码2ASKclear all;clear;N=10;%调制序列的长度fc=20;%载波频率datat=0.01;data=1/datat;%时域采样间隔df=0.01;%频率分辨率t=0:datat:N;%设每个码元长度为1ms时间矢量:0: Nm=rand

15、int(1,N);fs=1/datat;%产生调制序列c=cos(2*pi*fc*t);for i=1:length(m)if(m(i)=1)for j=1:1/datat;ask_pre(j+(i-1)*(1/datat)=1; endelseif(m(i=0)ask_pre(j+(i-1)*(1/datat)=0; endendask_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,

16、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&#

17、39;);% 解调%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):le

18、ngth(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*a

19、sk_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=1length(m)if(d1(i-1)*(1/datat)+(1/(2*datat)>=0.5)决规则 :d1>0.5=> 1% 判决% 判m_de(i)=1;% 否则d1<

20、;0.5=> 0for j=1:1/datatd11(j+(i-1)*(1/datat)=1;% 为了画解调波形需要endelsem_de(i)=0;for j=1:1/datat% 为了画解调波形需要d11(j+(i-1)*(1/datat)=0;endend endfori=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=> 0for j=1:1/datat% 为了画解调波形需要dnn(j+(i-1)*(1/datat)=1

21、;endendelseendfigure(2);m_den(i)=0;for j=1:1/datatenddnn(j+(i-1)*(1/datat)=0;% 为了画解调波形需要subplot(4,1,1);plot(t,ask(1:length(t);axis(0,N,-1.5,1.5);xlabel('subplot(4,1,2);plot(t,ask_re1(1:length(t);axis(0,N,-1.5,1.5);xlabel('subplot(4,1,3);plot(t,d1(1:length(t);axis(0,N,-0.5,2.5);xlabel('su

22、bplot(4,1,4);plot(t(1:length(d11),d11);axis(0,N,-1.5,1.5);xlabel('时间 ');title(' 解调器接收波形');时间 ');title(' 经过带通滤波器波形');时间 ');title(' 经过低通滤波器波形');时间 ');title(' 经过判决器波形');2FSK clear; N=20; fc=5;% 调制序列的长度% 载波基频datat=0.01;fs=1/datat;df=0.01for i=1:length(

23、m)if(m(i)=1)for j=1:1/datat;fsk_f(j+(i-1)*(1/datat)=4;mm(j+(i-1)*(1/datat)=1;endelseif(m(i)=0)for j=1:1/datat;fsk_f(j+(i-1)*(1/datat)=1;mm(j+(i-1)*(1/datat)=0;endendendif(m(i)=1)nn=4;else nn=1;endfsk_f=fsk_f,nn;fsk_c=fsk_f*fc;c=cos(2*pi*fsk_c.*t);C,c,df1=fftseq(c,datat,df);MM,mm,df1=fftseq(mm,datat,

24、df);f=0:df1:df1*(length(mm)-1)-fs/2;%1 码的载波基波倍频系数20hz% 为了画码元时域波形需要%0 码的载波基波倍频系数5hz% 为了画码元时域波形需要% 使 fsk_f 的长度与t 相同% 根据不同的倍频系数产生不同的载波频率%2fsk 信号产生%2fsk 信号的傅立叶变换% 基带信号的傅立叶变换% 频率作图矢量% 时域采样间隔% 频率分辨率% 频率缩放系数t=0:datat:N;%设每个码元长度为1ms 时间矢量:0: Nm=randint(1,N);%产生调制序列 figure(1);subplot(2,1,1);plot(t,mm(1:length

25、(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(

26、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(

27、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

28、=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_d

29、e(i)=0;=> 1for j=1:1/datatm_anti(j+(i-1)*(1/datat)=0;endelse m_de(i)=1;for j=1:1/datatm_anti(j+(i-1)*(1/datat)=1;endendendm_anti=m_anti,m_de(i);figure(2)subplot(5,1,1);plot(t,m0(1:length(t);xlabel('subplot(5,1,2);plot(t,m1(1:length(t); xlabel(' subplot(5,1,3);plot(t,mm0(1:length(t);xlabel

30、(' subplot(5,1,4);plot(t,mm1(1:length(t); xlabel('% 为了画解调波形需要% 为了画解调波形需要时间 '); title(' 经过带通滤波器1 后波形 ');时间 '); title(' 经过带通滤波器2 后波形 ');时间');axis(0,N,-0.1,2); title('经过低通滤波器 时间 '); axis(0,N,-0.1,2); title(' 经过低通滤波器1 后波形 ');2 后波形 ');subplot(5,1,5)

31、;plot(t,m_anti(1:length(t); xlabel(' 时间 '); axis(0,N,-0.5,1.5); title(' 经过比较起判决后波形');2PSKclear;N=10;%调制序列的长度fc=10;%载波频率datat=0.01;% 时域采样间隔fs=1/datat;%频率分辨率df=0.01%频率缩放系数t=0:datat:N;%设每个码元长度为1ms 时间矢量:0:Nm=randint(1,N);%产生调制序列% 调制%for i=1:length(m) if(m(i)=1)for j=1:1/datat;%1码的对应的相位为p

32、i(采用a方式)% 为了画码元时域波形需要%0 码的对应的相位为0( 采用 a 方式 )% 为了画码元时域波形需要psk_p(j+(i-1)*(1/datat)=pi;mm(j+(i-1)*(1/datat)=1;endelseif(m(i)=0)for j=1:1/datat;psk_p(j+(i-1)*(1/datat)=0;mm(j+(i-1)*(1/datat)=0;endendendif(m(i)=1) nn=pi/2;else nn=-(pi/2);endpsk_p=psk_p,nn;调制相位c=cos(2*pi*fc*t+psk_p);C,c,df1=fftseq(c,datat

33、,df);MM,mm,df1=fftseq(mm,datat,df); f=0:df1:df1*(length(mm)-1)-fs/2;% 使 p 的长度与t 相同 ,psk_p 为根据不同码元产生不同的%2psk 信号产生%2fsk 信号的傅立叶变换% 基带信号的傅立叶变换% 频率作图矢量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:l

34、ength(t);axis(0,N,-1.5,1.5);xlabel(' 时间 ms');title('2PSK 信号 ');ylabel(' 幅值v');% 解调% carwav=2*cos(2*pi*fc.*t);CF,carwav,df1=fftseq(carwav,datat,df);n_off=(fc-1)/df;n0=floor(fc-2)/df1):floor(fc+2)/df1);BP=zeros(1,length(f);BP(min(n0):max(n0)=ones(1,length(n0); % 带通滤波器设计BP(lengt

35、h(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);CC=C.*BP;%接受时经过一个带通滤波器cc=ifft(CC);%反福利也变换c_re=cc.*carwav;%乘以载波进行相干解调cc1=c_re;c_reF,c_re,df1=fftseq(c_re,datat,df);c_reF=c_reF.*H;%经过低通滤波器c_r

36、ef=ifft(c_reF);fori=1:length(m)% 判决if(c_ref(i-1)*(1/datat)+(1/(2*datat)<0)% 判决规则 : >0 => 0m_de(i)=1;<0 => 1for j=1:1/datatc_de(j+(i-1)*(1/datat)=1;endelse m_de(i)=0;for j=1:1/datatc_de(j+(i-1)*(1/datat)=0;end% 为了画解调波形需要% 为了画解调波形需要% 否则endendc_de=c_de,c_re(i);figure(2);xlabel(' 时间 ms');title(' 调制信号');ylabel(' 幅值 : v');ms');title('

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论