基于System Generator的数字滤波器(Simulink验证+Block设计+FPGA的仿真验证)

首先打开System Generator 2018.2,不清楚咋打开的可以看下我之前发的,等待MATLAB启动完成后,再打开simulink并且建立一个空白模型(以.slx为后缀),将其存放到自己想要存放的位置,保存好文件后就开始放置相关的模块来进行今天的设计。

首先产生带有两个或多个频率信息的信号,使用Sine Wave产生,然后用Add进行叠加,设计结果如下图所示
在这里插入图片描述
图中使用了两个Sine Wave模块,分别产生9M和1M的正弦信号,然后叠加,在示波器上看到各个信号的样子。
9M的Sine Wave设置:

在这里插入图片描述
1M的Sine Wave设置:
在这里插入图片描述
Add使用默认设置“++”
然后scope就是示波器,需要一下的设置,或者直接放置三个进行查看,我是在示波器上设置了三个PORT,操作依次如下:
在这里插入图片描述
如果此时没有将各个通道的信号分开查看,则会出现混在一起,但是分颜色的现象,如下:在这里插入图片描述
为方便看清每个通道的信号,继续如下操作:
在这里插入图片描述
在这里插入图片描述
上面三个蓝色的框框就是代表设置一列三行的显示框,效果如下:
在这里插入图片描述
第一个波形代表9MHz,第三个代表1M,第二个代表两个相叠加的信号,也是后面用于滤波所需的原始信号。




开始设计滤波器,准备将1MHz的信号从叠加的信号中滤出,可以使用Simulink中的FDATool(使用Digital Filter Design模块进行设置的时候就是直接调用的FDATool)或者Lowpass Filter模块实现滤波器的设计,之前发的“模数和数模”已经有介绍过,在数字信号处理前需要将模拟信号转换为数字信号,因此在滤波前需要添加一个转换,该设计使用0阶保持(Zero-Order Hold),将信号变成离散的用于后续的使用,然后为方便直观的观察滤波效果,使用频谱分析仪(Spectrum Analyzer)进行查看滤波后的频率信息。
在这里插入图片描述
运行后,可以看到原始的频谱、使用FDATool设计的滤波器以及Lowpass Fiter进行滤波后的所存的频谱信息,示波器就是用于观察滤波后的波形,滤波器的设计都根据以下的参数进行设计,频率参数包括:采样频率20MHz,带通频率1.5MHz,带阻频率8.5MHz;幅度参数包括:通带衰减0.01dB,阻带衰减100dB,如下所示;
在这里插入图片描述
例如使用FDATool设计的如下,其他的根据以上的参数信息进行设置即可,点击Design Filter后看上方的幅频特性曲线,在1.5M以前都是保持一条线,然后在1.5到8.5M慢慢衰减到了将近-90dB的幅值,符合之前的“模数和数模”里的滤波器设计要求:
在这里插入图片描述
设计成功后运行,运行的时间稍微设置下,设置的结果如下,Stop Time使用的是10000/20e6,代表在20M的采样率下有10000个采样点,不然采的点数太多,需要运行很久,太少则无法进行频谱的分析。
在这里插入图片描述
各个频谱分析仪以及滤波后的样子所得效果如下:
在这里插入图片描述
可以从图中看到叠加的信号中有两个频率信息,经过滤波器后,9M的频率被抑制了。
Simulink已经验证完数字滤波器的效果了,然后就是使用System Generator来实现FPGA的设计了。
和上一篇的一样,先将System Generator中所需的模块添加进来,本次的设计需要有以下模块:
Xilinx Blockset—>DSP—>Digital FIR Filter+FDATool
Xilinx Blockset—>Basic Elements menu—>Gateway In+ Gateway Out+ System Generator
然后再加一个Spectrum Analyzer用于观察滤波后信号的频谱,示波器观察实际滤波后的信号,添加方式举一个例子,其他的类似进行即可,或者直接拖到模型文件中;
在这里插入图片描述
连好各个模块之间的线,结果如下:
在这里插入图片描述
相关Blocks的配置如下:
Gateway In
在这里插入图片描述
Implementation这次就不进行设置了,不配置管脚那些,有需要的话可以自己弄。
Gateway Out 使用默认配置
Digital FIR Filter,下图中箭头所指的内容,代表该滤波器使用FDATool设计的系数。
在这里插入图片描述
FDATool,该模块的配置和前面设计数字滤波器时的配置一致
在这里插入图片描述
System Generator,Compilation菜单下的IP Catalog 用来确保在输出IP目录的格式,Part我就直接使用默认的FPGA器件,Hardware description language选择Verilog,选择VHDL也可以,然后勾上Create testbench生成激励文件,在VIVADO中进行仿真验证滤波器的设计结果。
在这里插入图片描述
然后点击OK就可以保存配置并关闭该模块的配置,其他的模块也是类似。
然后直接点Run,可以看到这部分的频谱分析仪的波形,与Simulink中的FDATool设计的数字滤波器滤波后的信号的频谱进行对比,如下:
在这里插入图片描述
可以看到右边窗口的频谱(Spectrum Analyzer SysGen的窗口)和左边窗口即用Simulink的数字滤波器设计所得的(Spectrum Analyzer FDA Tool)有轻微的不同,这是因为当连续时间系统在离散时间硬件描述时受到量化和采样的影响。

生成VIVADO工程还需要设置一下system generator这个模块,在Clocking菜单下时钟周期- FPGA clock Period为50ns,也就是1/20MHz,Simulink system period也因此是1/20e6(sec),Perform analysis下选择Post Synthesis,Analyzer type选择Resource,这部分的选择是为了在编译好VIVADO工程后得到资源利用率的详情,设置结果如下
在这里插入图片描述
然后Apply进行应用一下,再Generate进行编译生成,编译结束后出现资源信息
在这里插入图片描述
点击OK退出该窗口,其他弹出的信息窗口同此,直接点叉叉关闭也行。
最终完成的整个设计的图如下:
在这里插入图片描述
然后打开生成的VIVADO工程,打开方式在上一次已经讲过,就不再多述,打开后看下仿真的顶层文件是不是带了_tb的那个,不是的话自己把它设置为TOP层,然后依次二三步骤运行仿真。
在这里插入图片描述
然后Run个几百微秒,设置下波形的格式,就出现仿真波形了,gateway_in_net就是叠加了两个频率的原始信号。Gateway_out_net就是滤波后的结果,很明显是将低频的那部分信号滤出来了。
在这里插入图片描述




使用到的设计文件传网盘了,需要做参考的自行获取。
网盘链接
提取码:88g0




-----------------------------------------------END-----------------------------------------------

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值