0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SaberRD状态机建模工具介绍(一)什么是状态机建模

冬至子 来源:Saber仿真 作者:Greatalent 2023-12-05 09:51 次阅读

1、什么是状态机建模

状态机建模是使用状态图和方程式的手段,创建基于混合信号的有限状态机模型的一种建模工具。

状态图具有强大的视觉特征,在设计的早期阶段,使用状态图能够将复杂的系统行为抽象为更高层次的模型,而状态机建模工具具有将基于行为状态模型与系统关联起来的独特功能。

状态机建模工具可以生成基于MAST、VHDL-AMSVerilog-A语言的仿真模型。使用状态机建模工具不需要系统的训练,不需要懂专业的建模语言语法,上手非常容易。

状态机建模工具主要应用于:电源控制管理或电路控制、离散时间控制、事件控制等场合。

2、状态机建模工具介绍

图片

打开SaberRD,在Model标签栏下单击状态机建模按钮,进入建模界面。

图片

如上图所示,状态机建模界面可分为三部分:拓扑编辑区,变量编辑区和状态图编辑区。

l 拓扑编辑区:定义模型接口及接口属性;

l 变量编辑区:定义与模型相关的变量

l 状态图编辑区:定义模型内部各个变量之间的逻辑关系及使用公式对变量进行行为描述

2.1. 拓扑编辑区

进行状态机建模首先需要定义状态机拓扑,包括定义状态机的接口,及接口属性。

接口有三种类型:分支型,输入型,输出型。当定义的接口为输入或输出端口时,对应在右侧变量区域会有相同名称的变量生成;当接口定义为分支型接口时,该接口包含through和across型变量。

图片

2.1.1. 分支型终端

分支型终端可以使得系统内部各元素之间进行能量的交换,遵循能量守恒定律。能量的端口类型包括:电,磁,机械,热。每一种分支型端口包含一对跨接(across)和(导通)through型变量,如电类型端口包含电压和电流两种信息。电压大小代表潜在驱动能力,而导通型变量电流表示流量的大小。分支型终端可以是差分形式或者是单端形式。

下图是几种分支型终端的类型定义。

图片

2.1.2. 输入/输出端口定义

输入端口和输出端口功能类似,下文表述以输入端口为例,对于输出端口同样适用。

输入端口不包含能量守恒信息,用于多算法控制或者逻辑控制,变量类型分别对应Continuous和State,如下图所示。Continuous变量是连续变量,用于基于时间的算法控制,State是状态变量,用于基于事件驱动的控制。

图片

输入输出端口的单位有多种类型,如下图所示。对于控制类的,多使用无单位的。

图片

输入输出端口定义好后,对应的在右侧变量区会出现相同名称的变量,如下图所示:

图片

2.2. 变量编辑

定义好接口拓扑后,下一步就是定义模型中需要用到的变量。包括静态变量,连续型continuous和状态型state变量。同时还可以定义数组,和函数。

图片

2.2.1. 静态变量 Static

静态变量是指在整个瞬态仿真过程中,变量参数不变。定义静态变量时,需要注意区分是模型参数还是内部参数。如下图所示。

图片

模型参数就相当于定义模型的外部参数,变量值在模型初始化时可以参量化设置。

而内部参数多是通过一个表达式由其他模型参数计算而来。

例如定义了一个模型变量a,再定义一个内部参数静态变量b,b=a*100,定义式如下图所示:

图片

2.2.2. 连续型变量

连续型变量用在基于连续时间状态的仿真应用中。一般使用等式进行赋值。状态机变量中包括的类型有4种:

n 分支型连续变量(包含一对跨接(across)和(导通)through型变量)

n 输入型连续变量(控制型输入变量)

n 内部连续变量

n 输出连续变量(控制型输出变量)

2.2.3. 状态型变量

状态型变量用于基于事件驱动的离散时间仿真应用中。状态型变量一般在state exit,state entry,initial actions时进行赋值。

2.3. 状态机状态图编辑

状态机状态图编辑包含:States、Transitions、Blocks、Clocks

图片

2.3.1. States

states本质上说是一个布尔型变量,它的状态可以是激活和非激活状态。

Ø AnalogEquation:连续型变量的赋值或state变量赋值

可以赋值基于连续变量的公式continuous variable equation如:a=b+c等价于b+c;a=b*cos(a);b+c

可以赋值state equation

Ø Initial/Enty/Exit :state型变量赋值,只能给内部或输出state variables赋值。Initial在做DC分析时使用,Entry:状态激活时赋值;Exit:状态退出时赋值内容。

图片

赋值形式variable = expression。

允许使用if-else语句。例子:

图片

Processes 进程

进程概念允许并发激活状态。单个进程是一组不能同时激活的独占状态,但是处于不同进程的状态可以同时激活。如下图所示是一个2个进程状态机。共有状态3*4=12个状态。

图片

2.3.2. Transitions

定义状态之间切换的条件及过程。条件是一个布尔型结果或变量

l Transition condition:>, <, <=, >=, &, |, ==, =, !=, timeout, active, event_on (note that == and = are equivalent)

n timeout function定义一个关于时间的公式,超过这个时间,就会触发状态变化。timeout(1)&&(a>b) becomes true whenever "a" becomes greater than "b" after one second has elapsed since state entry

n active function:使用states的名称作为参数,用于进程之间的跳变

