关于如何always在Verilog模块中编写块,我有一个简单的问题.
如果我的Verilog模块中有以下输入:
input [31:0] PCplus4 ; // Value of PC + 4
input [31:0] A; // Value A, i.e. RSbus (Use Forwarded Value)
input [31:0] B; // Value B, i.e. RTbus (Use Forwarded Value)
input [31:0] IMM; // Extended Immediate Value
input [25:0] TARGET; // Target Address for Jumps
input [3:0] BR; // Branch Selector Input
Run Code Online (Sandbox Code Playgroud)
如果我使用,有什么不同
always @ (*)
Run Code Online (Sandbox Code Playgroud)
代替
always @ (PCplus4 or A or B or IMM or TARGET or BR)
Run Code Online (Sandbox Code Playgroud)
这种always @ (*) 语法对所有版本的Verilog都有效吗?
too*_*lic 11
该always @(*)语法被添加到IEEE的Verilog标准在2001年的所有现代的Verilog工具(仿真器,合成等)都支持此语法.
以下是LRM(1800-2009)的引用:
事件控件的不完整event_expression列表是寄存器传输级(RTL)模拟中的常见错误源.隐式event_expression,@*是一种方便的简写,它通过将procedure_timing_control_statement的语句(可以是语句组)读取的所有网络和变量添加到event_expression来消除这些问题.
因此,您的两行代码可能是等效的(它取决于always块体内的代码).但是,@*语法更容易维护.