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

引言:
在我们的数字通信系统中,一般要发送的绝大多数都是模拟信号。而所谓数字通信,传递的就应该是数字信号。因此,我们首先要对这个待发送的模拟信号进行采样(这在我之前《信号与系统》的相关博客中有详细解读),但是问题来了:我们对一个幅值连续的模拟信号采样,采样值的幅度仍然是有无限多种可能的,尽管他们在时间上离散,可这仍然是一个模拟信号。要想成为数字信号,就必须让这个信号在时间和幅度上都是离散的,即取值只有有限种可能。因此,就需要对采样值的幅度进行量化。PCM编码(脉冲编码调制)就是其中一种方法。

所谓的脉冲编码调制 PCM ,博主对其理解就是将经过采样得到的信号经过量化编码,从而得到一组二进制码组的过程。既然 PCM 可以理解为这样两个过程,那么我们就分别从这两个过程入手开始讲解。

1. 量化

PCM 编码中实现的是非均匀量化为什么使用非均匀量化呢? —— 这是因为在实际的通信系统中,信号幅度可能会在一个很大的范围内变化。以电话通信为例:经过实验证明,幅度较低的信号出现的频率非常高,而幅度特别大的信号出现的概率就比较小。这样一来,如果采用均匀量化,那么小信号的量化就显得十分粗糙了。而换一种思路:如果我们对出现概率很大的小信号,采用更为精细的量化方式;对于出现频率不那么高的大信号,采用略微粗糙的量化方法,可以预见的是这样做对通话质量是有保障的。

上述提到的这种,就是非均匀量化。而实现非均匀量化,我们有下面这样的思路:

首先对信号做某种非线性变换,然后对经过非线性变换的结果进行均匀量化。

以上这种思路,就被引入到了接下来我们要介绍的 A 律13折线:
在这里插入图片描述

我们先来看看 A律13折线是怎么构成的:

  1. 首先对于横轴:在 [0 - 1]区间不均匀地划分为8段: [ 0 , 1 128 ] , [ 1 128 , 1 64 ] , [ 1 64 , 1 32 ] , [ 1 32 , 1 16 ] , [ 1 16 , 1 8 ] , [ 1 8 , 1 4 ] , [ 1 4 , 1 2 ] , [ 1 2 , 1 ] [0, \frac{1}{128}], [\frac{1}{128}, \frac{1}{64}], [\frac{1}{64}, \frac{1}{32}],[\frac{1}{32}, \frac{1}{16}],[\frac{1}{16}, \frac{1}{8}],[\frac{1}{8}, \frac{1}{4}],[\frac{1}{4}, \frac{1}{2}], [\frac{1}{2}, 1] [0,1281],[1281,641],[641,321],[321,161],[161,81],[81,41],[41,21],[21,1]
    而其中,这不均匀的8段里面,我们再在每段里面均匀地划分出16小段。值得注意的是,在同一段里面,这些等分之间的长度是相等的;但是在不同的段里面,这些等分的长度是不相等的。那么,在x轴上,一共就有了: 8 × 16 = 128 8\times16 = 128 8×16=128个量化级。 下面,我们就来看看最小的量化间隔是什么:
    很明显,8段里面最短的就是第一段,长度为: 1 128 \frac{1}{128} 1281,那么在这段里面再做16等分,那么每一个小分的长度就是: 1 128 × 1 16 = 1 2048 \frac{1}{128}\times\frac{1}{16} = \frac{1}{2048} 1281×161=20481,这就是最小的量化间隔,我们记为 △ △ 。【特别值得注意的是:我们上述的讨论都是针对归一化信号而言的,即信号的幅度范围在 ±1 之间,如果题目中给的范围不是归一化的,那么得先将他归一化再来编码】!
    那么,我们的横轴就以 △ △ 作为单位。所以8段中各段的起使电平就是: 16 △ , 32 △ , 64 △ , 128 △ , 256 △ , 512 △ , 1024 △ , 2048 △ 16△, 32△, 64△, 128△, 256△, 512△, 1024△, 2048△ 16,32,64,128,256,512,1024,2048
  2. 横轴划分好了,接下来我们就看看y轴怎么划分—— 很简单,对于纵轴,我们先直接在 [ 0 , 1 ] [0, 1] [0,1] 区间做8等分,得到8个等长的段;接下来还是在每一段里面均匀地做16等分。也就是y也是对应128个量化级。

