2021-2022年收藏的精品资料通信原理模拟信号的数字化PCM编码设计课程设计.doc
课 程 设 计 报 告课程设计名称: 通信系统原理 系 部: 三 系 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 开课时间: 学年 1 学期一设计题目:模拟信号数字化PCM编码设计二主要内容:a. 模拟信号数字化的处理步骤:抽样、量化、编码b.PCM编码的压缩和扩张原理;c.用MATLAB或其它EDA工具软件对PCM编码进行使用A律和律的压缩和扩张进行软件仿真;d.对仿真进行分析比较。 e.PCM的8位编码C1C2C3C4C5C6C7C8三具体要求1. 课程设计的内容独立自主完成,课程设计报告内容完整、格式规范、排版整洁美观;2. 设计选用的语言不限,推荐使用MATLAB、C均可,编写出的程序,必须有详细的注释说明;四进度安排(一)16周课程设计安排:星期一:讲课程设计的内容,安排每一天的具体任务,熟悉软件的编程环境MATLAB/SIMULINK;星期二:查资料,确定课程设计的题目;星期三:确定设计方案,写出设计思想;星期四:编写修改程序,必须有详细的程序注释,得出结果;星期五:写总结报告,检查各位的做的情况,考评设计成绩。上交的材料:包含三样:(课程设计的电子稿、打印稿、程序)五成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。成绩评定:优,良,中,及格,不及格。特别说明:(1)如发现抄袭,按照不及格处理。 (2)材料不齐的,考核等级降一级。电子稿件以文件夹的形式上交的文件夹的命名为:(学号的最后两位+姓名)模拟信号数字化PCM编码设计1、 基本原理:本设计主要会用到的知识通信原理中的脉冲编码调制(PCM)。本次课程设计主要是做量化、编码、信道传输、译码四部分PCM系统的原理:脉码调制将模拟调制信号的采样值变换为脉冲码组。PCM编码包括如三个过程。抽样:将模拟信号转换为时间离散的样本脉冲序列。量化:将离散时间连续幅度的抽样信号转换成为离散时间离散幅度的数字信号。编码:用一定位数的脉冲码组表示量化采样值。译码:把编码后的码流在通过信道传输后得到的码流译成离散时间连续幅度的信号。其系统框图如下:编 码信道话音输出再 生抽 样 瞬时压缩 低通滤波话音输入解 码解 调 瞬时扩张 低通滤波量 化 图1-1 PCM系统原理图(一) 量化信噪比设压缩曲线则: 噪声功率 信号功率量化信噪比上式表明: 压缩特性为对数特性时,量化器的信噪比始终保持常数,与输入信号的幅度无关,实现了最佳非均匀量化。 国际上通用的两种对数压缩特性:A律和m律 。本次设计采用的是A律13折线。(二)A律13折线的原理归一化信号(x/V),过载电压为±1,A律对数 其中A为压缩系数,国际标准A=87.6。未压缩(1)(2)(3)(4)(5)(6)(7)(8) 0图1-2为13折线特性 表1-1列出了13折线时的值与计算值的比较。表 1-10101按折线分段时的01段落12345678斜率16168421表1中第二行的值是根据时计算得到的,第三行的值是13折线分段时的值。可见,13折线各段落的分界点与曲线十分逼近,同时按2的幂次分割有利于数字化图中只有正幅度部分,共7折线,负幅度部分也有7折线。但正负部分第一段折线斜率相等,为同一折线,共13折线。采用13折线近似后,加入正弦信号,通过测试,其量化信噪比与输入幅度的关系如图所示图1-3 正弦输入SNR曲线(13折线近似)如图所示:采用折线近似方式后,加入正弦信号,信噪比的曲线会出现起伏现象,这是因为在每段折线起始部分,量化间隔成倍增加,导致量化噪声增加很快,而信号功率的增加却没有那么快,因而SNR反而略有下降。但随信号功率的增加,噪声功率基本保持不变,因此SNR有开始增加。这样共有6个起伏,7个峰值。(三)编码所谓编码就是把量化后的信号变换成代码,其相反的过程称为译码。当然,这里的编码和译码与差错控制编码和译码是完全不同的,前者是属于信源编码的范畴。在现有的编码方法中,若按编码的速度来分,大致可分为两大类:低速编码和高速编码。通信中一般都采用第二类。编码器的种类大体上可以归结为三类:逐次比较型、折叠级联型、混合型。在逐次比较型编码方式中,无论采用几位码,一般均按极性码、段落码、段内码的顺序排列。下面结合13折线的量化来加以说明。在13折线法中,无论输入信号是正是负,均按8段折线(8个段落)进行编码。若用8位折叠二进制码来表示输入信号的抽样量化值,其中用第一位表示量化值的极性,其余七位(第二位至第八位)则表示抽样量化值的绝对大小。具体的做法是:用第二至第四位表示段落码,它的8种可能状态来分别代表8个段落的起点电平。其它四位表示段内码,它的16种可能状态来分别代表每一段落的16个均匀划分的量化级。这样处理的结果,8个段落被划分成27128个量化级。段落码和8个段落之间的关系如表1-2所示;段内码与16个量化级之间的关系见表1-3。表1-2段落码 表1-3段内码段落序号段落码量化级段内码81111511111411107110131101121100610111101110101051009100181000401170111601103010501014010020013001120010100010001000002、 仿真程序、程序编制、流程图、仿真结果:(1) 整个程序设计流程如图图1-4 程序设计大致流程1) 输入要进行编码的正弦信号,因为正弦信号的幅度是变化的所以定义了一个变量用于存放幅度,通过每次的循环来改变幅度。由于幅度的的值最大为1,因此要对产生的正弦信号进行标准化。t = 0:0.01:10;m1 = -60:1:0; %输入的正弦信号幅度不同m = 10.(m1/20);figure(1)for i = 1:length(m)for j = 1:2x1 = m(i)*sin(2*pi*t+2*pi*rand(1);v = 1;x = x1/v;%normalizesxx = floor(x*4096);2)将采样后得到sxx进行A律PCM编码,y = pcm_encode(sxx);pcm_encode函数是按照附表A律PCM编码进行编程的。在话音信号的数字化同际标准G7ll中,采用了折叠码编码。表71是G711建议的语音信号的4律编码规则。输入的语音信号经过抽样、量化后,每个抽样值编码成8个比特的二进制码组。量化时,A律中的每个区间义被均勺量化成16个量化电平,其编码规则为:其中:·b0为极性码,b00时对应输入为负。b01时对应输入为正。·b1b2b3为段落码,分别对应x的8个区间;·b4b5b6b7为段内码,对应x区间中的l 6个量化电平值3)将经过PCM编码的信号送入信道题目要求的信道没有误码,所以将编码后的序列送入信道没有什么改变只是传输,没有产生误码。4)再将经过信道的信号y进行PCM解码y2 = pcm_decode(y,v);pcm_decode函数实际上是pcm_encode的逆过程。5)画出经过A律PCM编码、译码后得到的信号波形与未编码的信号波形。subplot(211)plot(t,x1);title('未编码信号波形');subplot(212)plot(t,y2)title('编译码后得到的信号波形');6)画出不同幅度情况下,PCM译码后得到的信号量化信噪比曲线。对于一定的情况下,量化信噪比的计算方法如下:根据公式 (6)得 nq(j) = sum(x1-y2).*(x1-y2)/length(x1);sq(j) = mean(y2.2);snr(j) = (sq(j)/nq(j);snrq(i)=10*log10(mean(snr);对于要绘制不同情况下的量化信噪比曲线,只是进行循环,每次循环的从而得到不同的量化信噪比。循环结束后,绘出量化信噪比曲线。plot(m1,snrq);axis(-60 0 0 60);title('xulie的量化信噪比')grid;下图为simulink搭建的PCM编码器框图:图1-5所示测试模型和仿真结果如图所示,其中以Saturation作为限幅器,将输入信号幅度值限制在PCM编码的定义范围内,Relay模块的门限设置为0,其输出既可作为PCM编码出去的最高位极性码。阳值取绝对值后,以Look-Up Table模块进行13折线压缩,并用增益模块将样值范围放大到0127,然后用间距为1的Quantizer进行四舍五入的取整,最后将整数编码为7位二进制序列,作为PCM编码的低7位。3、 结论及其分析1、未编码的信号与经过PCM编码,PCM解码后的信号波形对比如下图图1-6 A律PCM编码译码后波形与输入波形 图1-7 A律PCM编码译码后波形与输入波形的对比示意图由图1-6可知,从图中看出图中两个信号波形几乎一样,说明未编码的信号与把信号经过PCM编码、译码后得到的信号是一样的。与理论上经过编译码后得到的波形与原信号的应该是相同的一致。图1-6是截取两个信号并将其放大得到的,从图1-6中可以看出两个波形大致一样,但是经编码译码后得到的信号没有未编码信号的波形光滑。 同时波形上也有一些细小的区别。2、PCM译码后的量化信噪比图1-8 未编码的正弦信号经A律PCM编译码后的量化信噪比st =128将图1-8的量化信噪比与原理中的图3对比,发现两个图形大致一样,图8中的曲线也有6个起伏,7个波峰,说明程序得到的量化信噪比曲线是正确的。因为题目中是对正弦信号进行A律PCM编码、译码后得到的量化信噪比曲线。而在原理部分图3正是加入正弦信号,通过A律13折线近似后得到的SNR曲线。出现这样曲线是因为在每段折线起始部分,量化间隔成倍增加,量化噪声功率增加很快,而信号功率并没有很快增加,造成量化信噪比有所下降。但虽图1-6与图1-3的波形基本吻合,却存在一定的不同。曲线的起伏和波峰没有理论上的曲线的起伏明显。4、 心得体会本次课程设计在刚开始的过程中无从下手,手忙脚乱,时间又紧,最终决定用软件仿真来实现PCM的编码过程。通过这次设计,掌握了PCM编码的工作原理及PCM系统的工作过程,学会了使用matlab(通信系统的动态仿真软件),并学会通过应用软件仿真来实现各种通信系统的设计,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。每次做课程设计都会有许多的收获。不仅仅是完成一门课程,还能给我们能力一定的提升,它不仅包括动手能力,还包括学习能力、判断能力、搜集资料的能力、交流能力、心理素质等。在大一、大二已经做过很多课程设计,总结以前课程设计的经验和教训,花了我很多时间,付出了少心血,不过并没有得到我想要的回报。不过我还是比较满意我自己的表现,虽然也还有些不足。从设计中获得的知识,得到的经验对我以后的学习、工作都是有帮助的。在这次课程设计中,不仅对于以前的上理论课中一些不清楚的地方有了新的认识,对于一个简单的数字通信系统有了一定的了解,而且对于如何将理论转化成程序有了些更深刻的体会,编程中处理问题的能力也有所增强。虽然是一个简单的课程设计,我对做事态度方面有了不同的理解,事情无论大小,我们都应该认真面对,尽自己的能力去做,不能因为事情小就不尽心。做事认真的态度对于我们以后工作中也是至关重要的。所以,我以后要认真的做每一件事。5、 参考资料1.通信原理樊昌信 曹丽娜 国防工业出版社2.现代通信系统分析与仿真matlab通信工具箱李建新 刘乃安西安电子科技大学出版社3.数字信号处理教程matlab释义与实现陈怀琛 电子工业出版社 4.现代通信系统使用matlab约翰-G-普罗克斯 西安交通大学出版社5. MATLAB通信工程仿真张德丰 机械工业出版社6.MATLAB/SIMULINK通信系统建模与仿真实例分析邵玉斌 清华大学出版社附源程序代码:t = 0:0.01:10;m1 = -60:1:0; %输入的正弦信号幅度不同m = 10.(m1/20);figure(1)for i = 1:length(m)for j = 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(0 0.7 -1 1);title('未编码信号波形');subplot(212)plot(t,y2)axis(0 0.7 -1 1);title('编译码后得到的信号波形');figure(3)plot(m1,snrq);axis(-60 0 0 60);title('xulie的量化信噪比')grid;PCM编码函数程序:functionout=pcm_encode(x)%x encode to pcm code n=length(x);%-4096<x<4096for i = 1:nif x(i)>0out(i,1)=1;elseout(i,1)=0;endif abs(x(i)>=0 & abs(x(i)<32out(i,2)=0;out(i,3)=0;out(i,4)=0;step=2;st=0;elseif 32<=abs(x(i)&abs(x(i)<64out(i,2)=0;out(i,3)=0;out(i,4)=1;step=2;st=32;elseif 64<=abs(x(i)&abs(x(i)<128out(i,2)=0;out(i,3)=1;out(i,4)=0;step=4;st=64;elseif 128<=abs(x(i)&abs(x(i)<256out(i,2)=0;out(i,3)=1;out(i,4)=1;step=8;st=128elseif 256<=abs(x(i)&abs(x(i)<512out(i,2)=1;out(i,3)=0;out(i,4)=0;step=16;st=256;elseif 512<=abs(x(i)&abs(x(i)<1024out(i,2)=1;out(i,3)=0;out(i,4)=1;step=32;st=512;elseif 1024<=abs(x(i)&abs(x(i)<2048out(i,2)=1;out(i,3)=1;out(i,4)=0;step=64;st=1024;elseif 2048<=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)=1 1 1 1 1 1 1;elsetmp=floor(abs(x(i)-st)/step);t=dec2bin(tmp,4)-48;%函数dec2bin输出的是ASCII字符串,48对应0out(i,5:8)=t(1:4);endendout=reshape(out',1,8*n);PCM解码函数程序:functionout= pcm_decode(in,v)%decode the input pcm code%in : input the pcm code 8 bits sample%v:quantized leveln=length(in);in=reshape(in',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;for i=1:n/8ss=2*in(i,1)-1;tmp = in(i,2)*4+in(i,3)*2+in(i,4)+1;st = slot(tmp);dt = (in(i,5)*8+in(i,6)*4+in(i,7)*2+in(i,8)*step(tmp)+0.5*step(tmp);out(i)=ss*(st+dt)/4096*v;end