微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于ADPCM算法的汽车智能语音报警系统的设计

基于ADPCM算法的汽车智能语音报警系统的设计

时间:08-03 来源:互联网 点击:
的样本值估算下一个输入样本的预测值,实际样本值和预测值之间的差值总是最校ADPCM编解码器的输入信号是G.711 PCM代码,若采样频率为8 kHz,每个代码为8位,则它的数据率为64 Kb/s,而ADPCM的输出代码是“自适应量化器”的输出,该输出是4位的差分信号,它的采样频率仍是8 kHz,数据率为32 Kb/s,这样就获得了2:1的数据压缩。

编码过程:计算8位的二进制补码的当前采样值Sc和上一预测采样值Sp之间的差值d,该差值经量化编码输出4位ADPCM代码I。在算法中,定义一个结构变量存储预测采样值Sp和量化步长q,并制定了两个表:一个表为索引调整表,其输入为差值量化编码I,用于更新步长索引;另一个表为步长调整表,其输入为步长索引,输出为步长q。编码时,首先用上一个采样点的步长索引查步长调整表求出步长q,然后根据下式来确定4位ADPCM编码值I:  


  
再将编码值I作为索引调整表的输入,查表输出索引调整,并和结构变量中原步长索引相加,产生新的步长索引,在下一个采样值的编码中使用。编码器输出I后,还需要重复进行与解码完全一样的计算过程,求出新的预测采样值Sp。

解码过程:首先通过步长索引查步长调整表得到量化步长,差值量化编码I经逆量化得到语音差值d,这是求I的逆过程;然后与前次预测值Sp。一起重建当前语音信号Sc;最后利用Sp=Sc,更新预测值Sp,用I更新量化步长索引。

设计完成后,对ADPCM编解码器进行仿真,仿真结果如图6所示。AD_DataBus为编码前输入信号,采用Testbench产生。在编码使能信号P1_7为“0”时,开始编码,P1_7跳变到“1”时,编码被屏蔽。此时解码使能信号P1_4为“0”,开始解码,P1_4跳变到“1”时,解码被屏蔽。可以看出编码前输入信号AD_DataBus和解码器输出DA_DataBus基本符合要求。由于ADPCM算法本身是有损压缩,可以确定本部分的设计是正确可靠的。  


  
4.2 单片机部分

单片机是整个系统的控制中心.负责检测危险并判断其类型以选择播放相应的报警信息。其工作流程如图7所示。本文给出了采用3个按键代表3种危险的发生,供单片机检测。  


  
选择常用的51系列单片机AT89C52,用C51语言编程可完成程序设计,实验效果理想。

5 结束语

本系统设计是单片机与FPGA配合使用,充分发挥各自的优点。获得理想效果,具有很强的实用性,同时还证明了采用可编程逻辑器件实现语音数字压缩处理的高效性。实验证明,本系统可以很好地再现录入的报警语音,具有较高的保真度。驾驶员可以根据自己的喜好随意改变报警声音。危急情况下,本系统会自动发出明确的报警提示,大大提高了驾驶的安全性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top