文章目录

  • 前言
  • 一、PCM是什么?
  • 二、PCM中常用的编码过程
    • 1.自然码
    • 2.折叠码
    • 3、常用的PCM编码思路--A律13折线PCM编码
  • 三、脉冲编码调制MATLAB仿真实例
  • 四、总结

前言

量化后的信号已经是离散的多电平数字信号,下一步的问题是如何将这个多电平数字信号用二进制符号表示。将多电平信号转化为二进制信号的过程称为编码。


一、PCM是什么?

在图中给出了模拟信号数字化过程——“抽样、量化和编码”的示例。图中,模拟信号的抽样值为2.42,4.38,5.00,2,78和2.19。若按照“四舍五入”的原则量化为整数值,则抽样值量化后变为2,4,5,3和2。在按照二进制数编码后,量化值(quantizedvalue)就变成二进制符号:010、100、101 、011和010。
上述将模拟信号变换成二进制信号的方法称为脉冲编码调制(PCM)。这种编码技术于20世纪40年代已经在通信技术中采用了。由于当时是从信号调制的观点研究这种技术的,所以称为脉冲编码调制。目前,它不仅用于通信领域,还广泛应用于计算机、遥控遥测、数字仪表等许多领域。在这些领域中,常将其称为模拟/数字(A/D)变换

以上描述来源于樊昌信老师主编的《通信原理(第七版)》,概括的说,所谓脉冲编码调制(PCM),不只是一种量化的手段,而应该描述成一种数字调制手段,即一种将模拟信号通过采样、量化和编码后变成数字信号从而得以在数字信道中进行传播的一种手段。一个PCM系统的原理图如图所示:

二、PCM中常用的编码过程

在了解编码过程时要首先明确,编码过程是在采样和量化已经完成的基础上进行的,即需要进行编码的值已经是量化过后的离散值。

1.自然码

自然码即按照二进制的自然规律排列而成的编码,通常采用我们熟知的8421BCD码,如将量化值0编码成0000,将量化值15编码成1111,在确定量化范围后,编码位数也很容易确定。

2.折叠码

样值脉冲极性 量化极序号 折叠二进制码
正极性部分 15 1111
正极性部分 14 1110
正极性部分 13 1101
正极性部分 12 1100
正极性部分 11 1011
正极性部分 10 1010
正极性部分 09 1001
正极性部分 08 1000
负极性部分 07 0000
负极性部分 06 0001
负极性部分 05 0010
负极性部分 04 0011
负极性部分 03 0100
负极性部分 02 0101
负极性部分 01 0110
负极性部分 00 0111

上表中为折叠二进制码的编码规律,之所以称其为折叠码,是因为其正极性部分与负极性部分存在明显的折叠关系(又称映像关系)。
所谓折叠关系是指:其正极性部分和负极性部分存在除符号位外,其他各位呈映像关系。
因此折叠码在用最高位表示极性后,双极性电压可以采用单极性编码方式来处理,这就使编码电路和编码过程大大简化。
折叠码的另外一个优点如下引用部分所示:

折叠码的另一个优点是误码对于小电压的影响较小。例如,若有一个码组为“1000”,在传输或处理时发生一个符号错误,变成“0000”。从表中可见,若它为自然码,则它所代表的量化级将从8变成0,误差为8;若它为折叠码,则它将从8变成7,误差为1。但是,若一个码组从“1111”错成“0111”,则自然码将从15变成7,误差仍为8;而折叠码则将从15错成为0,误差增大为15。这表明,折叠码对于小信号有利。由于语音信号小电压出现的概率较大,所以折叠码有利于减小语音信号的平均量化噪声。
————摘自樊昌信《通信原理(第七版)》

3、常用的PCM编码思路–A律13折线PCM编码

在A律13折线PCM编码中,由于正负各8段,每段内有16个量化极,因此总共需要 2 × 8 × 16 = 256 = 2 8 2\times 8\times 16=256=2^8 2×8×16=256=28个量化极,因此需要编码的位数为8位,如下所示:
C 1 C_1 C1​:极性码,正极性为1,负极性为0;
C 2 、 C 3 、 C 4 C_2、C_3、C_4 C2​、C3​、C4​:段落码,表示样值幅度所处的段落。
C 5 、 C 6 、 C 7 、 C 8 C_5、C_6、C_7、C_8 C5​、C6​、C7​、C8​:段内码,其16种可能状态对应16个量化极。
编码器根据样值的幅度所在的段落和量化极,编出相应的幅度码。

