在Vivado中调用ModelSim生成FSM的状态转移图
如果我们已经书写了一段FSM代码,现在想倒过来把它转换成为状态转移图,方便我们直观地检查我们书写的状态对不对(在写论文什么的画图太麻烦的时候,有个自动生成的是多方便啊!),应该怎么弄呢?通过在Vivado中调用ModelSim,可以直接完成这个操作,下面我们就来看看这个神奇的转换是如何完成的。
首先介绍一下软件环境:
ü 操作系统win7 sp1 64位
ü Vivado2014.1 64位
ü Modelsim SE-64 10.2c
然后就是打开Vivado,新建一个RTL工程,配置好器件……这个步骤大家都写过了,所以在此略过。然后在Vivado中新建顶层文件,然后输入一段FSM代码。接下来我们要先配置ModelSim的路径,使得Vivado知道ModelSim在哪里。方法是在Vivado中点击菜单栏的Tools---Options---General,在最后面的一行里选择ModelSim的安装路径,如图1所示。
图1 配置ModelSim的路径
然后我们要为Xilinx的FPGA器件编译生成供ModelSim仿真使用的库。点击Vivado工具栏上的Tools---Compaile Simulation Libraries,如图2所示。
图2 编译仿真库
在图2的配置窗口中选择仿真器类型(例如ModelSim、Active-HDL等)、编程语言(Verilog或者HDL或者全选)、库的类型(Unisim或者SimPrim或者全选)、器件家族(例如Kintex/ Virtex/ Artix -7, ,Zynq-7000, Kintex/Virtex UltraScale系列,或者干脆全选)。中间的框是选择编译之后输出的库文件的路径以及第三方仿真工具的路径。最后是其它杂项,例如是否覆盖现有的库,是不是编译32位的库,是不是启用啰嗦模式等。与ISE相比,在Vivado中编译仿真库只需要点击这两个步骤然后等待几分钟就可以了,步骤只有ISE的五分之一,需要我们决定的选择框要少了非常多,花的时间则只有几分钟,比ISE编译仿真库的效率要高了好几倍。
编译很快就完成了。然后我们在Vivado设计流程管理器中点击Simulation下面的Simulation Settings,如图3所示。
图3 改变仿真设置
然后把仿真软件设置为ModelSim,如图4所示。
图4 改变仿真软件
在Vivado的仿真配置中,我们可以直接指定Vsim的选项,如图5所示。
图5 指定Vsim选项
然后就可以在Vivado设计流程管理器中在Simulation上点击右键,运行行为仿真了,如图6所示。
图6 运行行为仿真
很不幸的是,ModelSim启动之后遇到了错误,如图7所示。
图7 仿真错误(单击图片可放大)
这也许是两个软件的版本不太兼容造成的。为了在ModelSim里显示FSM,我们又必须使用-coverage –fsmdebug两个参数,那怎么办呢?目前可以采用的办法是,暂时不能在图5中启用相关的选项,重新运行行为仿真,此时在ModelSim启动完成并且不抱错。然后我们修改FSM1.do文件,或者直接在ModelSim的命令窗口里输入下面的命令(加黑字体为更改的部分):
vsim -L unisims_ver -L unimacro_ver -L secureip -L xil_defaultlib -lib xil_defaultlib -voptargs=\"+acc\" -t 1ps -coverage -fsmdebug xil_defaultlib.FSM1 xil_defaultlib.glbl
此时我们便可以查看FSM的状态转移图了,点击ModelSim菜单栏上的View---FSM List,然后在任务视图里点击FSM List,就能看到状态转移图了,如图8所示。
图8 FSM的状态转移图(单击图片可放大)
最后,感谢大家的支持
在Vivado中调用ModelSim生成FSM的状态转移图的更多相关文章
- Quartus 中调用modelsim的流程及*.vt或*.vht自动生成
一.自动生成验证程序testbench的方法,setting-EDA Tool->simylation->选择对应的语言(verilog对应*.vt,VHDL对应*.vht)process ...
- 示例 - 如何在NodeJS中调用SS生成的DLL
要想在NodeJS中调用SS生成的DLL, 需要借助EdgeJS. EdgeJS: http://tjanczuk.github.io/edge/ 如果你还不知道如何在SS中生成DLL, 请查看: S ...
- vivado中basic memory生成
vivado中basic memory生成
- 在java中调用mockjs生成模拟数据
一.手写版 在前端有个模拟数据的神器 Mock.js 能生成随机数据,拦截 Ajax 请求,然后我觉得他的这个生成随机数据不错.然后我就到度娘一顿操作,没找到类似的java实现,于是就有了下面的代码: ...
- 在C#中调用Java生成的jar包文件的方法
C#工程调用Java已生成的jar包步骤如下: 一.使用IKVM.NET组件 首先到IKVM官网(http://www.ikvm.net)下载组件,下载地址:https://sourceforge.n ...
- 如何在vivado中调用ultraedit 编辑器
ISE下点击菜单Edit -> Preferences -> Editor. 在Editor选项框里选择Custom,在Command line syntax文本框里输入: {C:/Pro ...
- QuartusII中调用Modelsim的方法
Modelsim的使用 1, 建立工程编译通过之后——证明实例工程无语法等简单错误.编写testbench 2, 将testbench 添加到工程中,进行编译通过.会在工程的file中看到test ...
- mysql自定义函数并在存储过程中调用,生成一千万条数据
mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...
- [原创][FPGA]Quartus中调用Modelsim波形仿真步骤说明
0. 简介 在使用QuartusII软件的过程中,经常地需要跑仿真,那么说到仿真就不得不说Modelsim这个仿真软件了,我们这里介绍下该软件在QuartusII中的使用方法. 1. 建立Quartu ...
随机推荐
- UVA_11468_Substring_(AC自动机+概率动态规划)
描述 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- 使用Chrome测试页面响应性
如今我们都知道 响应式 的意思.作为开发者,我们常常开发一些响应式的应用.有很多工具可以帮助我们完成这个目的.某些人甚至使用付费扩展.然而,我用了一个东西,它就是 Google Chrome 浏览器. ...
- Rose
<html> <head> <title>JS小尝试</title> <meta http-equiv="Content-Type&qu ...
- Entity Framework 杂碎
其实看图很简单,database first和model first都是通过 data model创建的edmx文件,只不过model first模块可以自己根据需要创建和修改实体,显得更加灵活. c ...
- S3C2440触摸屏驱动实例开发讲解
出处:http://www.embeddedlinux.org.cn/html/yingjianqudong/ 一.开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--6 ...
- linux驱动程序之电源管理 之linux休眠与唤醒(2)
在Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务:(2)调用注册的设备的suspend的回调函数:(3)按照注册顺序休眠核心设备和使CPU进入休眠态. 冻结进程是 ...
- mysql日志清理
mysql bin-log 日志清理 发现mysql数据库目录中bin-log中日志文件非常大 [root@localhost var]# du -sh mysql-bin* | sort 1020K ...
- poj1637--Sightseeing tour(最大流)
最大流求混合图是否存在欧拉回路. 以下内容摘自http://www.cnblogs.com/Missa/archive/2012/12/05/2803107.html 讲的很清楚. 混合图的欧拉回路问 ...
- leptonica 学习笔记1
Updated: April 26, 2015 Leptonica is a pedagogically-oriented open source site containing software t ...
- java异常处理一
为什么需要异常处理? 郝斌解释:因为有些异常不能间接的利用if else来处理,比如说输入的时候,将键盘输入的内容转换为数字,此事如果用户输入非数字就会出现异常,而在用户输入之前是无法用程序判断用户所 ...