【问题标题】:What is the difference between = and <= in Verilog?Verilog中=和<=有什么区别?
【发布时间】:2016-02-16 14:40:40
【问题描述】:

这段代码中=&lt;= 有什么区别?另外,如何打印data的值?

    module always_example();
reg clk,reset,enable,q_in,data;

always @ (posedge clk)
if (reset)  begin
   data <= 0;
end else if (enable) begin   
   data <= q_in;
end
// if i put     $print("data=%d", data);   there is error
endmodule

【问题讨论】:

标签: verilog


【解决方案1】:

= 是阻塞语句。在always 块中,该行代码仅在其前一行执行后才会执行。因此,它们一个接一个地发生,就像循环中的组合逻辑一样。

always 块中,每一行都将并行执行。因此导致了顺序元素的实现。

【讨论】:

  • “每一行都将并行执行。因此导致执行顺序元素”。你能解释一下吗,我更困惑。顺序组件不应该串行执行吗?
【解决方案2】:

= 用于阻止分配。用于描述组合逻辑。

另见Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill!

您可以使用$display 而不是$print 来打印变量的值。另请参见 IEEE Std 1800-2012,第 21.2 节“显示系统任务”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多