三、脉冲编码调制MATLAB仿真实例

PCM编码函数:

 function code=PCMcoding(S)z=sign(S);                                %判断S的正负MaxS=max(abs(S));                         %求S的最大值 S=abs(S/MaxS);                            %归一化Q=2048*S;                                 %量化code=zeros(length(S),8);                  %代码存储矩阵(全零)% 段落码判断程序for i=1:length(S)if (Q(i)>=128)&&(Q(i)<=2048)code(i,2)=1;            %在第五段与第八段之间,段位码第一位都为"1"endif (Q(i)>32)&&(Q(i)<128)||(Q(i)>=512)&&(Q(i)<=2048)code(i,3)=1;            %在第三四七八段内,段位码第二位为"1"endif (Q(i)>=16)&&(Q(i)<32)||(Q(i)>=64)&&(Q(i)<128)||(Q(i)>=256)&&(Q(i)<512)||(Q(i)>=1024)&&(Q(i)<=2048)code(i,4)=1;            %在二四六八段内,段位码第三位为"1"endendN=zeros(length(S));                              %段内码判断程序for i=1:length(S)N(i)=bin2dec(num2str(code(i,2:4)))+1;        %找到code位于第几段enda=[0,16,32,64,128,256,512,1024];                 %量化间隔b=[1,1,2,4,8,16,32,64];                          %除以16,得到每段的最小量化间隔for i=1:length(S)  q=ceil((Q(i)-a(N(i)))/b(N(i)));              %求出在段内的位置if q==0code(i,(5:8))=[0,0,0,0];                 %如果输入为零则输出"0"else k=num2str(dec2bin(q-1,4));              %编码段内码为二进制code(i,5)=str2num(k(1));code(i,6)=str2num(k(2));code(i,7)=str2num(k(3));code(i,8)=str2num(k(4));endif z(i)>0code(i,1)=1;elseif z(i)<0code(i,1)=0;end                                           %符号位的判断endcode = reshape(code', 1, []);
end

PCM编码函数调用方式:

pcm_encode = PCMcoding(xt);
figure(2)
stairs(pcm_encode);
axis([0 20 -0.1 1.1]);
title('PCM 编码');
grid on;

结果如图所示(接上篇博客量化信号)

PCM解码:

function s=PCMdecoding(encode, max)encode=(reshape(encode',8,length(encode)/8))';l=size(encode,1);a=[0,16,32,64,128,256,512,1024];b=[1 1 2 4 8 16 32 64];c=[0 1.5:15.5];for i=1:lx=encode(i,1);T=bin2dec(num2str(encode(i,(2:4))))+1;Y=bin2dec(num2str(encode(i,(5:8))));if Y==0k(i)=a(T)/2048;elsek(i)=(a(T)+b(T)*c(Y))/2048;endif x==0s(i)=-k(i);elses(i)=k(i);endends = s*max;
end

PCM译码函数的调用方式

%PCM 译码
pcm_decode = PCMdecoding(pcm_encode, max);
figure(3)
subplot(2,1,1);plot(t, pcm_decode);
title('PCM 译码');grid on;
subplot(2,1,2);plot(t,xt);
title('原始信号');grid on;


这里再次声明,PCM是一种将模拟信号经过采样,量化,编码转换为数字信号的一种调制方式,而非只是一种编码方式,其采用的是二进制编码方式,

四、总结

本篇文章和与上一篇一起简单分析了模拟信号的数字化过程,数字化是模拟世界通往数字世界的桥梁,即波的传输方式可以从模拟调制(AM,FM,PM)等发展到数字调制(数字基带调制,2ASK,2FSK,2PSK)等,从而大大发展了通信系统,为近几年数字通信系统的高速发展打下了基础。

模拟信号数字化的过程(二)——编码(以脉冲编码调制为例)相关推荐

  1. 【通信原理 入坑之路】—— 模拟信号的数字编码 之 PCM编码(A律13折线和μ律15折线的编译码剖析)

    引言: 在我们的数字通信系统中,一般要发送的绝大多数都是模拟信号.而所谓数字通信,传递的就应该是数字信号.因此,我们首先要对这个待发送的模拟信号进行采样(这在我之前<信号与系统>的相关博客 ...

  2. ADPCM(自适应差分脉冲编码调制)

    一.PCM 1.定义   PCM 是声音模拟信号数字化的一种基础技术, 就是把时间连续取值连续的模拟信号变换成离散取值的数字信号, 熟悉ADC(模拟数字转换)的应该很好理解, 过程就是采样, 量化和编 ...

  3. 对字符串进行信道编码C语言,【单选题】PCM编码主要用于实现模拟信号数字化,它属于( ) A. 信道编码 B. 纠错编码 C. 信源编码 D. 压缩编码...

    [单选题]PCM编码主要用于实现模拟信号数字化,它属于( ) A. 信道编码 B. 纠错编码 C. 信源编码 D. 压缩编码 更多相关问题 某工程采用DBB模式建设,则项目总进度目标的控制是()的任务 ...

  4. 模拟信号数字化传输系统的设计与仿真分析

    通信原理 分析实践任务书(唐山学院) 一.设计题目.内容及要求 设计题目:模拟信号数字化传输系统的设计与仿真分析 内容及要求: 1.了解Matlab/Simulink的运行环境及应用领域: 2.逐步熟 ...

  5. 七、脉冲编码调制:采样、量化、编码 ——网络工程师成长之路

    介绍脉冲编码调制:采样.量化.编码的概念和具体过程 脉冲编码调制概念 脉冲编码调制技术: 将模拟信号转化为数字信号的过程,(虽然是实际上是解调操作) 在PCM将模拟数字转化为数字信号的过程中,分为采样 ...

  6. 模拟信号载波数字信息——新PCM编码

    [摘要]因为数字传输技术具有信号传输的安全性高.可靠性高.抗干扰性强,所以通信系统中往往要实行经典的PCM编码进行模数信号转换.4G通信系统信息传输速度可达到10-100Mbps,能够快速传输高质量的 ...

  7. 产业安全专家谈 | 数字化转型过程中,企业如何建立顶级反欺诈能力?

    近日,全球权威信息技术研究和顾问公司Gartner发布了<在线反欺诈市场指南>,对现阶段全球的在线反欺诈全链路监测与防护能力进行了分析,同时对全球顶级的反欺诈服务商进行了分级推荐,腾讯云天 ...

  8. ASP.NET Web API 过滤器创建、执行过程(二)

    ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...

  9. 数字化转型的避坑指南:细说数字化转型十二大坑

    时至今日,数字化转型对企业来说已经不是选择,而是必然了. 此前我们说数字化转型是一趟开往春天的时代列车,有不少企业已经上车了,并取得了不错的效果,如摩根大通.沃尔玛.希尔顿.阿里巴巴.腾讯等,然而,据 ...

最新文章

  1. shell基础(四)uniq和tee
  2. DATAX工具同步数据从hdfs到drds性能优化
  3. mysql时间复杂度o的n次方_MySQL性能测试调优
  4. 自写网站入门阶段之一:熟悉各种标签的运用
  5. haproxy负载均衡_使用haproxy搭建web集群
  6. vue中安装sass
  7. Web程序中使用EasyUI时乱码问题
  8. VC++学习(15):多线程
  9. 软件开发人员进修必备的20本书
  10. 【Flink】requested virtual cores for application master 1 exceeds the maximum number of virtual cores
  11. matlab 正态分布相关 API
  12. vspy如何在图形面板显示报文_盘点市售三款USBC 86型面板插座,支持iPhone 12快充...
  13. Ubuntu18.04 安装 rabbitvcs svn 图形化客户端
  14. 机器翻译和自动译后编辑
  15. 七年切图仔如何面试大厂web前端?(沟通软技能总结)
  16. 元气骑士怎么用电脑玩 元气骑士手游模拟器教程
  17. 丹阳眼镜购买攻略,其它城市可以此参考
  18. 弘辽科技:如何提高淘宝收藏加购率?有哪些方法?
  19. 荣耀8一下显示无服务器,买到荣耀手机后,不打开这七个功能你就亏了!
  20. 六个人如何运维一万台服务器?

热门文章

  1. c语言二进制负数的除法,C语言中负数除法与右移取整问题
  2. 西工大NOJ数据结构实验——1.1合并有序数组
  3. 【附源码】计算机毕业设计SSM校园二手交易平台
  4. Ubuntu虚拟机的安装、配置vm-tools、搜狗输入法的安装、vim配置
  5. 设置网页便签 html5,基于jQuery的页面便签插件
  6. 机器视觉中使用深度学习所面临的对抗攻击——Survey(下)
  7. 一个简单的C语言程序HelloWorld!
  8. phpcms v9后台编辑器增加上传音频菜单
  9. 一个简单Crackme的分析
  10. 基于PsSetLoadImageNotifyRoutine实现监控模块加载并卸载已加载模块(卸载DLL、EXE和sys等加载)