《通信原理课程设计HDB3编码及解码的实现》由会员分享,可在线阅读,更多相关《通信原理课程设计HDB3编码及解码的实现(12页珍藏版)》请在金锄头文库上搜索。
1、通信原理课程设计-HDB3编码及解码的实现 院(系): 电子与电气工程学院 班级: 电子091班 学号: 姓名: 指导老师: 2011 年 12 月 30日0.摘要目前,虽然数字基带传输不如带通传输那样应用广泛,但对于基带传输系统的研究仍是十分有意义的。这是因为,第一,在利用对称电缆传输构成的进程数据通信系统中广泛采用了这种传输方式;第二,随着数字通信技术的发展,基带传输方式也有迅速发展的趋势,目前,它不仅用于低速数据传输,而且还应用于高速数据传输;第三,基带传输中包含带通传输的很多基本问题,也就是说,亟待传输系统的很多问题也是带通传输系统必须考虑的问题;第四,理论上也可以证明,任何一个采用线
2、性调制的带通传输系统,可以等效为一个基带传输系统来研究。在实际的基带数字传输系统中,并不是所有的基带波形都适合在信道中传输。例如,含有丰富直流和低频分量的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为这有可能造成信号严重畸变。又如,当消息代码中包含长串的连续“1”或“0”符号时,非归零波形呈现出连续的固定电平,因而无法获取定时信息。单极性归零码在传送连“0”时,也存在同样的问题。因此,对传输用的基带信号主要有以下两个方面的要求:(1) 对代码的要求:原始信息代码必须编成适合于传输用的码型;(2)对所选码型的电平的波形要求:电平波形应适合于基带系统的传输。在此,主要研究数字基带传输系统
3、中HDB3码的编码及解码的实现问题。目录0. 摘要 1一.设计题目及要求 2 二.设计原理 22.1 HDB3码介绍 22.2 HDB3码的编码规则 2 2.3 HDB3码的解码规则 32.4 HDB3码的特点 4三 仿真及结果 53.1 HDB3编码运算程序代码 53.2 HDB3解码运算程序代码 63.3 MATLAB具体操作过程 73.4 仿真结果 83.5 结果分析 9四 心得体会 10五. 致谢 10六参考文献 11第1页一.设计题目及要求题目:HDB3编码及解码的实现要求:1、用matlab实现;2、先产生并输出随机序列,对随机序列编码,输出编码后的随机序列,然后解码,并输出解码之
4、后的序列。二.设计原理2.1 HDB3码介绍即(High Density Bipolar of order 3code)三阶高密度双极性码。它是AMI(Alternative Mark Inversion)码即传号交替反转码的一种改进型,改进的目的是为了保持AMI码的优点而克服其缺点,使连“0”的个数不超过3个。2.2 HDB3码的编码规则(1) 检查消息码中“0”的个数。当连“0”的数目小于等于3时,HDB3码与AMI码一样,+1与-1交替;(2) 当连“0”的数目超过3时,将每4个连“0”化作一小节,定义为B00V,称为破坏节,其中V成为破坏脉冲,而B称为调节脉冲;(3) V与前一个相邻的
5、非“0”脉冲极性相同(这破坏了极性交替的规则,所以V称为破坏脉冲),并且要求相邻的V码之间极性必须交替。V的取值为+1或-1;(4) B的取值可选0、+1、或-1,以使V同时满足(3)中的两个要求;(5) V码后面的传号码极性也要交替。例如:消息码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1AMI码:-1000 0 +10 0 0 0 -1 +10 0 0 0 0 0 0 0 -1 +1HDB3码:-1000 -V +1 0 0 0 +V -1 +1-B00-V +B 0 0 +V -1 +1其中的V脉冲和脉冲与1脉冲波形相同,用V或B符号表示的目的
6、是为了示意非“0”码是由原始码的“0”变换而来的。2.3 HDB3解码规则(1) 从收到的符号序列中找到破坏极性交替的点,可以断定符号及其前面的3个符号必是连0符号,从而恢复4个连码; (2) 再将所有的-1变换成+1后,就可以得到原消息代码。2.4 HDB3码的特点从以上原理可以看出,HDB3码的编码虽然比较复杂,但解码且比较简单。编码规则可以看出,每一个破坏脉冲V总是与前一个“0”脉冲同极性(包括B在内)。这就是说,从收到系列中可以容易地找到破坏点V,于是也断定V符号及其前面的三个符号必是连“0”符号,从而恢复四个连“0”码,再将所有-1变成+1后便得到原信息代码。HDB3码除了具有AMI
7、码的优点外,同时还将连“0”码限制在三个以内,使得接收时能保证定时信息的提取。因此,HDB3码是目前应用最为广泛的码型,A律PCM四次群以下接口码型均为HDB3码。三.仿真及结果3.1 HDB3编码运算程序代码%对一个二进制序列进行hdb3编码运算%y=hdb3(x)%x为原始序列 function y=hdb3(x) n=length(x); last_V=-1;last_one=-1;y=zeros(size(x); %初始化输出序列count=0; %连0计数器 for i=1:n if x(i)=1 %遇1则极性反转 y(i)=-last_one; last_one=y(i); cou
8、nt=0; else count=count+1; if count=4 count=0; y(i)=-last_V; %遇4连零则置为V,相邻的V极性反转 last_V=y(i); if y(i)*last_one=-1 %V与前一个非0符号必须同极性 y(i-3)=y(i); %否则置B end last_one=y(i); end endend figure(1);subplot(2,1,1); %分区绘制子图函数a=x;i=0:n-1;stairs(i,a); %画二维阶梯图axis(0 ,n,0,2); %设定当前X轴和Y轴的范围title(原码型); %为当前坐标轴添加标题xlab
9、el(x); %为x坐标轴命名ylabel(y); %为y坐标轴命名grid on %为当前的坐标轴添加主要的网格线 subplot(2,1,2);a=y;i=0:n-1;stairs(i,a);axis(0,n,-2,2);title(HDB3码型)xlabel(x);ylabel(y);grid on 3.2 HDB3解码运算程序代码%对一个hdb3码进行译码运算%y=dehdb3(x)%x为hdb3码function y=dehdb3(x)n=length(x);m=0;%计算0的个数c=1;y=zeros(size(x); for i=1:n if x(i)=0 m=m+1; end
10、if x(i)=0 if (m=2&m=3) y(i)=c; m=0; elseif m=2&i3 % if (x(i)=-x(i-4) & x(i)=x(i-3) if (x(i)=x(i-3) y(i-3)=0; y(i)=0; m=0; else y(i)=1; m=0; end elseif m=3&i4 if x(i)*x(i-4)=-1; y(i)=1; m=0; else y(i)=0; m=0; end end endendfigure(2);subplot(2,1,1); a=x;i=0:n-1;stairs(i,a);axis(0,n,-2,2);title(HDB3码型)xlabel(x);ylabel(y);grid on subplot(2,1,2);a=y;i=0:n-1;stairs(i,a);axis(0,n,0,2);title(HDB3译码码型)xlabel(x);ylabel(y);grid on 3.3 MATLAB具体操作过程(1) 运行matlab,后FileNewFuntion,在funtion中输入HDB3码的编码程序,最后保存为hdb3.m文件。(2) 同上,在funtion中输入HDB3码的解码程序,最后保存为dehdb3.m。(3) 在matlab主窗口输入x=1,0,0,0,0,1,