gpt4 book ai didi

system-verilog - always_ff、always_comb、always_latch 和always 之间的区别

转载 作者:行者123 更新时间:2023-12-03 12:46:31 33 4
gpt4 key购买 nike

我完全混淆了这 4 个术语:always_ff , always_comb , always_latchalways .如何以及出于什么目的使用这些?

最佳答案

always 是来自 Verilog 的主要进程类型,另一个是 initial在模拟开始时运行一次。

always_ff @(posedge clk) :
代表一个触发器(ff),该过程在时钟的每个上升沿被触发(执行)。这取代了 always @(posedge clk) .这是唯一应该使用非阻塞 ( <= ) 赋值的类型,因为这模仿了触发器传输数据的方式。

always_ff @(posedge clk) begin
a <= b;
end

always_latch : 用于表示闩锁。

用法是:
always_latch begin
if (enable) begin
a_latch = something;
end
//No else clause so a_latch's value
//is not always defined, so it holds its value
end

这取代了:
always @* begin
if (enable) begin
a_latch = something;
end
//No else clause so a_latch's value
//is not always defined, so it holds its value
end

always_comb :
用于组合逻辑,是 always @*的替代品当您不想要闩锁时。现在我们可以区分我们想要和不想要锁存器的设计意图。

SystemVerilog 名称 always_ff , always_latchalways_comb对触发时间有更严格的标准,这意味着 RTL 到门级(综合后)不匹配的机会减少了。这确实意味着不是 100% 等价于那里 always @反部分,可能会改变一些模拟行为。

关于system-verilog - always_ff、always_comb、always_latch 和always 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23101717/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com