32阶FIR滤波器的FPGA实现
3 FPGA仿真与验证
由于直接将大量数据进行硬件仿真验证很不方便,因此利用Matlab产生一个采样频率为100 MHz,频率分别为1 MHz与30 MHz的两个正弦信号相加后,作为输入信号。同样,浮点变为定点,将此信号进行12位量化,并将负数转化为补码形式,按照一定格式保存为.vec文件,导入到QuartusⅡ中进行仿真,时序功能仿真结果如图2所示。本文引用地址:https://www.eepw.com.cn/article/188447.htm
其中,clk为时钟信号,x_in为滤波器输入信号,y为滤波器输出信号。图2并不能很直观地看出并行分布式算法产生的滤波效果,可以将QuartusⅡ中.vwf文件转化为.tbl文件,在Matlab中按照一定形式编程可以得到时域及频域波形图,如图3,图4所示。
图3,图4中,软件仿真是直接在Matlab中用输入信号与滤波系数卷积得到的,在时域波形中软件仿真输出信号与理想信号相比有一定时间延迟,而QuartusⅡ仿真与软件仿真结果中幅度的差别是由于硬件输入量化产生的。
从时域或者频域波形图可以看出,频率为30 MHz的信号被滤除掉,只有频率为1 MHz的信号通过滤波器,达到了滤波的目的。
4 结 语
本设计选用Stratix系列芯片,最大处理速度可以达到200 MHz以上。本文没有考虑线性相位的滤波器对称性,在考虑线性相位的基础之上结合一些其他算法可以降低器件数量和进一步提高处理速度。由于FPGA器件的可编程特性,在本设计中可以修改滤波器参数,得到高速处理的高通或者带通数字滤波器,具有一定实用价值。另外,本文利用QuartusⅡ与Matlab联合仿真,极大地提高了FPGA的设计效率。
评论