Verilog D 锁存器

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

触发器在其时钟的负沿或正沿捕获输入端的数据。重要的是,从时钟沿之后到下一个时钟沿之间数据发生的任何变化都不会反映在输出中。

锁存器 不在时钟沿捕获;相反,只要它被断言,输出就会跟随输入。

D 锁存器用于存储一位数据。 D 锁存器本质上是门控 SR 锁存器的修改版本。

下图显示了 Verilog 中 D 锁存器的参数。输入 D 是要存储的数据。输入 G 用于控制存储。输出 Q 和 Qn 分别是存储的数据和存储数据的补码。

Verilog D Latch

示例

在这个例子中,我们有一个带有三个输入和一个输出的锁存器。输入 d 代表数据,可以是 0 或 1, rstn 代表低电平有效复位,而 en 代表使能,用于使输入数据锁存到输出。

Verilog D Latch

低电平有效复位意味着当此输入变为 0 时,设计元素将被复位,或者当其值为低电平时复位有效。输出 q 的值由输入 d、enrstn 决定。

注意:always 块的敏感列表包含更新输出所需的所有信号。

每当敏感列表中的任何信号改变其值时,此块将被触发。此外,只有当 en 为高电平时, q 才会获得 d 的值,因此它是一个 锁存器。

硬件原理图

Verilog D Latch

测试平台

为了使我们的测试平台以更随机的方式断言和取消断言信号,我们声明了一个大小为 3 位的 reg 变量,称为 delay ,以便它可以取从 0 到 7 的任何值。然后, delay 变量用于延迟 den 的分配,以便在每个循环中获得不同的模式。

上面的代码产生以下输出,例如

ncsim> run
[0] en=0 d=0 q=0
[11] en=1 d=0 q=0
[18] en=0 d=0 q=0
[19] en=0 d=1 q=0
[20] en=1 d=1 q=1
[25] en=1 d=0 q=0
[27] en=0 d=0 q=0
[32] en=0 d=1 q=0
[33] en=1 d=1 q=1
[34] en=1 d=0 q=0
ncsim: *W,RNQUIE: Simulation is complete.