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

拜拜、爱过 提交于 2019-12-12 02:23:52

问题


I'm trying to write a top-level module in Verilog that will open a water valve whenever a sensor reads values below a certain number.

Here is my code:

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

Im getting an error saying:

Object "openValve" on left-hand side of assignment must have a variable data type

What am I missing? Also, which pins can I use on an Altera DE2-155 board to output a digital signal of only 1's and 0's for the the valve to open/close?


回答1:


s/output openValve/output reg openValve/

Outputs default to wire; you need a reg. See also this question.




回答2:


openValve is currently inferred as a wire. Add reg openValve; below output openValve; and your code will work.


Suggestions: It looks like you are following the IEEE1364-1995 non-ANSI coding style. Will still legal, you might want to change to the ANSI coding style, supported in IEEE1364-2001 and above.

Non-ANSI:

module ProjectDSD(alteraClock, sensorInput, openValve);

input sensorInput, alteraClock;
output openValve;
reg openValve;

ANSI:

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

For combinational blocks, it is recommended to use always @* (or the synonymous always @(*)) instead of always @(sensorInput). @* is an auto sensitivity list also added in IEEE1364-2001




回答3:


Try output reg openValve;.

For the second half of your question (which should really be a separate question) import this QSF file into your project. Any of the GPIO can be configured as outputs, and are accessible by the 40-pin header on the side.



来源:https://stackoverflow.com/questions/34028900/verilog-error-object-on-left-hand-side-of-assignment-must-have-a-variable-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!