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

    浏览量

    17802
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27165
  • 逻辑控制
    +关注

    关注

    0

    文章

    37

    浏览量

    12300
  • 静态变量
    +关注

    关注

    0

    文章

    13

    浏览量

    6606
收藏 人收藏

    评论

    相关推荐

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

    假设电阻阻值为r_normal,首先打开状态机建模工具,添加电阻端口,电阻端口包含贯通变量电流和跨接变量电压,使用分支型端口。
    的头像 发表于 12-05 09:53 408次阅读
    <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>使用示例

    状态机编程

    等待段时间后,光标的位置就会右移,表示对最后输入字符的确认。因此,按键输入接口设计和实现的核心,更多的体现在软件接口处理程序的设计中。下面将以此为例,介绍有限状态机的分析设计原理,以及基于
    发表于 07-10 18:00

    如何写好状态机

    篇经典文献,详细讲解了段、两段、三段式状态机的实现,效率、优缺点。看完后相信会对状态机个详细的了解。
    发表于 10-24 11:43

    QM UML状态机建模实例之Blinky for cortex-m0

    USB,LED灯简单介绍完QP和QpNano后,下面才是我要重点推荐使用QP框架的原因。QP框架允许完全手工编程和使用自动生成代码工具QM。QM(QP™ Modeler)建模是基于QP框架和层次式
    发表于 08-15 20:17

    如何在SystemVerilog中为状态机的命令序列的生成建模

     我们将展示如何在SystemVerilog中为状态机的命令序列的生成建模,并且我们将看到它是如何实现更高效的建模,以及实现更好的测试生成。​
    发表于 01-01 06:05

    状态机是什么?什么是消息触发类型的状态机

    状态机可归纳为哪几个要素?状态机可分为哪几种?什么是消息触发类型的状态机
    发表于 04-19 06:02

    什么是状态机状态机是如何编程的?

    什么是状态机状态机是如何编程的?
    发表于 10-20 07:43

    什么是状态机

    . 什么是状态机我们以生活中的小区的停车系统为例:停车杆般没车的是不动的(初态),有车来的时候需要抬杆(状态1),车通过需要放杆(状态2
    发表于 01-06 08:01

    什么是状态机

    目录1 前言2 状态机2.1 什么是状态机2.2 状态机的概念2.3 使用状态机写键盘的思路3 代码实例3.1 使用软件3.2 protues电路图3.2
    发表于 01-24 06:23

    状态机代码生成工具

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

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

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

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

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

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

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

    如何生成状态机框架

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

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

    状态机,又称有限状态机(Finite State Machine,FSM)或米利状态机(Mealy Machine),是一种描述系统状态变化的模型。在芯片设计中,
    的头像 发表于 10-19 10:27 4993次阅读