通原.docx
《通原.docx》由会员分享,可在线阅读,更多相关《通原.docx(23页珍藏版)》请在冰豆网上搜索。
![通原.docx](https://file1.bdocx.com/fileroot1/2023-1/31/08ffe3bf-31c9-40ee-b2e8-43704d01c6d9/08ffe3bf-31c9-40ee-b2e8-43704d01c6d91.gif)
通原
目录
课程设计评分标准-1-
基于MATLAB/simulink的PCM编码的研究与仿真-3-
摘要-3-
Abstract-3-
1背景知识-4-
1.1PCM原理及仿真-4-
1.1.1脉冲编码调制-4-
1.1.2PCM编码原理-5-
2M文件仿真-10-
3Simulink仿真-15-
3.1原始模拟信号电路图及仿真图-15-
3.2PCM编码器电路设计-17-
3.3PCM解码器电路设计-24-
4心得体会-28-
参考文献-28-
基于MATLAB/simulink的PCM编码的研究与仿真
摘要
本设计结合PCM的抽样、量化、编码原理,利用MATLAB软件编程和绘图功能,完成了对脉冲编码调制(PCM)系统的建模与仿真分析。
即学习通过利用计算机建立通信系统模型的基本方法和基本技能,学习会利用仿真的手段对通信系统的基本理论和基本算法进行验证。
学习现有流行的通信系统仿真软件的基本使用方法,利用Matlab软件解决通信中存在的问题。
关键词:
脉冲编码调制(PCM)均匀与非均匀量化MATLAB仿真
Abstract
Combinedwiththesampling,quantization,codingtheoryofPCM,usingMATLABsoftwareprogrammingandgraphics,thecompletionofthepulsecodemodulation(PCM)modelingandsimulationanalysissystem.Thebasicmethodistoestablishthemodelofcommunicationsystemoflearningthroughtheuseofcomputerandbasicskills,learningbymeansofsimulationofcommunicationsystemofbasictheoryandbasicalgorithmareverified.Thebasicmethodofusingcommunicationsystemsimulationsoftwaretolearnoftheexisting,tosolvecommunicationproblemsusingMatlabsoftware.
Keywords:
pulsecodemodulation(PCM)withuniformandnon-uniformquantizationinMATLABsimulation
1背景知识
1.1PCM原理及仿真
脉冲编码调制就是把一个时间,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。
脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程。
1.1.1脉冲编码调制
脉冲编码调制(pulsecodemodulation,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.2PCM编码原理
1)抽样
所谓抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号。
该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟信号。
它的抽样速率的下限是由抽样定理确定的。
在一个频带限制在(0,fh)内的时间连续信号f(t),如果以1/2fh的时间间隔对它进行抽样,那么根据这些抽样值就能完全恢复原信号。
或者说,如果一个连续信号
f(t)的频谱中最高频率不超过fh,当抽样频率fS≥2fh时,抽样后的信号就包含原连续的全部信息。
抽样定理在实际应用中应注意在抽样前后模拟信号进行滤波,把高于二分之一抽样频率的频率滤掉。
这是抽样中必不可少的步骤。
2)量化
量化,就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。
从数学上来看,量化就是把一个连续幅度值的无限数集合映射成一个离散幅度值的有限数集合。
一个模拟信号经过抽样量化后,得到已量化的脉冲幅度调制信号,它仅为有限个数值。
如下图所示,量化器输出L个量化值
,k=1,2,3,…,L。
常称为重建电平或量化电平。
当量化器输入信号幅度x落在
与
之间时,量化器输出电平为
。
这个量化过程可以表达为:
这里
称为分层电平或判决阈值。
通常
称为量化间隔。
图1-1
模拟信号的量化分为均匀量化和非均匀量化。
均匀量化:
用这种方法量化输入信号时,无论对大的输入信号还是小的输入信号一律都采用相同的量化间隔。
为了适应幅度大的输入信号,同时又要满足精度要求,就需要增加样本的位数。
但是,对话音信号来说,大信号出现的机会并不多,增加的样本位数就没有充分利用。
为了克服这个不足,就出现了非均匀量化的方法。
非均匀量化:
非均匀量化是根据信号的不同区间来确定量化间隔的。
对于信号取值小的区间,其量化间隔
也小;反之,量化间隔就大。
它与均匀量化相比,有两个突出的优点。
首先,当输入量化器的信号具有非均匀分布的概率密度(实际中常常是这样)时,非均匀量化器的输出端可以得到较高的平均信号量化噪声功率比;其次,非均匀量化时,量化噪声功率的均方根值基本上与信号抽样值成比例。
因此量化噪声对大、小信号的影响大致相同,即改善了小信号时的量化信噪比。
实际中,非均匀量化的实际方法通常是将抽样值通过压缩再进行均匀量化。
通常使用的压缩器中,大多采用对数式压缩。
广泛采用的两种对数压缩律是
压缩律和A压缩律。
美国采用
压缩律,我国和欧洲各国均采用A压缩律,所谓A压缩律也就是压缩器具有如下特性的压缩律:
,
。
由于A律压缩实现复杂,常使用13折线法编码,压扩特性图如下图所示:
图1-2A律函数13折线压扩特性图
这样,它基本上保持了连续压扩特性曲线的优点,又便于用数字电路实现,本设计中所用到的PCM编码正是采用这种压扩特性来进行编码的。
表1-113折线时的
值与计算
值的比较
0
1
0
1
按折线
分段时的
0
1
段落
1
2
3
4
5
6
7
8
斜率
16
16
8
4
2
1
表1中第二行的值是根据时计算得到的,第三行的值是13折线分段时的值。
可见,13折线各段落的分界点与曲线十分逼近,同时按2的幂次分割有利于数字化。
3)编码
所谓编码就是把量化后的信号变换成代码,其相反的过程称为译码。
当然,这里的编码和译码与差错控制编码和译码是完全不同的,前者是属于信源编码的范畴。
在现有的编码方法中,若按编码的速度来分,大致可分为两大类:
低速编码和高速编码。
通信中一般都采用第二类。
编码器的种类大体上可以归结为三类:
逐次比较型、折叠级联型、混合型。
在逐次比较型编码方式中,无论采用几位码,一般均按极性码、段落码、段内码的顺序排列。
下面结合13折线的量化来加以说明。
表1-2段落码表1-3段内码
段落序号
段落码
量化级
段内码
8
111
15
1111
14
1110
7
110
13
1101
12
1100
6
101
11
1011
10
1010
5
100
9
1001
8
1000
4
011
7
0111
6
0110
3
010
5
0101
4
0100
2
001
3
0011
2
0010
1
000
1
0001
0
0000
PCM编译码器的实现可以借鉴单片PCM编码器集成芯片,如:
TP3067A、CD22357等。
单芯片工作时只需给出外围的时序电路即可实现,考虑到实现细节,仿真时将PCM编译码器分为编码器和译码器模块分别实现,在13折线法中,无论输入信号是正是负,均按8段折线(8个段落)进行编码。
若用8位折叠二进制码来表示输入信号的抽样量化值,其中用第一位表示量化值的极性,其余七位(第二位至第八位)则表示抽样量化值的绝对大小。
具体的做法是:
用第二至第四位表示段落码,它的8种可能状态来分别代表8个段落的起点电平。
其它四位表示段内码,它的16种可能状态来分别代表每一段落的16个均匀划分的量化级。
这样处理的结果,8个段落被划分成27=128个量化级。
段落码和8个段落之间的关系如表2所示;段内码与16个量化级之间的关系见表3。
4)译码
PCM译码器是实现PCM编码的逆系统。
其中各模块功能如下:
D/A转换器:
用来实现与A/D转换相反的过程,实现数字量转化为模拟量,从而达到译码最基本的要求,也就是最起码的步骤。
瞬时扩张器:
实现与瞬时压缩器相反的功能,由于采用A律压缩,扩张也必须采用A律瞬时扩张器。
低通滤波器:
由于采样脉冲不可能是理想冲激函数会引入孔径失真,量化时也会带来量化噪声,及信号再生时引入的定时抖动失真,需要对再生信号进行幅度及相位的补偿,同时滤除高频分量,在这里使用与编码模块中相同的低通滤波器。
2M文件仿真
程序如下:
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-1
clearall;
closeall;
%建立原信号
T=0.002;%取时间间隔为0.01
t=-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.002
t1=-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('原始信号');%画出原始的信号图,以好对比
gridon%画背景
subplot(3,1,2);
stem(t1,st,'.');%这里画出来的是抽样后的离散图
title('抽样信号');
gridon%画背景%量化过程
n=length(st);%取st的长度为n
M=max(st);
A=(st/M)*2048;
%a1(极性码)a2a3a4(段落码)a5a6a7a8(段内电平码)
code=zeros(i,8);%产生i*8的零矩阵
%极性码a1
fori=1:
n%if循环语句
ifA(i)>=0
code(i,1)=1;%代表正值
else
code(i,1)=0;%代表负值
end
ifabs(A(i))>=0&&abs(A(i))<16
code(i,2)=0;code(i,3)=0;code(i,4)=0;step=1;start=0;
elseif16<=abs(A(i))&&abs(A(i))<32
code(i,2)=0;code(i,3)=0;code(i,4)=1;step=1;start=16;
elseif32<=abs(A(i))&&abs(A(i))<64
code(i,2)=0;code(i,3)=1;code(i,4)=0;step=2;start=32;
elseif64<=abs(A(i))&&abs(A(i))<128
code(i,2)=0;code(i,3)=1;code(i,4)=1;step=4;start=64;
elseif128<=abs(A(i))&&abs(A(i))<256
code(i,2)=1;code(i,3)=0;code(i,4)=0;step=8;start=128;
elseif256<=abs(A(i))&&abs(A(i))<512
code(i,2)=1;code(i,3)=0;code(i,4)=1;step=16;start=256;
elseif512<=abs(A(i))&&abs(A(i))<1024
code(i,2)=1;code(i,3)=1;code(i,4)=0;step=32;start=512;
elseif1024<=abs(A(i))&&abs(A(i))<2048
code(i,2)=1;code(i,3)=1;code(i,4)=1;step=64;start=1024;
end
B=floor((abs(A(i))-start)/step);%段内码编码floor取整(四舍五入)
t=dec2bin(B,4)-48;%dec2bin定义将B变为4位2进制码,-48改变格式
code(i,5:
8)=t(1:
4);%输出段内码
end
code=reshape(code',1,8*n);%reshape代表从新塑形
code
subplot(3,1,3);
stem(code,'.');axis([16401]);%这里我们先取前面八个点编码输出,输出时候有64个点
title('编码信号');
gridon
2-2
3Simulink仿真
3.1原始模拟信号电路图及仿真图
3-1原始模拟信号电路图
两个正弦波的参数设置分别为:
3-2正弦波参数设置
3-3正弦波参数设置
所得波形为
3-4
3.2PCM编码器电路设计
3-413折线近似的PCM编码器测试模型和仿真结果
测试模型和仿真结果如上图所示。
其中以Saturation作为限幅器,将输入信号幅度值限制在PCM编码的定义范围内,以A-LawCompressor作压缩器,Relay模块的门限值设置为0,其输出即可作为PCM编码输出的最高位——极性码。
样值取值绝对值后,用增益模块将样值放大到0-127,然后用间隔为1的Quantizer进行四舍五入取整,最后将整数编码为7位二进制序列,作为PCM编码的低7位。
可以将上图中Constant和Display(不含)之间的模块封装一个PCM编码子系统备用。
其中各模块的具体参数设置如下:
3-5Constant
3-6Saturation
3-7Abs
3-8A-LowCompressor
3-9Gain
3-10Quantizer
3-11IntegertoBitConverter
3-12Display
3-13Relay
将该系统进行封装
3-14封装之后的PCM编码子系统
3-15封装之后的PCM编码子系统图标
3.3PCM解码器电路设计
3-1613折线近似的PCM解码器测试模型和仿真结
测试模型和仿真结果如上图所示,其中PCM编码子系统是编码器封装之后的。
PCM解码器中首先分离并行数据中的最高位(极性码)和7位数据,然后将7位数据转换位整数值,再进行归一化,扩张后与双极性的极性码相乘得出解码值。
可以将该模型中In1Out1右端和Display左端的部分封装为一个PCM解码子系统备用。
其中各模块的具体参数设置如下:
3-17Constant
3-18Demux
3-19Mux
3-20Relay
3-21BittoIntegerConverter
3-22Gain
3-23A-LowExpander
4心得体会
设计过程中,我弄懂了A律13折线和PCM编码的原理,了解这些后总个设计思路就呈现在眼前,自己的信心也倍增。
通过这次课程设计,充分掌握了PCM编码的工作原理及PCM系统的工作过程,学会了使用仿真软件MATLAB的SIMULINK,并学会通过应用软件仿真来实现PCM系统的设计,对以后的学习和工作都起到了一定的作用,加强了实践动手能力和学习新知识的技能。
总体来说,这次实习让我受益匪浅。
打破了一直局限于课本知识的学习方式,增加了我们的兴趣,并且体会到成功给大家带来的喜悦。
让我明白:
无论遇到什么困难,只要对自己有信心,认真思考,悉心求教,自然会找到解决的办法。
相信在以后的日子里,大家会做得更好。
在摸索该如何设计系统使之实现所需功能的过程中,培养了我的设计思维,增加了实际操作能力。
在让我体会到了系统设计的艰辛同时,更让我体会到成功的喜悦。
参考文献
[1]樊昌信,曹丽娜.通信原理.国防工业出版社,2008
[2]陈怀琛.数字信号处理教程——matlab释义与实现.电子工业出版社
[3]李贺冰.SIMULINK通信仿真教程[M].国防工业出版社,2006年
[4]曹志刚,钱亚生.现代通信原理.清华大学出版社,1992