基于FPGA的FIR滤波器设计与仿真
5 仿真验证
为了验证设计的正确性,必须对设计进行全面充分的功能仿真和时序仿真,功能仿真一般用Mentor公司的Modelsim来进行,时序仿真使用QuartusII软件。Altera公司提供的QuartusII软件除了具有强大的编译综合功能之外,还提供了一定的波形(时序)仿真功能。因其输入和输出都是以波形的形式给出的,虽然看起来如同逻辑分析仪的输出形式,比较直观,但是难以对随机信号进行输入;随机信号的输出也难以分析,这就给我们的验证工作带来了很大的障碍。下面我们利用MATLAB与QuartusII实现联合仿真。
5.1 产生向量仿真文件
在MATLB中生成OuartusII仿真所需的输入文件*.vec。QuartusII仿真文件有两种格式,即*.vwf格式和*.vec格式。前者是在Quart-usII中通过波形编辑器生成的。当方针输入数据复杂时,用波形输入的方法难以胜任,特别是在数字信号处理领域,大多数仿真输入数据要叠加噪声,采用波形输入方式是不现实的。后者是按一定格式要求的文本文件输入方式,可以利用任何文本编辑器产生,只要符合对仿真文件的格式要求即可。
这里的仿真输入数据是在两个不同频率上的正弦波,频率分别为23Hz、58Hz。把这两个信号叠加在一起作为输入信号,用MATLAB软件生成仿真所需的vec文件。FIR滤波器的截止频率为40Hz。
在对仿真参数进行设置时,将仿真向量文件指向由MATLAB生成的文件,即可将MATLAB中生成的仿真信号导入之中进行仿真了。
5.2 验证输出结果
用QuartusII软件中的选项将仿真向量文件指向由MTLAB生成的*.vec文件,进行仿真。
将仿真结束后生成的波形文件,另存为*.tbl格式文件,以数据文件输入的方式将此*.tbl文件中的仿真输出信号的数值导入至MATLAB中,并进行频谱分析验证FIR数字滤波器设计的正确与否,并分析其性能优劣。本文引用地址:https://www.eepw.com.cn/article/187517.htm
图1是输入信号的时域和频域图形,以及经过理想的低通滤波后得到的结果。低通滤波用MATLAB实现。可以看出经过滤波后,23Hz的频率成分被保留下来,而58Hz的频率成分被滤掉。图2是同一输入信号的时域和频域图形,以及经过FPGA实现的FIR数字滤波器低通滤波后的结果。
6 结束语
从这两幅图中,我们可以看到用FPGA实现的FIR滤波器,得到了和理论上滤波相似的结果,证明了设计的可行性及正确性。如果需要不同的滤波器,我们只要改变输入到ROM中的初始化文件数据即可。
评论