- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
《通信原理》大作业
设计题目: 信道失真 HDB3码的调制解调
一、幅频失真与相频失真
实验要求:
利用MATLAB仿真失真波形。
原理简述
恒参信道的主要传输特性通常可以用其幅频率特性和相频特性来描述。无失真传输要求振幅特性与频率无关,其传输群时延与频率无关,等于常数。然而实际的信道往往都不能满足这些要求。所以会产生以下两种失真:
①幅度失真:是指信号中不同频率的分量分别受到信道不同的衰减。它对模拟信道影响较大,导致信号波形畸变,输出信噪比下降。
②相位失真是指信号中不同频率分量分别受到信道不同的时延,它对数字通信影响大,会引起严重的码间干扰,造成误码。
假定一信号为y=sint+sin(3t),经过某对角频率为1的正弦分量增益为1,而对角频率为3的正弦分量增益为0.5的系统,则输出信号为y=sint+0.5sin3t,即可模拟幅度失真。
经过某对角频率为3的正弦分量相移是π,对其他参数无影响的系统,输出为y=sint+sin(3t+π),即可模拟相频失真。
波形仿真
原始信号
y ? sint ? sin3t
幅度失真信号
y sint 0.5sin3t
相位失真信号
y sint sin(3t )
结论
若信道的振幅-频率特性不理想,则信号发生的失真称为频率失真。信号的频率失真会使信号的波形产生畸变,可能引起相邻码元波形之间发送部分重叠,造成码间串扰。
信道的相位特性不理想将使信号产生相位失真,它也会引起码间串扰,使误码率增大。
二、HDB3码的编码和解码
实验要求
掌握HDB3码的编码规则,并利用MATLAB仿真HDB3码的编码和译码。
原理简述
三阶高密度双极性码(简称:HDB3码)是一种适用于基带传输的编码方式,它是为了克服AMI码的缺点而出现的,具有能量分散,抗破坏性强等特点。
编码规则:
先将消息代码变换成AMI码,若AMI码中连0的个数小于
4,此时的AMI码就是HDB3码;
若AMI码中连0的个数大于3,则将每4个连0小段的第4个
0变换成与前一个非0符号(+1或-1)同极性的符号,用表示(+1+,-1-);
为了不破坏极性交替反转,当相邻符号之间有偶数个非0符号时,再将该小段的第1个0变换成+B或-B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。
例如:
消息代码:100001000011000011AMI码:+10000-10000+1-10000+1-1
HDB3码:+1000+V-1000-V+1-1+B00+V-1+1
解码规则:
若3连“0前”后非零脉冲同极性,则将最后一个非零元素译为
零,如+1000+1 就应该译成“10000”;若2连“0”前后非零脉冲极性相同,则两零前后都译为零,如-100-1,就应该译为0000。
再将所有的-1变换成+1后,就可以得到原消息代码。
流程图
波形仿真
如图下图所示:
第一张为原波形,第二张为HDB3码,第三张为HDB3码译码后的波形。
附:
MATLAB代码
xn=[101000110101111101011];
yn=xn;num=0;
for k=1:length(xn)ifxn(k)==1
num=num+1;
ifnum/2==fix(num/2)yn(k)=1;
end
elseend
yn(k)=-1;
endnum=0;yh=yn;sign=0;
V=zeros(1,length(yn));B=zeros(1,length(yn));fork=1:length(yn)
ifyn(k)==0
num=num+1;ifnum==4num=0;
yh(k)=1*yh(k-4);
V(k)=yh(k);
ifyh(k)==signyh(k)=-1*yh(k);
yh(k-3)=yh(k);
B(k-3)=yh(k);
V(k)=yh(k);
yh(k+1:length(yn))=-1*yh(k+1:length(yn));
endsign=yh(k);
endelse
num=0;
endend
re=[xn,yn,yh,V,B];
input=yh;decode=input;sign=0;
for k=1:length(yh)ifinput(k)~=0
ifsign==yh(k)
decode(k-3:k)=[0000];
e
文档评论(0)