我在这里和Verilog一样新...我想问一下这个程序中=和<=之间的区别?以及如何打印数据的价值?
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
Run Code Online (Sandbox Code Playgroud)
小智 11
=是阻止声明.在一个always块中,代码行将仅在其前一行执行后执行.因此,它们一个接一个地发生,就像循环中的组合逻辑一样.
<=本质上是非阻塞的.这意味着在一个always块中,每一行都将并行执行.因此导致顺序元素的实现.
too*_*lic 10
<=是非阻塞分配.它用于描述顺序逻辑,就像在代码示例中一样.请参阅IEEE Std 1800-2012,第10.4.2节"非阻塞程序分配".
=用于阻止分配.它用于描述组合逻辑.
您可以使用$display而不是$print打印变量的值.另请参见IEEE Std 1800-2012,第21.2节"显示系统任务".