您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 实验三-PCM编码译码
第1页共10页实验三PCM编码译码仿真学院(院、系)专业班通信原理课程学号姓名实验日期教师评定一、实验目的1.熟悉PCM(脉冲编码调制)原理。2.掌握编写PCM(脉冲编码调制)程序的要点。3.掌握使用Matlab调制仿真的要点。二、实验内容1.根据PCM(脉冲编码调制)原理,设计源程序代码。2.通过Matlab软件仿真给定模拟信号编码后的波形。3.对比给的原始信号波形和译码后的波形。三、实验原理1.脉冲编码调制脉冲编码调制在通信系统中是一种对模拟信号数字化的取样技术,将模拟信号变换为数字信号的编码方式。PCM的实现主要包括三个步骤完成:抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。根据CCITT的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为A律和律方式,本设计采用了A律方式。由于A律压缩实现复杂,常使用13折线法编码,采用非均匀量化PCM编码示意图如图1所示图1PCM编码示意图第2页共10页2.抽样:在一系列离散点上,对信号抽取样值称为抽样。其模拟信号的抽样过程如图2所示。图2模拟信号的抽样过程图3.非均匀量化17/86/85/84/83/82/81/8016181412112811x8段7654321y未压缩图3非均匀13折线压缩特性曲线第3页共10页1段2段3段4段6段5段7段8段321161814112164112811281641321161x图4非均匀13折线编码原理图在实际应用中,量化器设计好后,量化电平数M和量化间隔都是确定的。量化噪声Nq也是确定的。但是,信号的强度会影响信号量噪比,当信号小时,信号量噪比也就越小。因此,均匀量化器对小输入信号很不利,为了克服这个缺点,以改善小信号时的信号量噪比,采用下述的非均匀量化方式。在非均匀量化中,量化间隔是随信号抽样值的不同而变化的。信号抽样值小时,量化间隔也小;信号抽样值大时,量化间隔也大,非均匀量化的实现方法有两种:一种是北美和日本采用的μ律压扩,一种是欧洲和我国采用的A律压扩,常采用的近似算法是13折线法,该算法的压缩特性图如图3所示。信号小时,Δ小,信号大时,Δ大。一般语音信号,信号幅度小出现的概率大,信号幅度大出现的概率小。通过非均匀量化,使得平均信噪比增大。13折线A律PCM的非线性编码方法具体过程如表1所示。在13折线法中采用的折叠码有8位。其中一位c1表示量化值的极性正负,后7位分为段落码和段内码两部分。用于表示量化值的绝对值。其中第2~4位(c2~c4)是段落码,5~8位(c5~c8)为段内码,可以表示每一段落内的16种量化电平。段内码代表的16个量化电平是均匀分布的,因此,这7位码总共能表示27=128种量化值。编码方法如下所示:极性码段落码段内码C1C2C3C4C5C6C7C8(1)将量化区间[a,b]分为4096个小段(2)正半轴2048个小段,负半轴2048个小段(3)每个小段用Δ表示第4页共10页表1非均匀13折线编码原理四、程序设计1.首先给定一个模拟信号。2.根据PCM(脉冲编码调制)原理,对模拟信号进行抽样,得到离散信号,然后进行非均匀量化编码,采用13折线法。3.在Matlab当中进行操作时,首先要画出经过PCM调制的模拟信号波形。4.将经过PCM调制的信号叠加上一个高斯白噪声信道,然后,根据非均匀量化译第5页共10页码原理,得到译码后的波形,即原始的模拟信号。五、设计流程1.输入一个模拟信号,根据奈奎斯特定理,进行抽样,得到时间上离散的模拟信号。2.根据非均匀量化编码(13折线法),设定模拟信号各个段的段落码和段内码。并画出量化编码后的波形。3.根据非均匀量化编码(13折线法)的逆向思想,即不同的段落码和段内码分别对应不同的电平值,最终得到译码后的模拟信号,然后画出译码后的模拟信号的波形。六、源程序代码T=0.002;t=-0.1:T:0.1;xt=cos(2*pi*30*t)+sin(2*pi*65*t);fs=500;sdt=1/fs;t1=-0.1:sdt:0.1;st=cos(2*pi*30*t)+sin(2*pi*65*t);figure(1);subplot(3,1,1);plot(t,xt);title('原始信号');gridonsubplot(3,1,2);stem(t1,st,'.');title('量化信号');title('抽样信号');gridonn=length(st);M=max(st);C=(st/M)*2048;第6页共10页code=zeros(1,8);fori=1:nifC(i)=0code(i,1)=1elsecode(i,1)=0endifabs(C(i))=0&&abs(C(i))16code(i,2)=0;code(i,3)=0;code(i,4)=0;step=1;start=0;elseif16=abs(C(i))&&abs(C(i))32code(i,2)=0;code(i,3)=0;code(i,4)=1;step=1;start=16;elseif32=abs(C(i))&&abs(C(i))64code(i,2)=0;code(i,3)=1;code(i,4)=0;step=2;start=32;elseif64=abs(C(i))&&abs(C(i))128code(i,2)=0;code(i,3)=1;code(i,4)=1;step=4;start=64;elseif128=abs(C(i))&&abs(C(i))256code(i,2)=1;code(i,3)=0;code(i,4)=0;step=8;start=128;elseif256=abs(C(i))&&abs(C(i))512code(i,2)=1;code(i,3)=0;code(i,4)=1;step=16;start=256;elseif512=abs(C(i))&&abs(C(i))1024code(i,2)=1;code(i,3)=1;code(i,4)=0;step=32;start=512;elseif1024=abs(C(i))&&abs(C(i))2048code(i,2)=1;code(i,3)=1;code(i,4)=1;step=64;start=1024;endB=floor((abs(C(i))-start)/step);t=dec2bin(B,4)-48;code(i,5:8)=t(1:4);endcode=reshape(code',1,8*n);第7页共10页subplot(3,1,3);stem(code,'.');axis([16401]);title('编码信号');gridony=awgn(code,5);figure(2);stem(y,'.');axis([16403]);title('叠加加性高斯信号的信号');n=length(code);code=reshape(code',8,n/8)';slot(1)=0;slot(2)=32;slot(3)=64;slot(4)=128;slot(5)=256;slot(6)=512;slot(7)=1024;slot(8)=2048;step(1)=2;step(2)=2;step(3)=4;step(4)=8;step(5)=16;step(6)=32;step(7)=64;step(8)=128;fori=1:n/8ss=2*code(i,1)-1;tmp=code(i,2)*4+code(i,3)*2+code(i,4)+1;st=slot(tmp);dt=(code(i,5)*8+code(i,6)*4+code(i,7)*2+code(i,8))*step(tmp)+0.5*step(tmp);v=1;r(i)=ss*(st+dt)/4096*v;endT=0.002;t=-0.1:T:0.1;figure(3);subplot(1,1,1);第8页共10页plot(t,r);title('编码后的原始信号');gridon七、MATLAB绘制波形第9页共10页第10页共10页八、实验总结和心得在本次实验中,我根据PCM(脉冲编码调制)原理,写出了源程序代码,了解到了很多东西,其中通过Matlab软件仿真给定模拟信号编码后的波形、对比给的原始信号波形和译码后的波形。我熟悉掌握了脉冲编码调制的原理和更深一步掌握如何使用MATLAB调制仿真。但是,我也发现了我自己有很多不足的地方,比如说比较粗心,总是会忘记某个括号,导致数据的不完整性。同时在也会在不需要“;”的语句中添加,导致程序不能运行。
本文标题:实验三-PCM编码译码
链接地址:https://www.777doc.com/doc-1827581 .html