
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。
组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。
SystemVerilog有三种在可综合RTL级别表示组合逻辑的方法:连续赋值语句、always程序块和函数。接下来几篇文章将探讨每种编码风格,并推荐最佳实践编码风格。

时序逻辑描述了一种重要的门级电路,其中输出反映了一个由门的内部状态存储的值。只有特定的输入变化,如时钟沿,才会导致存储的变化。对于D触发器,时钟输入的特定边沿将改变触发器的存储,但D输入值的变化并不直接改变存储。相反,特定的时钟沿会使触发器的内部存储更新为时钟沿的D输入值。
时序逻辑的RTL模型需要反映这种门级行为,也就是说,逻辑块的输出必须在一个或多个时钟周期内存储一个值,并且只为特定的输入变化而更新存储的值,而不是所有输入变化。在RTL层面,一个always或always_ff过程被用来模拟这种时序行为。本系列文章主要研究:
触发器和寄存器被用来在一段时间内存储信息。术语触发器和寄存器经常被当作同义词使用,尽管它们在加载和复位的方式上可能存在差异。触发器是一种存储元件,在时钟沿上改变存储的状态。各种各样的硬件应用都可以由触发器构建,如计数器、数据寄存器、控制寄存器、移位寄存器和状态寄存器。寄存器可以由任何类型的数据存储设备构建,包括触发器、锁存器和RAM。大多数硬件寄存器是由触发器建立的。
时序逻辑触发器和寄存器的RTL模型是用一个带有灵敏度列表的always或always_ff过程建模的,该过程使用时钟边沿来触发过程的评估。一个RTL触发器的例子是:

一般来说,RTL模型被写成在时钟输入的正边沿触发触发器。所有的ASIC和FPGA器件都支持在时钟的上升沿(正边沿)触发的触发器。一些ASIC或FPGA器件还支持在时钟的下降沿触发的触发器。触发器和由触发器组成的寄存器可以是不可复位或可复位的。复位可以是同步的,也可以是与时钟触发不同步的。一些触发器也有一个异步复位输入。
在门级设计中,有几种类型的触发器,例如。SR, D,JK和T触发器。RTL模型可以从这个实现细节中抽象出来,并被写成通用的触发器。
在RTL建模中,重点是设计功能,而不是设计实现。综合编译器的作用是将抽象的RTL功能描述映射到具体的门级实现。大多数ASIC和FPGA器件使用D型触发器,所以本文假设综合编译器从RTL触发器中推断出的触发器类型。
当always程序的敏感度列表包含关键字posedge或negedge时,综合编译器将尝试推断出一个触发器。然而,综合编译器还要求满足以下额外的代码限制,以便推断出一个触发器。