通信原理13折线PCM量化编码解码.docx
- 文档编号:25448
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:22
- 大小:227.02KB
通信原理13折线PCM量化编码解码.docx
《通信原理13折线PCM量化编码解码.docx》由会员分享,可在线阅读,更多相关《通信原理13折线PCM量化编码解码.docx(22页珍藏版)》请在冰豆网上搜索。
通信原理13折线PCM量化编码解码
程序用matlab实现,全都运行过,完美实现PCM功能
班级_______
通信原理大作业
--抽样量化编码译码的Matlab实现
学院电子工程学院
学号********
学生姓名***
授课老师***
一、前言
通信系统的信源有两大类:
模拟信号和数字信号。
例如:
话筒输出的语音信号属于模拟信号;而文字、计算机数据属于数字信号。
数字信号相比于模拟信号有抗干扰能力强、无噪声积累的优点。
因此,若输入是模拟信号,则在数字通信系统的信源编码部分需对输入模拟信号进行数字化。
数字化需要三个步骤:
抽样、量化和编码。
抽样是指用每隔一定时间的信号样值序列来代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化。
量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。
编码则是按照一定的规律,把量化后的值用二进制数字表示,然后转换成二值或多值的数字信号流。
三个步骤如下图所示:
二、模拟信号的抽样
(1)低通模拟信号的抽样原理
抽样定理:
设一个连续模拟信号m(t)中的最高频率<
,则以间隔时间为T≤
的周期性冲激脉冲对它抽样时,m(t)将被这些抽样值所完全确定。
下面对这个定理进行证明。
设有一个最高频率小于
的信号m(t)。
将这个信号和周期性单位冲激脉冲
相乘,乘积就是抽样信号,它是一系列间隔为T秒的强度不等的冲激脉冲。
这些冲激脉冲的强度等于相应时刻上信号的抽样值。
现用
表示此抽样信号序列。
故有
令M(f)、
和
分别表示m(t)、
和
的频谱。
计算可得:
上式表明,抽样信号的频谱
是无数间隔频率为
的原信号频谱M(f)相叠加而成。
m(t)、
和
的时域和频域波形如下图所示:
信号m(t)的最高频率小于
,若频率间隔
,则
中包含的每个原信号频谱M(f)之间互不重叠。
这样就能够从
中用一个低通滤波器分离出m(t)的频谱M(f),也就是能从抽样信号中恢复原信号。
(2)模拟信号抽样的Matlab实现及采样定理的验证
(a)编程思想
令输入的模拟信号m(t)=
,由已学知识可知:
m(t)的最高频率
=200Hz,由抽样定理知:
当采样频率
(采样周期小于1/400s)时,抽样信号可以完全确定原信号。
由傅里叶变换知识得:
模拟信号m(t)=
的频谱
=
。
分别令采样频率
,绘制出两种情况下各自抽样信号的频谱,与原模拟信号的频谱进行比较。
若只有当采样频率大于400Hz时,抽样信号的频谱才与原模拟信号相同,则可以验证采样定理的正确性。
(b)Matlab输出波形图
(c)结论
由上图可知:
当采样频率小于2
时,抽样信号的频谱发生了混叠。
而采样频率大于2
时,抽样信号的频谱与原模拟信号频谱相同。
(d)Matlab源代码
%sampling.m对模拟信号采样产生序列信号,并验证采样定理
t=0:
0.001:
1;%模拟信号时域和频域波形
x=2.5+3.*sin(200*2*pi*t)+2.*cos(70*2*pi*t);
figure
(1)
subplot(2,1,1)
plot(t,x);
title('模拟信号时域波形')
fs=linspace(-1000/2,1000/2,length(t));
xf=fftshift(fft(x));
subplot(2,1,2)
plot(fs,abs(xf))%可知,信号最大频率200Hz
title('模拟信号频域波形')
T=0.009;%不满足采样定理,采样周期大于1/400
n=0:
1:
1/T;
xn=2.5+3.*sin(200*2*pi*n*T)+2.*cos(70*2*pi*n*T);
figure
(2)
subplot(2,1,1)
stem(n,xn)
title('采样序列时域(不符合采样定理)')
fns=linspace(-0.5/T,0.5/T,length(n));
xnf=fftshift(fft(xn));
subplot(2,1,2)
plot(fns,abs(xnf))
title('采样序列频域(不符合采样定理)')
T=0.0013;%满足采样定理,采样周期小于1/400
n=0:
1:
1/T;
xn=2.5+3.*sin(200*2*pi*n*T)+2.*cos(70*2*pi*n*T);
figure(3)
subplot(2,1,1)
stem(n,xn)
title('采样序列时域(符合采样定理)')
fns=linspace(-0.5/T,0.5/T,length(n));
xnf=fftshift(fft(xn));
subplot(2,1,2)
plot(fns,abs(xnf))
title('采样序列频域(符合采样定理)')
三、抽样信号的非均匀量化编码(13折线法)
(1)脉冲编码调制简介
模拟信号抽样后变成时间离散的信号,经过量化后,此抽样信号才能成为数字信号。
分析可知:
最简单的均匀量化器对于小输入信号很不利。
为了改善小信号时的信号量噪比,在实际应用中常采用非均匀量化。
非均匀量化时,量化间隔随信号抽样值的不同而变化。
信号抽样值小时,量化间隔
也小;信号抽样值大时,量化间隔
也变大。
实际应用中,用13折线法近似A压缩律,来进行非均匀量化。
图中横坐标x在0至1区间中分为不均匀的8段。
1/2至1间的线段称为第8段;1/4至1/2间的线段称为第7段;1/8至1/4间的线段称为第6段;依此类推。
图中纵坐标y则均匀地划分作8段。
将与这8段相应的座标点(x,y)相连,就得到了一条折线。
在语音通信中,通常采用8位的PCM编码就能够保证满意的通信质量。
在13折线法中采用的折叠码有8位。
第一位c1表示量化值的极性正负。
后面的7位分为段落码和段内码两部分,用于表示量化值的绝对值。
其中第2至4位(c2c3c4)是段落码,共计3位,可以表示8种斜率的段落;其他4位(c5--c8)为段内码,可以表示每一段落内的16种量化电平。
段内码代表的16个量化电平是均匀划分的。
所以,这7位码总共能表示
=128种量化值。
在下面的表中给出了段落码和段内码的编码规则。
量化间隔
段内码
c5c6c7c8
15
1111
14
1110
14
1101
12
1100
11
1011
10
1010
9
1001
8
1000
7
0111
6
0110
5
0101
4
0100
3
0011
2
0010
1
0001
0
0000
段落序号
段落码c2c3c4
段落范围(量化单位)
8
111
1024~2048
7
110
512~1024
6
101
256~512
5
100
128~256
4
011
64~128
3
010
32~64
2
001
16~32
1
000
0~16
在上述编码方法中,段内码是按量化间隔均匀编码的,但是因为各个段落的斜率不等,长度不等,故不同段落的量化间隔是不同的。
其中第1和2段最短,斜率最大,其横坐标x的归一化动态范围只有1/128。
再将其等分为16小段后,每一小段的动态范围只有(1/128)/(1/16)=1/2048。
第8段最长,其横坐标x的动态范围为1/2。
将其16等分后,每段长度为1/32。
假若采用均匀量化而仍希望对于小电压保持有同样的动态范围1/2048,则需要用11位的码组才行。
现在采用非均匀量化,只需要7位就够了。
(2)13折线法编码的Matlab实现
(a)编程思想
上面“模拟信号的抽样”已经得到了时间离散、幅度连续的抽样信号。
若将对抽样信号非均匀量化编码编出的8位码组用
表示。
(1)抽样信号是1×n的矩阵,例如采样周期T=0.0013;n=0:
1:
1/T;则有770个抽样值,13折现法编码后得到的则是770×8的矩阵,一行对应一个抽样值的8位PCM码组。
每个抽样值的编码思想都是一样的,若要进行多个抽样值的编码,进行for循环即可。
下面阐述单个抽样值的编码思路。
(2)确定极性码
:
利用matlab的符号函数sign(x):
x<0时,sign(x)=-1;x=0时,sign(x)=0;x>0时,sign(x)=1。
所以,若sign(x)大于等于0,
=1;否则
=0。
例如:
+1000,sign(1000)=1,所以
=1。
(3)确定段落码
:
PCM13折线编码的动态范围为-2048--2048,而上一步骤中已经求出了各抽样信号极性,于是只要对抽样信号的绝对值分析即可。
故对抽样值依次进行取模、归一、乘以2048、取整的操作,可以将抽样值转化为0--2048之间的整数。
根据段落码与段落范围的关系,使用if语句即可确定
。
例如:
+1000,因为1000≥128,故
=1;又1000≥512,故
=1;又1000≤1024,故
=0。
对于其他取值情况,判断方法与此类似。
(4)确定段内码
:
每一段落均被均匀地划分为16个量化间隔,不过不同段落的量化间隔是不同的。
(3)中确定了段落编码,可以确定每段的起始值,再根据待编码值、所在段的起始值、所在段量化间隔的大小即可确定段内码。
例如:
+1000,
=110,故1000处于第7段(二进制110转化为十进制得到6,6+1=7)
sp=[0,16,32,64,128,256,512,1024];%每段起始值
spmin=[1,1,2,4,8,16,32,64];%每段的最小量化间隔
再得到段起始值sp(7)=512,段最小量化间隔spmin(7)=32。
,向负无穷方向取整得到15,再将15十进制转化为二进制,得到1111,故
=1111。
令Matlab程序输入为S=1000,可得:
S=
1000
抽样信号进行13折线编码后的码组为(每一行代表一个抽样值,共1个值)
code=
11101111
(可知:
程序运行结果与上述分析结果相同)
(5)若码组矩阵初始化为全0阵,则只有当某个码为1时,才需要进行赋值。
例如:
-100,sign(-100)=-1,
=0。
而
初始化值就为0,故可以不采取任何操作,保持初始值即可。
(b)Matlab输出结果
抽样信号进行13折线编码后的码组为(每一行代表一个抽样值,共770个值)
code=
11110011
11111110
11101001
01001001
11100000
11101101
01000001
01011010
11101111
11111001
11100100
11100010
11111010
11110111
00011110
01000100
11101010
111000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 原理 13 折线 PCM 量化 编码 解码