簡體   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