MBD-FPGA 开发与实现 http://blog.sina.com.cn/McCrocodile
这个简单的例子主要说明使用Simulink的MBD-FPGA基本开发流程。你将体会到这种开发解决方案是多么的高效和简单。
目的:
实现一个循环点亮的LED灯。
模型构建:
- 实现的基本思路:使用两个计数器,计数器的1在时钟上升沿时加1,计数到255时,输出一个时钟周期的脉冲溢出信号。将此溢出信号作为计数器2的计数控制信号,最后对计数器2的输出信号与常数比较,控制LED的亮和灭。
- 构建的仿真模型: 屏幕剪辑的捕获时间: 2011/10/5 21:31
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 21:15基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 21:15基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 - 对模型作以下设置:
- 设置信号/端口的显示属性:
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 - 设置模型求解器参数:
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 - 设置错误报告属性:
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯
- 设置信号/端口的显示属性:
- 构建子系统设置各模块的信号属性:
- 子系统:选中需要的模块,右键选择构建子系统。
-
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 - 计数器属性: 屏幕剪辑的捕获时间: 2011/10/5 21:36
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯
- 生成HDL代码,联合仿真模型以及FPGA工程:
- 生成HDL代码:Tools下面的HDL Code Generation中的Options。 设置要生成HDL代码的子系统,选择要生成的语言,以及生成HDL代码的文件夹,设置好这些之后,单击Run Compatibilty Checker检查是否有代码不能生成代码或者有设置不支持。
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 21:46基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 21:53
可以看出这里选择的计数器模块不支持生成HDL代码,初学者经常遇到这个问题,在命令行窗口输入:hdllib(还有一个是eml_hdl_design_patterns),里面的模块都可以生成HDL代码,只要找到替换上面的模块就可以了。绿色的为替换后的模型如右侧。
屏幕剪辑的捕获时间: 2011/10/5 22:05基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 22:07
可以看出来替换后的仿真结构一致,再来看看检查的结果。
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 22:10
之后可以单击Generation生成HDL代码,下面是生成的报告。
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 22:10
好了,这儿生成的代码,你可以集成到你的工程中了。不过时序逻辑,会自动加入时钟复位,时钟使能等端口。
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 22:13
全局设置:对复位形式,高电平还是低电平复位等作设置。
屏幕剪辑的捕获时间: 2011/10/5 22:17基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 - 生成测试激励和联合仿真模型:
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 22:20
单击生成测试激励,生成联合仿真测试模型,如下图。双击Start Simulator模块启动ModelSim,如果你的ModelSim安装正确(ModelSim® SE 6.6c, 6.5f, 6.4g ModelSim PE 6.6c, 6.5f, 6.4g ModelSim DE 6.6c R2011a只支持这几个版本 ),ModelSim将自动启动,并编译HDL文件,最后会显示Ready for Simulation,表示可以开始启动Simulink开始仿真。
屏幕剪辑的捕获时间: 2011/10/5 22:22基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 观察结果:可以看得出来ModelSim的仿真结构和Simulink的行为一致。基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 - 生成FPGA工程:Tools下面的HDL Code Generation中的HDL Workflow Advisor,这儿的检查更详细些。
基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯 屏幕剪辑的捕获时间: 2011/10/5 22:40
这儿这个FlashLED的程序就可以作为顶层文件,那么直接分配管教之后就可以下载到FPGA就可以工作了,不过你似乎要注意这儿有个时钟时能端口的处理。
- FIL (FPGA In Loop):目前只支持Xilinx
思考一问题:
如果你现在要增加灯的数量,你需要修改那些地方就可以了?如果你是写的HDL代码又怎样修改?
- 生成HDL代码:Tools下面的HDL Code Generation中的Options。