霍夫曼解码器的设计及在MP3解码中的应用

[10-10 20:38:44]   来源:http://www.88dzw.com  电子制作   阅读:8478

文章摘要:---以“表1”的码表为例,假设第一个输入的数据流由八位组成:“00100110”。开始解码的第一个周期累加器的值为“0”,解码的码字为“00”(A),码长为“2”。第二个周期,累加器的值为第一周期解码的码长“2”,累加器控制缓冲器移位2位,这样,解码的码字为“10”(D),码长为“2”。第三个周期,累加器的值为前两个周期解码的码长的和“4”,累加器控制缓冲器移位4位,解码的码字为“011”(C),码长为“3”。第四个周期,累加器的值为“7”,缓冲器中还剩一位数据。累加器控制缓冲器将前七位移出,输入新的比特流。算上上次解码剩下的一位“0”,假设第二个输入的8位数据是“10010101”,这样,

霍夫曼解码器的设计及在MP3解码中的应用,标签:电子小制作,http://www.88dzw.com
---以“表1”的码表为例,假设第一个输入的数据流由八位组成:“00100110”。开始解码的第一个周期累加器的值为“0”,解码的码字为“00”(A),码长为“2”。第二个周期,累加器的值为第一周期解码的码长“2”,累加器控制缓冲器移位2位,这样,解码的码字为“10”(D),码长为“2”。第三个周期,累加器的值为前两个周期解码的码长的和“4”,累加器控制缓冲器移位4位,解码的码字为“011”(C),码长为“3”。第四个周期,累加器的值为“7”,缓冲器中还剩一位数据。累加器控制缓冲器将前七位移出,输入新的比特流。算上上次解码剩下的一位“0”,假设第二个输入的8位数据是“10010101”,这样,下一个被解出的码字是“01001”(E)。第五个时钟周期,累加器的值为“12”,已经大于缓冲器的8位容量,因此用累加器的值减去“8”得到的值才是缓冲器中下一个未解码数据的位置。解码器重复以上过程,直到所有比特流中的数据全部解完。
---从上面的例子可以看出,不管码字的长短,各个码字解码所需要的时钟周期是相同的,而且解码的时间相对也比较短,比较适合要求实时解码的环境。而且当霍夫曼的码表改变的时候,只需要修改查找表中的数据就可以了,在通用性方面也比较方便。

4 霍夫曼解码器在MP3解码器中的应用
---作为一种重要音频数据的压缩算法,mp3算法以其优秀的压缩能力和较高品质的音质获得了较高的评价。在mp3的压缩算法中,霍夫曼编码的初始数据是DCT变换输出的音频频率线经过量化后的值。在mp3解码的过程中,霍夫曼解码器的作用是接受mp3比特流中的主数据,输出576条初始频率线。mp3的霍夫曼编码分为三个区域:Big-values,Count1,Rzero。Big-values区包含着出现频率最低的DCT系数,用最高的精确度来编码,为了进一步增强霍夫曼编码的精确度,将Big-values区再划分成三个区域,每个区域有32个码表可供选择;Count1区包含着出现频率中等的DCT系数,这个区中每四个值编码为一个码字,一共有2个码表供这个区域选择;Rzero区包含的是出现频率最高的频率值,全部被编码为0,不需要传输。在设计mp3解码器的霍夫曼解码器部分的时候,除了采用上述的平行结构,还要考虑上述三个区的起始边界,以及补零的问题。霍夫曼码字的三个区的起始边界信息和码表选择信息可以在mp3比特流数据的帧头和侧信息中找到;在解完Big-values和Count1两个区中的数据后,解码器还应该自动补0,直到解出576个频率值为止。MP3解码器中的霍夫曼解码器的状态机设计如图3所示。


5 结论
---我们以“ISO/IEC 11172-3”标准中的“霍夫曼码表6”为例进行验证最终仿真后输出波形如图4所示,“data_in”是数据输入端,“code_x” 和“code_y”是最终输出的码字,“valid”是有效信号,当“valid”为高电平时输出码字有效。
---通过实际地运行,并行结构的解码器很好地达到了mp3解码的要求。也可以方便的进行修改以满足各种应用环境的解码需求。另外经过验证此设计是可综合的,电路的关键路径是Shifter -> Look-up Table -> Accumulator -> Shifter,如果想达到更高的时钟频率可以进一步采用pipelining等结构对此关键路径进行优化。

上一页  [1] [2] 


Tag:电子制作电子小制作维修教程知识 - 电子制作

《霍夫曼解码器的设计及在MP3解码中的应用》相关文章