通信原理PCM编码课程设计.doc
课程设计评分标准评分项目得分报告书写及格式具有题目、摘要、目录、正文、参考文献(5分)正文格式,图、表、参考文献引用等正确,排版美观(5分)基础原理报告中是否体现被仿真系统的原理以及原理框图(5分)仿真目的,仿真方法,仿真结果的意义表述清楚(5分)M文件仿真做出信源,调制信号,解调信号波形(10分)仿真参量丰富(如对频谱,信噪比,误码率等的分析),仿真波形直观。(10分)Simulink仿真是否实现设计功能,各个模块的设计参数是否清晰(10分)框图直观,有对不同参数条件下的仿真对比及结论(10分)仿真参量丰富(如对频谱,信噪比,误码率等的分析),仿真波形直观。(10分)答 辩是否存在抄袭(10分)对所仿真系统原理的提问回答情况(10分)对仿真过程提问的回答情况(10分)总分 目 录 课程设计评分标准- 1 -基于MATLAB/SIMULINK的PCM编码的研究与仿真- 3 -摘 要- 3 -ABSTRACT- 3 -1 背景知识- 4 -1.1 PCM原理及仿真- 4 -1.1.1脉冲编码调制- 4 -1.1.2 PCM编码原理- 5 -2 M文件仿真- 10 -3 SIMULINK仿真- 15 -3.1原始模拟信号电路图及仿真图- 15 -3.2 PCM编码器电路设计- 17 -3.3 PCM解码器电路设计- 24 -4心得体会- 28 -参考文献- 28 -基于MATLAB/simulink的PCM编码的研究与仿真摘 要本设计结合PCM的抽样、量化、编码原理,利用MATLAB软件编程和绘图功能,完成了对脉冲编码调制(PCM)系统的建模与仿真分析。即学习通过利用计算机建立通信系统模型的基本方法和基本技能,学习会利用仿真的手段对通信系统的基本理论和基本算法进行验证。学习现有流行的通信系统仿真软件的基本使用方法,利用Matlab软件解决通信中存在的问题。关键词:脉冲编码调制(PCM) 均匀与非均匀量化MATLAB仿真AbstractCombined with the sampling, quantization, coding theory of PCM, using MATLAB software programming and graphics, the completion of the pulse code modulation (PCM) modeling and simulation analysis system.The basic method is to establish the model of communication system of learning through the use of computer and basic skills, learning by means of simulation of communication system of basic theory and basic algorithm are verified.The basic method of using communication system simulation software to learn of the existing, to solve communication problems using Matlab software.Keywords: pulse code modulation (PCM) with uniform and non-uniform quantization in MATLAB simulation 1 背景知识 1.1 PCM原理及仿真 脉冲编码调制就是把一个时间,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程。 1.1.1脉冲编码调制 脉冲编码调制(pulse code modulation,PCM)是概念上最简单、理论上最完善的编码系统,是最早研制成功、使用最为广泛的编码系统,但也是数据量最大的编码系统。PCM的实现主要包括三个步骤完成:抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。根据CCITT的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为A律和律方式,我国采用了A律方式,由于A律压缩实现复杂,常使用13折线法编码,下图为PCM系统的原理框图:图中,输入的模拟信号m(t)经抽样、量化、编码后变成了数字信号(PCM信号),经信道传输到达接收端,由译码器恢复出抽样值序列,再由低通滤波器滤出模拟基带信号m(t)。通常,将量化与编码的组合称为模/数变换器(A/D变换器);而译码与低通滤波的组合称为数/模变换器(D/A变换器)。前者完成由模拟信号到数字信号的变换,后者则相反,即完成数字信号到模拟信号的变换。PCM在通信系统中完成将语音信号数字化功能,它的实现主要包括三个步骤完成:抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。根据CCITT的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为A律和律方式,我国采用了A律方式,由于A律压缩实现复杂,常使用 13 折线法编码,采用非均匀量化PCM编码。 1.1.2 PCM编码原理 1)抽样所谓抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟信号。它的抽样速率的下限是由抽样定理确定的。在一个频带限制在(0,f h)内的时间连续信号f(t),如果以1/2 f h的时间间隔对它进行抽样,那么根据这些抽样值就能完全恢复原信号。或者说,如果一个连续信号f(t)的频谱中最高频率不超过f h,当抽样频率f S2 f h时,抽样后的信号就包含原连续的全部信息。抽样定理在实际应用中应注意在抽样前后模拟信号进行滤波,把高于二分之一抽样频率的频率滤掉。这是抽样中必不可少的步骤。 2) 量化量化,就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。从数学上来看,量化就是把一个连续幅度值的无限数集合映射成一个离散幅度值的有限数集合。一个模拟信号经过抽样量化后,得到已量化的脉冲幅度调制信号,它仅为有限个数值。如下图所示,量化器输出L个量化值,k=1,2,3,L。常称为重建电平或量化电平。当量化器输入信号幅度x落在与之间时,量化器输出电平为。这个量化过程可以表达为: 模拟入量化器量化值这里称为分层电平或判决阈值。通常称为量化间隔。 图1-1模拟信号的量化分为均匀量化和非均匀量化。均匀量化:用这种方法量化输入信号时,无论对大的输入信号还是小的输入信号一律都采用相同的量化间隔。为了适应幅度大的输入信号,同时又要满足精度要求,就需要增加样本的位数。但是,对话音信号来说,大信号出现的机会并不多,增加的样本位数就没有充分利用。为了克服这个不足,就出现了非均匀量化的方法。非均匀量化:非均匀量化是根据信号的不同区间来确定量化间隔的。对于信号取值小的区间,其量化间隔也小;反之,量化间隔就大。它与均匀量化相比,有两个突出的优点。首先,当输入量化器的信号具有非均匀分布的概率密度(实际中常常是这样)时,非均匀量化器的输出端可以得到较高的平均信号量化噪声功率比;其次,非均匀量化时,量化噪声功率的均方根值基本上与信号抽样值成比例。因此量化噪声对大、小信号的影响大致相同,即改善了小信号时的量化信噪比。实际中,非均匀量化的实际方法通常是将抽样值通过压缩再进行均匀量化。通常使用的压缩器中,大多采用对数式压缩。广泛采用的两种对数压缩律是压缩律和A压缩律。美国采用压缩律,我国和欧洲各国均采用A压缩律,所谓A压缩律也就是压缩器具有如下特性的压缩律: , 。由于A律压缩实现复杂,常使用 13 折线法编码, 压扩特性图如下图所示: 图1-2 A律函数13折线压扩特性图这样,它基本上保持了连续压扩特性曲线的优点,又便于用数字电路实现,本设计中所用到的PCM编码正是采用这种压扩特性来进行编码的。 表1-1 13 折线时的值与计算值的比较0101按折线分段时的01段落12345678斜率16168421表1中第二行的 值是根据 时计算得到的,第三行的 值是13折线分段时的值。可见,13折线各段落的分界点与 曲线十分逼近,同时 按2的幂次分割有利于数字化。 3) 编码所谓编码就是把量化后的信号变换成代码,其相反的过程称为译码。当然,这里的编码和译码与差错控制编码和译码是完全不同的,前者是属于信源编码的范畴。在现有的编码方法中,若按编码的速度来分,大致可分为两大类:低速编码和高速编码。通信中一般都采用第二类。编码器的种类大体上可以归结为三类:逐次比较型、折叠级联型、混合型。在逐次比较型编码方式中,无论采用几位码,一般均按极性码、段落码、段内码的顺序排列。下面结合13折线的量化来加以说明。 表1-2 段落码 表1-3 段内码段落序号段落码量化级段内码8111151111141110711013110112110061011110111010105100910018100040117011160110301050101401002001300112001010001000100000 PCM编译码器的实现可以借鉴单片PCM编码器集成芯片,如:TP3067A、CD22357等。单芯片工作时只需给出外围的时序电路即可实现,考虑到实现细节,仿真时将PCM编译码器分为编码器和译码器模块分别实现,在13折线法中,无论输入信号是正是负,均按8段折线(8个段落)进行编码。若用8位折叠二进制码来表示输入信号的抽样量化值,其中用第一位表示量化值的极性,其余七位(第二位至第八位)则表示抽样量化值的绝对大小。具体的做法是:用第二至第四位表示段落码,它的8种可能状态来分别代表8个段落的起点电平。其它四位表示段内码,它的16种可能状态来分别代表每一段落的16个均匀划分的量化级。这样处理的结果,8个段落被划分成27128个量化级。段落码和8个段落之间的关系如表2所示;段内码与16个量化级之间的关系见表3。 4)译码PCM译码器是实现PCM编码的逆系统。其中各模块功能如下:D/A转换器:用来实现与A/D转换相反的过程,实现数字量转化为模拟量,从而达到译码最基本的要求,也就是最起码的步骤。瞬时扩张器:实现与瞬时压缩器相反的功能,由于采用 A 律压缩,扩张也必须采用A律瞬时扩张器。 低通滤波器:由于采样脉冲不可能是理想冲激函数会引入孔径失真,量化时也会带来量化噪声,及信号再生时引入的定时抖动失真,需要对再生信号进行幅度及相位的补偿,同时滤除高频分量,在这里使用与编码模块中相同的低通滤波器。 2 M文件仿真程序如下:clear;t = -0.1:0.001:0.1; %该参数用于画原信号图形f = sin(3*pi*90*t)+cos(3*pi*37*t);%原函数, 由t的取值可得f有201个值subplot(3,1,1) %matlab矩阵区域设置plot(t, f); %画出采原函数序列图title('原信号');xlabel('时间t(s)');T= 1/500; %抽样周期,500是抽样频率,可以调整抽样频率gs = -0.1:T:0.1;fg = sin(2*pi*60*gs)+cos(2*pi*25*gs); %对信号进行以T周期抽样subplot(3,1,2) stem(gs, fg) %画图title('采样信号');xlabel('时间t(s)'); 2-1clear all; close all; %建立原信号T=0.002; %取时间间隔为0.01t=-0.1:T:0.1; %时域间隔dt为间隔从0到10画图xt=sin(3*pi*90*t)+cos(3*pi*37*t);%xt方程%采样:时间连续信号变为时间离散模拟信号 fs=800; %抽样fs>=2fc,每秒钟内的抽样点数目将等于或大于2fc个sdt=1/fs; %频域采样间隔0.002t1=-0.1:sdt:0.1; %以sdt为间隔从-0.1到0.1画图st=sin(2*pi*60*t1)+cos(2*pi*25*t1); % 离散的抽样函数figure(1); subplot(3,1,1);plot(t1,st);title('原始信号'); %画出原始的信号图,以好对比grid on %画背景subplot(3,1,2);stem(t1,st,'.'); %这里画出来的是抽样后的离散图title('抽样信号');grid on %画背景%量化过程n=length(st); %取st的长度为nM=max(st);A=(st/M)*2048;%a1(极性码) a2a3a4(段落码)a5a6a7a8(段内电平码) code=zeros(i,8); %产生i*8的零矩阵%极性码a1 for i=1:n %if循环语句 if A(i)>=0 code(i,1)=1; %代表正值 else code(i,1)=0; %代表负值 end if abs(A(i)>=0&&abs(A(i)<16 code(i,2)=0;code(i,3)=0;code(i,4)=0;step=1;start=0;elseif 16<=abs(A(i)&&abs(A(i)<32 code(i,2)=0;code(i,3)=0;code(i,4)=1;step=1;start=16;elseif 32<=abs(A(i)&&abs(A(i)<64 code(i,2)=0;code(i,3)=1;code(i,4)=0;step=2;start=32;elseif 64<=abs(A(i)&&abs(A(i)<128 code(i,2)=0;code(i,3)=1;code(i,4)=1;step=4;start=64;elseif 128<=abs(A(i)&&abs(A(i)<256 code(i,2)=1;code(i,3)=0;code(i,4)=0;step=8;start=128;elseif 256<=abs(A(i)&&abs(A(i)<512 code(i,2)=1;code(i,3)=0;code(i,4)=1;step=16;start=256;elseif 512<=abs(A(i)&&abs(A(i)<1024 code(i,2)=1;code(i,3)=1;code(i,4)=0;step=32;start=512;elseif 1024<=abs(A(i)&&abs(A(i)<2048 code(i,2)=1;code(i,3)=1;code(i,4)=1;step=64;start=1024; endB=floor(abs(A(i)-start)/step); %段内码编码floor取整(四舍五入) t=dec2bin(B,4)-48; %dec2bin定义将B变为4位2进制码,-48改变格式 code(i,5:8)=t(1:4); %输出段内码endcode=reshape(code',1,8*n); %reshape代表从新塑形codesubplot(3,1,3);stem(code,'.');axis(1 64 0 1); %这里我们先取前面八个点编码输出,输出时候有64个点title('编码信号');grid on 2-2 3 Simulink仿真 3.1原始模拟信号电路图及仿真图 3-1 原始模拟信号电路图两个正弦波的参数设置分别为:3-2正弦波参数设置3-3正弦波参数设置所得波形为3-43.2 PCM编码器电路设计 3-4 13折线近似的PCM编码器测试模型和仿真结果测试模型和仿真结果如上图所示。其中以Saturation作为限幅器,将输入信号幅度值限制在PCM编码的定义范围内,以A-Law Compressor作压缩器,Relay模块的门限值设置为0,其输出即可作为PCM编码输出的最高位极性码。样值取值绝对值后,用增益模块将样值放大到0-127,然后用间隔为1的Quantizer进行四舍五入取整,最后将整数编码为7位二进制序列,作为PCM编码的低7位。可以将上图中Constant和Display(不含)之间的模块封装一个PCM编码子系统备用。其中各模块的具体参数设置如下: 3-5 Constant 3-6 Saturation 3-7 Abs3-8 A-Low Compressor3-9 Gain3-10 Quantizer3-11 Integer to Bit Converter3-12 Display3-13 Relay将该系统进行封装 3-14封装之后的PCM编码子系统 3-15 封装之后的PCM编码子系统图标3.3 PCM解码器电路设计3-16 13折线近似的PCM解码器测试模型和仿真结测试模型和仿真结果如上图所示,其中PCM编码子系统是编码器封装之后的。PCM解码器中首先分离并行数据中的最高位(极性码)和7位数据,然后将7位数据转换位整数值,再进行归一化,扩张后与双极性的极性码相乘得出解码值。可以将该模型中In1 Out1右端和Display左端的部分封装为一个PCM解码子系统备用。其中各模块的具体参数设置如下:3-17 Constant3-18 Demux3-19 Mux3-20 Relay3-21 Bitto Integer Converter3-22 Gain3-23 A-Low Expander 4 心得体会设计过程中,我弄懂了A律13折线和PCM编码的原理,了解这些后总个设计思路就呈现在眼前,自己的信心也倍增。通过这次课程设计,充分掌握了PCM编码的工作原理及PCM系统的工作过程,学会了使用仿真软件 MATLAB的SIMULINK,并学会通过应用软件仿真来实现PCM系统的设计,对以后的学习和工作都起到了一定的作用,加强了实践动手能力和学习新知识的技能。总体来说,这次实习让我受益匪浅。打破了一直局限于课本知识的学习方式,增加了我们的兴趣,并且体会到成功给大家带来的喜悦。让我明白:无论遇到什么困难,只要对自己有信心,认真思考,悉心求教,自然会找到解决的办法。相信在以后的日子里,大家会做得更好。在摸索该如何设计系统使之实现所需功能的过程中,培养了我的设计思维,增加了实际操作能力。在让我体会到了系统设计的艰辛同时,更让我体会到成功的喜悦。参考文献1樊昌信,曹丽娜通信原理国防工业出版社,20082陈怀琛.数字信号处理教程matlab释义与实现 . 电子工业出版社3李贺冰.SIMULINK通信仿真教程M .国防工业出版社 ,2006年4曹志刚,钱亚生现代通信原理清华大学出版社,1992