收藏 分享(赏)

语音信号adpcm编解码实现课程设计报告.doc

上传人:无敌 文档编号:720161 上传时间:2018-04-19 格式:DOC 页数:28 大小:375KB
下载 相关 举报
语音信号adpcm编解码实现课程设计报告.doc_第1页
第1页 / 共28页
语音信号adpcm编解码实现课程设计报告.doc_第2页
第2页 / 共28页
语音信号adpcm编解码实现课程设计报告.doc_第3页
第3页 / 共28页
语音信号adpcm编解码实现课程设计报告.doc_第4页
第4页 / 共28页
语音信号adpcm编解码实现课程设计报告.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、课程设计报告设计课题: ADPCM 编解码器的实现 姓 名:专 业: 集成电路设计与集成系统 学 号:日 期指 导教师:I一:课程设计任务与要求。ADPCM编解码器的实现。m转为 Verilog,使用 Matlab和 Modesim联合仿真验证二:系统设计原理。2.1 脉冲编码调制 PCM脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程 9。 抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号,抽样必须遵循奈奎斯特抽样定理。该模拟信号经过抽样后还应当包含原信

2、号中所有信息,也就是说能无失真的恢复原模拟信号。它的抽样速率的下限是由抽样定理确定的。抽样速率采用 8KHZ。量化,就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示,通常是用二进制表示。量化误差:量化后的信号和抽样信号的差值。量化误差在接收端表现为噪声,称为量化噪声。 量化级数越多误差越小,相应的二进制码位数越多,要求传输速率越高,频带越宽。 为使量化噪声尽可能小而所需码位数又不太多,通常采用非均匀量化的方法进行量化。 非均匀量化根据幅度的不同区间来确定量化间隔,幅度小的区间量化间隔取得小,幅度大的区间量化间隔取得大。一个模拟信号经过抽样量化后,得

3、到已量化的脉冲幅度调制信号,它仅为有限个数值。编码,就是用一组二进制码组来表示每一个有固定电平的量化值。然而,实际上量化是在编码过程中同时完成的,故编码过程也称为模/数变换,可记作 A/D。 2.2 差分脉冲编码调制 DPCM差分脉冲编码调制 DPCM是利用样本与样本之间存在的信息冗余度(预测样值与当前样值之差)来代替样值本身进行编码的一种数据压缩技术 10。差分脉冲编码调制可以实现在量化台阶不变(即量化噪声不变)的情况下,编码位数显著减少,信号带宽大大压II缩。根据过去的样本去估算下一个样本信号幅度大小,这个值称为预测值,对实际信号值与预测值之差进行量化编码,从而就减少了表示每个样本信号的位

