Documentation

Truth Table

Represent logical decision-making behavior with conditions, decisions, and actions

  • Library:
  • Stateflow

Description

The Truth Table block is a truth table function that uses MATLAB® as the action language. When you want to use truth table logic directly in a Simulink® model, use this block. This block requires Stateflow®.

When you add a Truth Table block directly to a model instead of calling truth table functions from a Stateflow chart, these advantages apply:

  • It is a more direct approach than creating a truth table within a Stateflow chart, especially if your model requires only a single truth table.

  • You can define truth table inputs and outputs with inherited types and sizes.

The Truth Table block works with a subset of the MATLAB language that is optimized for generating embeddable C code. This block generates content as MATLAB code. As a result, you can take advantage of other tools to debug your Truth Table block during simulation.

If you double-click the Truth Table block, the Truth Table Editor opens to display its conditions, actions, and decisions.

Using the Truth Table Editor, you can:

  • Enter and edit conditions, actions, and decisions.

  • Add or modify Stateflow data and ports by using the Ports and Data Manager.

  • Run diagnostics to detect parser errors.

  • View generated content after simulation.

For more information about the Truth Table Editor, see Truth Table Editor Operations.

Ports

Input

expand all

When you create input data in the Symbols window, Stateflow creates input ports. The input data that you create has a corresponding input port that appears once you create data.

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

Output

expand all

When you create output data in the Symbols window, Stateflow creates output ports. The output data that you create has a corresponding output port that appears once you create data.

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

Parameters

expand all

Parameters on the Code Generation tab require Simulink Coder™ or Embedded Coder®.

Main

Select how to display port lables on the Chart block icon.

none

Do not display port labels.

FromPortIcon

If the corresponding port icon displays a signal name, display the signal name on the Chart block. Otherwise, display the port block name.

FromPortBlockName

Display the name of the corresponding port block on the Chart block.

SignalName

If a signal name exists, display the name of the signal connected to the port on the Chart block. Otherwise, display the name of the corresponding port block.

Programmatic Use

Parameter: ShowPortLabels
Type: character vector
Value: 'FromPortIcon' | 'FromPortBlockName' | 'SignalName'
Default: 'FromPortIcon'

Control user access to the contents of the chart.

ReadWrite

Enable opening and modification of chart contents.

ReadOnly

Enable opening but not modification of the chart. If the chart resides in a block library, you can create and open links to the chart and can make and modify local copies of the chart but you cannot change the permissions or modify the contents of the original library instance.

NoReadOrWrite

Disable opening or modification of chart. If the chart resides in a library, you can create links to the chart in a model but you cannot open, modify, change permissions, or create local copies of the chart.

Programmatic Use

Parameter: Permissions
Type: character vector
Value: 'ReadWrite' | 'ReadOnly' | 'NoReadOrWrite'
Default: 'ReadWrite'

When determining the execution order of block methods, causes Simulink to treat the chart as a unit.

off

When determining block method execution order, treat all blocks in the chart as being at the same level in the model hierarchy as the chart. This hierarchy treatment can cause the execution of methods of blocks in the chart to be interleaved with the execution of methods of blocks outside the chart.

on

When determining the execution order of block methods, treat the chart as a unit. For example, when Simulink needs to compute the output of the chart, Simulink invokes the output methods of all the blocks in the chart before invoking the output methods of other blocks at the same level as the chart block.

Dependency

If you select this parameter, you enable the Minimize algebraic loop occurrences, Sample time, and Function packaging parameters. Function packaging requires the Simulink Coder software.

Programmatic Use

Parameter: TreatAsAtomicUnit
Type: character vector
Value: 'off' | 'on'
Default: 'off'

See also

Try to eliminate any artificial algebraic loops that include the atomic subchart

See also Eliminate Artificial Algebraic Loops Caused by Atomic Subsystems (Simulink).

off

Do not try to eliminate any artificial algebraic loops that include the atomic subchart.

on

Try to eliminate any artificial algebraic loops that include the atomic subchart.

Dependency

To enable this parameter, select the Treat as atomic unit parameter.

Programmatic Use

Parameter: MinAlgLoopOccurrences
Type: character vector
Value: 'off' | 'on'
Default: 'off'

