我试图在Verilog中编写一个顶级模块,只要传感器读取的值低于某个数值就会打开水阀。Verilog错误:赋值左侧的对象必须具有可变数据类型
这里是我的代码:
module ProjectDSD(alteraClock, sensorInput, openValve);
input sensorInput, alteraClock;
output openValve;
always @(sensorInput)
begin
if(sensorInput < 100) //sensor value to irrigate at
begin
openValve <= 1; //here
end
else
begin
openValve <= 0; //here
end
end
endmodule
即时得到一个错误说:
Object "openValve" on left-hand side of assignment must have a variable data type
我缺少什么?另外,我可以在Altera DE2-155电路板上使用哪些引脚输出数字信号,只有1和0表示阀门打开/关闭?
根据任何IEEE1364或IEEE1800,这不是有效的语法。有些工具允许它,但这是一个不好的做法。我解释了另一个问题[这里](http://stackoverflow.com/a/33747519/1959732) – Greg
公平点,我的坏。我(几乎)总是写ANSI,所以我错过了OP没有。 – wilcroft
嗨格雷格 - 我找不到任何1364-2005这将使这个代码(或我的)无效。事实上,12.3.3明确允许它 - 注意“在模块的主体”和“输出reg”的生产。这种混淆可能是由于12.3.3底部的文本引起的,该文指出,如果decl不包含净或变量类型,则可以用净变量或变量decl再次声明它,并且p175上的示例显示这一点。 – EML