好啦!这就是 A律13折线的设置,那么为啥叫13折呢?—— 首先对于上面这个图,我们发现第一段和第二段折线的斜率是一样的,而在 [ − 1 , 0 ] [-1, 0] [1,0] 区间,靠近0的也有两端折线斜率一样,所以这4条折线合并为1条折线,那么最终在 [ − 1 , 1 ] [-1, 1] [1,1] 区间上给人们呈现出来的,就一共有13条折线。故名为 A律13折线。


这里给大家支一招:做题非常好用:不同的考题可能他们的最小量化间隔是不一样的,如果题目说最小量化间隔是1,那么很简单就按照上面的写出各段的起使电平(最大值是 2048 △ 2048△ 2048): 0 , 16 △ , 32 △ , 64 △ , 128 △ , 256 △ , 512 △ , 1024 △ , 2048 △ 0,16△, 32△, 64△, 128△, 256△, 512△, 1024△, 2048△ 0,16,32,64,128,256,512,1024,2048
其中, [ 0 , 16 △ ] [ 0,16△] [0,16], [ 16 △ , 32 △ ] [16△, 32△] [16,32]他们视为一段,标号从1开始。
  \space  
如果题目说最小量化间隔是 2 ,那么最大值应该变成( 4096 △ 4096△ 4096),那么还是一样写出各段的起使电平: 0 , 32 △ , 64 △ , 128 △ , 256 △ , 512 △ , 1024 △ , 2048 △ , 4096 △ 0,32△, 64△, 128△, 256△, 512△, 1024△, 2048△, 4096△ 0,32,64,128,256,512,1024,2048,4096
其中, [ 0 , 32 △ ] [ 0,32△] [0,32], [ 32 △ , 64 △ ] [32△, 64△] [32,64]他们视为一段,标号从1开始。

2. 编码

A律13折线采用 8 位二进制数来进行编码。二进制码组的结构如下: C 1    C 2 C 3 C 4    C 5 C 6 C 7 C 8 C_1 \space\space C_2C_3C_4 \space\space C_5C_6C_7C_8 C1  C2C3C4  C5C6C7C8

其中, C 1 C_1 C1表示极性码:如果信号是正的,那么 C 1 = 1 C_1 = 1 C1=1,反之 C 1 = 0 C_1 = 0 C1=0

C 2 C 3 C 4 C_2C_3C_4 C2C3C4 表示段落码:我们刚刚不是说先把x轴不均匀地划分为8段嘛,所以这里的段落码就是指示信号在哪一段的。(例:第一段就是 000;第二段就是 001;第五段就是 100…)

C 5 C 6 C 7 C 8 C_5C_6C_7C_8 C5C6C7C8 表示段内码:因为我们对每一段又进一步做了16等分,所以这个段内码就是指示信号在某一段内的哪个小段。(例:如果在第一小段就是 0000,第二小段就是 0001;第10小段就是 1001…)


3.译码

译码的时候,极性码和段落码的恢复比较简单,值得注意的是段内码的恢复:
首先,由: C 5 C 6 C 7 C 8 C_5C_6C_7C_8 C5C6C7C8确定段内数 m m m,接下来,我们还需要加上 △ k 2 \frac{△_k}{2} 2k这一项( △ k △_k k 表示第 k 段的量化间隔),这是为了能够将误差控制在 ± △ k 2 ±\frac{△_k}{2} ±2k 范围之内。


4. 对数PCM码与线性PCM码的互相转换

因为我们现在用PCM方法编码得到的是对数码,无法直接进行数值运算,因此需要转为线性PCM码。这很简单,我们下面介绍一下:

首先我们先将获得的对数PCM编码转换为十进制数 y ^ \hat{y} y^,假设我们的最小量化间隔是 1 2048 \frac{1}{2048} 20481时,那么 y ^ \hat{y} y^ 的最大取值将会是 2048,需要11位二进制数来表示。所以我们最后就直接把十进制数转为11位二进制数即可。【但是值得注意的是:8位二进制码转11位二进制码,由于量化间隔的问题,会出现不可分辨部分,所以我们一般可以通过查表得到转换结果

而将线性PCM码转为对数PCM码那就直接是PCM编码的过程了——先将线性码转为十进制数,然后对这个十进制数做PCM编码即可。

最后一点就是:A律压缩变换对于小信号区域,信噪比SNR有24dB的提升。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值