通信系统仿真综合课程设计-数字基带通信中线路码编码.doc

上传人:李主任 文档编号:3293598 上传时间:2019-08-08 格式:DOC 页数:15 大小:293.51KB
返回 下载 相关 举报
通信系统仿真综合课程设计-数字基带通信中线路码编码.doc_第1页
第1页 / 共15页
通信系统仿真综合课程设计-数字基带通信中线路码编码.doc_第2页
第2页 / 共15页
通信系统仿真综合课程设计-数字基带通信中线路码编码.doc_第3页
第3页 / 共15页
通信系统仿真综合课程设计-数字基带通信中线路码编码.doc_第4页
第4页 / 共15页
通信系统仿真综合课程设计-数字基带通信中线路码编码.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《通信系统仿真综合课程设计-数字基带通信中线路码编码.doc》由会员分享,可在线阅读,更多相关《通信系统仿真综合课程设计-数字基带通信中线路码编码.doc(15页珍藏版)》请在三一文库上搜索。

1、实 习 报 告 课程名称 通信系统仿真综合课程设计 实习题目 数字基带通信中线路码编码 专 业 通信工程 班 级 2班 学号 学生姓名 实习成绩 指导教师 2011年 5 月 21 日北京邮电大学世纪学院实习报告一、实习目的通过课程设计,巩固相关课程知识,增强动手能力和通信系统仿真的技能。在强调基本原理的同时,更突出设计过程的锻炼。强化学生的实践创新能力。要求学生在熟练掌握MATLAB仿真使用的基础上,学会通信仿真系统的基本设计与调试。学会查找资料、自学并结合通信原理的知识,对通信仿真系统进行性能分析。二、实习原理:1.HDB3的编码原理:HDB3编码与AMI码类似,它也是将信息符号“1”变换

2、为+1或-1的线路码,其相应的信号波形分别是幅度为+A和-A的半占空归零码,但与AMI码不同的是:HDB3码中的连“0”数被限制为小于或等于3,当信息符号中出现4个连“0”码时,就用特定码组取代,该特定码组称为取代节。为了在接收端识别出取代节,人为地在取代节中设置“破坏点”,在这些“破坏点”处传号极性交替规律受到破坏。编码规则:最多有三个连续“0”。(1)按AMI码的规则编码,即传号极性交替;(2)当连“0”个数超过3时,则将第4个“0”改为V符号,与前面一个非“0”符号极性相同,记为V或-V,称为破坏符号;(3)相邻V符号的极性必须交替出现,以确保编好的码元中无直流;当相邻V符号之前有奇数个

3、非“0”符号时,此项要求得到满足,当相邻V符号之间有偶数个非零符号时,将四连“0”的第一个“0”改为“B”,其极性与前一排“0”符号相反,第四个“0”改为“V”,极性与“B”相同。该B符号后面的非“0”符号从V符号开始再保持极性交替,其后面的非“0”符号与该B符号极性相反。(4)原来的传号与B符号合起来保持极性的交替;V符号保持极性交替。编码举例:代码:100001000011000011AMI码:+10000-10000+1-10000+1-1V符号:+1000+V-1000-V+1-1000-V+1-1B符号:+1000+V-1000-V+1-1+B00+V-1+1HDB3码:+A000+

4、V-A000-V+A-A+B00+V-A+A2.HDB3的译码原理(1)找到破坏极性反转的比特;(2)该比特以及该比特前面的三个比特译码为0;(3)幅度为+A以及-A的比特译码为1.编码举例:HDB3码:+1000+V-1000-V+1-1+B00+V-1+1信息: +A000+A-A000-A+A-A+A00+A-A+A译码: +1000+1-1000-1+1-1+100+1-1+1结果: 1000010000110000113. HDB3编码流程说明:开始(1) 产生随机二进制序列(2) 预置标志位i=0(使用for循环语句)(3) i+,如果ai=0则按当前极性交替次序变化ai,如果ai

