通信系统仿真综合课程设计数字基带通信中线路码编码_第1页
通信系统仿真综合课程设计数字基带通信中线路码编码_第2页
通信系统仿真综合课程设计数字基带通信中线路码编码_第3页
通信系统仿真综合课程设计数字基带通信中线路码编码_第4页
通信系统仿真综合课程设计数字基带通信中线路码编码_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、满足,当相邻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+v-a000-v+a-a+b

4、00+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=0且连“0”个数小于等于3

5、,返回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(2)译码流程图:标志位i产生

6、随机二进制序列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.*s1)*dt; %定义e

7、1的函数式 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) %定义生图像格式为两行一列,并在图1的位置显示s1的图像xla

8、bel(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 of time must g

9、reater 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软件四、matlab仿真通过

10、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 0 1 1;%定义二进制序列

11、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)=-last_v; %否则把-las

12、t_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位二进制序列并进行hdb3编码程序如下funct

13、ion 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 %如果x(i)等于1 y(i)=

14、-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)与前一位非零数符号相反 y(i-3)=y(i

15、); %把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 ; %定义二进制序列zm=0; %

16、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)=0; %将0赋值给z(i

17、) 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位置显示结果如下图所示:(4)hdb3编

18、译码总程序如下: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的范围由1到18,步长为1 if x

19、(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 %如果y(i)与last_

20、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用于计零的个数,此处将n赋值为0for i=

21、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) else z(i)=1; %否则将

22、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 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从编码到译码,我们都需要独立思

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论