精华内容
下载资源
问答
  • 状态转移图如下: Verilog HDL语言描述 测试文件 仿真图 ISE综合 RTL Schematic Technology Schematic 前言 关于工具的使用,这两天我比较重视,因为我想找到一些替代手工的工具来帮助画图,昨天无意间发现...

    目录

    前言

    空调控制器

    简介

    状态转移图如下:

    Verilog HDL语言描述

    测试文件

    仿真图

    ISE综合

    RTL Schematic

    Technology Schematic


    前言

    关于工具的使用,这两天我比较重视,因为我想找到一些替代手工的工具来帮助画图,昨天无意间发现了画时序图的工具(WaveDrom),觉得十分的好用,因此写了一篇博文,专门的介绍,用了两个案例介绍了如何使用。见博文:对如何使用WaveDrom画波形图的研究(案例分解分析)

    今天想专门清理下有限状态机的相关知识,这其中就需要画状态转移图,于是又寻思寻找一个画状态转移图的工具,我知道的有Visio,可是我不想用这个软件,找了好几个,最终选择了Edraw(亿图),还挺方便,简单实用。

    于是就用这个案例,一个简单的空调控制器来认识一下有限状态机,工作原理直接由状态转移图给出,状态转移图直接由Edraw来画出 。这个空调控制器由Verilog HDL来描述,通过Modelsim进行功能仿真,然后用ISE来综合出RTL Schematic以及Technology Schematic。

    用亿图画状态转移图

    首先直接给出成品:

     

    感觉还算美观哈。

    软件的界面还算美观,直观:

    画状态转移图时,选择流程图中的数据流程图,然后点击创建即可,里面的东西一用就会。

    空调控制器

    简介

    下面用Verilog HDL语言描述一个简单的空调控制系统。整个系统由时钟控制,是一个带有异步复位的上升沿触发系统,该控制系统控制空调的三个状态,分别为:well_situated(10)、too_high(00)、too_low(01)。

    当空调处于某种状态时,通过输入不同的high和low值控制空调的状态转移,在每种状态下对应不同的输出cold和heat值。

    状态转移图如下:

    Verilog HDL语言描述

    //a simple aircondition control system descripted by Verilog HDL
    module aircondition(clk,rst,high,low,heat,cold);
    
    input clk,rst,high,low;
    output heat,cold;
    reg heat,cold;
    
    reg [1:0] pr_state,next_state;
    
    parameter too_high = 2'b00;
    parameter too_low = 2'b01;
    parameter well_situated = 2'b10;
    
    always@ (posedge clk or posedge rst)
    begin
    	if(rst)
    		pr_state <= well_situated;
    	else
    		pr_state <= next_state;
    
    end
    
    always@ (pr_state or high or low) //空调的下一个状态取决于当且状态以及high或low的取值
    begin
    	next_state = 2'bxx;
    	cold = 1'b0; heat = 1'b0;
    	case(pr_state)            //空调的下一个状态取决于当且状态以及high或low的取值
    		well_situated:  //如果当且状态为well_situated
    		begin
    			cold = 1'b0; heat = 1'b0;
    			if(high == 1'b1)
    			begin
    				next_state = too_high;
    				cold = 1'b1; 
    				heat = 1'b0;
    			end
    			if(low == 1'b1)
    			begin
    				next_state = too_low;
    				cold = 1'b0;
    				heat =1'b1;
    			end
    		end
    		
    		too_high:         //如果当且状态为too_high
    		begin
    			cold = 1'b1; 
    			heat = 1'b0;
    			if(high == 1'b1)
    			begin
    				next_state = too_high;
    				cold = 1'b1;
    				heat = 1'b0;
    			end
    			else
    			begin
    				next_state = well_situated;
    				cold = 1'b0;
    				heat = 1'b0;
    			end
    		end
    		
    		too_low:                //如果当前状态为too_low
    		begin
    			cold = 1'b0;
    			heat = 1'b1;
    			if(low == 1'b1)
    			begin
    				next_state = too_low;
    				cold = 1'b0;
    				heat = 1'b1;
    			end
    			else
    			begin
    				next_state = well_situated;
    				cold = 1'b0;
    				heat = 1'b0;
    			end
    		
    		end
    		
    		default:
    		next_state = well_situated;
    	
    	
    	endcase
    end
    
    endmodule
    

    测试文件

    // 测试文件
    `timescale 1ns/1ps
    module aircondition_tb;
    
    reg clk, rst;
    reg [1:0] pr_state, next_state;  
    reg high,low;
    wire cold,heat;
    
    //时钟
    always
    begin
    	#10 clk = ~clk;
    end
    
    initial
    begin
    	clk = 1'b0;
    	rst = 1'b1;  //复位信号有效,系统复位,当前状态为well_situated90(00),heat=0,cold=0
    	#50 high = 1'b1; low = 1'b0;  //此时处于复位状态,但high = 1, low = 0;
    	#10 rst = 1'b0;     //复位信号无效
    	#50 high = 1'b0; low = 1'b0; 
    	#200 high = 1'b1; low = 1'b0; 
    	#200 high = 1'b0; low = 1'b1; 
    	#200 high = 1'b0; low = 1'b1; 
    
    end
    
    aircondition u1(.clk(clk), .rst(rst), .high(high), .low(low), .heat(heat), .cold(cold));
    
    endmodule
                

    仿真图

    认真分析下这个仿真波形图,会发现符合状态转移结果,设计成功。

    ISE综合

    RTL Schematic

    展开后

    Technology Schematic

    情绪有点不好,就这样吧,心里有点难受。

     

    展开全文
  • 基于状态机进行程序设计的第一步是要设计状态机的状态设计,然后基于设计的状态画状态转移图,所谓状态转移图就是用于描述说明状态机中各个状态之间的转移条件以及操作。下面使用状态机设计一个之前常用的通信协议,...

            上一节定义了状态机的概念,状态机由两个重要的部分组成,一个是状态转移关系,另一个就是驱动源。状态转移关系可以由状态转移图定义,下面会说到。驱动源则是驱动状态机运行的动力源。我总结了两种最常用的状态机驱动源第一个是时间驱动,第二个是事件驱动。时间驱动源就是第一节中描述的,状态机使用100Hz的定时器中断作为状态机的驱动源,每发生一次定时器中断执行一次状态转移。事件驱动源就是使用事件来驱动状态机,说白了就是每次事件发生的时候执行一次状态转移而不是使用一个固定的时间中断来执行状态转移。下面就介绍一种以事件为驱动源的状态机实例。

            基于状态机进行程序设计的第一步是要设计状态机的状态设计,然后基于设计的状态画状态转移图,所谓状态转移图就是用于描述说明状态机中各个状态之间的转移条件以及操作。下面使用状态机设计一个之前常用的通信协议,之前大量使用标志位的技巧,虽然也能实现给定的通信协议,但是稳定性、可移植性和可维护性较差,这里使用状态机的方式重写这个通信协议。

            首先介绍一下这个通信协议,T作为帧起始字符,Q作为帧结束字符,\作为转义字符,这个是参考网络协议栈中的好像是PPP协议做的。下面是协议的状态转移图:


    这个协议一共只有三个状态,默认处于状态0,且数据就绪标志位为假表示数据未就绪,当收到帧起始字符T的时候进入状态1,在状态1中收到非T、Q、\的字节则将该字节输入到输入缓冲区并自增接收计数。在状态1下如果收到帧结束字符时进入状态0并且置位数据就绪标志位为真表示数据就绪。在状态1下如果收到转义字符\,则进入到状态2。具体的状态转移方式在状态转移图上有详细说明。

            下面是使用C语言实现的协议程序:

    u8 WifiBuff[20];
    u8 WifiBuffLen;
    bool IsDataReady = false;
    void InputData(u8 data)
    {
    	static int state = 0;
    	static int count = 0;
    	if(state == 0)
    	{
    		if(IsDataReady == false)
    		{
    			if(data == 'T')
    			{
    				state = 1;
    				count = 0;
    			}
    		}
    	}
    	else if(state == 1)
    	{
    		if(data == '\\')
    		{
    			state = 2;
    		}
    		else if(data == 'Q')
    		{
    			state = 0;
    			IsDataReady = true;
    			WifiBuffLen = count;
    			printf("data ready:%d\r\n",count);
    		}
    		else
    		{
    			WifiBuff[count++] = data;
    		}
    	}
    	else if(state == 2)
    	{
    		state = 1;
    		WifiBuff[count++] = data;
    	}
    }
    


    展开全文
  • 分享一种绘制FPGA状态转移图的工具:一款用于绘制状态机转换图和流程图的web在线绘图工具 绘制状态转移图非常方便!!!!!!

     

    分享一种绘制FPGA状态转移图的工具:一款用于绘制状态机转换图和流程图的web在线绘图工具

    绘制状态转移图非常方便!!!!!!

    展开全文
  • 状态转移图定义如下: 它们之间进行转化的形式化描述如下: 上面的程序图转换成状态转移图如下: 代码戳这里:https://github.com/KiroScarlet/ModelChecking 参考书籍:Principles of Model Checking ...

    程序图定义如下:

    在这里插入图片描述
    例如这样的两个程序:
    在这里插入图片描述
    画成程序图就是这样的:
    在这里插入图片描述
    它们之间可以并行操作,并行之后的程序图是这样的:
    在这里插入图片描述

    而状态转移图定义如下:

    在这里插入图片描述
    它们之间进行转化的形式化描述如下:
    在这里插入图片描述
    上面的程序图转换成状态转移图如下:
    在这里插入图片描述

    代码戳这里:https://github.com/KiroScarlet/ModelChecking

    参考书籍:Principles of Model Checking

    展开全文
  • mediaPlayer状态转移图

    千次阅读 2016-07-14 10:16:33
  • 序列检测器:状态转移图+Morrer状态机(三段式)+Modelsim仿真 目录     -1、绘制状态转移图         -1.1、在Sublime 中用Graphviz绘制状态转移图         -1.2、在...
  • 状态转移图的绘制,遍历性判断,平稳分布求解
  • 如何UML状态状态

    万次阅读 2018-05-08 00:09:42
    为什么要画状态?状态机,能够对一个对象在它整个生命周期中所经历的状态进行建模。相较于流程通过活动的先后顺序来展示流程(常人的线性思维方式);状态机从某个事物的状态变化角度来展示流程(面向对象...
  • 如何用Visio2013画状态转换

    万次阅读 2016-05-29 20:24:01
    今天突然需要用Visio画状态转换了……首先声明,用简单图形来画不难,必应可以搜到那种方法,这里不赘述。下面我说说我的办法,首先,状态转换需要圆角矩形、实心圆、同心圆、箭头。经过一番寻找,在更多图形中...
  • 如果对Jackson概念有什么疑问,可以看一下我另外一篇博客(*/ω\*) 以下为把Jackson转换为流程例题+画状态描述
  • 针对学生的课程Course的状态。 二、实验工具 Rational Rose 三、实验步骤 1、选择对象。 针对学生的课程Course的状态。 2、列出对象的状态。 课程的状态有:开始、初始状态、关闭状态、取消状态、...
  • 南大自考流程详解 自考-计算机应用专业 2020系统结构系列 以某年真题为例,也是书上的例题,书上那两个例题都很重要,一定要看的 1、写出预约表的延迟禁止表和冲突向量C 2、如何出流水线状态转移图? 首先我们要...
  • 这是一个UML的状态图画法 ![图片说明](https://img-ask.csdn.net/upload/201911/23/1574502749_76127.png) 请问谁知道具体怎么的吗,求具体步骤,因为我是一直只能到上面的箭头,下面的转移箭头怎么...
  • TCP三路握手的状态转移和socket函数调用关系时序
  • 马尔科夫状态转移模型 Markov Model

    千次阅读 2019-09-03 13:00:52
    马尔科夫状态转移模型 Markov Model 版权声明:本文为CSDN博主「-柚子皮-」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:...
  • //获得在根状态下的按键触发状态转移映射,和该转移动作的句柄指针 QAbstractTransition *trans = rootState->addTransition(ellipseButton, SIGNAL(pressed()), ellipseState); //讲该动作赋予前面一定定义好...
  • ![图片说明](https://img-ask.csdn.net/upload/201905/14/1557838357_643281.png)
  • Markdown是我最喜欢的写作格式,现在我的博客、笔记等都是用markdown格式写的,基础的文字编辑相关的语法用的已经很...之前在markdown文件中加入图片内容,我一般都是用其他画图软件好之后,通过markdown插入图片.
  • 转移概率矩阵(又叫跃迁矩阵,英文名:transition matrix)是俄国数学家马尔科夫提出的,他在20世纪初发现:一个...状态转移是指客观事物由一种状态转移到另一种状态的概率。例如对应于一个天气预报的问题,若天气状态
  • UML-状态图

    2014-04-05 02:12:12
    v面向对象方法在进行系统分析时,与传统方法的需求分析一样,有时应分析对象的状态,画出状态,才能正确地认识对象...v并不是所有的类都需要画状态图,有明确意义的状态,在不同状态下行为有所不同的类才需要画状态图
  • 状态迁移

    千次阅读 2020-03-21 13:54:46
    —— 状态迁移 深度优先画法 找一个功能名/状态名作为入口 根据业务矩阵从第一列开始竖着,把可达项并列存放在入口的下一行 可达项,从左边第一个功能起,其他都注掉 一个功能只一次,再出现就注掉,...
  • Trie树本身就是一个很迷人的数据结构,何况是其改进的...在本博客中我会从DAT(Double-Array Tire)的原理开始,并结合其源代码对DAT的状态转移过程进行解析。如果因此你能从我的博客中有所收获或启发,It's my pleasure.
  • 数据流程 状态图 流程

    万次阅读 多人点赞 2018-04-23 14:43:38
    数据流程 状态图 流程 数据流程 数据流程(DFD)提供了通过系统的数据流的图形表示。它逻辑上显示了我们的系统进程和外部接口或数据存储交换了哪些信息,但是它没有明确显示信息交换的时间或顺序。 ...
  • 行为建模(状态图-活动)

    千次阅读 2020-05-19 11:40:09
    行为建模--状态图状态机(State Machine)状态(State)转移状态的建模技术用户绘制用例机新增运动员报名修改运动员报名管理员什么是活动活动的用途活动的组成元素活动的建模技术 采用方法:面向对象...
  • UML活动状态图

    万次阅读 多人点赞 2018-10-13 13:55:27
    本文主要介绍状态图和活动。 一.状态图  状态(state)是指在对象的生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。所有对象都具有状态状态是对象执行了一系列活动的...
  • 画状态转移图的时候,我开始犹豫了,我怕我会没考虑全,甚至有点晕。 人家又问: 针对这个具体设计如何衡量验证的完备性? 这是什么鬼? 题目: 用Moore型状态机实现序列“1101”从右到左的不重叠检测。 1、请...
  • 词法分析(一):状态转换

    万次阅读 2019-07-20 15:30:07
    状态转换 状态转换是一张有限有向 结点表示状态,结点用圆圈表示 状态之间存在有向弧,弧上标记有字符或字符集, 表示某一状态接受箭弧上的字符/字符集输入后到达另一状态 一张状态转换中的状态个数是有限...
  • UML学习之三 状态图

    千次阅读 热门讨论 2012-11-27 17:30:13
    状态(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。一般可以用状态机对一个对象的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,700
精华内容 11,880
关键字:

如何画状态转移图