首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 使用ModelSim自动生成状态机FSM的状态转换图
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
使用ModelSim自动生成状态机FSM的状态转换图
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-9-11 10:48
|
只看该作者
使用ModelSim自动生成状态机FSM的状态转换图
HDL代码设计中重要的内容之一就是设计程序的状态机FSM,状态转换控制着整个程序的流程,为了理解程序,我们经常需要把状态机的状态转换图画出来,这样看起来很直观,但是,有没有办法自动生成状态转换图呢?
在ISE或者ModelSim中有没有这样的工具呢?
答案是肯定的,ModelSim中即有这样的工具,下面以ISE13.4和ModelSim6.5为例,使用一段最简单的状态机代码说明如何操作来自动生成状态转换图。
代码如下:
module Top_fsm(
input clk,
input rst,
output reg fsm_out
);
parameter IDLE = 3'd0, S1 = 3'd1, S2 = 3'd2, S3 = 3'd3, S4 = 3'd4, S5 = 3'd5;
reg [2:0] status;
always @ (posedge clk)
if(!rst)begin
status <= IDLE;
end
else begin
case(status)
IDLE:begin
fsm_out <= 1'b0;
status <= S1;
end
S1:begin
fsm_out <= 1'b1;
status <= S2;
end
S2:begin
fsm_out <= 1'b0;
status <= S3;
end
S3:begin
fsm_out <= 1'b1;
status <= S4;
end
S4:begin
fsm_out <= 1'b0;
status <= S5;
end
S5:begin
fsm_out <= 1'b1;
status <= IDLE;
end
default:begin
fsm_out <= 1'b0;
end
endcase
end
endmodule
我们在ISE中直接切换到ModelSim仿真模式,如图所示:
双击Simulate Behavioral Model,将打开ModelSim。
在ModelSim中执行View---FSM list命令,如下图所示:
然后就会发现ModelSim左边这部分的标签多了一项,如下面两幅图的对比:
未执行命令前是这样子的:
执行完命令是这样子的:
这时候在FSM List标签下,可以看到如下内容,双击之:
于是出现了下面的状态转换图:
这时观察生成的状态转换图发现,所有的状态都在复位的情况下返回了状态IDLE,这是我们不期望的,仔细观察这时的菜单栏可以发现,有一个FSM View项:
将Show Transitions to "Reset"项前面的对勾去掉,就会发现不显示复位情况下返回状态IDLE了,如下图所示:
细心的人会发现状态到了S5并未返回IDLE,但在前面的状态转换图中的确有Cond2:1这种状态转到状态IDLE,这估计是软件所导致的吧。
简单的应用就这些,深一些的功能自己好好探索吧。
最后说一下这种自动生成的状态转换图的缺点:因为它默认生成的状态转换图一定是一个圆,所以当你的状态比较复杂时,并非是一个简单的切换时,生成的状态转换图也就会很乱很乱,可读性直接下降,不知道是可以可调节或者有什么更好的生成工具?
来源:
彬彬有礼的专栏
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议