一、PCM码是什么
在A律13折线PCM编码中,采用的是8位折叠码(所谓折叠码,是指最高位表示极性)来表示的,这8位码的安排如下:

如上图所示,这8位当中,第一位C1是极性码,表示量化值的极性正负,如果是正值,则C1为1,如果为负值,则C1为0. 除了第一位C1之外,其他7位用于表示量化值的具体数值(也是绝对值)。
其中,C2C3C4这三位是段落码,表示属于13折线中第一象限内8种斜率段的哪一段。如下图所示的第一象限中8个线段,C2C3C4就是判断到底落在哪一段的范围内。

上图这8段,每一段都被均匀划分成16个量化电平(即16个量化级),这16个量化电平用剩余的四位C5C6C7C8来表示,这四位C5C6C7C8称为段内码。
段落码C2C3C4就是判断到底落在8段中哪一段的范围内,整个第一象限如上图中所示共分成8个大段落,这8个大段落的划分范围如下表1所示。这个表格中,需要记住每个段落的起止范围,以及每个段落里包含多少个量化间隔。比如说第8段,起止范围是1024到2048,这个第8段被划分成16个量化电平,每一个量化电平包含64个量化间隔。一个最小量化间隔是Δ,且Δ=1/2048.

C5C6C7C8是段内码,是指上面8个段落中的每一个段落又被分成了16个量化电平(编号从0到15),而这个C5C6C7C8段内码就是确定最终到底落在了16个量化电平中的哪一个上。段内码的编码规则如下表2所示。

二、PCM码译码原理
PCM译码是指将8位PCM码解码成对应的PAM信号,即数模变换。
比如:PCM码的形式是二进制的,如11001100,但译码成PAM码的形式是1248Δ这种形式。
具体的译码过程如下:
(1)根据8位PCM码,结合上面的表1和表2,找到这个PCM码所对应的哪个段落中的第几个量化电平,即得到编码电平IC。
(2)根据找到的编码电平IC,计算译码电平ID,译码电平是编码电平加上半个量化间隔∆Vi /2,这个译码电平ID就是要找的PAM码。一般译码后还要计算译码误差之类的。
三、8位PCM码如何转换成11位线性码?
思路:先找到8位PCM码对应的编码电平,然后将编码电平转为成11位的二进制。
例如:8位PCM码为11110011,它对应的编码电平是1024+3*64=1216Δ,那么将1216换成11位二进制表示,具体下面这种换算法:1216=1024+128+64=210+27+26
然后将第11位、第8位、第7位置1,其他置零即可,如下图所示。

故对应的11位线性码为10011000000.
为了能快速计算,几个常见的2的指数数值可以稍微记一下。

