【2017年整理】matlab_HDB3编码译码数字信号调制解调

上传人:豆浆 文档编号:991182 上传时间:2017-05-24 格式:DOC 页数:12 大小:770KB
返回 下载 相关 举报
【2017年整理】matlab_HDB3编码译码数字信号调制解调_第1页
第1页 / 共12页
【2017年整理】matlab_HDB3编码译码数字信号调制解调_第2页
第2页 / 共12页
【2017年整理】matlab_HDB3编码译码数字信号调制解调_第3页
第3页 / 共12页
【2017年整理】matlab_HDB3编码译码数字信号调制解调_第4页
第4页 / 共12页
【2017年整理】matlab_HDB3编码译码数字信号调制解调_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《【2017年整理】matlab_HDB3编码译码数字信号调制解调》由会员分享,可在线阅读,更多相关《【2017年整理】matlab_HDB3编码译码数字信号调制解调(12页珍藏版)》请在金锄头文库上搜索。

1、一、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,符号的极性与前一非零符号的相反,并让后面的

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分离开来,第一个0000直接变为000V,然后数相邻两个0000之间1的个数,奇数则变为000V ,偶数则变为

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

4、+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 后,就可以得到原消息代码。3、程序运行结果运行程序可自定义二进制序列,第一个窗口显示所输入的二进制码元,第二个窗口为 HDB3 编码后的结果,最后一个窗口为解码后的窗口。4、程序源代码% ch7example6prog1.m% AMI 码的编码xn=1

5、 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)=1num=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

6、,length(yn);% B 脉冲位置记录变量for k=1:length(yn)if yn(k)=0num=num+1; % 连“0 ”个数计数if num=4 % 如果 4 连“0”num=0; % 计数器清零 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

7、符号同极性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(k); % 记录前一个 V 符号的极性endelsenum=0; % 当前输入为“1 ”则连“0”计数器清零endend % 编码完成re=xn,yn,yh,V,B; % 结果输出: xn AMI HDB3 V&B 符号% HDB3 解码input=yh; % HDB3 码输入decode=input; % 输出初始化sign=0; % 极性标志初

8、始化for k=1:length(yh)if input(k) = 0if sign=yh(k) % 如果当前码与前一个非零码的极性相同decode(k-3:k)=0 0 0 0;% 则该码判为 V 码并将*00V 清零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

9、,yh);axis(0 length(xn) -2 2);subplot(3,1,3);stairs(0:length(xn)-1,decode);axis(0 length(xn) -2 2);二、数字带通系统的调制解调1、实验要求:利用 MATLAB 程序设计语言实现数字带通系统的调制解调。2、原理简述:数字调制:用数字基带信号控制载波,把数字基带信号变换为数字带通信号(已调信号)的过程成为数字调制。数字调制与模拟调制的基本原理相同,但数字信号有离散取值的特点。因此数字调制技术有两种方法:利用模拟调制的方法实现数字调制,即把数字调制看成是模拟调制的特例把数字基带信号当成是模拟信号的特殊情况

10、处理;利用数字信号的离散取值特点通过开关键控制载波,从而实现数字调制。这种方法称为键控法,比如对载波的振幅,频率和相位进行键控,便可得到振幅键控 ASK,频移键控 FSK 和相移键控 PSK 三种基本的数字调制方式。振幅键控 ASK振幅键控利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。在2ASK 中,载波的幅度只有两种变化状态,分别为对应二进制信息“0”或“1” 。常用的二进制振幅键控方式称为通断键控,2ASK 信号的一般表达式为 其中2ASK 有两种基本的解调方法:非相干解调和相干解调,解调方式如下:非相干解调方式:带通滤波器全波整流器低通滤波器抽样判决器输出想干解调方式:带

11、通滤波器相乘器低通滤波器抽样判决器输出频移键控 FSK频移键控是利用载波的频率变化来传递数字信息。在 2FSK 中,载波的频率随二进制基带信号在 f1 和 f2 两个频率点检变化。一个 2FSK 信号可以看成是两个不同载频的 2ASK 信号的叠加。其产生方式有两种:采用模拟调频来实现也可采用键控法实现,即在二进制基带矩形序列的控制下通过开关电路对两个不同的独立频率源进行选通。但相邻码元之间的相位不一定连续。2FSK 信号的常用解调方法也采用相干解调和非相干解调两种方式。其解调原理是将2FSK 信号分解为上下两路 2ASK 信号分别进行解调,然后进行判决。相移键控 PSK二进制相移键控 2PSK

12、相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。在 2PSK 中,通常用初始相位 0 和 分别表示二进制“1”和“0” 。与 2ASK 信号的产生方式相比,只是对 s(t)的要求不同,在 2ASK 中是单极性的,而在 2PSK 中是双极性的基带信号。2PSK 信号的解调通常采用相干解调法。二进制差分相移键控 2DPSK2PSK 相干解调时,由于载波恢复中相位有 0、 模糊性,导致解调过程出现“反向工作”现象,恢复出的数字信号“1” “0”倒置,使得 2PSK 难以实际应用。而 2DPSK 是利用前后相邻码元的载波相对相位变化传递数字信息,对于相同的基带数字信息序列,由于初始相

13、位不同,2DPSK 的相位可以不同。也就是说,2DPSK 信号的相位并不直接代表基带信号,而前后码元相对相位的差才唯一决定信号符号。2DPSK 信号的解调方法为相干解调(极性比较法)加码反变换法。其原理为:带通滤波器相乘器低通滤波器抽样判决器码反变换输出3、程序运行结果2ASK 调制后的信号以及 2ASK 解调后的信号2PSK 基带信号,2PSK 调制后的信号以及 2PSK 解调后的信号2FSK 调制后的信号以及使用 2FSK 解调后的信号随机产生得二进制原始信号以及 2DPSK 调制之后得信号使用 2DPSK 解调之后的信号4、程序源代码2ASKclear all;clear;N=10; %

14、调制序列的长度 fc=20; %载波频率datat=0.01; %时域采样间隔data=1/datat;df=0.01 ; %频率分辨率t=0:datat:N; %设每个码元长度为 1ms 时间矢量:0:Nm=randint(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);as

15、k=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);%-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 实验/测试

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号