现代通信原理课程设计报告设计题目:PCM编码及译码专业班级:学号:姓名:任课教师:设计时间:PCM编码及译码一、设计任务与要求设输入信号为,对信号进行抽样、量化和A律PCM编码,经过传输后,接收端进行PCM译码。画出经过PCM编码、译码后的波形与未编码波形;设信道没有误码,画出不同幅度Ac情况下,PCM译码后的量化信噪比;二、设计任务分析基本模型:采用MATLAB仿真,基本框型图如下:抽样:对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。该模拟信号经过抽样后包含原信号所有信息,也就能够无失真的回复模拟信号。在某些选定的时刻抽取连续时间信号在各该时刻的值。数字计算机所处理的信号必须是离散时间信号。在涉及连续时间信号时,就必须先以适当的频度从中抽取其在各时刻的数值,形成相应的离散时间信号,然后进行处理。A律压缩tAtxc2sin)()(tx用13段折线逼近A=87.6的A律压缩特性x轴:0~1内不均匀分成8段,每次以1/2对分(即按2的幂次分段)y轴:0~1内等分成8段,每段间隔均为1/8x,y各交点连接构成8段折线,斜率不同AxAAxy/10ln11/1ln1ln1xAAAxy量化:用有限的电平来表示抽样值的过程(从而可进一步编码),且电平间隔大于噪声,则可准确恢复样值。把取值连续的信号变成取值离散的信号,引入失真,即量化误差。在数字信号处理领域,量化指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。量化主要应用于从连续信号到数字信号的转换中。连续信号经过采样成为离散信号,离散信号经过量y1786858483828181011281641161321181412x斜率:1段162段163段84段45段26段17段1/28段1/4234567第8段A=87.6化即成为数字信号。注意离散信号通常情况下并不需要经过量化的过程,但可能在值域上并不离散,还是需要经过量化的过程。信号的采样和量化通常都是由ADC实现的。量化方法(段落非均匀量化,段内均匀量化)8位量化共28=256量化级,正/负各128;每段再均匀划分16个量化级;各段量化间隔不同。第8段最大1/32(2-5);第1,2段最小1/2048(2-11);为避免分数,令x,y的归一化值为2048(211)量化单位,可写出A律13折线的参数。将想x(t)作为输入信号,进行抽样量化,A律压缩编码,x(t)即坐标横轴,可使用13折线方法,逼近A取87.6的A律压缩曲线,y轴即为PCM压缩编码。量化信噪比:PCM的概念:脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程。抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号,抽样必须遵循奈奎斯特抽样定理。该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟信号。它的抽样速率的下限是由抽样定理确定的。抽样速率采用8KHZ。量化,就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示,通常是用二进制表示。量化误差:量化后的信号和抽样信号的差值。量化误差在接收端表现为噪声,称为量化噪声。量化级数越多误差越小,相应的二进制码位数越多,要求传输速率越高,频带越宽。为使量化噪声尽可能小而所需码位数又不太多,通常采用非均匀量化的方法进行量化。非均匀量化根据幅度的不同区间来确定量化间隔,幅度小的区间量化间隔取得小,幅度大的区间量化间隔取得大。一个模拟信号经过抽样量化后,得到已量化的脉冲幅度调制信号,它仅为有限个数值。编码,就是用一组二进制码组来表示每一个有固定电平的量化值。然而,实际上量化是在编码过程中同时完成的,故编码过程也称为模/数变换,可记作A/D。话音信号先经防混叠低通滤波器,进行脉冲抽样,变成8KHz重复频率的抽样信号(即离散的脉冲调幅PAM信号),然后将幅度连续的PAM信号用“四舍五入”办法量化为有限个幅度取值的信号,再经编码后转换成二进制码。对于电话,CCITT规定抽样率为8KHz,每抽样值编8位码,即共有2∧8=256个量化值,因而每话路PCM编码后的标准数码率是64kb/s。为解决均匀量化时小信号量化误差大,音质差的问题,在实际中采用不均匀选取量化间隔的非线性量化方法,即量化特性在小信号时分层密,量化间隔小,而在大信号时分层疏,量化间隔大。三、设计结果和分析在MATLAB上进行仿真后,所得的结果如下:未编码的信号与经过PCM编码波形对比:未编码的正弦信号经A律PCM编译码后的量化信噪比:总结分析:在仿真的过程中,多次观察实验结果,得出结论,通过MATLAB所设计的程序,成功的实现了将不同幅度的模拟正弦信号,进行采样、量化、A律PCM编码、译码,最后得到译码的信号,计算量化信噪比,绘制量化信噪比曲线,并比较未编码与经过A律PCM编译码后得到的信号,发现两个波形大致相同且得到的量化噪声比曲线与理论上的曲线也大致一致。在实验过程中,多次因为最初数据选择的原因,造成了反复修改程序的情况出现,这使得在小组实验过程中,连带的出现了其他问题,小组成员经过讨论和调试,最终确定了需要采用的数据以及方法,最终的出了差强人意的实验成果。资料搜索和整合过程,也是十分繁复的,在不同的资料中,找到实验设计所需要的相关部分,我们采用了多方面调查的方法,包括网络和书籍等,通过调查检索,得到了所需要的信息。设计要求中的各个环节,也做了相应的分析。从程序调试的结果也发现程序存在一点不足,所得到的量化信噪比曲线存在一定的缺陷,在以后的学习生活中,将对这一方面进行更深层次的探索和学习。心得与体会:在此次实验仿真的过程中,小组成员,分工合理,在程序调试和代码检测上,下了很大的功夫,这也说明了,我们在平时的学习生活中,对这方面的学习探究工作,做的不够,做的不好。这次设计课程中,我们也了解了专业知识的冰山一角,在繁琐的实验进程中,多次遇到了各方面,各层次困难。尤其是在代码调试和检查程序错误以及题目分析的过程中。不仅仅是完成一门课程,还能给我们能力一定的提升,它不仅包括动手能力,还包括学习能力、判断能力、搜集资料的能力、交流能力、心理素质等。在大一、大二已经做过很多课程设计,总结以前课程设计的经验和教训,花了我很多时间,付出了少心血,不过并没有得到我想要的回报。不过我还是比较满意我自己的表现,虽然也还有些不足。从设计中获得的知识,得到的经验对我以后的学习、工作都是有帮助的。在这次课程设计中,不仅对于以前的上理论课中一些不清楚的地方有了新的认识,对于一个简单的数字通信系统有了一定的了解,而且对于如何将理论转化成程序有了些更深刻的体会,编程中处理问题的能力也有所增强。虽然是一个简单的课程设计,我对做事态度方面有了不同的理解,事情无论大小,我们都应该认真面对,尽自己的能力去做,不能因为事情小就不尽心。课本和给出的实验原理,学习了一下相关理论知识。由于之前学过相关的内容,再次温习花的时间也不会太多。这个课程设计从开始做到完成,虽然总共花的时间并不算长,但是让我明白了无论是这次的通信原理课程设计还是其他工程或是毕业设计,乃至今后的实习和工作中,都是一个温故而知新的过程,技术的更新是非常迅速的,但是理论基础是根本,是必不可少的,只有学好基础知识才有可能谈其他创新和发展。另外在课程设计的过程中也会遇到很多困难。首先,此次设计用的设计软件是MATLAB,由于软件编程一直是我的薄弱项,所以开始就有畏难的情绪。但是通过仔细阅读老师给出的参考程序片段,上网搜索已有的程序案例,读懂相关的程序功能,并根据实际需求作出适当修改,就能符合设计要求。其次,在程序运行的过程中也会由于子程序引用时的格式错误,使得不能编译通过,通过重新了解相关格式,仔细检查程序和向其他同学请教等方式,发现程序中的错误。因此,很多事情不是因为难以做到,我们才失去信心;相反,是因为我们失去信心,事情才显得困难,所以克服畏难情绪,静下心来,通过努力,很多看起来困难的事情其实并不难。总体而言,这次课程设计使我受益匪浅,让我更加深入的了解了PCM脉冲编码调制的原理,进一步学会MATLAB编程,对以后的学习和工作起到了一定的作用。实验代码:t=0:0.01:10;m1=-60:1:0;%输入的正弦信号幅度不同m=10.^(m1/20);figure(1)fori=1:length(m)forj=1:2x1=m(i)*sin(2*pi*t+2*pi*rand(1));v=1;x=x1/v;%normalizesxx=floor(x*4096);y=pcm_encode(sxx);y2=pcm_decode(y,v);nq(j)=sum((x1-y2).*(x1-y2))/length(x1);sq(j)=mean(y2.^2);snr(j)=(sq(j)/nq(j));drawnowsubplot(211)plot(t,x1);title('未编码信号波形');subplot(212)plot(t,y2)title('编译码后得到的信号波形');endsnrq(i)=10*log10(mean(snr));endfigure(2)drawnowsubplot(211)plot(t,x1);axis([00.7-11]);title('未编码信号波形');subplot(212)plot(t,y2)axis([00.7-11]);title('编译码后得到的信号波形');figure(3)plot(m1,snrq);axis([-600060]);title('xulie的量化信噪比')grid;PCM编码函数程序:function[out]=pcm_encode(x)%xencodetopcmcoden=length(x);%-4096x4096fori=1:nifx(i)0out(i,1)=1;elseout(i,1)=0;endifabs(x(i))=0&abs(x(i))32out(i,2)=0;out(i,3)=0;out(i,4)=0;step=2;st=0;elseif32=abs(x(i))&abs(x(i))64out(i,2)=0;out(i,3)=0;out(i,4)=1;step=2;st=32;elseif64=abs(x(i))&abs(x(i))128out(i,2)=0;out(i,3)=1;out(i,4)=0;step=4;st=64;elseif128=abs(x(i))&abs(x(i))256out(i,2)=0;out(i,3)=1;out(i,4)=1;step=8;st=128elseif256=abs(x(i))&abs(x(i))512out(i,2)=1;out(i,3)=0;out(i,4)=0;step=16;st=256;elseif512=abs(x(i))&abs(x(i))1024out(i,2)=1;out(i,3)=0;out(i,4)=1;step=32;st=512;elseif1024=abs(x(i))&abs(x(i))2048out(i,2)=1;out(i,3)=1;out(i,4)=0;step=64;st=1024;elseif2048=abs(x(i))&abs(x(i))4096out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048;elseout(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048;endif(abs(x(i))=4096)out(i,2:8)=[1111111];elsetmp=floor((abs(x(i))-st)/step);t=dec2bin(tmp,4)-48;%函数dec2bin输出的是ASCII字符串,48对应0out(