我正在尝试在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的数字信号,以便阀门打开/关闭?
答案 0 :(得分:1)
s / output openValve / output reg openValve /
输出默认为public class Setting<T> where T: struct
{
public string Name { get; set; }
public T Value { get; set; }
}
public class SettingsDto<T> where T: struct
{
public List<Setting<T>> Settings { get; set; }
}
;你需要一个wire
。另请参阅this问题。
答案 1 :(得分:1)
openValve
目前被推断为wire
。在reg openValve;
下面添加output openValve;
,您的代码就可以使用。
建议:看起来您遵循IEEE1364-1995非ANSI编码样式。仍然合法,您可能希望更改为IEEE编码样式,IEEE1364-2001及更高版本支持。
非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)
。 @*
是IEEE1364-2001中添加的自动灵敏度列表
答案 2 :(得分:0)
尝试output reg openValve;
。
对于你的问题的后半部分(这应该是一个单独的问题)import this QSF file进入你的项目。任何GPIO都可以配置为输出,并且可以通过侧面的40针接头访问。