课程设计脉冲编码调制PCM系统设计与仿真.docx
《课程设计脉冲编码调制PCM系统设计与仿真.docx》由会员分享,可在线阅读,更多相关《课程设计脉冲编码调制PCM系统设计与仿真.docx(15页珍藏版)》请在冰豆网上搜索。
课程设计脉冲编码调制PCM系统设计与仿真
重庆三峡学院
通信原理课程设计
题目:
脉冲编码调制(PCM系统设计与仿真
院係):
物理与电子工程学院
班级:
2007级1班
负责人:
学号:
小组成员:
学号指导教师:
MATLAB仿真软
摘要:
脉冲编码调制(PCM是现代语音通信中数字化的重要编码方式。
件可以实现多层次的通信系统仿真。
利用MATLAB软件实现脉冲编码调制(PCM)仿真,可以
为硬件电路实现提供理论依据。
通过仿真展示了PCM编码实现的设计思路及具体过程,并加
以进行分析。
关键词:
PCM编译码
1、脉冲编码调制(PCM原理
脉冲编码调制(PCM简称脉码调制,它是一种用二进制数字代码来代替连续信号的抽样值,从而实现通信的方式。
由于这种通信方式抗干扰能力强,因此在光钎通信、数字微波
通信、卫星通信中均获得了极为广泛的运用。
PCM信号的形成是模拟信号经过“抽样、量化、编码”三个步骤实现的。
分别完成时间上离散、幅度上离散、及量化信号的二进制表示。
根据CCITT的建议,为改善小信号量化
性能,采用压扩非均匀量化,有两种建议方式,分别为A律和卩律方式,我国采用了A律方
式,由于A律压缩实现复杂,常使用13折线法编码。
PCM系统的原理框图如图1.1所示。
在编码器(1.1(a))中由冲击脉冲对模拟信号抽样,得到在抽样时刻上的信号抽样值。
这个抽样值仍是模拟量。
在它量化之前,通常用保
持电路将其做短暂保存,以便电路有时间将其量化。
在实际电路中常把抽样和保持电路做在一起,称为抽样保持电路。
图中的量化器把模拟抽样信号变成离散的数字量,然后在编码器
中进行二进制编码。
这样,每个二进制码组就代表一个量化后的信号抽样值。
图1.1(b)
中的译码器的原理与编码过程相反,这里不再赘述。
模拟信号输入抽样保持量化器,一>编码器一卡CM信号输出
冲'淼冲
(a)编码器
PCM信号输入译码器一低通滤波器模拟信号输出
(b)译码器
图1.1PCM原理方框图
1-1抽样
所谓抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信
号。
该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟
信号。
它的抽样速率的下限是由抽样定理确定的。
在一个频带限制在(0,fh)内的时间连
续信号f(t),如果以1/2fh的时间间隔对它进行抽样,那么根据这些抽样值就能完全恢复原信号。
或者说,如果一个连续信号f(t)的频谱中最高频率不超过fh,当抽样频率f
S>2fh时,抽样后的信号就包含原连续的全部信息。
这就是抽样定理。
1・2量化
从数学上来看,量化就是把一个连续幅度值的无限数集合映射成一个离散幅度值的有限
数集合。
如图2所示,量化器Q输出L个量化值yk,k=1,2,3,…,Lo必常称为重建电平或量化电平。
当量化器输入信号幅度x落在Xk与Xki之间时,量化器输出电平为yk。
这个量化过程可以表达为:
yQ(x)Q{XkxXki}yk,k1,2,3,…丄(1_1)
这里Xk称为分层电平或判决阈值。
通常kXkiXk称为量化间隔。
X
一最化器
量化值
模拟入
图1.2模拟信号的量化
量化后的抽样信号于量化前的抽样信号相比较,当然有所失真,且不再是模拟信号。
这
种失真在接收端还原模拟信号是变现为噪声,并称为量化噪声。
量化噪声的大小取决于把样
值分级“取整”的方式,分的级数越多,即量化极差或间隔越小,量化噪声也越小。
模拟信号的量化分为均匀量化和非均匀量化。
由于均匀量化存在的主要缺点是:
无论抽
样值大小如何,量化噪声的均方根值都固定不变。
因此,当信号m⑴较小时,则信号量化噪
声功率比也就很小,这样,对于弱信号时的量化信噪比就难以达到给定的要求。
通常,把满
足信噪比要求的输入信号取值范围定义为动态范围,可见,均匀量化时的信号动态范围将受
到较大的限制。
为了克服这个缺点,实际中,往往采用非均匀量化。
非均匀量化是根据信号的不同区间来确定量化间隔的。
对于信号取值小的区间,其量化
间隔v也小;反之,量化间隔就大。
它与均匀量化相比,有两个突出的优点。
首先,当输入量化器的信号具有非均匀分布的概率密度(实际中常常是这样)时,非均匀量化器的输出
端可以得到较高的平均信号量化噪声功率比;其次,非均匀量化时,量化噪声功率的均方根
值基本上与信号抽样值成比例。
因此量化噪声对大、小信号的影响大致相同,即改善了小信
号时的量化信噪比。
实际中,非均匀量化的实际方法通常是将抽样值通过压缩再进行均匀量化。
通常使用的
压缩器中,大多采用对数式压缩。
广泛采用的两种对数压缩律是压缩律和A压缩律。
美国采用压缩律,我国和欧洲各国均采用A压缩律,因此,PCM编码方式采用的也是A压缩律。
所谓A压缩律也就是压缩器具有如下特性的压缩律:
(1-2)
(1-3)
Ax-
1InA
1InAx1
1InAA
A律压扩特性是连续曲线,A值不同压扩特性亦不同,在电路上实现这样的函数规律是
相当复杂的。
实际中,往往都采用近似于A律函数规律的13折线(A=87.6)的压扩特性。
这样,它基本上保持了连续压扩特性曲线的优点,又便于用电路实现,本设计中所用到的PCM编码正是采用这种压扩特性来进行编码的。
图1.3示出了这种压扩特性。
64
表1.1列出了13折线时的x值与计算x值的比较。
表1.113折线时的x值与计算x值的比较
y
0
1
8
2
8
3
8
4
8
5
8
6
8
7
8
1
X
0
1
128
1
1
1
1
1
1
1
60.6
30.6
15.4
7.79
3.93
1.98
按折线分段时的X
0
1
1
64
1
32
1
16
1
8
1
4
1
2
1
28
段落
1
2
3
4
5
6
7
8
斜率
16
16
8
4
2
1
1/2
1/4
表1.1中第二行的x值是根据A87.6时计算得到的,第三行的x值是13折线分段时的值。
可见,13折线各段落的分界点与A87.6曲线十分逼近,同时x按2的幕次分割有利于数字化。
1.3编码(Coding)
所谓编码就是把量化后的信号变换成代码,其相反的过程称为译码。
当然,这里的编码
和译码与差错控制编码和译码是完全不同的,前者是属于信源编码的范畴。
量化后的抽样信号在一定的取值范围内仅有有限个可取的样值,且信号正、负幅度分布的对称性使正、负样值的个数相等,正、负向的量化级对称分布。
若将有限个量化样值的绝对值从小到大依次排
列,并对应的依次赋予一个十进制数字代码,在码前以“
+\—
号为前缀,来区分样值的正负,则量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。
把量化的抽样信号变换成给定字长的二进制码流的过程为编码。
在现有的编码方法中,若按编码的速度来分,大致可分为两大类:
低速编码和高速编码。
通信中一般都采用第二类。
编码器的种类大体上可以归结为三类:
逐次比较型、折叠级联型、
混合型。
在逐次比较型编码方式中,无论采用几位码,一般均按极性码、段落码、段内码的顺序排列。
下面结合13折线的量化来加以说明。
(第二位至第八位)则表示抽样量化值的绝对大小。
具体的做法是:
用第二至第四位表示段
落码,它的8种可能状态来分别代表8个段落的起点电平。
其它四位表示段内码,它的16
种可能状态来分别代表每一段落的16个均匀划分的量化级。
这样处理的结果,8个段落被
划分成,二128个量化级。
段落码和8个段落之间的关系如表1.2所示;段内码与16个量化级之间的关系见表1.3。
话音PCM的抽样频率为8KHZ每个量化样值对应一个8位二进制码,故话音数字编码
信号的速率为8bitsx8kHz=64kb/s.*化噪声随级数的增多和极差的缩小而缩小。
量化级数
增多即样值个数增多,就要求更长的二进制编码。
因此,量化噪声随二进制编码的位数增多而减少,即随数字编码信号的速率提高而减少。
自然界中的声音非常复杂,波形极其复杂,
PCM编码。
PCMI过抽样、量化、编码三个步骤将
通常我们采用的是脉冲代码调制编码,即连续变化的模拟信号转换为数字编码。
2、量化噪声比
PCM系统输出端平均信号量化噪声比仅依赖于每一个编码组数N。
对于一个频带限制在
fh的信号,按照抽样定理,此时要求每秒钟最少传输的抽样脉冲数等于2fh;若PCM系统
的编码位数为N贝]需要系统每秒钟传输2fh个二进制脉冲。
为此,这时的系统的总带宽B
至少等于Nfh。
故可用公式:
(28)
SQNR忌2〒(2-1)
Nq2h
如果模拟信号的概率表示为则信号量化噪声比(SQNR为:
SQNR3N
V
XXma
2
4-(2-2)
X^ma
cv2
34Y
其中Y表示为如下式所示的归一化输入
Y(2-3)
)Cmax
进而用dB表示的SQNF为
2
SQNRb486vYdB(2-4)
量化后,通过为每个量化级数使用V比特来对这些级数进行编码。
编码方案通常选择为
自然二进制编码(NBC,即最低量化级映射为全0序列而最高量化级映射到全1序列。
所有
其他级数以升序映射为各量化值。
3、设计步骤
3.1、产生一个幅度为1,频率w=1的正弦序列。
采用均匀PCM方案,将其进行8级和16级量化。
在同一坐标系内绘出原始信号和量化信号的曲线。
将两种情况得到的SQNR进行比
较。
3.2、对长度为500的高斯随机变量序列计算当量化电平数为64时所得的SQNR并求出该序列
的前5个值,相应的量化值以及相应的码字。
最后,画出量化误差。
3.3、再分别以量化电平为16和128时重做步骤2,并对二者以及步骤2的结果进行比较。
4、仿真结果和分析
4.1、MATAB"序u_pcm.m以为抽样值序列和所需要的量化级的数目作为输入。
u_pcm.m
function[sqnr,a_quan,code]=u_pcm(a,n)
%U_PCM
%
%
一个序列的均匀PCM编码。
[SQNR,A_QUAN,CODE]=U_PCM(A,N)a=输入序丽。
%门二量化级数的数目(偶数)。
%sqnr=输入信号量化噪声比(以dB为单位)。
%a_quan=编码前的量化输出。
%code=编码后的输出。
amax=max(abs(a));
a_quan=a/amax;
b_quan=a_quan;
d=2/n;%取样间隔
q=d.*[O:
n-1];
q=q-((n-1)/2)*d;%q是从一(1—1/n)到(1-1/n),且间隔为2/n的序列;
fori=1:
n
a_quan(find((q(i)-d/2<=a_quan)&(a_quanv=q(i)+d/2)))=...
q(i).*ones(1,length(find((q(i)-d/2<=a_quan)&(a_quan<=q(i)+d/2))));b_quan(find(a_quan==q(i)))=(iones(1,length(find(a_quan==q(i))));end
a_quan=a_quan*amax;%循环结束后,a_quan中为量化后的值,b_quan为量化码号
nu=ceil(log2(n));%天花板函数求得PCM码比特数
code=zeros(length(a),nu);%二维数组储存PCM码
%下面代码为求PCM码矩阵code
fori=1:
length(a)
forj=nu:
-1:
0
A
if(fix(b_quan(i)/(2j))==1)
code(i,(nu-j))=1;
b_quan(i)=b_quan(i)・2Aj;
end
end
end
sqnr=20*log10(norm(a)/norm(a-a_quan));
4.2、选择信号的持续时间为10秒。
然后用MATLAB程序u_pcm.m住成8级量化和16
级量化两种情况下的量化信号。
程序如下:
echoon
t=[0:
0.01:
10];
a=sin(t);
[sqnr8,aquan8,code8]=u_pcm(a58);
[sqnr16,aquan16,code16]=u_pcm(a,16);
pause
%
按任意键可看到当
N-8时的信号量化噪声比。
sqnr8pause
%
按任意键可看到当
N-16时的信号量化噪声
sqnr16
pause
%
按任意键可看到信号及其量化后的曲线。
plot(t,a,fJ5t,aquan8/-.\t5aquan16/J,t1zeros(1,length(t)))运行MATLAB"得到如下结果:
sqnr8=
18.9023
sqnr16=
25.1272
图4218级(断线)和16级(连续线)正弦信号均匀PCM
4.3、用MATLABA序PCM3.m找出当量化级数为64、16、128时的SQNR求出该序列的前5个值、相应的量化值和相应的码字。
PCM3.m程序如下:
x=1:
500;
y=randn(1,500);
[sqnr64,a_quan64,code64]=u_pcm(y,64);
SQNR64=sqnr64
a_quan64_result=[a_quan64
(1),
a_quan64
(2),
a_quan64(3),
a_quan64⑷,
a_quan64⑸]%前五个量化值
code64_result=[code64(1,1:
6),
code64(2,1:
6),
code64(3,1:
6),
code64(4,1:
6),code64(5,1:
6)]%前五个相应的码字
[sqnr16,a_quan16,codel6]=u_pcm(y,16);
SQNR16=sqnr16
aquan64_result=[a_quan16
(1),
a_quan16
(2),
a_quan16(3),
a_quan16(4),
a_quan16(5)]
code64_result=[code64(1,1:
4),
code64(2,1:
4),
code64(3,1:
4),code64(4,1:
4),code64(5,1:
4)][sqnr128,a_quan128,codel28]=u_pcm(y,128);SQNR128=sqnr128
a_quan128_result=[a_quan128
(1),
a_quan128
(2),
a_quan128(3),a_quan128(4),a_quan128(5)]code128_result=[code128(1,1:
7),codel28(2,1:
7),codel28(3,1:
7),codel28(4,1:
7),codel28(5,1:
7)]
虾面为量化误差图形的代码
subplot(2,3,1);
plot(x,a_quan16);%画出量化后的图形
subplot(2,3,4);
[Y,l]=sort(y);%[Y,l]=sort(A)
量化误差为纵坐标的图形
plot(a_quan16(l),abs(Y-a_quan64(l)));%以量化值为横坐标,
xlabelfN=16*);
subplot(2,3,2);
plot(x,a_quan64);
subplot(2,3,5);
[Y,l]=sort(y);
plot(a_quan64(l),abs(Y-a_quan64
(1)));xlabel('N=64');
subplot(2,3,3);
plot(x,a_quan128);
subplot(2,3,6);
[Y,l]=sort(y);
plot(a_quan128(l),abs(Y-a_quan128(I)));
xlabelfN=128*);
运行MATLA阿得到如下结果:
SQNR64=
32.3455
a_quan64_result=
-0.4331-1.69310.11810.2756-1.1419
code64_result=
0
1
1
0
1
0
0
0
1
0
1
0
1
0
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
1
SQNR16
20.0591
a_quan64_result=-0.4725-1.7325code64_result=0.15750.1575-1.1025
0110
0010
1000
0100
SQNR128=
38.3188a_quan128_result=
-0.4134-1.67340.13780.2953-1.1616
code128_result=
图4.3.164、16、128级量化的量化误差
5、心得体会
本次课程设计我们花了很多时间查阅资料、设计程序、安装MATLAB八件,最终在MATLAB
上面我们的程序很好的运行了出来,感觉很兴奋。
第一次做,很多地方都不懂通,没有通过
刘老师的审查。
回来以后我去图书馆借了几本书,慢慢的学,慢慢做,终于在MATLAB^件
上运行出来了结果,感觉很开心。
总的来说,本次课程设计花费的时间也不算短,这个过程
中我又重温了一边专业知识,并且锻炼了自己的动手能力。
同时我们也熟悉了MATLAB^件
和它的简单运用。
本次课程设计让我们收获良多。
6、参考文献
]1J11J
12345[[[rL/(\
王立宁,乐光新,詹菲.MATLAB与通信仿真[M].人民邮电出版社,2000
樊昌信,曹丽娜.通信原理[M].国防工业出版社,2006
李环,任波,华宇宁•通信系统仿真设计与应用[M].电子工业出版社,2009
孙屹.SystemView通信仿真开发手册[M].国防工业出版社,2004
青松,程岱松,武建华.数字通信系统的matlab仿真与分析[M].北京航空航天大学出版社,2001
[6]罗卫兵,孙桦,张婕.matlab动态系统分析及通信系统仿真设计[M].西安电子科技大学出版社,2001
[7]曹志刚,钱亚生.现代通信原理[M]•清华大学出版社,1992
[8]苗长云•现代通信原理及应用[M]•电子工业出版社,2005