4、数。差分脉冲编码的概念,如图2.2中,差分信号 d(k)是离散输入信号 s(k)和预测器输出的估计值 之差。此刻, 是对 S(k)的预测值,而不是过去样本的实际值。)1(ekS)1(ekSDPCM系统实际上就是对这个差值的 d(k)进行量化编码,用来补偿过去编码中产生的量化误差。DPCM 系统实际就是一个负反馈系统,采用这种结构可以避免量化误差的积累。重建新号 是由逆量化器产生的量化差分信号 ,与对过去样本信号的估算值)(kSr )(kdq求和得到。他们的和,即 作为预测器确定下一个信号估算值的输入信号。1e )(kSr由于在发送端和接收端都使用相同的逆量化器和预测器,所以接收端的重建信号 可

5、)(kSr以传送信号 I(k)中获得。图 2.2 DPCM原理图在 PCM中,每个波形样值都独立编码,与其他样值无关,样值的整个幅值编码需要较多位数,比特率较高,数字化的信号带宽大。然而,大多数以奈奎斯特或更高速率抽样的信源信号在相邻抽样间表现出很强的相关性,利用信源的这种相关性,一种比较简洁的解决方案是对相邻样值的差值而不是样值本身进行编码。由于相邻样值的差值比样值本身小,可以用较少的比特数表示差值。如果将样值之差仍用 N位编码传送,则 DPCM的量化信噪比显然优于 PCM系统。III2.3 自适应差分脉冲编码调制 ADPCM前述概要地介绍了 DPCM的工作原理。但为了能进一步提高 DPCM

6、方式的质量还需要采取一些辅助措施。即自适应措施。语声信号的变化是因人、因时而不同的,为了能在相当宽的变化范围内仍能得到最佳的性能,DPCM 也需要自适应系统,自适应预测和自适应量化,称为 ADPCM。图 2.3所示为采用固定预测并带有自适应量化的 ADPCM系统。图中多电平量化与调制器用 Q表示,积分器用 P组成的预测系统表示。自适应量化的基本思想是:让量化间隔的变化,与输入信号方差相匹配,即量化器阶距随输入信号的方差而变化,它正比)(t于量化器输入信号的方差。现有的自适应量化方案有两类:一类是其输入幅度或方差由输入信号本身估算,这种方案叫前馈自适应量化器。另一类是其阶距根据量化器的输出来进行

7、自适应调整,或等效的用输出编码信号来进行自适应调整,这类自适应量化方案称为反馈自适应量化器。无论是采用前馈式还是反馈式,自适应量化都可以改善动态范围及信噪比。反馈控制的主要优点是量化阶距的信息由码字序列提取,因此不需要传输或存储额外的阶距信息。但是在重建信号输出时,传输中的误码对质量的影响比较敏感,在前馈控制时,要求码字和阶距一起,用来得出信号。这样是增加了其复杂程度,但它有可能在差错控制保护下传输阶距从而大大改善高误码率传输时的输出信号质量。不论是前馈型还是反馈型自适应量化都可以希望得到超过相同电平数固定量化的 1020dB的改善。为了进一步有效地克服语声通信过程中的不平稳行,要考虑量化器和

8、预测器都适应匹配于语声信号瞬时变化,又设计了同时带有自适应量化和自适应阶距的 ADPCM系统。自适应量化和自适应预测都可以是前馈型的或是反馈型的。对 ADPCM来说,预测系统的预测系数的选择是很重要的。如果信号 的样值用 S(n)表示, 的样值用 表示,)(tFS )(tFd)(nd的样值用 表示,则当采用线性预测,即 是以前量化值的线性组合时,其预)(dtF)(dn)(nd测值为(2.3) )()n(d1kndapk式中 P为预测器的阶数。要使预测系数 自适应,通常是假定短时间内语声信号k的参量保持恒定的。并使短时间内的均方预测误差为最小值来选择预测系数 11。IV(a)编码器(b)解码器图

9、 2.3 ADPCM 原理图2.4 编码过程编码的核心思想是对输入信号与预测信号差值进行编码和预测,采用的是非均匀量化,为了使不同幅值的信号信噪比接近一致,从而避免大幅值语音信号信噪比大而小幅值语音信号信噪比小 12。ADPCM 编码过程如图 3.1所示输示。输入 Si是一个线性 16bit补码 PCM数据,其范围在 32767到-32767 之间。如果是非线性的 PCM则之前先加个线性转化模块使得输入的数据是线性的。经过预测器出来的预测采样值 Sp= ,与线性(1)pXn输入 Si的差值为 d,我们就可以在这个差值上进行处理。接下来量化器模块对有符号的4位编码数据 I,由于是带符号的所以这个

10、数据的表示范围在 7到-7 之间,最高位为符号位。 具体实现过程如下,首先计算 16位的 PCM值的当前采样值 Si和上一时刻预测采样值 之间的差值 d,这个差值的量化编码即输出 4位 ADPCM值 I(k)。在算法实现(1)pXn中,定义一个结构变量存储预测采样 Sp和量化步长索引,并制定了两个表。一个表为索引调整表,其输入为差值量化编码 I(k),用来更新步长索引。另一个表为步长调整表,其输入为步长索引,输出为步长 q。编码时,首先用上一个采样点的步长索引查步长调整V表求出步长 q。如果当前采样值 Si和采样预测值 之间的差值 d为负,则 I的 D3(1)pXn位置 1。如果该差值绝对值大

11、于步长 q,则 I的 D2位置 1。如果 d-q大于 q/2,则 I的 D1位置 1,如果 d-q-q/2大于 q/4,则 I的 D0位置 1。如果以上条件不满足,则相应位置0。这样就确定了编码值 I(k)。然后编码值 I(k)作为索引调整表的输入,查表输出索引调整,并和结构变量中原步长索引相加,产生新的步长索引,在下一个采样值的编码中使用。编码输出 I后,编码还需要重复进行和解码完全一样的计算过程,求出新的预测采样值 Sp。图 3.1 G.721协议编码概括起来其主要步骤如下 计算 Si 与自适应预测器输出 的差值 ;(1)pXn)1(inXSdp 通过自适应量化模块对 进行量化,得到 AD

12、PCM 码字 I(k);d 通过自适应反量化模块对 I(k)计算得到量化差分预测信号 ;qd 根据重建信号 和 更新预测滤波器系数 ;prSdqq 利用新的系数,计算得到 ,重复上述5个步骤,压缩下一个语音采样数据。)(nXPVI图3.2 G.721协议解码2.5 解码过程解码是编码的逆过程,ADPCM 的解码过程如图 3.2所示。解码输入即编码输出 I,逆量化器将 I逆量化成差值 dq。差值 dq与预测采样 Sp相加得到解码输出 Sr。解码过程同编码过程中求预测采样的原理是一样的,当编码端的 Sr能很好的跟踪上 Si时,解码端的 Sr也能同样再现 Si。这里涉及算法本身的时延和实现平台、实现

13、方法的实时性等因素。解码时首先通过步长索引查步长调整表得到量化步长,差值量化编码 I经逆量化器得到语音差值 dq,这是求 I的逆过程;然后与前次预测值一起重建当前语音信号 Sr,最后用固定预测 Sp=Sr,更新预测采样 Sp,用 I更新量化步长索引值 131415。其主要步骤如下: 通过自适应逆量化器和自适应预测得到 和 。qdPS 通过 同 相加便得到编码输出 Sr。qdPS 采用与编码器相同的方法更新预测滤波器系数, 。 采用与编码器相同的方法更新步长索引表,得到新的 qd 利用新的滤波器系数,重复上述5个步骤,解码下一个 I(k)。VII三:测试与验证主要采用 Matlab来验证 ADP

14、CM的结果,以及和 Modlsim来联合仿真。而我们利用 FPGA 资源消耗低、灵活性强、速度快、性价比突出等优势,使用 VerilogHDL 硬件描述语言设计并实现了 ADPCM 编/解码器, 运用 Modelsim 仿真测试,来确保编/解码器的正确性和稳定性, 整个设计充分利用了 FPGA 芯片的资源、硬件结构简单、可靠性高,具有良好的应用前景。3.1Matlab 仿真根据 G.721协议,再由上述原理编写 ADPCM的编解码器 C代码,将代码导入到matlab中 17。我们用一段类似语音的正弦波取200点来验证波形。其代码如下:t=0:pi/50:2*pi;y=sin(t);adpcm_

15、y=adpcm_encoder(y);Y=adpcm_decoder(adpcm_y);其中 adpcm_encoder( )为 ADPCM 的编码模块,代码见附录1,而 adpcm_decoder( )为ADPCM 的解码模块,其代码也见附录1。y 为输入波,adpcm_y 为 ADPCM 编码波形,Y 为解码输出波形则输入波形如图4.2.1。图4.2.1 输入波形ADPCM编码波形如图4.2.2。VIII图4.2.2 ADPCM 编码波形ADPCM解码波形如图4.2.3。图4.2.3 ADPCM 解码输入与输出波形的差值如图4.2.4。图4.2.4 输入与输出差值波形可以看出开始差距比较大

16、后来慢慢便开始减小,是因为开始是初始化预测值我们无法知道,所以便设定为预测值为0。IX3.2 Modelsim 仿真本设计采用 verilog语言验证编解码器功能的实现 18。先用 matlab生成一个类似于正弦波的图形来模拟为输入的语音波形,并将其值记录在一个名为“sin”的.txt 文件,然后送入到测试文件中 my_mem保存起来,2个时钟上升沿后便把 my_mem保存的数据一一送入到编码器的 PCMIN输入端,然后 modelsim仿真结果如下图4.4.1。仿真测试 verilog代码和编码器的代码见附录2。图4.4.1 输入波形及编码波形同理我让从编码器输出的编码值也保存在名为“code”的.txt 文件中,并设计了一个 my_mem的寄存器也来保存 code.txt中的编码值,在经过2个时钟下降沿后便把 my_mem中保存的数据一一送到解码器的 CODEIN输入端,按照这种方法,每隔2个时钟下降沿便将my_mem中数据输入一个,最后 modelsim仿真数据如图4.4.2。其中 verilog的解码器代码和测试文件的代码见附录2。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 调研文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报