通信原理课设.docx
《通信原理课设.docx》由会员分享,可在线阅读,更多相关《通信原理课设.docx(15页珍藏版)》请在冰豆网上搜索。
通信原理课设
成绩评定表
学生姓名
范耿文
班级学号
1103030221
专业
电子信息工程
课程设计题目
HDB3码编码
评
语
组长签字:
成绩
日期
2014年3月19日
课程设计任务书
学院
信息科学与工程
专业
电子信息工程
学生姓名
范耿文
班级学号
1103030221
课程设计题目
HDB3码编码
实践教学要求与任务:
利用MATLAB/Simulink进行编程和仿真,仿真的内容可以是关于信源、信源编码、模拟调制、数字调制、多元调制、差错控制、多址技术、信道仿真及具体通信电路的仿真实现。
也可以用MATLAB编程对通信的某一具体环节进行仿真。
工作计划与进度安排:
2014年03月8日选题目查阅资料
2014年03月9日编写软件源程序或建立仿真模块图
2014年03月10日调试程序或仿真模型
2014年03月11日性能分析及验收
2014年03月12日撰写课程设计报告、答辩
指导教师:
2014年3月8日
专业负责人:
2014年3月8日
学院教学副院长:
2014年3月8日
摘要
HDB3码编码规则
首先将消息代码变换成AMI码;然后检查AMI码中的连0情况,当无4个或4个以上的连0串时,则保持AMI的形式不变;若出现4个或4个以上连0串时,则将1后的第4个0变为与前一非0符号(+1或-1)同极性的符号,用V表示(+1记为+V,-1记为-V);最后检查相邻V符号间的非0符号的个数是否为偶数,若为偶数,则再将当前的V符号的前一非0符号后的第1个0变为+B或-B符号,且B的极性与前一非0符号的极性相反,并使后面的非0符号从V符号开始再交替变化
关键词:
HDB3码MATLAB编码原则V码B码
目录
1课程设计目的…………………………………………………………1
2课程设计要求…………………………………………………………1
3相关知识………………………………………………………………1
4课程设计分析…………………………………………………………3
5仿真……………………………………………………………………9
6结果分析………………………………………………………………10
7参考文献……………………………………………………………12
一、设计目的
1.综合应用《Matlab编程与系统仿真》、《信号与系统》、《现代通信原理》等多门课程知识,使学生建立通信系统的整体概念;
2.培养学生系统设计与系统开发的思想;
3.培养学生利用软件进行通信仿真的能力;
4.培养学生独立动手完成课题设计项目的能力;
5.培养学生查找相关资料的能力。
二、设计要求
1.每人独立完成一个题目
2.对通信系统有整体的较深入的理解, 深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图
3.提出仿真方案;
4.完成仿真软件的编制
5.仿真软件的演示
6.提交详细的设计报告
三、相关知识
在实际的传输系统中,并不是所有的代码电气波形都可以信道中传输。
含有直流分量和较丰富的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为它有可能造成信号的严重的畸变。
在传输码(或称线路吗)的结构将取决于实际信道特性和系统的工作条件。
通常,传输码的结构应具有以下的特性:
(1)相应的基带信号无直流分理,且低频分量少:
(2)便于从信号中提取定时信息:
(3)信号中高频分应尽量少以节省传输频带并减少码间串扰。
(4)不受信号源统计特性影响,即能适应于信息源变化:
(5)具有内在的检错能力,传输的码型应具有一定的规律性,以便利用这一规律性进行宏观监测:
(6)编译码设备要尽可能简单,等等。
满足以上特性的传输码型种类繁多,这里使用HDB3。
要了解HDB3码的编码规则,首先要知道AMI码的构成规则,AMI码就是把单极性脉冲序列中相邻的“1”码(即正脉冲)变为极性交替的正、负脉冲。
将“0”码保持不变,把“1”码变为+1、-1交替的脉冲。
如:
NRZ码:
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
HBD3码(3ndOrderHighDensityBipolar)的全称是三阶高密度双极性码,它是AMI码的一种改进型,改进目的是为了保持AMI码的优点而克服其缺点,使连“0”个数不超过3个。
其编码规则:
(1)检查消息码中连“0”的个数。
当连“0”数目小于等于3时,HBD3码与AMI码一样(“1”交替的变换为“+1”和“-1”,“0”保持不变)。
(2)当连“0”数目超过3时,将每4个连“0”化作一小节,定义为“B00V"称为破坏节,其中V称为破坏脉冲,而B称为调节脉冲;
(3)V与前一个相邻的非“0”脉冲的极性相同(这破坏了极性交替的规则,所以V称破坏脉冲),并且要求相邻的V码之间极性必须交替。
V的取值为“+1”或“-1”;
(4)B的取值可选0、+1或-1,,以使V同时满足(3)中的两个要求;
(5)V码后面的传号码极性也要交替。
例如:
消息码:
1000010000110000000011
AMI码:
-10000+10000-1+100000000-1+1
HDB3码:
-1000-V+1000+V-1+1-B00-V+B00+V-1+1
其中的±B脉冲和±V脉冲与±1脉冲波形相同,用V或B表示的目的是为了示意其中的该非“0”码是由原信码的“0”变换而来的。
当相邻两个V码之间有奇数个“1”码时,能保证V码满足(3)的要求,B取“0”;当相邻两个V码之间有偶数个“1”码时,不能保证V码极性交替,B取“+1”或“-1”,B码的符号与前相邻“1”相反,而其后面的V码与B码极性相同。
四、课程设计分析
(1)实验编码原理框图如下所示:
(1)编码框图
以下是V码以及B码产生的框图:
(2)V码产生单元的工作流程图
(3)B码产生单元的工作流程图
译码规则:
在接收端,将接收到的HDB3码序列恢复为原输入二进制数字信息序列的过程称为译码。
对HDB3码而言,译码就是找到编码时插入的特殊序列并将它恢复为0000。
根据编码原则,HDB3的译码可分为三个步骤:
(1)根据“V”的极性特点,找出特殊序列。
由于编码时,每个“V”的极性都与其前一个“1”码的极性相同,所以,在接收序列中一旦出现连续两个同极性码时,两个同极性码的后一个即为“V”,此“V”与其前的三位码就是一个特殊序列;
(2)将所有的特殊序列都恢复为“0000”;
(3)将正、负脉冲都恢复为“1”码,零电平恢复为“0”码。
下图是译码的框图:
(4)译码框图
(2)程序源代码
globaldtdftfN
closeall
N=2^13;%采样点数
L=8;%每码元的采样点数
M=N/L;%码元数
Rb=2;
Ts=0.5;%码元宽度是0.5us
dt=Ts/L;
df=1/(N*dt);%MHz
RT=0.5;%占空比
T=N*dt;%截短时间
Bs=N*df/2;%系统带宽
t=[-T/2+dt/2:
dt:
T/2];%时域横坐标
f=[-Bs+df/2:
df:
Bs];%频域横坐标
figure
(1)
set(1,'Position',[10,50,300,200])
%设定窗口位置及大小
figure
(2)
set(2,'Position',[350,50,300,200])
%设定窗口位置及大小
EPAMI=zeros(size(f));
EPHDB=zeros(size(f));
forii=1:
8
ami=zeros(1,M);
hdb=zeros(1,M);
a=round(rand(1,M));
b=3;%表示0000之间循环个数
c=-1;%记载相邻V之间的1元素个数
sign1=-1;%标志前一个信号
sign2=-1;%标志前一个信号
forii=1:
M
ifa(ii)==1
sign1=0-sign1;
ami(ii)=sign1;
end
end
forii=1:
M
ifb==3%表示非0000
ifa(ii)==1
sign2=0-sign2;
hdb(ii)=sign2;
ifc>=0%表示不是第一个0000
c=c+1;%用来计算相邻v之间的非0元素个数
end
elseifii<=M-3&a(ii)+a(ii+1)+a(ii+2)+a(ii+3)==0
ifmod(c,2)==1%000V
hdb(ii+3)=sign2;
else%B00V
sign2=0-sign2;
hdb(ii)=sign2;
hdb(ii+3)=sign2;
end
c=0;
b=0;
end
elseifb<3%对0000的循环
b=b+1;
end
end
fori=[1:
L]
ami1(i+[0:
M-1]*L)=ami;
hdb1(i+[0:
M-1]*L)=hdb;
end
AMI=T2F(ami1);
PAMI=AMI.*conj(AMI)/T;
HDB=T2F(hdb1);
PHDB=HDB.*conj(HDB)/T;
EPAMI=(EPAMI*(ii-1)+PAMI)/ii;
EPHDB=(EPHDB*(ii-1)+PHDB)/ii;
figure
(1)
aa=30+10*log10(EPAMI+eps);%加eps以避免除以零
bb=30+10*log10(EPHDB+eps);
plot(f,aa,'g');
grid
axis([-8,+8,-80,80])
xlabel('f(MHz)')
ylabel('AMIPs(f)(dBm/MHz)')
figure
(2)
plot(f,bb,'b');
grid
axis([-8,+8,-80,80])
xlabel('f(MHz)')
ylabel('HDBPs(f)(dBm/MHz)')
figure(3)
subplot(3,1,1)
tt=[1:
40];
stem(tt,a(1:
40),'g')
title('原始RNZ信号')
subplot(3,1,2)
stem(tt,ami(1:
40),'g')
title('AMI信号')
subplot(3,1,3)
stem(tt,hdb(1:
40),'g')
title('HDB码')
end
%将下面的代码保存在t2f.m文件中
functionX=t2f(x)
globaldtdfNtfT
%X=t2f(x)
%x为时域的取样值矢量
%X为x的傅氏变换
%X与x长度相同,并为2的整幂。
%本函数需要一个全局变量dt(时域取样间隔)
H=fft(x);
X=[H(N/2+1:
N),H(1:
N/2)]*dt;
end
五 仿真图
六结果分析
HDB3(HighDensityBinary-3)码的全称是3阶高密度双极性码。
它是AMI码的一种改进型,主要是为了克服AMI码中连“0”时所带来的提取定时信息的困难。
HDB3编码规则是:
先把消息代码中的“1”交替变成“+1”和“-1”,“0”仍然保持“0”不变的AMI码,然后去检查AMI码的连“0”的情况,当没有4个和4个以上连“0”串时,这样的AMI码就是HDB3码;当出现4个和4个以上连“0”串时,则将每4个连“0”的小段的第4个“0”变换成与其前一个非零符号相同极型的符号,并用“+V”和“-V”表示.若此“V”使后面的序列破坏了“极性交替反转”的原则,则将出现直流分量。
故需要保证相邻“V”的符号也是极性相反,所以,当不满足V也极性相反时,将这个连“0”码无串的等一个“0”变成“-B”和“+B”。
“B”的符号与前一个非“0”码的符号相反,并且让后面的非“0”码元符号从“V”码开始再交替变化。
HDB3码译码比较容易,从收到的符号序列中可以容易地找到破坏点V,于是也断定V符号及其前面3个符号必是连0符号,从而恢复4个连0码,再将所有的-1变成+1后便得到原消息代码。
下面用例题来进一步说明编码与译码的原理:
例:
求序列101100000100000000对应的HDB3码。
编码译码步骤如下:
找出四连0序列;
用特殊序列代替连0序列,第一个特殊序列可任意选择如选择100V。
将“1”和“V”标上极性“+1”或“-1”。
输入数据中的“1”和特殊序列中的“1”作为一个整体极性交替,第一个“1”的极性可任意选择如选择“-1”。
第一个特殊序列中的“V“与其前第一个“1”的极性相同,后面的“V”依次极性交替。
根据上面步骤列出系列各式以及画图,实现HDB3码的编码。
通过译码原理可知:
V码与B码的极性相同,我们可以对这个输出码从后开始译码,自然而然的可以得到原输入的序列,此时,编码与译码就完成了。
另外说明:
1.由于第一个特殊序和第一个“1”的极性均可任意选择,所以同一数字信息序列的HDB3可有四种不同的形式。
2.当编码的序列足够长时,我们的编码与译码过程中更容易得到规律。
以上的程序便是综合了HDB3的编码译码以及对于其仿真的全部过程,此是经过了本组成员的反复修改最终制作而成,对于HDB3的编译码有了更加深入的了解。
七参考资料
1.郭文彬,桑林编著,通信原理-基于Matlab的计算机仿真,北京邮电大学出版社,2006
2.曹志刚,钱亚生,现代通信原理,清华大学出版社,2002年
3.郭仕剑等,《MATLAB7.x数字信号处理》,人民邮电出版社,2006年
4.张辉,曹丽娜编著,通信原理学习指导,西安电子科技大学,2003