《通信原理》大作业分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《通信原理》大作业设计题目:信道失真 HDB3码的调制解调
一、幅频失真与相频失真
1.实验要求:
利用MATLAB仿真失真波形。
2.原理简述
恒参信道的主要传输特性通常可以用其幅频率特性和相频特性来描述。无失真传输要求振幅特性与频率无关,其传输群时延与频率无关,等于常数。然而实际的信道往往都不能满足这些要求。所以会产生以下两种失真:
①幅度失真:是指信号中不同频率的分量分别受到信道不同的衰减。它对模拟信道影响较大,导致信号波形畸变,输出信噪比下降。
②相位失真是指信号中不同频率分量分别受到信道不同的时延,它对数字通信影响大,会引起严重的码间干扰,造成误码。
假定一信号为y=sint+sin(3t),经过某对角频率为1的正弦分量增益为1,而对角频率为3的正弦分量增益为0.5的系统,则输出信号为y=sint+0.5sin3t,即可模拟幅度失真。
经过某对角频率为3的正弦分量相移是π,对其他参数无影响的系统,输出为y=sint+sin(3t+π),即可模拟相频失真。
3.波形仿真
(1)原始信号
t
t3
=
y+
s i n
s i n
(2)幅度失真信号
t3
t y+
=
sin
sin
.5
(3)相位失真信号
t
+ =t
yπ
+
sin
)
3
(
sin
4.结论
若信道的振幅-频率特性不理想,则信号发生的失真称为频率失真。信号的频率失真会使信号的波形产生畸变,可能引起相邻码元波形之间发送部分重叠,造成码间串扰。
信道的相位特性不理想将使信号产生相位失真,它也会引起码间串扰,使误码率增大。
二、HDB3码的编码和解码
1.实验要求
掌握HDB3码的编码规则,并利用MATLAB仿真HDB3码的编码和译码。
2.原理简述
三阶高密度双极性码(简称:HDB3码)是一种适用于基带传输的编码方式,它是为了克服AMI码的缺点而出现的,具有能量分散,抗破坏性强等特点。
编码规则:
(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,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。
例如:
消息代码: 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1
AMI码: +1 0 0 0 0 -1 0 0 0 0 +1 -1 0 0 0 0 +1 -1
HDB3码: +1 0 0 0 +V -1 0 0 0 -V +1 -1 +B 0 0 +V -1 +1 解码规则:
(1) 若3连“0”前后非零脉冲同极性,则将最后一个非零元素译为
零,如+1000+1 就应该译成“10000”;若2连“0”前后非零脉冲极性相同,则两零前后都译为零,如-100-1,就应该译为0000。
(2) 再将所有的-1变换成+1后,就可以得到原消息代码。
3.流程图
5.波形仿真
如图下图所示:
第一张为原波形,第二张为HDB3码,第三张为HDB3码译码后的波形。
附:
MATLAB代码
xn=[1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1];
yn=xn;
num=0;
for k=1:length(xn)
if xn(k)==1
num=num+1;
if num/2 == fix(num/2)
yn(k)=1;
else
yn(k)=-1;
end
end
end
num=0;
yh=yn;
sign=0;
V=zeros(1,length(yn));
B=zeros(1,length(yn));
for k=1:length(yn)
if yn(k)==0
num=num+1;
if num==4
num=0;
yh(k)=1*yh(k-4);
V(k)=yh(k);
if yh(k)==sign
yh(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));
end
sign=yh(k);
end
else
num=0;
end
end
re=[xn',yn',yh',V',B'];
input=yh;
decode=input;
sign=0;
for k=1:length(yh)
if input(k) ~= 0
if sign==yh(k)
decode(k-3:k)=[0 0 0 0];
end
sign=input(k);
end
end
decode=abs(decode);
error=sum([xn'-decode']);
subplot(3,1,1);
stairs([0:length(xn)-1],xn);
axis([0 length(xn) -2 2]);