门级建模

2025年3月17日 | 阅读 7 分钟

在 Verilog 中,大多数数字设计都是在 RTL 这样的较高抽象级别上完成的。 但是,通过使用 这样的组合元素,在较低级别构建较小的确定性电路是很自然的。

在此级别完成的建模称为门级建模,因为它涉及 并且在硬件示意图和 Verilog 代码之间存在一一对应的关系。

Verilog 支持一些基本的逻辑门,称为 原语,因为它们可以像模块一样被实例化,并且它们是已经预定义的。

门级建模实际上是最低的抽象级别,因为很少使用开关级抽象。 门级建模用于在设计中实现最低级别的模块,例如 多路复用器、全加器 等。 Verilog 具有所有基本门的门原语。

Verilog 支持内置的原语门建模。 支持的门是 多输入、多输出、三态下拉门

多输入门是 与、与非、或、或非、异或异或非,它们的输入数量为两个或更多,并且只有一个输出。

多输出门是 bufnot,它们的输出是一个或多个,并且只有一个输入。

该语言还支持对三态门进行建模,包括 bufif0、bufif1、notif0notif1。 这些门有一个输入、一个控制信号和一个输出。

下拉门是 pulluppulldown,只有一个输出。

语法

以下是每种类型的零延迟门的基本语法,例如

人们也可以在一个构造中拥有同一类型门的多个实例,并用逗号分隔

当电路是一个简单的组合电路(例如 多路复用器)时,门级建模非常有用。 多路复用器是一个简单的电路,它将多个输入之一连接到一个输出。

门原语

门原语是 Verilog 中预定义的模块,可以直接使用。 门原语分为两类

  1. 单输入门原语
  2. 多输入门原语

1. 单输入门原语

单输入门原语具有单个输入和一个或多个输出。 门原语是 not、buf、notifbufif,它们也有一个控制信号。

只有在断言控制信号时,这些门才会传播,否则输出为高阻抗状态。

1.1 Not, buf 门

这些门只有一个标量输入,但可能有多个输出。

buf 代表缓冲器,并将值从输入传输到输出,而不会改变极性。

not 代表反相器,它反转输入信号的极性。 因此,输入端的 0 将产生 1,反之亦然。

语法

示例

1.2 Bufif, Notif 门

Bufif 和 notif 原语分别是缓冲器和反相器,具有额外的控制信号以启用输出,可以通过 bufif 和 notif 原语获得。

只有在启用控制信号时,这些门才具有有效的输出,否则输出将处于高阻抗状态。

这些有两个版本,一个具有由 1 指示的控制的正常极性,例如 bufif1 和 notif1。 另一个具有由 0 指示的控制的倒置极性,例如 bufif0 和 notif0。

语法

示例

2. 多输入门原语

多输入门原语包括 AND、OR、XOR、NAND、NORXNOR。 它们可以有多个输入和一个输出。

2.1 AND、OR、XOR 门

与、或和异或门需要多个标量输入并产生单个标量输出。

这些原语的参数列表中的第一个端子是输出,它会随着任何输入的变化而改变。

语法

示例

1.2 NAND、NOR、XNOR 门

所有上述门的逆是 NAND、NOR 和 XNOR。 上面的相同设计被重用,只是原语与其逆版本互换。

语法

示例

所有这些门也可能具有两个以上的输入。

多路复用器的门级建模

下图显示了 4x1 多路复用器的门级电路图。 它用于编写 4x1 多路复用器的模块。

Gate Level Modeling

全加器的门级建模

这是使用半加器实现全加器的方法。

1. 半加器

Gate Level Modeling

2. 全加器

Gate Level Modeling

下一个主题开关级建模