PCM解码器的MATLAB实现剖析 下载本文

PCM解码器的MATLAB实现

区间[0,1/64]一分为二,中点为1/128,区间[1/128,1/64]作为第二段; 区间[0,1/128]作为第一段。

然后将Y轴的[0,1]区间均匀地分成八段,从第一段到第八段 分别为[0,1/8],(1/8,2/8],(2/8,3/8],(3/8,4/8],(4/8,5/8],(5/8,6/8], (6/8,7/8],(7/8,1]。分别与X轴对应。 编码的码字和码型:

二进制码可以经受较高的噪声电平的干扰,并易于再生,因此PCM中一般采用二进制码。对于Q个量化电平,可以用k位二进制码来表示,称其中每一种组合为一个码字。在点对点之间通信或短距离通信中,采用k=7位码已基本能满足质量要求。而对于干线远程的全网通信,一般要经过多次转接, 要有较高的质量要求,目前国际上多采用8位编码PCM设备。

码型指的是把量化后的所有量化级,按其量化电平的大小次序排列起来,并列出各对应的码字,这种对应关系的整体就称为码型。在PCM中常用的码型有自然二进制码、折叠二进制码和反射二进制码(又称格雷码)。

码位的安排:

目前国际上普遍采用8位非线性编码。例如PCM 30/32路终端机中最大输入信号幅度对应4 096个量化单位(最小的量化间隔称为一个量化单位), 在4 096单位的输入幅度范围内,被分成256个量化级,因此须用8位码表示每一个量化级。用于13折线A律特性的8位非线性编码的码组结构如表2-1所示:

表2-1 8位非线性编码的码组结构

极性码 M1 段落码 M2M3M4 段内码 M5M6M7M8 其中,第1位码M1的数值“1”或“0”分别代表信号的正、负极性,称为极性码。从折叠二进制码的规律可知,对于两个极性不同,但绝对值相同的样值脉冲,用折叠码

5

PCM解码器的MATLAB实现

表示时,除极性码M1不同外,其余几位码是完全一样的。因此在编码过程中,只要将样值脉冲的极性判出后,编码器便是以样值脉冲的绝对值进行量化和输出码组的。这样只要考虑13折线中对应于正输入信号的8段折线就行了。这8段折线共包含128个量化级,正好用剩下的7位码(M2,…, M8)就能表示出来。

(二) 模块设计与仿真图形分析

1. simulink的工作环境熟悉

建立一个很小的系统,用示波器观察正弦信号的平方的波形,如图3-1所示 系统中所需的模块:正弦波模块,示波器模块,

图3-1 正弦仿真电路图 正弦波参数如下:

6

PCM解码器的MATLAB实现

图3-2 正弦波参数设置

系统内的示波器显示的波形如图:

图3-3 单正弦波与平方波的对比

结论:两正弦波叠加之后的周期是原周期的1/2,频度是原频度的2倍。 2. PCM编码器电路设计

1Relay1111270/2048ConstantSaturation|u|AbsA-LawCompressorA-LawCompressor127GainQuantizerInteger to BitConverterInteger to BitConverterDisplay0100

图3-4 13折线近似的PCM编码器测试模型和仿真结果

测试模型和仿真结果如图3-4所示。其中以Saturation作为限幅器,将输入信号幅度值限制在PCM编码的定义范围内,以A-Law Compressor作压缩器,Relay模块的门限值设置为0,其输出即可作为PCM编码输出的最高位——极性码。样值取值绝对值后,用增益模块将

7

PCM解码器的MATLAB实现

样值放大到0-127,然后用间隔为1的Quantizer进行四舍五入取整,最后将整数编码为7位二进制序列,作为PCM编码的低7位。可以将上图中Constant和Display(不含)之间的模块封装一个PCM编码子系统备用。

其中各模块的具体参数设置如下:

图3-5 A-Law Compressor

图3-6 Abs

8