5、=0且连“0”个数小于等于3,返回i+继续执行如果连“0”数大于3,则ai+3的极性与上一个V码极性相反。(4) 计算两个V之间的“1”的个数,若“1”的个数为偶数时,将ai设为与ai+3同极性的B码,若“1”的个数为奇数,则返回循环继续。(5) 如果i小于随机序列的长度,则循环继续,反之则结束。4HDB3编、译码流程说明(1)编码流程图标志位i产生随机二进制序列i+x(i)=1?y(i)=-last_onecount=0是否count=count+1count=4?否是y(i)=0y(i)=-last_vcount=0y(i)*last_one= -1?y(i-3) = y(i)结束i18(

6、2)译码流程图:标志位i产生随机二进制序列i+y(i)=0?z(i)=o且m=m+1y(i)=y(i-3)?y(i)*y(i-4)=1?z(i)=1m=0z(i-3)=0z(i)=0 m=0z(i)=1m=0z(i)=1M=0z(i)=0M=0结束m=0是否m=2m=3m2且m3是否是否i185.源程序为:clear all;close all;dt=0.01; %定义变量dt的值为0.01t=0:dt:5; %定义变量t的范围是05,步长0.01 s1=exp(-5*t).*cos(20*pi*t); %定义s1的函数式s2=cos(20*pi*t); %定义s2的函数式 E1=sum(s1

7、.*s1)*dt; %定义E1的函数式 P2=sum(s2.*s2)*dt/(length(t)*dt);%定义P2的函数式 f1 s1f=T2F(t,s1); %以f1和s1f为变量调用T2F文件f2 s2f=T2F(t,s2); %以f2和s2f为变量调用T2F文件df=f1(2)-f1(1); %定义df的函数式E1_f=sum(abs(s1f).2)*df; df=f2(2)-f2(1);T=t(end);P2_f=sum(abs(s2f).2)*df/T; figure(1) %生成图像figure(1)subplot(211)plot(t,s1) %定义生图像格式为两行一列,并在图

