浅谈脉冲调制编码 PCM的三个过程

例题:用PCM对语音进行数字量化,如果将声音分为64个量化级,采样频率为8000次/秒,那么一路话音需要的数据传输率为
A.128bit/s
B.56kbit/s
C.48kbit/s
D.64kbit/s

答案:C (解答在文末)

在数字通信系统中,信源和信宿都是模拟信号,而信道传输的是数字信号。可见在发送端,要有一个将模拟信号转化成数字信号的过程,为A/D转换,在接收端有一个将数字信号转化成模拟信号的过程,为D/A转换。

脉冲调制编码PCM的主要作用是将时间连续,取值连续模拟信号变换成时间离散,取值离散数字信号后在信道中传输,即完成A/D转换。

那么我们为什么需要将模拟信号转换成数字信号呢?

主要原因在于模拟信号和数字信号两者的特点:
模拟信号会随着信息的变化而变化,模拟信号其特点是幅度连续(连续的含义是在某一取值范围内可以取无限多个数值),如果要用计算机来识别模拟信号传输的内容,会十分的困难,且模拟信号抗干扰性也较差
数字信号只有0、1两个状态,它的值是通过中央值来判断的,在中央值以下规定为0,以上规定为1,所以即使混入了其他干扰信号,只要干扰信号的值不超过阂值范围,就可以再现出原来的信号。因此数字信号在传输过程中不仅具有较高的抗干扰性,还可以通过压缩,占用较少的带宽,实现在相同的带宽内传输更多、更高音频、视频等数字信号的效果。
基于这样的原因,我们需要采用PCM的方法将模拟信号转换成数字信号。

PCM过程划分为3步,采样、量化、编码

采样:

为了将模拟信号转换成数字信号,首先就需要搞清楚模拟信号究竟长成什么样,于是我们第一步是采样,采样的方法是不断地在固定的时间间隔下,通过高频率的探测来采集模拟信号当时的电压瞬时值。
在这里插入图片描述
采样后得到的其实已经变成数字信号,但还不是实际应用中的二进制数字信号。并且采样得到的电压大小难以确定,且各不相同。如果让计算机记录下所有电压,难度很高且没有必要。因此接下来便进入第二步:量化。

量化:

量化是将电压划分为不同的等级,采用就近原则(“四舍五入”),把采集到的电压划分为不同的等级,减少工作量。例如下图,将采样得到的信号量化为了256个等级
在这里插入图片描述
介绍三个概念:
•量化值:确定的量化后的取值
•量化级:量化值的个数(也能表示电压等级个数)
•量化间隔:相邻两个量化值之差

编码:

经过量化后的信号也存在很多不同的信号电压,若要计算机能够识别,就需要将每个采样电压等级转化成计算机可识别的二进制编码。用二进制码组表示量化后的十进制量化组。所以上图中采样信号的256个等级,如果转化成二进制的话,可以用8个bit位来表示。

对于例题:
将声音分为64个量化级,采样频率为8000次/秒。
64个量化级表示采样后得到的电压被转化成64个电压等级,在编码时要用6bit表示。
采样频率为8000次/秒,也就是说明每秒钟会采集到8000个6bit的电压数字信号。
因此,为满足采样信号能够稳定传输,数据传输率就应该为8000次/秒*6bit=48000bit/s=48kbit/s。答案选择C。

  • 18
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在Matlab进行脉冲编码调制PCM)可以按照以下步骤进行: 1. 生成需要传输的模拟信号(如语音信号)。 2. 对模拟信号进行采样,将其转换成数字信号。 3. 对数字信号进行量化,将其转换成离散的取值。 4. 将量化后的数字信号进行编码,将每个取值对应一个固定长度的二进制码字。 5. 将编码后的数字信号进行调制,如使用脉冲编码调制PCM)将二进制码字映射成脉冲序列。 以下是一个简单的 Matlab 代码示例,演示如何进行 PCM 编码: ```matlab % 生成需要传输的模拟信号 Fs = 8000; % 采样率 t = 0:1/Fs:1; % 时间向量 f = 100; % 信号频率 x = sin(2*pi*f*t); % 生成正弦波信号 % 对模拟信号进行采样,将其转换成数字信号 Fs_new = 1000; % 新的采样率 n = 0:1/Fs_new:1; % 新时间向量 x_new = interp1(t,x,n); % 插值得到新的采样信号 % 对数字信号进行量化,将其转换成离散的取值 bits = 8; % 量化位数 levels = 2^bits; % 量化水平数 x_quant = round(x_new * (levels-1)) / (levels-1); % 量化 % 将量化后的数字信号进行编码,将每个取值对应一个固定长度的二进制码字 code = de2bi(x_quant * (levels-1), bits, 'left-msb'); % 转换为二进制编码,左对齐 % 将编码后的数字信号进行调制,如使用脉冲编码调制PCM)将二进制码字映射成脉冲序列 pulse = reshape(repmat(code',1,1,2), bits, [])'; % 将每个二进制码字扩展成两个脉冲 tx = reshape(pulse',1,[]); % 将脉冲序列展开成一维向量 % 绘制原始信号和调制后的信号 subplot(211) plot(n,x_new) title('原始信号') subplot(212) plot(tx) title('PCM调制后的信号') ``` 在上述代码,我们首先生成了一个正弦波信号,然后对其进行采样和量化,得到离散的数字信号。接着,我们将数字信号进行编码,将每个取值对应一个固定长度的二进制码字。最后,我们将编码后的数字信号进行调制,使用脉冲编码调制PCM)将二进制码字映射成脉冲序列。最终,我们绘制了原始信号和调制后的信号,可以看到调制后的信号是由一系列脉冲组成的。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ellie是个昵称

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值