MBD-FPGA 开发与实现
http://blog.sina.com.cn/McCrocodile
这里要介绍的内容可以在帮助文档Filter Designer HDL Coder章节查找到相应的内容,包括:如何在Matlab中生成滤波器的HDL代码,以及对生成的HDL代码加以测试(联合仿真)。
1、代码生成GUI的启动:
主要有三种方式:从Fdatool启动,从filterbuilder启动,命令行启动。
1)如下图所示从fdatool中启动代码生成,但是在这个之前你需要量化(定点化)滤波器Set Quantization Parameters ,甚至设置滤波器的结构Filter arithmetic。
2)filterbuilder中直接在代码生成面板Code Generation中,单击Generate HDL启动HDL生成GUI。
屏幕剪辑的捕获时间: 2011/9/7 7:22
3)命令行启动:
fdhdltool(Hf2)
2、滤波器生成HDL的GUI及其设置:
屏幕剪辑的捕获时间: 2011/9/9 22:28
与Simulink HDLCoder相同的Global Settings选项这儿就不做介绍,留在Simulink HDL Coder 中来介绍。这儿主要介绍滤波器HDL生成中的独有选项进行详细介绍,通过这些设置可以优化生成的HDL代码,来满足要求。
1)生成HDL代码
简单设置之后就可以生成HDL代码了,我们这儿直接使用Generate按钮生成HDL,以便和后面的精细设置之后的代码。下图为生成的代码部分截图。
屏幕剪辑的捕获时间: 2011/9/9 22:43
2)生成测试激励或联合仿真模型:
如下图所示,在TestBench面板中选择Cosimulation model for use with 就可以生成联合仿真模型。红色部分为联合仿真是需要测试的几个相应。包括脉冲响应、阶跃响应、斜坡信号响应、啁啾响应、白噪声响应、自定义测试(此处是用第一节中的测试用的x=x1+x2)
生成的联合仿真模型,如下图所示。这儿启动ModelSim的是单击Start HDL Simulator,和Simulink模型生成联合仿真模型有一点区别。在启动ModelSim后不需要做任何设置直接可以启动Simulink联合仿真。
屏幕剪辑的捕获时间: 2011/9/9 23:08
来看下联合仿真的结果如下图。在观察下自定义测试的局部放大图。
最后看下ModelSim中观察到的结果及局部放大图。
总结:
利用filter design HDL Coder可以很方便的生成HDL和联合仿真,大大的减少了工作量,可以让设计人员集中精力在算法和思想上来满足需求,不再拘泥于代码。
这时很多人可能有这么个问题,那么就是生成的滤波器所能到达的性能和效率?这个问题的答案是:MBD可以做到一切!生成代码可以达到手写代码所能达到的任何需求甚至更好,只要你使用合适。后面的一节将讨论滤波器代码生成简单优化和FPGA工程的时序分析以及上片测试。