最近要求用fpga仿真fir和iir滤波器并比较它们的性能。fir一天即完成,而iir花了近一个多上星期才搞出来,没有想象中这么简单,需要考虑很多细节。
fir滤波器由于没有反馈,因此跟着时间往前计算,实现流水线也不难,总能得到结果。而iir滤波器由于存在反馈,很容易由于量化误差问题而导致不稳定。还有其他一系列细节问题,如下:
1、 考虑好输入是有符号的,滤波器系数也是有符号的。
2、 Iir有直接1型和直接2型两种形式,考虑到节约寄存器和实现方式简单化,多用直接2型。
3、 对于4阶以上的iir滤波器,如果直接采用直接2型,那么当系数量化取整后,由于量化误差及其反馈迭代的影响,误差足以使极点超过单位圆使得滤波器不稳定(表现为输出波形溢出)。因此,高阶情况下必须用2阶滤波器进行级联实现,因为在2阶条件下极点离单位圆较远,误差不足以使极点偏离到单位圆外。
4、 存在一次除法,课本中a0是1,但由于量化的作用,这个数非1。最好放