APP下载

PCM编译码的SIMULINK仿真实现

2019-03-16张学敏

关键词:参数设置译码误码率

张学敏,钟 菲

(长春工程学院电气与信息工程学院,长春 130012)

0 引言

PCM(Pulse Code Modulation)脉冲编码调制是对连续变化的模拟信号进行抽样、量化、编码后转换为数字信号的一种调制方式,是其他编码算法的基础。媒体记录用的CD、DVD的音频格式均采用PCM编译码,脉冲编码调制的比特数已从最初的14 bit发展到16 bit、18 bit、20 bit直到24 bit,采样频率从44.1 kHz发展到192 kHz,它支持立体声和5.1环绕声。PCM可以向用户提供多种业务,比如,话音、图像的传送业务,还可以提供从2 M到155 M速率的数字数据专线业务,特别适用于对数据传输速率要求较高、需要更高带宽的用户[1]。

SIMULINK具有良好的交互界面,提供可视化的仿真过程,因此在信号分析和数字通信领域得到广泛应用。本文主要阐述如何运用SIMULINK实现PCM编、译码仿真和误差分析,系统主要包括编码模块子系统、译码模块子系统、信道模块和滤波模块。

1 PCM编译码原理简介

1.1 A律13折线

PCM编译码原理框图如图1所示。模拟信号被送入编码器之前首先要进行抽样和量化。量化分为均匀量化和非均匀量化,由于均匀量化对小信号和大信号采用同样的量化间隔,量化误差大,因此,采用不均匀量化间隔的非线性量化方法,即量化特性在小信号时分层密,量化间隔小,而在大信号时分层疏,量化间隔大,这种疏密的调节通过对数函数的压扩特性来实现,函数曲线表达如式(1)所示。[2]

图1 PCM编译码原理框图

(1)

1.2 PCM编码方法

图2的横轴范围是[0 1],被分成8份,每份相差1/2,将[0 1/128]称为第1段,则[1/2 1]是第8段,对每一段进行编码,称为段落码,第一段到第8段的段落码为000~111。再将每一段16等分,每一段的段内码为0000~1111。因此,PCM编码结果为7位码组,加上符号位共8位C1C2C3C4C5C6C7C8,C1是符号位,C2C3C4是段落码,C5C6C7C8是段内码。若模拟输入量为正,符号位C1为1,否则为0。

图2 A律13折线

将第一段的16等分中的一份1/2 048称为最小量化间隔Δ,则其余各段的量化间隔、段落起始电平、各段电平范围详见表1。若将[0 1]按最小量化间隔做均匀量化,则[0 1]中包含2 048个Δ,将[0 1]去归一化,全部量化电平范围的起始点就是[0 2 048]Δ。

表1 PCM编码过程对应表[1]

根据表1,现对模拟量化电平1 282Δ即1 282/2 048做PCM编码。因为1 282Δ>0,所以极性码C1为1,1 024Δ<1 282Δ<2 048Δ,位于第8段,故段落码C2C3C4为111,同时1 280Δ<1 282Δ<1 344Δ位于第8段内的第5小段,故段内码C5C6C7C8为0100,最终1 282Δ的PCM编码结果为C1C2C3C4C5C6C7C8=11110100。下面通过构建PCM编译码仿真系统验证此结果。

2 建模与仿真

2.1 PCM编译码仿真建模

PCM编译码的SIMULINK建模如图3所示。将模拟信号送到PCM编码子系统进行脉冲编码调制,然后送入信道传输,接收端通过PCM译码子系统进行解码,再通过低通滤波器滤波,最后译码输出。信道模块的主要参数是误码率,译码输出值与编码输入值的误差与误码率有关,误码率大,译码输出的相对误差就大,这里信道模块的误码率设置为0.001。

图3 PCM编译码仿真建模

2.2 PCM编译码子系统的搭建

PCM编码子系统的内部结构如图4所示。Gain模块和Converter模块的参数设置如图5所示。由于PCM压缩编码不包括符号位共7位,最大值为1111111,故Gain模块的参数之一Gain的值设为127,与之对应的Converter的参数之一Number of bits per integer(M)设为7,否则会出现错误提示对话框。Relay模块的采样频率设为0.001,其他参数默认即可。其他各模块的参数设置根据模块功能的提示确定。

图4 PCM编码子系统

(a)Gain模块参数设置

(b)Converter 模块参数设置图5 模块参数设置对话框图

PCM译码子系统如图6。由于译码是编码的逆运算,Gain值设为1/127,与编码子系统相同的模块Relay和Converter的参数设置不变,其他模块参数按功能提示设置。

图6 PCM译码子系统

2.3 PCM编译码仿真

图3左端的编码输入是xΔ个量化电平,也可以用x/2 048或比值结果表示。比如待量化的模拟电平是1 282Δ,则编码输入可以表示为1 282/2 048或0.625 9。将编码输入写成x/2 048,看起来更直观,仿真结果如图7所示。显见,编码输出结果为11110100,与前面的运算结果完全相同,译码输出0.622 5。

图7 PCM编译码建模输出结果1

同理,将编码输入模块的数值改为246/2048,即0.120 1,编译码结果如图8所示。

图8 PCM编译码建模输出结果2

3 误差讨论

以2.3中模拟量化电平1 282Δ为例讨论编译码误差。因1 280Δ<1 282Δ<1 344Δ,段内码C5C6C7C8为0100,即只要在这个区间的任意量化电平编出的段内码均为0100,显然,编码误差的存在是必然的。误差为abs(1 282Δ-(1 280+1 344)Δ/2)=30Δ个量化电平[3],即:误差=被编码电平-其所在段落首尾电平的平均值,再取绝对值。可见,量化电平越靠近1 280Δ和1 344Δ的平均值1 312Δ,则编码误差越小。如果量化电平是1 312Δ,理论上编码误差为0,但这并不说明译码输出结果就等于编码输入值,因为经过PCM压缩编码后信息总是有缺失的。1 282Δ的译码输出的绝对误差为0.625 9-0.622 5=0.003 4,误差主要由信道误码率决定。在编码输入为0.625 9的条件下,误码率与译码输出和绝对误差之间的关系见表2。

表2 误码率、译码输出和相对误差关系表

由表2显见,随着误码率的增大,各译码输出偏离编码输入0.625 9越来越远,即绝对误差也越来越大,所以误码率是衡量通信系统的主要性能指标之一,即通信的可靠性。

4 结论

本文介绍了PCM编译码工作原理,利用MATLAB的SIMULINK的数字通信模块搭建PCM编译码仿真模型,将编码、译码过程及编码输入值和译码输出值清晰、直观地以模块化的形式显示出来,该系统只需简单地修改模块参数,就可以对任意模拟输入量进行编码和译码还原,与传统的利用MATLAB代码实现编译码相比,省去了编写代码和调试环节的操作,参数修改灵活、方便。

猜你喜欢

参数设置译码误码率
面向通信系统的误码率计算方法
分段CRC 辅助极化码SCL 比特翻转译码算法
基于校正搜索宽度的极化码译码算法研究
一种快速同步统计高阶调制下PN 码误码率的方法∗
逃生疏散模拟软件应用
蚁群算法求解TSP中的参数设置
从霍尔的编码译码理论看弹幕的译码
RTK技术在放线测量中的应用
UWB多径信道调制方式的误码率分析
LDPC 码改进高速译码算法