热度 15
2014-8-18 17:19
2089 次阅读|
2 个评论
ADPCM 的定义和实例程序到处都有,不多解释。 ADPCM 的编码能把一个16位的字压缩成一个4位,体积缩小了4倍。解码时再还原回去。 在解码和编码过程中 是有2个结构 变量关联前后值: 量化编码和步长。 假如我们用8K的采样率,16位的AD转换来采集数据。 ADPCM的编码 需要在125US内完成。 假如一个指令4个脉冲周期,一个8M的晶振 ,大约是0.5US 一个指令。 如果再加速,用上4倍PLL, 达到32MHZ, 0.125US一个指令。 也就是说1000个指令。 如果双向语音,所有的编码和解码 都要在这个1000个指令中完成,貌似很紧张。 况且芯片也不会只进行编码和解码2个工作,还得照顾其他的外围设备。 用8位来进行ADPCM 这么个简单的编解码 是很费劲的。 惭愧的是多年没有用汇编的习惯了,不能精确的知道指令多少的数值。如果用C, 除了用定时器来计算这段函数的时间,其余的方式也不了解。一个字太麻烦了。