四:例题讲解
目的:分析一个模拟信号如何转换成PCM码?如何将PCM进行译码?并转化成11位线性码。
例:已知A律13折线PCM编码器的输入信号的取值范围是-1~+1V,最小量化间隔是一个量化单位Δ,求当输入抽样脉冲的幅度为Is=0.31V,请计算如下问题:
(1)编码器的输出PCM码
(2)编码器的量化误差
(3)将PCM码转为11位线性码
(4)译码器的输出
(5)译码器的量化误差
解:输入信号是个抽样脉冲Is=0.31V,需要先将该抽样脉冲转化成量化单位,因为一个最小量化间隔是Δ=1/2048,则该脉冲值为:Is=0.31V=0.31/Δ=0.31*2048=635Δ.
因此,该抽样脉冲换成量化单位的形式应该是635Δ.
下面逐个解决上面的几个问题:
(1)解决问题1:将该脉冲进行PCM编码。先设PCM编码的8位记为C1C2C3C4C5C6C7C8。
n确定极性位C1:因为已知条件Is=0.31V>0,是大于零的,故C1=1.
n再确定段落码C2C3C4,采用逐位比较的方法来确定.
C2:确定是位于1~4段,还是5~8段,分界点是128Δ(见表1),因635Δ>128Δ,故在5~8段,所以C2=1;
C3:确定是位于5~6段,还是7~8段,分界点是512Δ(见表1),因635Δ>512Δ,故在7~段,所以C3=1
C4:确定是位于7段还是8段,分界点是1024Δ(见表1),因635Δ<1024Δ,故位于第7段,所以C4=0。
综上:C2C3C4=110.
n接下来确定段内码C5C6C7C8,采用逐位比较的方法来确定.
因为通过确定C2C3C4可以确认落在了第7段内,按照编码的原理,第7段又被量化成16个均匀量化间隔。如果能够确认到底落在了16个间隔的哪一个间隔中,则可以确定C5C6C7C8的值。
查表1可以知道,第7段的起止电平是512~1024.第7段里16个量化电平中均包含有32个最小量化间隔。
确定段内码的时候,最好画一个下面的线段,该线段的起点是512,终点是1024,均分成16等分。如下图所示。
C5:确定是位于0~7量化电平内,还是8~15量化电平内,分界点是512+(1024-512)/2=768Δ(上图红色线),因635Δ<768Δ,故位于0~7量化电平内,所以C5=0。
C6:确定是位于0~3量化电平内,还是4~7量化电平内,分界点是512+(768-512)/2=640Δ,因635Δ<640Δ,故位于0~3量化电平内,所以C6=0。
C7:确定是位于0~1量化电平内,还是2~3量化电平内,分界点是512+(640-512)/2=576Δ,因635Δ>576Δ,故位于2~3量化电平内,所以C7=1。
C8确定是位于2量化电平内,还是3量化电平内,分界点是512+(576-512)/2=608Δ,因635Δ>608Δ,故位于3量化电平内,所以C8=1。
故:C5C6C7C8=0011
综合8位的值,可知C1C2C3C4C5C6C7C8=11100011。则PCM编码就是11100011。
说明最终量化电平是落在了第7段的第3个量化电平处(其实是第4个量化区间)。
(2)解决问题2:量化误差的问题
通过确定C1C2C3C4C5C6C7C8的值,可以确认最终量化电平是落在了第7段的第3个量化电平处,而这个第三个量化电平的起始电平是608Δ,终止电平是640Δ,那么编码时落在这个区间的都被统一量化成608Δ,这个608Δ就是编码电平。如下图红色加粗区域所示,只要是落在这个区间,均被量化成起始电平608Δ。

因为实际的输入抽样电平是635Δ,但被编码成了608Δ,二者的差距就是编码量化误差
所以:编码量化误差=635Δ-608Δ=27Δ
(3)解决问题3,将PCM化成11位线性码。
通过第一问的求解过程可以知道,PCM码对应的编码量化电平是608Δ. 将608写成2的多少指数的形式(常见的2的n次方数值可以记一下)
608=512+64+32=29+26+25,将第9、5、6对应的地方填1,其他填0,如下图
故对应的11位线性码为01001100000.
(4)解决问题4;译码。
8位PCM码是C1C2C3C4C5C6C7C8=11100011,那么根据这个PCM进行译码。
C1=1,表明该信号是大于零的,是正值。
C2C3C4=110,查表1可以知道是落在了8个段中的第7段。其中第7段的起止电平是512Δ~1024Δ,且第7段被评分成16个量化电平,每个量化电平里包含有32个最小量化间隔,见下截图。

C5C6C7C8=0011,查表2可知是落在了第7段中16个量化电平的第3个序号的区间,见下截图所示。

也就是说,PCM编码是落在第7段的第3个量化级区间内。为了减少误差,译码时通常要再加上半个间隔的量化电平,所以译码电平取第3个量化级的中间以减小误差.
故译码数据=512+3*32+32/2=624Δ
另一种理解方式:译码电平是编码电平加上半个量化间隔,刚才已经知道编码电平是608Δ,加上半个量化间隔,对于第7段而言,每个间隔包含32Δ,所以译码电平=608+32/2=624Δ。
(5)解决问题5;译码误差。
因为系统输入时的脉冲值是635Δ,但经过译码器之后的输出变成了译码电平624Δ.那么二者的差值就是译码误差。
故,译码误差=635-624=11Δ.
相关阅读如下:
PCM编码规则
七号小英雄,公众号:爬爬龙《通信原理》学习笔记No.33:如何通俗地理解A律13折线PCM编码规则?