Main Content

Combinatorial Logic

实现真值表

  • Combinatorial Logic block

库:
Simulink / Logic and Bit Operations

描述

Combinatorial Logic 模块实现一个标准真值表,用于建模可编程逻辑数组 (PLA)、逻辑电路、决策表和其他布尔表达式。您可以将此模块与 Memory 模块一起使用,以实现有限状态机或触发器。

示例

全部展开

此示例构建一个双输入 AND 函数,当两个输入元素都为 1 时返回 1,否则返回 0。要实现此函数,请将真值表参数值指定为 [0; 0; 0; 1]。为 Combinatorial Logic 模块提供输入和输出的模型部分可能如下所示:

下表显示生成每个输出的输入组合。标记为 Input 的输入信号对应于表中标注为 Input 1 的列。同样,输入信号 Input 2 对应于同名的列。这些值的组合确定作为模块输出传递的表的 Output 列的行。例如,如果输入向量为 [1 0],则输入引用第三行:

(2^1*1 + 1) 输出值为 0。

此示例电路有三个输入:要求和的两个位(ab)和一个进位输入位 (c)。它有两个输出:进位输出位 (c') 和求和位 (s)。

下表显示此电路的真值表和每种输入值组合的对应输出。

要使用 Combinatorial Logic 模块实现此加法器,您需要输入由列 c's 构成的 8×2 矩阵作为真值表参数。您还可以使用 Combinatorial Logic 模块实现时序电路(即带状态的电路),方法是对该模块的状态包含一个额外输入,并将该模块的输出馈送到此状态输入中。

端口

输入

全部展开

输入信号,指定为向量。Combinatorial Logic 模块接受的信号类型取决于您是否选择了“布尔逻辑信号”选项(请参阅Implement logic signals as Boolean data (vs. double))。如果启用了此选项,则模块接受 Booleandouble 类型的实信号。

数据类型: double | Boolean

输出

全部展开

输出信号,如果真值表中包含 double 类型的非布尔值,则类型为 double;否则类型为 Boolean。如果输入为 Boolean 且真值表包含非布尔值,则输出的类型与输入相同,除非模块输出 double

数据类型: double | Boolean

参数

全部展开

您指定一个矩阵,将所有可能的模块输出定义为真值表参数。此矩阵的每一行包含一个不同输入元素组合的输出。您必须为每个输入组合指定输出。列数等于模块输出数。

真值表参数可以具有任何数据类型的布尔值(0 或 1),包括定点数据类型。如果表中包含非布尔值,表的数据类型必须是 double

输入数与行数之间的关系为:

number of rows = 2(number of inputs)

Simulink® 通过计算来自输入向量元素的行索引,返回矩阵的一行。Simulink 通过生成一个二进制数字(具有零值的输入向量元素为 0,具有非零值的元素为 1),然后将结果加上 1 来计算索引。对于输入向量,m 元素的 u 为:

row index = 1 + u(m)*20 + u(m-1)*21 + ... + u(1)*2m-1

编程用法

模块参数TruthTable
类型:字符向量
:矩阵
默认值'[0 0;0 1;0 1;1 0;0 1;1 0;1 0;1 1]'

模块特性

数据类型

Boolean | double

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出