主要内容

介绍StateflowHDL代码生成

Stateflow®图表提供简洁的描述复杂系统行为通过使用分层有限状态机(FSM)理论,流程图符号,和状态转换关系图。

你用一个图表模型有限状态机或一个复杂的控制算法用于ASIC或FPGA实现。当模型满足设计要求,然后生成硬件描述语言(HDL代码®或Verilog®实现设计模型中体现)。你可以模拟和综合生成的HDL代码通过使用行业标准工具,然后系统设计映射到fpga和asic。为更多的信息关于如何生成有限状态机的HDL代码,看看为粉和摩尔有限状态机生成高密度脂蛋白

代的硬件描述语言(VHDL)或Verilog代码从一个模型包含一个图表不从HDL代码生成从其他模型有很大的不同。HDL代码生成器的设计:

  • 金宝app支持的最大可能的子集图表语义与HDL代码一致。这意味着您可以广泛的子集生成HDL代码从现有的模型没有重大改造。

  • 生成bit-true cycle-accurate HDL代码完全兼容Stateflow仿真语义。

例子

使用hdlcodercfir模型,这个例子展示了如何为一个子系统生成HDL代码,包括Stateflow图表。

打开模型,在命令行输入:

hdlcodercfir

表初始化

使(输入)表初始化执行财产执行后立即更新图表功能表初始化。你可以保持图表属性(输入)表初始化执行禁用。这个属性可以显著改变Stateflow图表行为和生成的HDL代码。执行初始化的一个图表(Stateflow)Stateflow描述该属性的影响图表

你不能在初始化操作,因为复位操作不能执行算术处理组合逻辑的延迟。

您可以选择或清除初始化输出每次图表醒来。如果你清楚的话,生成的HDL代码包含一个额外的注册状态机输出值。

可调参数

您可以使用一个可调参数Stateflow图表用于HDL代码生成。

有关更多信息,请参见为可调参数生成DUT港口

注释Stateflow图表

当你的仿真软件金宝app®模型包含一个Stateflow图表使用注释,高密度脂蛋白编码器™生成HDL代码中的注释。

当你从模型中生成Verilog代码,高密度脂蛋白编码器显示Stateflow中的注释图表内联在相应Stateflow对象。

限制

高密度脂蛋白编码器不支持Statefl金宝appow块包含了HDL代码生成的消息。

在模型中图表的位置

图表用于HDL代码生成必须仿真软件子系统的一部分。金宝app如果你想要的图生成代码的根级别模型,嵌入一个子系统中的图表。相关的信号连接到子系统的输入和输出。

数据类型

代码生成器支持MATLAB的子集金宝app®图表中数据类型包括:

  • 签署和无符号整数

  • 不动点

  • 布尔

  • 枚举

请注意

除了数据类型分配给港口、多维数组支持这些类型。金宝app端口必须标量或矢量数据类型。

如果你使用单引号和双数据类型,在高密度脂蛋白HDL编码器生成真实的数据类型的代码。你可以模拟和验证的代码通过使用第三方ModelSim等模拟器®

真正的类型不是synthesizable目标FPGA上的设备。代码生成器不支持代Stateflow HDL代码金宝app图表本机浮点模式。生成synthesizable HDL代码使用浮点数据类型时,开发一个算法通过使用MATLAB函数块或其他金宝app使用本机支持浮点模型块金宝app

进口代码

一个图表用于HDL代码生成必须是完全独立的。这些限制适用:

  • 不调用MATLAB函数除了最小值马克斯

  • 不要使用MATLAB系统中的对象图表块。

  • 不要使用MATLAB工作区数据。

  • 不调用C数学函数。高密度脂蛋白没有对应C数学库。

  • 如果使c位操作房地产是禁用的,不使用求幂运算符(^)。求幂运算符是用C实现的数学库函数战俘

  • 不包括自定义代码。信息输入模拟目标>自定义代码面板配置参数对话框将被忽略。

  • 不共享数据(通过数据存储内存块)之间的图表。高密度脂蛋白编码器没有这样的全局数据映射到高密度脂蛋白HDL因为不支持全局数据。金宝app

矢量的可调参数

向量数据类型的可调参数图表不支持模块。金宝app

输入和输出活动

高密度脂蛋白编码器支金宝app持使用输入和输出事件与Stateflow图表,受到这些约束:

  • 您可以定义并使用每个Stateflow图只有一个输入事件。没有限制数量的输出,您可以使用事件。

  • 编码器不支持HDL代码生成的图表有一个金宝app输入事件,而且也有非零初始值图的输出端口。

  • 所有输入和输出事件必须边沿触发。

输入和输出事件的详细信息,请参阅激活Stateflow图表发送输入事件(Stateflow)激活一个模型块通过发送金宝app输出事件(Stateflow)

消息

不支持Stateflow消息HDL代码生成。金宝app

循环

除了循环,没有明确在图表中使用循环用于HDL代码生成。观察下面的限制循环:

  • 的数据类型必须循环计数器变量int32

  • 高密度脂蛋白编码器只金宝app支持constant-bounded循环。

循环的例子,sf_for,显示了设计模式循环使用的图形功能。

额外的限制

高密度脂蛋白编码器强加额外限制使用经典的图表功能。这些限制存在,因为高密度脂蛋白不支持通用顺序编程语言的一些特点。金宝app

  • 不定义本地事件HDL代码生成的图表。

    不要使用这些隐含的事件:

    • 输入

    • 退出

    • 改变

    您可以使用这些隐含的事件:

    • 唤醒

    • 蜱虫

    如果基础事件仅限于这些类型的隐式事件,您可以使用时序逻辑。

  • 通过图形不使用递归函数。高密度脂蛋白编码器不支持递归。金宝app

  • 避免非结构化代码。虽然图表允许非结构化代码通过过渡流图和图形功能,这使用的结果转到语句和多个函数返回语句。高密度脂蛋白不支持金宝app转到语句或多个函数返回语句。因此,不要使用非结构化流程图。

  • 如果你没有选择了初始化输出每次图表醒来图选项,不读取输出端口。

  • 不要使用数据存储内存对象。

  • 不使用指针(&)或间接(*)操作符。看到指针和地址操作(Stateflow)

  • 如果一个图在仿真运行时溢出的错误,可以禁用数据范围错误检查和生成图表的HDL代码。在这种情况下,一些来自HDL代码生成的结果可能不是bit-true从仿真结果。推荐的做法是使溢出检查和消除溢出模型在模拟条件。

另请参阅

(Stateflow)|(Stateflow)|(Stateflow)

相关的例子

更多关于