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

前两天简单的对System Generator作了下了解和使用,接下来几天将用这个工具来设计一些数字信号处理里的东西,今天搞下数字滤波器的设计。

~Show Time~git

首先打开System Generator 2018.2,不清楚咋打开的能够看下我前两天发的,等待MATLAB启动完成后,再打开simulink而且创建一个空白模型(以.slx为后缀),将其存放到本身想要存放的位置,保存好文件后就开始放置相关的模块来进行今天的设计。
首先产生带有两个或多个频率信息的信号,使用Sine Wave产生,而后用Add进行叠加,而后用scope观察信号,设计结果以下图所示,用到的 B lock能够直接在库的界面进行搜索或者自行百度找对应的位置所在

图中使用了两个Sine Wave模块,分别产生9M和1M的正弦信号,而后叠加,在示波器上看到各个信号的样子。
9M的Sine Wave设置:

1M的Sine Wave设置:

Add使用默认设置“++”
而后scope就是示波器,须要一下的设置,或者直接放置三个进行查看,我是在示波器上设置了三个PORT,操做依次以下:

若是此时没有将各个通道的信号分开查看,则会出现混在一块儿,可是分颜色的现象,以下:

为方便看清每一个通道的信号,继续以下操做:微信

上面三个蓝色的框框就是表明设置一列三行的显示框,效果以下:工具

第一个波形表明9MHz,第三个表明1M,第二个表明两个相叠加的信号,也是后面用于滤波所需的原始信号。spa

开始设计滤波器,准备将1MHz的信号从叠加的信号中滤出,可使用Simulink中的FDATool(使用Digital Filter Design模块进行设置的时候就是直接调用的FDATool)或者Lowpass Filter模块实现滤波器的设计,以前发的“模数和数模”已经有介绍过,在数字信号处理前须要将模拟信号转换为数字信号,所以在滤波前须要添加一个转换,该设计使用0阶保持(Zero-Order Hold),将信号变成离散的用于后续的使用,而后为方便直观的观察滤波效果,使用频谱分析仪(Spectrum Analyzer)进行查看滤波后的频率信息。.net

运行后,能够看到原始的频谱、使用FDATool设计的滤波器以及Lowpass Fiter进行滤波后的所存的频谱信息,示波器就是用于观察滤波后的波形,滤波器的设计都根据如下的参数进行设计,频率参数包括:采样频率20MHz,带通频率1.5MHz,带阻频率8.5MHz,这样就能够将1M颇有效的保持,并将9M的信号滤除;幅度参数包括:通带衰减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—>BasicElements menu—>Gateway In+ Gateway Out+ SystemGenerator
而后再加一个Spectrum Analyzer用于观察滤波后信号的频谱,示波器观察实际滤波后的信号,添加方式举一个例子,其余的相似进行便可,或者直接拖到模型文件中;

连好各个模块之间的线,结果以下:

相关Blocks的配置以下,没写的默认便可:
Gateway In

Implementation此次就不进行设置了,不配置管脚那些,有须要的话能够本身弄。
Digital FIR Filter,下图中箭头所指的内容,表明该滤波器使用FDATool设计的系数。

FDATool,该模块的配置和前面设计数字滤波器时的配置一致

System Generator,Compilation菜单下的IP Catalog 用来确保在输出IP目录的格式,Part我就直接使用默认的FPGA器件,Hardwaredescription language选择Verilog,选择VHDL也能够,而后勾上Create testbench生成激励文件,在VIVADO中进行仿真验证滤波器的设计结果。

而后点击OK就能够保存配置并关闭该模块的配置,其余的模块也是相似。
而后直接点Run,能够看到这部分的频谱分析仪的波形,与Simulink中的FDATool设计的数字滤波器滤波后的信号的频谱进行对比,以下:

能够看到右边窗口的频谱(Spectrum Analyzer SysGen的窗口)和左边窗口即用Simulink的数字滤波器设计所得的(Spectrum Analyzer FDATool)有轻微的不一样,这是由于当连续时间系统在离散时间硬件描述时受到量化和采样的影响。

生成VIVADO工程还须要设置一下systemgenerator这个模块,在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就是滤波后的结果,很明显是将低频的那部分信号滤出来了。

数字滤波器的设计结束了,若是有些不太理解的能够看看以前的几篇文章,以后遇到相同的步骤就再也不进行一一讲述了。

模数与数模
3d

初识System Generator(安装+使用)
orm

System Generator设计转FPGA设计
blog

若是以上的文章中没有相关的介绍,能够在后台回复留下你的问题,这篇文章设计的工程文件都已经上传了,须要作参考的能够回复关键字获取。


阅读本文共使用    ip

软件 获取 方式以下
公众号中回复【0519
🔥更多精彩等你发现🔥

长按识别二维码关注电子狂人


本文分享自微信公众号 - 电子狂人(DZKR666)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索