在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 ...
随机推荐
- Eclipse中输入系统变量和运行参数
在开发时,有时候可能需要根据不同的环境设置不同的系统参数,我们都知道,在使用java -jar命令时可以使用-D参数来设置运行时的系统变量,同样,在Eclipse中运行java程序时,我们怎么设置该系 ...
- bzoj2282
到路径的距离就是到路径上的点最近的距离首先看到最大值最小不难想到二分答案下面的问题就是怎么判断,显然我们是不能穷举路径的我们要找出消防路径的性质仔细研究就会发现消防路径一定是树的直径的一段,这样必然最 ...
- 《C#并行编程高级教程》第6章 PLINQ:声明式数据并行 笔记
PLINQ这个话题好多书都写到过,这本也没有什么特别好的地方. 几个有用和有趣的点记录一下. 顺序的不确定性 用PLINQ就一定要记住并行后会导致顺序不确定的问题.解决方案就是AsOrdered或 ...
- 【转】下载太慢?简单设置让iTunes提速十几倍
原文网址:http://www.startos.com/mac/ipad/tips/2010120713291.html 今年可以说是苹果欢笑的一年,ipad的发布,iphone4的成功,让用苹果设备 ...
- [039] 微信公众帐号开发教程第15篇-自定义菜单的view类型(访问网页)
引言及内容概要 距离写上一篇文章<自定义菜单的创建及菜单事件响应>整整过了两个月的时间,那时公众平台还没有开放view类型的菜单.在不久前,微信公众平台悄悄开放了view类型的菜单,却没有 ...
- 基于WebForm+EasyUI的业务管理系统形成之旅 -- 数据统计(Ⅳ)
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页快捷方式>,主要介绍通过添加首页快捷方式,快速进入各个应用菜单功能. 将常用的菜单功能作为快捷方式,避免由于寻找诸多 ...
- oracle 临时表学习
临时表概念 临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别.它只能存储在临时表空间,而非用户的表空间.ORACLE临时表是会话或事务级别的,只对 ...
- wuzhicms发送邮件
//邮件发送 $config = get_cache('sendmail'); $siteconfigs = get_cache('siteconfigs'); $password = decode( ...
- Windows Azure 的虚拟硬盘和文件的相关概念
虚拟硬盘和文件 在 Windows Azure 外部,虚拟硬盘可使用 VHD 或 VHDX 格式.它们还可以是固定的.动态扩展或差异的.Windows Azure 支持 VHD 格式的固定磁盘.固定格 ...
- Storm系列(十三)架构分析之Worker-维护ZMQ连接
Worker根据Topology的定义及分配到自身的任务情况,计算出发出的消息被那些Task接收,由于Worker上分配的任务可能被调整,因此Worker需要定时的更新这些连接信息. ZMQ连接信息更 ...