8、1的位置显示s1的图像xlabel(t);%定义x轴为tylabel(s1(t);%定义y轴为s1(t)subplot(212)plot(t,s2) %在图像2的位置显示s2的图像xlabel(t); %定义x轴为tylabel(s2(t);%定义y轴为s2(t)调用的子程序为:%this is a function using the FFT function to calculate a signals Fourier Translationfunctionf,sf=T2F(t,st)%input is the time and the signal vectors,the length

9、of time must greater than 2%output is the frequency and the signal spectrumdt=t(2)-t(1); %定义dt的值为0.01T=t(end); %定义T的值为5df=1/T; %定义df的值为1/TN=length(st); %定义N的为st的长度f=-N/2*df:df:N/2*df-df; %定义f的函数式sf=fft(st);%定义sf为st的傅里叶变换sf=T/N*fftshift(sf); %对sf的快速傅里叶变换进行修正并乘以T/N显示图形如下:三、试验环境与设备PC机一台MATLAB /simulink

10、软件四、Matlab仿真通过Matlab仿真HDB3编译码过程通过四个部分完成:用给定序列进行Hdb3编码程序测试,随后用产生的随机二进制序列进行Hdb3编码,用给定的序列进行Hdb3译码程序测试,最后合成为随机二进制序列编译码的总程序。(1)Hdb3编码测试程序function y=hdb3(x)clear allclose alllast_one=-1; %设置标志位,并将-1赋值给last_onelast_v=-1; %设置标志位,并将-1赋值给last_vcount=0; %count记零的个数, 此处把零赋值给countx=1 0 0 0 0 1 0 0 0 0 1 1 0 0 0

11、0 1 1;%定义二进制序列xy=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;%定义二进制序列yfor i=1:18 %使用for循环语句,i的范围是1到18,步长为1 if x(i)=1 %如果x等于1 y(i)=-last_one; %把-last_one赋值给y(i) count=0; %将count清零 last_one=y(i); %把y(i)赋值给last_one else count=count+1; %否则把count+1赋值给count if count=4 %如果count不等于4 y(i)=0; %把0赋值给y(i) else y(i)=-la

12、st_v; %否则把-last_v赋值给y(i) count=0; %将count清零 last_v=y(i); %把y(i)赋值给last_v if y(i)*last_one=-1; %如果y(i)与前一位非零数符号相反 y(i-3)=y(i); %把y(i)赋值给y(i-3) end last_one=y(i); %把y(i)赋值给last_one end endendsubplot(211);stem(x); %设置一个2行1列的图像,并将x的图像显示在1位置subplot(212);stem(y); % 将y的图像显示在2位置显示结果如下图所示:(2)随机产生18位二进制序列并进行h

13、db3编码程序如下function y=hdb3(x)clear allclose alllast_one=-1; %设置标志位,并将-1赋值给last_onelast_v=-1; %设置标志位,并将-1赋值给last_vcount=0; %count记零的个数,此处把零赋值给countm=rand(1,18); %把一组1行18列的随机数赋值给mx=round(m); %把m取四舍五入的整数值赋值给xy=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;%定义二进制序列yfor i=1:18 %使用for循环语句,i的范围是1到18,步长为1 if x(i)=1 %如

14、果x(i)等于1 y(i)=-last_one; %把-last_one赋值给y(i) count=0; %将count清零 last_one=y(i); %把y(i)赋值给last_one else count=count+1; %否则把count+1赋值给count if count=4 %如果count不等于4 y(i)=0; %把0赋值给y(i) else y(i)=-last_v; %否则把-last_v赋值给y(i) count=0; %将count清零 last_v=y(i); %把y(i)赋值给last_v if y(i)*last_one=-1 %如果y(i)与前一位非零数符

15、号相反 y(i-3)=y(i); %把y(i)赋值给y(i-3) end last_one=y(i); %把y(i)赋值给last_one end endendsubplot(211);stem(x); %设置一个2行1列的图像,并将x的图像显示在1位置subplot(212);stem(y); %将y的图像显示在2位置显示结果如下图所示:(3)Hdb3译码测试程序如下:function z=dehdb3(y);y=1 0 0 0 1 -1 0 0 0 -1 1 -1 1 0 0 1 -1 1;%定义二进制序列yz=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; %

16、定义二进制序列zm=0; %m为计0的个数,此处将m赋值为0for i=1:18 %使用for循环语句,i的范围是从1到18,步长为1 if y(i)=0 %如果y(i)的值为0 z(i)=0; %将0赋值给z(i) m=m+1;%将m+1赋值给m end if y(i)=0 %如果y(i)的值不等于0,即y(i)=1 if m=2&m=3%如果m不等于2且m不等于3 z(i)=1; %将z(i)赋值为1 m=0;%将m清零 else if m=2&i3 %如果m的值为2且i大于3 if y(i)=y(i-3) %如果y(i)=y(i-3) z(i-3)=0; %将0赋值给z(i-3) z(i

17、)=0; %将0赋值给z(i) m=0; %将m清零 else z(i)=1; %否则将1赋值给z(i) m=0; %将m清零 end else if m=3&i4 %如果m的值为3 if y(i)*y(i-4)=1 %如果y(i)与y(i-4)同号 z(i)=0; %将0赋值给z(i) m=0; %将m清零 else z(i)=1; %否则将1赋值给z(i) m=0; %将m清零 end end end end endendsubplot(211);stem(y); %设置一个2行1列的图像,并将y的图像显示在1位置subplot(212);stem(z); %将z的图像显示在2位置显示结果

18、如下图所示:(4)Hdb3编译码总程序如下:function y=hdb3(x) clear allclose alllast_one=-1; %设置标志位,并将-1赋值 给last_onelast_v=-1; %设置标志位,并将-1赋值给Last_vcount=0; %count用于计0的个数,此处将count赋值为0m=rand(1,18); %产生一个1行18列的随机二进制序列mx=round(m); % 将m序列进行四舍五入取整后赋值给xy=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;%定义二进制序列yfor i=1:18 %使用for循环语句,i的范围由

19、1到18,步长为1 if x(i)=1 %如果x(i)等于1 y(i)=-last_one; %将-last_one赋值给y(i) count=0; %将count清零 last_one=y(i); %将y(i)的值赋给last_one else count=count+1; %将count自加1 if count=4 %如果count不等于4 y(i)=0; %将y(i)赋值为0 else y(i)=-last_v; %否则将-last_v赋值给y(i) count=0; %将count清零 last_v=y(i); %将y(i)的值赋值给last_v if y(i)*last_one=-1

20、 %如果y(i)与last_one同号 y(i-3)=y(i); %则将y(i)的值赋值给y(i-3) end last_one=y(i); %将y(i)赋值给last_one end endendsubplot(311);stem(x,fill);title(随机二进制序列);%生成一个3行1列的图像,并将x显示在图像1的位置,标题为随即二进制序列subplot(312);stem(y,fill);title(hdb编码值); %将y显示在图像2的位置,标题为hdb3编码值z=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;%定义数列zn=0; %n用于计零的个数,

21、此处将n赋值为0for i=1:18 %使用for循环语句,i的范围由1到18,步长为1 if y(i)=0 %如果y(i)的值为0 z(i)=0; %将0赋值给z(i) n=n+1; %将n+1赋值给n end if y(i)=0 %如果y(i)的值不等于0,即y(i)=1 if n=2&n=3 %如果n不等于2且n不等于3 z(i)=1; %将z(i)赋值为1 n=0; % 将n清零 else if n=2&i3 %如果n的值为2且i大于3 if y(i)=y(i-3) %如果y(i)=y(i-3) z(i-3)=0; %将0赋值给z(i-3) z(i)=0; %将0赋值给z(i) els

22、e z(i)=1; %否则将1赋值给z(i) n=0; %将n清零 end else if n=3 %如果n的值为3 if y(i)*y(i-4)=1 %如果y(i)与y(i-4)同号 z(i)=0; %否则将1赋值给z(i) n=0; %将n清零 else z(i)=1; %否则将1赋值给z(i) n=0; %将n清零 end end end end endendsubplot(313);stem(z,fill);title(hdb3译码值);%在图像3的位置显示z,标题为hdb3译码值实验结果显示如下图所示:五、结果分析由HDB3编程原理可得结论:随机二进制序列:x=0 1 0 0 0 0

23、 0 1 0 0 0 1 1 0 0 1 0 1HDB3编码值: y=0 1 0 0 0 1 0 -1 0 0 0 1 -1 0 0 1 0 -1HDB3译码值: z=0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1六、实习心得经过为期三周的小学期,我们迎来了实习的尾声。本次小学期我要完成的实验内容是题目一,使用MATLAB完成数字基带通信中线路码编码:HDB3编译码。我们以小组为单位完成实验,在老师给的关于MATLAB内容的课件的基础上,关于HDB3从编码到译码,我们都需要独立思考以及团队合作,遇到不知道或不懂的问题就需要上网查询资料。给我们很大的学习的锻炼空间。我所完

24、成的实验要求我们能够熟悉掌握HDB3编码原理、译码原理以及MATLAB的一些所需的函数命令。在编程过程中,我深刻的体会到自己动手动脑的意义所在。例如我们的程序编程中要产生随机二进制序列,起初我并不知道此处该用什么函数,所以上网搜寻,发现应为rand,以及对数字四舍五入取整所用的round函数。在这样频繁的发现问题、解决问题的情况下,我对MATLAB有了更加深刻的理解。我了解到 MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。它具有强大的数值计算和图示能力,附加丰富的工具箱扩展了 MATLAB 环境,以解决这些应用领域

25、内特定类型的问题。实验中,随机产生18位二进制序列并进行hdb3编码程序进行的还是比较顺利,及即将源码中的1进行+1、-1的交替,并将四个连0的第四个0变为V。编程原理很简单,我们只是要熟悉新的函数。在译码过程中,显然没有编码那样顺利,经过两次答疑课,我们慢慢的有了头绪。其实原理很简单,只要将+1或-1还原成1或0。但是初期我们对MATLAB的函数命令不够熟悉,走了一些弯路,此刻充分体现出小组的团队合作精神,我们研究探讨,遇到问题上网搜寻答案,终于编程出一个准确的、完整的HDB3编译码的程序。这次实习真的很锻炼我们自学的能力,在加深理解MATLAB的基本原理的基础上,更加重要的是编程的过程。实习充分满足了我们求知的渴望,给了我们自由进步的空间,我也深深的体会做任何事都要大胆地去尝试,哪怕只有一丁点的可能。我希望今后学校可以给我们创造更多的平台,让我们挑战自己,创新,发展。在不足中改善进取! 指导教师签字: 年 月 日13

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1