繁体   English   中英

Verilog错误:分配左侧的对象必须具有可变数据类型

[英]Verilog Error: Object on left-hand side of assignment must have a variable data type

我正在尝试在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

我收到一个错误消息:

分配左侧的对象“ openValve”必须具有可变数据类型

我想念什么? 另外,我可以在Altera DE2-155板上使用哪些引脚来输出仅1和0的数字信号以打开或关闭阀门?

s / output openValve /输出reg openValve /

输出默认为wire ; 您需要reg 另请参阅问题。

目前将openValve推断为wire 添加reg openValve; 下面output openValve; 这样您的代码就会起作用。


建议:您似乎正在遵循IEEE1364-1995非ANSI编码样式。 仍然合法,您可能想要更改为IEEE1364-2001及更高版本支持的ANSI编码样式。

非ANSI:

module ProjectDSD(alteraClock, sensorInput, openValve);

input sensorInput, alteraClock;
output openValve;
reg openValve;

ANSI:

module ProjectDSD(
  input alteraClock, sensorInput,
  output reg openValve);

对于组合块,建议always @*使用always @* (或同义的always @(sensorInput) always @(*) )而不是always @(sensorInput) @*是自动灵敏度列表,也在IEEE1364-2001中添加

尝试output reg openValve;

对于问题的后半部分(应该是一个单独的问题), 将这个QSF文件导入到您的项目中。 任何GPIO都可以配置为输出,并且可以通过侧面的40针接头进行访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM