首页 > 代码库 > FIR仿真教程__Altera FIR

FIR仿真教程__Altera FIR

FIR仿真教程__Altera FIR

乘着前面写了一个FFT的操作教程,那么趁热把自己做的FIR也顺便写个教程回顾一下,方便以后使用,因为上家公司使用的是Altera的器件,同样这次仿真也就使用Altera 的IP直接进行演示,后期有时间再弄弄Xilinx的。O(∩_∩)O~

1 FIR的原理

 FIR滤波器广泛应用于数字信号处理中,主要功能就是选择性的留下有用信号,剔除不必要的信号滤除。FIR滤波器是全零点结构,系统永远稳定;并且具有线性相位的特征,在有效频率范围内所有信号相位上不失真。在无线通信收发机中的DDC/DUC模块,抽取和内插都需要加入滤波器以防止信号在频谱上混叠,最典型的是采用FIR滤波器实现半带滤波器。

FIR滤波处理如下式所示,其中x(n)为输入信号,h(n)为FIR滤波系数,y(n)为经过滤波后的信号;N表示FIR滤波器的抽头数,滤波器阶数为N-1。

技术分享 

由上式可得到FIR滤波器在FPGA中的实现结构,如图1所示,主要由延迟单元Z-1、乘法器和累加器组成。此结构为直接型FIR滤波器结构,也称横向结构(transverse)。

技术分享 

 

比较细致的FIR 滤波器原理当然大家可以自己搜索学习,以及怎么用在自己的实际项目中。

 

2 FIR ip配置

新建工程及ip这个就不说了,想必大家都清楚,我们直接对ip核参数进行配置

2.1 参数设置如下

因不涉及实际的项目使用,只是单纯的进行操作演示,所以所有参数均采用默认配置,实际使用中根据自己的项目进行相应的配置就好。

 技术分享

2.2 生成仿真模型

 技术分享

 

 

2.3 生成文件

 技术分享

当出现红色区域标志的信息是表示IP 配置完成,接下来可以进行仿真了。

3 FIR ip仿真

3.1 Matlab实现

Matlab文件包括fir_mlab.m,fir_model.m两个文件,fir_mlab.m为函数实现文件,

fft_model.m调用fir_mlab.m函数。

对于不熟悉matlab的可以通过下面的图区分,一般函数文件它上面都带个fx

 技术分享

仿真步骤是:

1) 双击fft_model.m,在代码编辑窗口Editor可以查看文件源码,

2) 点击RUN,运行fft_model.m,在文件目录一个txt文件,这就是通过matlab生成的FIR结果文件

fir_model_output.txt

对应matlab源码中的

  % Write data out to file

    file_name = [‘fir_model_output‘];

    outfile1 = fopen([file_name, ‘.txt‘],‘w‘);

    fprintf(outfile1, ‘%d\n‘, reshaped_output);                                        

   另外为了直观的查看滤波效果,我们在fft_model.m文件中添加如下代码,

 技术分享

 技术分享

 

效果图如图所示,我们最后可以与modelsim仿真的效果图进行对比查看一下

 技术分享

3.2 modelsim仿真

 新建一个Project,直接命名为fir好了,但是Project Location需要放在fir的生成目录,不然很多文件会找不到的,造成的一堆麻烦我可不负责哦,O(∩_∩)O~

添加下图的文件,

 技术分享

 

 

添加好以后进行Compile Out_of_Date,编译完成后仿真,记得把该添加的库添加进去啊,

 技术分享

注意,我的modelsim已经编译过altera的仿真库,所以可以直接添加,没有编译过的自行百度如何编译altera库,以及注意编译后的库位置,再次进行仿真,提示

 技术分享

 

大意就是1ps的仿真精度是小于一个选择的SystemC 或者 VHDL设计单元的精度的, 在仿真的时候将default值修改为合适的值就可以

 技术分享

. 将对应的波形添加进行观察,仿真结果如下

 技术分享

 技术分享

 

我们将仿真结果与matlab输出的数据文件比较一下看看,可以通过波形数据和matlab输出的数据比较,当然也可以直接查看输出的数据文件

fir_model_output(matlab输出的数据文件)

fir_output(modelsim输出的数据文件)

测试数据结果一致,关于fir滤波器的仿真就简单的操作了一下,希望能对从事这方面的同行有所帮助,如有不当的地方还请大家多包涵,不吝赐教,谢谢\(^o^)/~

 

明天就中秋了,祝大家中秋节快乐!!!O(∩_∩)O哈哈~

                                                                                                                                             

 

                                                                                                                                                     By  卖红薯的小孩

                                                                                                                                       2016/9/14 晚于杭州

 

 

 

 

FIR仿真教程__Altera FIR