通信原理课程设计模拟信号数字化PCM编码设计.doc
通信原理课程设计目 录一、课程设计目的2二、设计任务书2三、进度安排3四、具体要求3五、成绩评定3六、课程设计内容41模拟信号数字化处理41.1基本原理.41.2 对模拟信号抽样.41.3对离散数字信号序列量化.61.4对量化后数字信号进行编码102、仿真程序、程序编制、流程图、仿真结果112.1抽样定理验证112.2量化与编码152.3整个程序设计流程203.PCM 8位编码.233.1误码率分析243.2 A律和U律变换.254.增量调制.274.1.增量调制源代码274.2.增量调制原理图285新的体会.286.参考文献.29一、课程设计目的 本课程是为通信工程专业本科生开设的专业必修课,结合学生的专业方向的理论课程,充分发挥学生的主动性,使学生掌握应用MATLAB或者SYSTEMVIEW等仿真软件建立通信系统,巩固理论课程内容,规范文档的建立,培养学生的创新能力,并能够运用其所学知识进行综合的设计。通信系统原理的课程设计是对通信系统仿真软件、课程学习的综合检验,配合理论课的教学,让学生亲自参加设计、仿真、验证通信系统的一般原理、调制解调原理、信号传输及受噪声影响等方面的知识点。二、设计任务书设计选题:模拟信号数字化PCM编码设计主要内容:1. 模拟信号数字化的处理步骤:抽样、量化、编码2. 模拟信号的抽样过程,理解抽样频率的变化对抽样信号的影响;3. 用MATLAB对PCM编码进行使用A律和律的压缩和扩张进行软件仿真;4. PCM的8位编码C1C2C3C4C5C6C7C85. 仿真实现增量调制的过程和并理解噪声产生的原理。三、进度安排星期一:讲课程设计的内容,安排每一天的具体任务,熟悉软件的编程环境MATLAB/SIMULINK;星期二:查资料,确定课程设计的题目;星期三:确定设计方案,写出设计思想;星期四:编写修改程序,必须有详细的程序注释,得出结果;星期五:写总结报告,检查各位的做的情况,考评设计成绩。上交的材料:包含三样:(课程设计的电子稿、打印稿、程序)四、具体要求1.课程设计的内容独立自主完成,课程设计报告内容完整、格式规范、排版整洁美观;2.设计选用的语言不限,推荐使用MATLAB、C均可,编写出的程序,必须有详细的注释说明;五、成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。成绩评定:优,良,中,及格,不及格。特别说明:(1)如发现抄袭,按照不及格处理。(2)材料不齐的,考核等级降一级。电子稿件以文件夹的形式上交的文件的命名为:(学号的最后两位+姓名)六、课程设计内容1、模拟信号数字化的处理11基本原理通信系统可以分为模拟和数字通信系统两大类。数字通信系统有很多的优点,应用非常广泛,已经成为现代通信的主要发展趋势。自然界中很多信号都是模拟量,我们要进行数字传输就要将模拟量进行数字化,将模拟信号数字化,处理可以分为抽样,量化,编码,这三个步骤。(1)、下图是模拟信号数字传输的过程原理图:(2)、下图是模拟信号数字化过程:模拟信号源编码量化抽样1.2对模拟信号进行抽样抽样是把时间上连续的模拟信号变成一系列时间上离散的抽样值的过程。抽样定理:设一个频带限制的(0,fH)Hz内的时间连续信号m(t)如果它不少于2fH次/s的速率进行抽样,则m(t)可以由抽样值完全确定。抽样定理指出,由样值序列无失真恢复原信号的条件是fs2fH ,为了满足抽样定理,要求模拟信号的频谱限制在0fH之内(fH为模拟信号的最高频率)。为此,在抽样之前,先设置一个前置低通滤波器,将模拟信号的带宽限制在fH以下,如果前置低通滤波器特性不良或者抽样频率过低都会产生折叠噪声。抽样频率小于2倍频谱最高频率时,信号的频谱有混叠。 抽样频率大于2倍频谱最高频率时,信号的频谱无混叠。取样分为冲激取样和矩形脉冲取样,这里只详细介绍冲激取样的原理和过程,矩形脉冲取样的原理和冲激取样的是一样的,只不过取样函数变成了矩形脉冲序列。数学运算与冲激取样是一样的。冲激取样就是通过冲激函数进行取样。上图左边就是简化的模拟信号转换离散的数字信号的抽样过程,其中f(t)是连续的时间信号,也就是模拟信号,在送到乘法器上与s(t)取样脉冲序列进行乘法运算,事实上取样脉冲序列就是离散的一个个冲激函数(冲激函数如上图右边的图),右边部分的fs(t)就是变成了一个个离散的函数点了。下面给出抽样的数学运算过程。抽样过程的冲激抽样的函数过程: 因此:fs(t)另外要注意的是,采样间隔的周期要足够的小,采样率要做够的大,要不然会出现如下图所示的混叠现象,一帮情况下TsWs=2,Wn>2Wm。1.3对离散数字信号序列量化量化就是利用预先规定的有限个电平来表示模拟信号抽样值的过程。时间连续的模拟信号经过抽样后的样值序列虽然在时间上离散,但是在幅度上仍然是连续的,也就是说,抽样值m(kT)可以取到无穷多个值,这个很容易理解的,因为在一个区间里面可以取出无数的不同的数值,这就可以看成是连续的信号,所有这样的信号仍然属于模拟信号范围。因此这就有了对信号进行量化的概念。在通信系统中已经有很多的量化方法了,最常见的就是均匀量化与非均匀量化。均匀量化概念比较早出来。因其有很多的不足之处,很少被使用,这就有了非均匀量化的概念。均匀量化就是把信号的取值范围按照等距离分割,每个量化电平都取中间值(也就是平均值),落在这个区间的所有值都用这个值代替。当信号的变化范围和量化电平被确定后,量化间隔也就被确定。在语言信号数字化通信中,均匀量化有个明显不足之处:量化信噪比随信号的电平的减小而下降。为了克服这个缺点,实际中往往采用非均匀量化。非均匀量化是一种在整个动态范围内量化间隔不相等的量化。它是根据输入信号的概率密度函数来分布量化电平的,以改善量化性能,它的特点是输入小时量阶也小,输入大时,量阶也大。整个范围内信噪比几乎是一样的,缩短了码字长度,提高了编码效率。实际中非均匀量化的方法之一是把输入量化器的信号x先进行压塑处理,再把压缩的信号y进行非均匀量化。压缩器其实就是一个非线性电路,微弱的信号被放大,强的信号被压缩,压缩器的输入输出关系可以这样表示:y=f(x)接受端采用一个与压缩特性相反的扩张器来恢复x。下图就是压缩与扩张的示意图:xy5· BBy通常使用的压缩器中,大多数采用对数压缩,即y=lnx。广泛采用这两种对数压扩特性的是u/A率压扩。律压缩特性压缩规律:压缩特性近似满足下对数规律 律压缩定性分析 =0时:无压缩作用(直线)0时:压缩明显压缩作用-y是均匀的,而x是非均匀的信号越小x也越小A压缩率所谓的 A压缩率就是压缩器具有如下特性:0<x1/AAxy =1+lnA1+lnAx1/Ax1 y =1+lnA上式中:x为归一化的压缩器输入电压;归一化的压缩器输出电压;A为压扩参数,表示压缩程度。下图是由抽样后的离散信号量化的过程量化过程如下如所示:量化器,其输出信号xq(t)=xq(kT)=qi, qi为M个量化电平q1、q2 ¼qM之一。m1、m2 ¼ mM-1为量化区间的端点。 在量化时候会产生量化误差,这里不作详细介绍,其量化误差计算公式如下:量化后量化输出为:我们衡量一个量化器的性能好坏用信噪比来表示:信噪比定义如下:其中:xq(t) 与x(t) 近似程度的好坏用 Sq/Nq 衡量。 Sq /Nq 越大,说明近似程度越好。非均匀量化中有如下的压扩特性:在实用中需按照不同情况对理想压缩特性作适当修正。 压扩特性数学分析:当量化区间划分很多时,在每一量化区间内压缩特性曲线可以近似看作为一段直线,其斜率为:对此压缩器的输入和输出电压范围均作归一化,且纵坐标y在0和1之间均匀划分成N个量化区间,则每个量化区间的间隔应该等于:为了对不同的信号强度保持信号量噪比恒定,当输入电压x减小时,应当使量化间隔Dx按比例地减小,即:Dx µ x。将边界条件(当x=1时,y=1),代入可得:k+c=0 c=-k1.4 对量化后的数字信号进行编码所谓编码就是把量化后的信号变换成代码,其相反的过程称为译码。当然,这里的编码和译码与差错控制编码和译码是完全不同的,前者是属于信源编码的范畴。在现有的编码方法中,若按编码的速度来分,大致可分为两大类:低速编码和高速编码。通信中一般都采用第二类。编码器的种类大体上可以归结为三类:逐次比较型、折叠级联型、混合型。在逐次比较型编码方式中,无论采用几位码,一般均按极性码、段落码、段内码的顺序排列。下面结合13折线的量化来加以说明。在13折线法中,无论输入信号是正是负,均按8段折线(8个段落)进行编码。若用8位折叠二进制码来表示输入信号的抽样量化值,其中用第一位表示量化值的极性,其余七位(第二位至第八位)则表示抽样量化值的绝对大小。具体的做法是:用第二至第四位表示段落码,它的8种可能状态来分别代表8个段落的起点电平。其它四位表示段内码,它的16种可能状态来分别代表每一段落的16个均匀划分的量化级。这样处理的结果,8个段落被划分成27128个量化级。13折线编码特点:基本上保持压缩特性,又便于数字实现。折线的各段斜率:线段8斜率:1/8÷1/2=1/4 线段7斜率:1/8÷1/4=1/2线段6斜率:1/8÷1/8= 1 线段5斜率:1/8÷1/16=2线段4斜率:1/8÷1/32=4 线段3斜率:1/8÷1/64=8线段2斜率: 1/8÷1/128=16 线段1斜率: 1/8÷1/128=1613折线图:完整13折线的图的特性:(1)负向8段斜线按同样方法得到 ;(2)第象限的折线与第象限呈奇对称;(3)斜率相同的段合为一段,共13段,称为13折线法。13折线的绘制方法:(1)将输入输出的电压归一。(2)将x轴的区间(0,1)不均匀的划分为8段,划分的规律是:每一次以二分之一取段。(3)将x轴上分好的8段,在段内分成均匀的16段,每一等份作为一个量化层。(4)将y轴的区间(0,1)均匀的划分为8段,在段内分成均匀的16段,每一等份作为一个量化层。(5)将相应的交点连接起来得到8个折线段。(6)因为还包括小于0的电平,所以在第三象限也有8个折线段,但是在第一象限中第一,二段的折线的斜率和第三象限第一,二段相同,所以四条连成一条,这样整个平面有13条线,所以也称为13折线. 段落序号段落码量化级段内码8111151111141110711013110112110061011110111010105100910018100040117011160110301050101401002001300112001010001000100000段落码和段落间关系 段内码16个量化级间关系 脉冲编码调制PCM系统的量化噪声: 对于PCM系统,这相当于要求传输速率 ³ 2NfH b/s,故要求系统带宽 B = NfH,即要求: N = B/fH,代入 S / Nq = 22N ,得到 上式表明,PCM系统的输出信号量噪比随系统的带宽B 按指数规律增长。 误码率:对于误码率的计算,我们一般都是对信号的噪声功率和信噪比来进行讨论的。误码率是衡量数据在规定时间内数据传输精确性的指标。如果有误码就有误码率。简单的说,误码率就是在数字传输过程中,在发送到接收端,发送错误的码元个数占总的码元个数的比例。误码率的计算公式如下:传输错误的码元数误码率=总的传输的码元数目2、仿真程序、程序编制、流程图、仿真结果2.1 抽样定理的验证首先我们先要通过matlab软件产生一个模拟信号,然后才能对模拟信号进行抽样等等一系列的操作,下面先给出matlab软件建立m文件产生一个比较熟悉的时域连续的周期函数,f(t)= cos(2*pi*60*t),可以看出这个信号就是由两个最常用的函数复合而成。(1)、产生原始连续信号的matlab源代码:%该程序用于画出原信号的图形clear all; close all; %建立原信号T=0.002; %取时间间隔为0.01t=-0.1:T:0.1; %时域间隔dt为间隔从0到10画图xt=cos(2*pi*60*t); %xt方程(2)、对原始信号进行抽样源代码%该函数用于画出原始波形和抽样后离散的采样波形图%绘制离散的采样波形图%采样:时间连续信号变为时间离散模拟信号fs=500; %抽样fs>=2fc,抽样点数目将等于或大于2fc个sdt=1/fs; %频域采样间隔0.002t1=-0.1:sdt:0.1; %以sdt为间隔从-0.1到0.1画图st=cos(2*pi*60*t1); % 离散的抽样函数figure(1); subplot(3,1,1);plot(t,xt);title('原始信号'); %画出原始的信号图,以好对比grid on subplot(3,1,2); %画背景stem(t1,st,'.'); %这里画出来的是抽样后的离散图title('抽样信号');grid on %画背景(3)、抽样结果图1、抽样频率500HZ2、抽样频率1000HZ3、抽样频率100(4)、实验结果分析抽样结果与抽样频率有关,抽样频率越高则抽样间隔越小,抽样的点数越多;相反,当抽样频率越低,则抽样间隔越大,抽样的点数越少。当抽样频率满足fs大于等于2f,则抽样得到的信号没有失真;否则将产生失真。综上所述,验证了抽样定理。2.2量化与编码在抽样以后我们得到了一个个的离散的数字信号序列,但是这个序列并不是我们想要的数字信号序列,因为前面已经说过,这个不是真正的离散数字信号,它只是在时间上是离散的,在幅度上仍然是连续的。所以就要进行下一步操作量化。(1)、量化编码的matlab源代码:%量化过程n=length(st); %取st的长度为nM=max(st);A=(st/M)*2048; %a1(极性码) a2a3a4(段落码)a5a6a7a8 code=zeros(i,8); %产生i*8的零矩阵 for i=1:n %if循环语句 if A(i)>=0 code(i,1)=1; %代表正值 else code(i,1)=0; %代表负值end (2)、编码过程源代码 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); title('编码信号');grid on (3)、量化编码结果图以下为前十个编码code = Columns 1 through 13 1 1 1 1 0 1 1 0 1 1 1 1 1 Columns 14 through 26 1 0 1 1 0 0 0 1 0 0 0 1 1 Columns 27 through 39 1 1 1 1 1 0 1 1 1 1 1 0 0 Columns 40 through 52 0 1 1 1 0 1 1 0 1 1 1 0 0 Columns 53 through 65 1 0 0 0 0 1 1 0 0 0 0 1 0 Columns 66 through 78 1 1 1 0 0 1 1 0 1 1 1 1 0 Columns 79 through 91 1 1 0 1 1 1 1 1 1 1 0 1 1 Columns 92 through 104 1 1 1 1 1 0 1 1 1 1 0 1 0 Columns 105 through 117 0 1 1 1 0 0 0 1 0 1 0 1 1Columns 118 through 130 0 1 1 1 1 0 1 0 1 0 0 1 1 2.3整个程序设计流程图1-4 程序设计大致流程(1)、A律13折线和U律变换%a律13折线 u律15折线%u and A law for quantize,filename:a_u_law.m%u=255 y=ln(1+ux)/ln(1+u)%A=87.6 y=Ax/(1+lnA)(0<x<1/A) Y=(1+lnAx)/(1+lnA)clear all;close all;dx=0.01;x=0:dx:1;u=255;%u Lawyu=log(1+u*x)/log(1+u);%A LawA=87.6;for i=1:length(x) if x(i) < 1/A ya(i)=A*x(i)/(1+log(A); else ya(i)=(1+log(A*x(i)/(1+log(A); endendfigure(1)subplot(2,1,1);plot(x,yu,'k.:');title('u Law')xlabel('x');ylabel('y');grid onhold onxxu=0,1/255,3/255,7/255,15/255,31/255,63/255,127/255,1;yyu=0,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xxu,yyu,'r');stem(xxu,yyu,'b-');legend('u律压缩特性','折线近似u律');subplot(2,1,2);plot(x,ya,'k.:');title('A Law')xlabel('x');ylabel('y');grid onhold on xxa=0,1/128,1/64,1/32,1/16,1/8,1/4,1/2,1;yya=0,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xxa,yya);plot(xxa,yya,'r');stem(xxa,yya,'o:');legend('A律压缩特性','折线近似A律');(2)、A律13折线和U律变换结果图(3)、图为simulink搭建的PCM编码器框图:图1-5所示测试模型和仿真结果如图所示,其中以Saturation作为限幅器,将输入信号幅度值限制在PCM编码的定义范围内,Relay模块的门限设置为0,其输出既可作为PCM编码出去的最高位极性码。阳值取绝对值后,以Look-Up Table模块进行13折线压缩,并用增益模块将样值范围放大到0127,然后用间距为1的Quantizer进行四舍五入的取整,最后将整数编码为7位二进制序列,作为PCM编码的低7位。3 PCM 8位编码 下面给出由量化编码程序输出的编码序列(由于数据较多,这里只显示前80位数据):code =Columns 1 through 16 1 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 Columns 17 through 32 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 Columns 33 through 48 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 Columns 49 through 64 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 Columns 65 through 80 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 03.1误码率分析误码率与信号的信噪比有关,当信噪比很小时,误码率相对来说比较高,不管是通过什么解调,其误码率都是处在一个相同或者相近的位置;当信噪比较高时,误码率就比较小了,而且,不同的解调,所产生的信噪比都是相差比较大的。我们还可以看出非相干解调相同的信噪比下所产生的误码率最高,在相同的 误码率下产生的信噪比也是最大的。PSK解调是这集中解调中稍微比较好的了。3.2 A律13折线变换和U律变换(1)、程序源代码%a律13折线 u律15折线%u and A law for quantize,filename:a_u_law.m%u=255 y=ln(1+ux)/ln(1+u)%A=87.6 y=Ax/(1+lnA)(0<x<1/A) Y=(1+lnAx)/(1+lnA)clear all;close all;dx=0.01;x=0:dx:1;u=255;%u Lawyu=log(1+u*x)/log(1+u);%A LawA=87.6;for i=1:length(x) if x(i) < 1/A ya(i)=A*x(i)/(1+log(A); else ya(i)=(1+log(A*x(i)/(1+log(A); endendfigure(1)subplot(2,1,1);plot(x,yu,'k.:');title('u Law')xlabel('x');ylabel('y');grid onhold onxxu=0,1/255,3/255,7/255,15/255,31/255,63/255,127/255,1;yyu=0,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xxu,yyu,'r');stem(xxu,yyu,'b-');legend('u律压缩特性','折线近似u律');subplot(2,1,2);plot(x,ya,'k.:');title('A Law')xlabel('x');ylabel('y');grid onhold on xxa=0,1/128,1/64,1/32,1/16,1/8,1/4,1/2,1;yya=0,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1;plot(xxa,yya);plot(xxa,yya,'r');stem(xxa,yya,'o:');legend('A律压缩特性','折线近似A律');(2)、A律13折线变换和U律变换图4、增量调制(1)、源程序代码Ts=1e-3; t=0:Ts:20*Ts; x=sin(2*pi*60*t)+0.5*sin(2*pi*150*t); delta=0.4;D(1+length(t)=0; for k=1:length(t) e(k)=x(k)-D(k); e_q(k)=delta*(2*(e(k)>=0)-1); D(k+1)=e_q(k)+D(k); codeout(k)=(e_q(k)>0); end subplot(3,1,1);plot(t,x,'-o');axis(0 20*Ts,-2 2);hold on; subplot(3,1,2);stairs(t,codeout);axis(0 20*Ts,-2 2); Dr(1+length(t)=0; for k=1:length(t) eq(k)=delta*(2*codeout(k)-1); xr(k)=eq(k)+Dr(k); Dr(k+1)=xr(k); end subplot(3,1,3);stairs(t,xr);hold on; subplot(3,1,3);plot(t,x);(2)、增量调制结果5、心得体会为期一周的通信原理课程设计结束了,在紧张的实践中喔收获很多。通过此次课程设计,进一步理解模拟信号数字化PCM编码设计方面的知识。与此同时,在设计过程中也遇到了一些问题,但通过自己思考,和他人讨论以及查阅相关书籍最终解决。在此期间也暴露出对知识的欠缺和经验的不足。在课程设计过程中,不断发现错误,不断改正,并不断总结。在今后社会的发展和学习实践过程中,这将是一笔宝贵的精神财富,在遇到问题和困难时要勤思考,想方设法解决,而不是置之不理。只有这样才能解决问题,增长知识,提高个人能力,并最终成功。在这一周的课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。 回顾起此课程设计,收获的不仅是知识。从理论到实践,可以学到很多很多的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。 6、 参考文献1.通信原理樊昌信 曹丽娜 国防工业出版社2.现代通信系统分析与仿真matlab通信工具箱李建新 刘乃安西安电子科技大学出版社3.数字信号处理教程matlab释义与实现陈怀琛 电子工业出版社 4.现代通信系统使用matlab约翰-G-普罗克斯 西安交通大学出版社5. MATLAB通信工程仿真张德丰 机械工业出版社6.MATLAB/SIMULINK通信系统建模与仿真实例分析邵玉斌 清华大学出版社29