- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PCM编码及解码的仿真
1. 仿真原理及思路
在PCM中,对模拟信号进行抽样、量化,将量化的信号电平值转化为对应的二进制码组的过程称为编码,其逆过程称为译码或解码。从理论上看,任何一个可逆的二进制码组均可用于PCM。但是目前最常见的二进制码有三类:二进制自然码(NBC)、折叠二进制码组(FBC)、格雷二进制码(RBC)。在PCM中实际采用的是折叠二进制码。
图1 A律13折线
由表1可见,如果把16个量化级分成两部分:0~7的8个量化级对于于负极性样值脉冲,8~15的8个量化级对应于正极性样值脉冲。自然二进制码就是一般的十进制正整数的二进制表示,在16个量化级中:,采用4位码元表示为:、、、的有无组合来构成。比如第11个量化级可表示为
其对应的码组可表示为:1011,其余依次类推。本程序中采用自然码的编码方式。
表1 自然码、折叠码、格雷码
样值脉冲极性 量化级 自然二进制码
b1 b2 b3 b4 折叠二进制码
b1 b2 b3 b4 格雷码
b1 b2 b3 b4 正极性部分 15
14
13
12
11
10
9
8 1 1 1 1
1 1 1 0
1 1 0 1
1 1 0 0
1 0 1 1
1 0 1 0
1 0 0 1
1 0 0 0 1 1 1 1
1 1 1 0
1 1 0 1
1 1 0 0
1 0 1 1
1 0 1 0
1 0 0 1
1 0 0 0 1 0 0 0
1 0 0 1
1 0 1 1
1 0 1 0
1 1 1 0
1 1 1 1
1 1 0 1
1 1 0 0 负极性部分 7
6
5
4
3
2
1
0 0 1 1 1
0 1 1 0
0 1 0 1
0 1 0 0
0 0 1 1
0 0 1 0
0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1 0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 0
0 0 1 0
0 0 1 1
0 0 0 1
0 0 0 0
CCITT建议的PCM编码规则,电话语音信号的频带为300~3400Hz,抽样速率为,对每个抽样值进行A律或者律对数压缩非均匀量化及非线性编码,每个样值用八位二进制代码表示,这样,每路标准话路的比特率为64kbps。
表3.5.2中给出的是信号正值的编码,负值编码是对称的,其绝对值与此表相同。整个信号动态范围共分13个段落,各段落的量化间隔都不同,并且有2的倍数关系。每个段落内位均匀分层量化,共16层。每个样值用8比特来表示,即。这8比特分为三部分:为极性码,0代表负值,1代表正值。称为段落码,表示段落的号码,其值为0~7,代表8个段落。表示每个段落内均匀分层的位置,其值为0~15,代表一段落内的16个均匀量化间隔。在PCM解码时,根据八比特码确定某段落内均匀分层的位置,然后去其量化间隔的中间值作为量化电平。
本程序首先产生一个正弦信号,并对其进行采样量化,生成一个幅值矩阵;然后利用编码子函数对此矩阵中的每个元素按照A律13折线编码规则编码,并产生一个输出码组矩阵;最后利用解码子函数对输出码组矩阵解码,并画出编码前与解码后的波形图。
2. 程序流程图
3. 仿真程序及运行结果
仿真程序:
%实验四:PCM编码及解码仿真
clear all;
close all;
global dt t df N
t = 0:0.01:10;
x = sin(t);
v = max(x);
xx = x/v; %normalize
sxx = floor(xx*4096);
y = pcm_encode(sxx);
yy = pcm_decode(y,v);
drawnow
figure(1)
set(1,Position,[10,350,600,200])%设定窗口位置及大小
plot(t,x)
title(sample sequence);
figure(2)
set(2,Position,[10,50,600,200
文档评论(0)