- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
南华大学电气工程学院
通信原理课程设计
设计题目:数字基带信号HDB3码的译码器设计
班 级: 电 子 1002 班
学生姓名: 王 超
学 号: 20104470245
指导教师: 李 圣
摘 要
在数字基带信号传输中,HDB3码(三阶高密度双极性码)是常用的传输码型之一。HDB3码是AMI码的一种改进型,它既保留了AMI码无直流成分的优点,又解决了原信码出现长连“0”串的问题,使连“0”个数不超过3个。本设计针对数字基带传输系统中HDB3码的特点,使用MATLAB编程实现HDB3码的译码功能和其码型图。
关键词:数字基带传输;HDB3码(三阶高密度双极性码);MATLAB。
目录
1、绪论 1
2、设计原理及方案 1
2.1数字基带通信系统 1
2.2 HDB3编译码 1
2.3设计方案 2
2.3.1 编码程序 2
2.3.2 译码程序 3
2.3.3 绘图程序 3
3、程序调试及结果分析 4
4、总结与体会 9
5、参考文献 10
1、2、HDB3码的全称是3阶高密度双极性码,它是AMI码的一种改进型, 其目的是为了保持AMI码的优点而克服其缺点, 使连“0”个数不超过3个。其编码规则如下:
(1) 当信码的连“0”个数不超过3时,仍按AMI码的规则编,即传号极性交替;
(2)当连“0”个数超过3时,则将第4个“0”改为非“0”脉冲,记为+V或-V,称之为破坏脉冲。相邻V码的极性必须交替出现,以确保编好的码中无直流;
(3)为了便于识别, V码的极性应与其前一个非“0”脉冲的极性相同,否则,将四连“0”的第一个“0”更改为与该破坏脉冲相同极性的脉冲,并记为+B或-B;
(4) 破坏脉冲之后的传号码极性也要交替。 例如:
代 码: 1000 0 1000 0 1 1 000 0 l 1
AMI 码: -1000 0 +1000 0 -1 +1 000 0 -1 +1
HDB3码: -1000 -V +1000 +V -1 +1 -B00 -V +1 -1
其中的±V脉冲和±B脉冲与±1脉冲波形相同,用V或B符号的目的是为了示意是将原信码的“0”变换成“1”码。
虽然HDB3码的编码规则比较复杂,但译码却比较简单。 从上述原理看出,每一个破坏符号V总是与前一非0符号同极性(包括B在内)。
这就是说,从收到的符号序列中可以容易地找到破坏点V,于是也断定V符号及其前面的3个符号必是连0符号,从而恢复4个连0码,再将所有-1变成+1后便得到原消息代码。HDB3码保持了AMI码的优点外,还将连“0”码限制在3个以内,故有利于定时信号的提取。
2.3 设计方案
2.3.1编码程序
编码程序主要分为四部分。
第一部分:采集原码。定义一个数组,提示输入一组二进制码,将这组二进制码存在这个数组内。用length函数来记录序列的长度,用于后面程序的执行。
部分程序如下所示:
hdb=input(以数组形式输入原码(即在[]里输入):);
yuanma=hdb; %输出原码
yuanma
a=length(hdb);
第二部分:检测1。检测出原码中1,然后每检测到一个1变一次符号。
部分程序如下所示:
l=1;
for n=1:a
if hdb(n)==1 ;
l=-l;
hdb(n)=l;
end
end
第三部分:检测连0个数。检测到如果出现连续四个0的话,将第四个0变为V,但是数组里面无法出现V,则用2暂时代替。用m记录连续四个0前的非零码元的符号,用2*m即可分出V的正负。
部分程序如下所示:
m=-1; %符号初始化
for k=1:a-3
if abs(hdb(k))==1
m=hdb(k);
end
if hdb(k)==0
if hdb(k+1)==0
if hdb(k+2)==0
if hdb(k+3)==0
hdb(k+3)=2*m;
end
end
end
end
文档评论(0)