|
摘 要: 介绍子带滤波器组的电路设计方案,子带滤波器组主要应用于数字音频压缩编码MPEG1-II的实现,讨论实现其算法的三种电路设计方案并对比各自的优劣性,最终确定并行流水线的方式,采用ModelSim平台实现子带滤波器组的电路设计。
关键词: 数字音频压缩编码;子带滤波器组;电路设计
中图分类号:TN912.3 文献标识码:A 文章编号:1671-7597(2011)1020068-02
0 引言
本文在音频压缩编码算法中,设计了子带分析滤波器组这一部分。子带分析滤波器组是MPEG1-II音频压缩编码算法的重要部分,其作用是将输入的全带信号在频域中分解为多个子带信号,再根据各子带的特点分别进行变换处理、编码和传送,以去除冗余信息,提高信号处理的效率。因此,研究MPEG1-II音频压缩编码中子带滤波器组算法的设计是非常有必要的。如图1所示是MPEG1-II音频压缩编码系统框图。
图1 MPEG1-II编码系统框图
1 算法介绍
子带分析滤波器组的算法过程如下:
1)输入32个PCM音频值,建立一个有512个元素的输入样本矢量X,将此32个最新样值移位到位置0到31上,最新的一个放在位置X(0),并把32个最老的元素移出。
2)用矢量C给矢量X加窗,既是将数组X乘以系数组C,得 。C已由MPEG标准给出,是由低通滤波系数变换而来的。
2 电路设计
2.1 串行方式实现原理
子带滤波器组设计需要进行大量的乘累加运算,因此设计滤波器的过程是有关乘法、加法及累加运算的过程。对于乘累加的运算过程,可以采用一个状态机实现,这里以6个状态为例来说明此实现过程,状态的转换为:000001010011100101000。每个状态使用两个寄存器,一个存放乘累加运算过程中的一个待运算数据。另一个存放由输入数据得到的中间值。一个周期运算结束后,将重新输入一组新的数据,再根据状态机的操作过程进行运算。
实现的结构如图2,这种结构的滤波器所用资源比较少,只用一些寄存器,一个乘累加器就可以完成整个滤波运算,但是这种滤波器最大的缺点就是滤波速度慢,一次滤波需要的时钟数由滤波器的阶数决定。
图2 串行方式实现结构图
2.2 并行方式实现原理
并行方式可以在每个时钟周期都完成一次数据乘累加的运算过程。比较串行方式实现算法设计,并行方式就无需状态机来一步一步对数据进行累加的过程,用多个乘法器和加法器并行实现。直接并行FIR滤波器虽然可以在一个时钟周期内完成一次滤波,但由于其中的乘累加都是用大面积的组合逻辑完成,器件延时比较大,所以其工作速度不可能太快。 论文代写 http://
2.3 并行流水线方式实现原理
为了提高滤波速度,可以在中间适当的插入寄存器,构成流水线,这样滤波器可以工作在很高的运行频率上,但是要占用更多的硬件资源,因为在加法器和乘法器后面都需插入相应的流水寄存器,相乘后的结果用平行的加法器树的结构实现相加。比如8阶对称系数FIR滤波器的流水实现由4级流水构成,具体如下:
1)8个输入用4个加法器相加构成第一级流水。
2)4个并行乘法器构成第二级流水。
3)得到的4个中间值两两相加构成第三级流水。
4)得到的2个中间值两两相加构成第四级流水。
2.4 三种实现方式的比较
串行实现方式滤波器所占的硬件资源较少,但它完成一次滤波需要N(N为滤波器的阶数)次乘累加运算。
并行实现的滤波器是把滤波的实现展开,用多个乘法器和加法器来实现,这种结构的滤波器所需硬件资源最多,运行的速度最快,可以一个时钟周期就完成一次滤波。
并行流水线形式的滤波器是在前面的形式下在中间适当的插入寄存器,将整个计算过程分解为几级流水来做,提高了吞吐量,但一次运算要经过几级流水才可算出,有一定延迟,但是在算法过程中可以在每个时钟周期输出一次滤波结果,速度要较串行大大提高,消耗的硬件资源是介于串行和并行之间的。 http://
3 设计时的数据处理
在算法的电路设计过程中,在考虑到运算速度及硬件资源方面,选用定点数表示数据,在定点算法中最重要的是确定字长。字长影响硬件实现时所需的硬件资源,字长越长,硬件的面积越大,速度会更慢,所以要保证计算精度的前提下尽量的缩小字长,根据Matlab仿真确定输入的数值位宽为12位。
在本设计中利用有符号定点小数的原码表现形式进行电路设计,二进制码的最高位既是符号位又是整数位。那么,其加减法运算就有这两种情况:1)当符号位相同时,即两个数同时为正或为负时,将除符号位的数位进行加法运算,所得结果的符号由任一数据的符号位决定;2)当符号位不同时,即两个数据一个为正一个为负数的情况,首先,判断小数部分绝对值的大小,结果的符号位由较大的数据决定。由于处理的数据为数值较小的纯小数,因此不需要考虑溢出的问题。
与定点小数加法运算相比较而言,定点小数乘法运算相对来讲是比较简便的。其运算的过程分两个步骤:1)将乘数和被乘数的符号位相异或,得到的结果作为积的符号位;2)将乘数和被乘数除各自的符号位以外的数据相乘得到的结果作为积的数值。
即:若,[x]原=x0.x1x2xn, [y]原=y0.y1y2yn 论文网 http://
则:[x]原[y]原=(x0^y0).(0.x1x2xn)(0.y1y2yn)
式中:0.x1x2xn为x的绝对值,
0.y1y2yn为y的绝对值。
因此,采用原码形式进行各种加法和乘法运算时,计算机很容易实现这种运算规则,不仅降低了程序的复杂程度,而且更加直观。
4 仿真结果及分析
图3是用并行方式实现子带滤波器组算法的设计时,通过ModelSim平台得到的仿真波形图。
图3 并行流水线实现算法的输出波形图
clk:时钟信号;
fir_in:是滤波器数据的输入端口;
fir_in_reg:是输入数据存放的寄存器;
fir_out:是滤波器输出的乘累加后的结果。
实际值:
fir_out= add_mul12+ add_mul34=
1000_0101_0011_1101+10_1110_0111_0000_1001=11_0110_1100_0100_0110
fir_out= add_mul12+ add_mul34=
1000_1101_1010_0001+10_0110_0110_1010_0000=10_1111_0100_0100_0001
由图2看出输出波形图两个周期内得到的结果与实际值一致。
参考文献:
[1]褚振勇,FPGA设计及应用[M].西安:西安电子科技大学出版社,2002:210. 论文代写 http://
[2]K.Brandenburg,E.EberlEin,J.Herre,and B.Edler,Compression of filter banks for high quality.
[3]audio coding,in Proc.IEEE ISCAS,1992:1336-1339.
[4]Crochiere R.E.Webber S.A and Flanagan J.L.Digital coding in subbands[J].Bell.System Technology Journal,Vol.55,Oct,1976:109-185.
[4]精英科技,视频压缩与音频编码技术[M].北京:中国电力出版社,2002.
[5]ISO/IEC 11172-3 [S].Coding of Moving Pictures and Associated Audio for Digital Storage Media at up to About 1.5Mbit/s Part 3:Audio,1993. 论文代写 http:// |
|