Specify whether all blocks in this chart must run at the same rate or can run at different rates.

  • If the blocks in the chart can run at different rates, specify the chart sample time as inherited (-1).

  • If all blocks must run at the same rate, specify the sample time corresponding to this rate as the value of the Sample time parameter.

  • If any of the blocks in the chart specify a different sample time (other than -1 or inf), Simulink displays an error message when you update or simulate the model. For example, suppose all the blocks in the chart must run 5 times a second. To ensure this time, specify the sample time of the chart as 0.2. In this example, if any of the blocks in the chart specify a sample time other than 0.2, -1, or inf, Simulink displays an error when you update or simulate the model.

-1

Specify inherited sample time. If the blocks in the chart can run at different rates, use this sample time.

[Ts 0]

Specify periodic sample time.

Dependency

To enable this parameter, select the Treat as atomic unit parameter.

Programmatic Use

Parameter: SystemSampleTime
Type: character vector
Value: '-1' | '[Ts 0]'
Default: '-1'

When propagating variant conditions from Variant Source blocks or to Variant Sink blocks, causes Simulink to treat the chart as a unit.

on

Simulink treats the chart as a unit when propagating variant conditions from Variant Source blocks or to Variant Sink blocks. For example, when Simulink computes the variant condition of the chart, it propagates that condition to all the blocks in the chart.

off

Simulink treats all blocks in the chart as being at the same level in the model hierarchy as the chart itself when determining their variant condition.

Programmatic Use

Parameter: TreatAsGroupedWhenPropagatingVariantConditions
Type: character vector
Value: 'on' | 'off'
Default: 'on'

Code Generation

Select the generated code format for an atomic (nonvirtual) subchart.

Auto

Simulink Coder chooses the optimal format for your system based on the type and number of instances of the chart that exist in the model.

Inline

Simulink Coder inlines the chart unconditionally.

Nonreusable function

Simulink Coder explicitly generates a separate function in a separate file. Charts with this setting generate functions that might have arguments depending on the Function interface (Simulink) parameter setting. You can name the generated function and file using parameters Function name (Simulink) and File name (no extension) (Simulink). These functions are not reentrant.

Reusable function

Simulink Coder generates a function with arguments that allows reuse of chart code when a model includes multiple instances of the chart.

This option generates a function with arguments that allows chart code to be reused in the generated code of a model reference hierarchy that includes multiple instances of a chart across referenced models. In this case, the chart must be in a library.

Tips

  • When you want multiple instances of a chart represented as one reusable function, you can designate each one of them as Auto or as Reusable function. It is best to use one because using both creates two reusable functions, one for each designation. The outcomes of these choices differ only when reuse is not possible. Selecting Auto does not allow for control of the function or file name for the chart code.

  • The Reusable function and Auto options both try to determine if multiple instances of a chart exist and if the code can be reused. The difference between the options' behavior is that when reuse is not possible. In this case, Auto yields inlined code, or if circumstances prohibit inlining, separate functions for each chart instance.

  • If you select the Reusable function while your generated code is under source control, set File name options to Use chart name, Use function name, or User specified. Otherwise, the names of your code files change whenever you modify your model, which prevents source control on your files.

Dependency

  • This parameter requires Simulink Coder.

  • To enable this parameter, select Treat as atomic unit.

  • Setting this parameter to Nonreusable function or Reusable function enables the following parameters:

    • Function name options

    • File name options

    • Memory section for initialize/terminate functions (requires Embedded Coder® and an ERT-based system target file)

    • Memory section for execution functions (requires Embedded Coder and an ERT-based system target file)

  • Setting this parameter to Nonreusable function enables Function with separate data (requires a license for Embedded Coder and an ERT-based system target file).

Programmatic Use

Parameter: RTWSystemCode
Type: character vector
Value: 'Auto' | 'Inline' | 'Nonreusable function' | 'Reusable function'
Default: 'Auto'

Block Characteristics

Data Types

double[a] | single[a] | Boolean[a] | base integer[a] | fixed point[a] | enumerated[a] | bus[a]

Multidimensional Signals

Yes[a]

Variable-Size Signals

Yes[a]

[a] 

Actual data type or capability support depends on block implementation.

Introduced before R2006a

Was this topic helpful?