n event_on function:state变量作为参数,event_on(clk)&&(clk==’1’)

l Transition action:(after any state or block exit actions and before any state or block entry actions),规则同entry actions。

图片

2.3.3. Blocks

允许多个states共享transition和actions

Block有Entry Action和Exit Action属性。设计规则与state 中的Action是一样的。如下,Block状态切换发生在从S1的Exit Action之后,S2的Enter Action之前。

图片

2.3.4. Clocks

Clock允许某些动作周期性的发生,但是与state是否激活无关。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • VHDL语言
    +关注

    关注

    1

    文章

    113

    浏览量

    17981
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27465
  • 逻辑控制
    +关注

    关注

    0

    文章

    39

    浏览量

    12344
  • 静态变量
    +关注

    关注

    0

    文章

    13

    浏览量

    6640
收藏 人收藏

    评论

    相关推荐

    SaberRD状态机建模工具介绍(二)状态机建模工具使用示例

    假设电阻阻值为r_normal,首先打开状态机建模工具,添加电阻端口,电阻端口包含贯通变量电流和跨接变量电压,使用分支型端口。
    的头像 发表于 12-05 09:53 921次阅读
    <b class='flag-5'>SaberRD</b><b class='flag-5'>状态机</b><b class='flag-5'>建模</b><b class='flag-5'>工具</b><b class='flag-5'>介绍</b>(二)<b class='flag-5'>状态机</b><b class='flag-5'>建模</b><b class='flag-5'>工具</b>使用示例

    Verilog状态机+设计实例

    在verilog中状态机种很常用的逻辑结构,学习和理解状态机的运行规律能够帮助我们更好地书写代码,同时作为种思想方法,在别的代码设计中也会有所帮助。
    的头像 发表于 02-12 19:07 3743次阅读
    Verilog<b class='flag-5'>状态机</b>+设计实例

    玩转Spring状态机

    说起Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring状态机就是状态模式的
    的头像 发表于 06-25 14:21 870次阅读
    玩转Spring<b class='flag-5'>状态机</b>

    状态机举例

    状态机举例 你可以指定状态寄存器和状态机状态。以下是个有四种状态的普通
    发表于 03-28 15:18 972次阅读

    状态机代码生成工具

    状态机代码生成工具状态机代码生成工具状态机代码生成工具状态机
    发表于 11-19 15:12 9次下载

    状态机原理及用法

    状态机原理及用法状态机原理及用法状态机原理及用法
    发表于 03-15 15:25 0次下载

    有限状态机建模与优化设计

    本文提出种优秀 、高效的 Verilog HDL 描述方式来进行有限状态机设计 介绍了 有限状态机建模原则 并通过
    发表于 03-22 15:19 1次下载

    简述使用QII状态机向导如何创建状态机

    如何使用QII状态机向导创建状态机
    的头像 发表于 06-20 00:11 4193次阅读
    简述使用QII<b class='flag-5'>状态机</b>向导如何创建<b class='flag-5'>一</b>个<b class='flag-5'>状态机</b>

    状态机概述 如何理解状态机

    本篇文章包括状态机的基本概述以及通过简单的实例理解状态机
    的头像 发表于 01-02 18:03 1w次阅读
    <b class='flag-5'>状态机</b>概述  如何理解<b class='flag-5'>状态机</b>

    FPGA:状态机简述

    本文目录 前言 状态机简介 状态机分类 Mealy 型状态机 Moore 型状态机 状态机描述
    的头像 发表于 11-05 17:58 7288次阅读
    FPGA:<b class='flag-5'>状态机</b>简述

    什么是状态机状态机5要素

    玩单片还可以,各个外设也都会驱动,但是如果让你完整的写套代码时,却无逻辑与框架可言。这说明编程还处于比较低的水平,你需要学会种好的编程框架或者种编程思想!比如模块化编程、
    的头像 发表于 07-27 11:23 2w次阅读
    什么是<b class='flag-5'>状态机</b>?<b class='flag-5'>状态机</b>5要素

    状态模式(状态机)

    以前写状态机,比较常用的方式是用 if-else 或 switch-case,高级的点是函数指针列表。最近,看了文章《c语言设计模式–状态模式(
    发表于 12-16 16:53 9次下载
    <b class='flag-5'>状态</b>模式(<b class='flag-5'>状态机</b>)

    自动生成程序状态机代码状态机建模方法

    首先运行fsme命令来启动状态机编辑器,然后单击工具栏上的“New”按钮来创建个新的状态机。FSME中用于构建状态机的基本元素
    的头像 发表于 09-13 16:50 1064次阅读
    自动生成程序<b class='flag-5'>状态机</b>代码<b class='flag-5'>状态机</b><b class='flag-5'>建模</b>方法

    如何生成状态机框架

    生成状态机框架 使用FSME不仅能够进行可视化的状态机建模,更重要的是它还可以根据得到的模型自动生成用C++或者Python实现的状态机框架。首先在FSME界面左边的树形列表中选择"R
    的头像 发表于 09-13 16:54 933次阅读
    如何生成<b class='flag-5'>状态机</b>框架

    什么是状态机状态机的种类与实现

    状态机,又称有限状态机(Finite State Machine,FSM)或米利状态机(Mealy Machine),是种描述系统状态变化
    的头像 发表于 10-19 10:27 8911次阅读