错误(10278):TrafficLight上的Verilog HDL端口声明错误。v(5):输入端口;";不能用类型“声明”&书信电报;变量数据类型,例如reg>&引用;
verilog错误当我尝试实现一个具有六种状态的交通灯系统时,我想在ALTERA DE2板的led显示屏上显示红、绿、黄灯 代码如下错误(10278):TrafficLight上的Verilog HDL端口声明错误。v(5):输入端口;";不能用类型“声明”&书信电报;变量数据类型,例如reg>&引用;,verilog,Verilog,verilog错误当我尝试实现一个具有六种状态的交通灯系统时,我想在ALTERA DE2板的led显示屏上显示红、绿、黄灯 代码如下 module TrafficLight(clk, t, out); input clk, t; output out; localparam s0=3'b000, s1=3'b001, s2=3'b010, s3=3'b011, s4=3'b100, s5=3'b101; reg[2:0] state, next_state, t;
module TrafficLight(clk, t, out);
input clk, t;
output out;
localparam s0=3'b000, s1=3'b001, s2=3'b010, s3=3'b011, s4=3'b100, s5=3'b101;
reg[2:0] state, next_state, t;
always@(posedge clk)
begin
state = next_state;
t = t - 1;
end
always@(t or state)
begin
case(state)
3'b000:
if(t < 5)
next_state = s0;
else
begin
next_state = s1;
assign out [5:0] = 6'b100001;
end
3'b001:
if(t < 1)
next_state = s1;
else
begin
next_state = s2;
assign out [5:0] = 6'b010001;
end
3'b010:
if(t < 1)
next_state = s2;
else
begin
next_state = s3;
assign out [5:0] = 6'b001001;
end
3'b011:
if(t < 5)
next_state = s3;
else
begin
next_state = s4;
assign out [5:0] = 6'b001100;
end
3'b100:
if(t < 1)
next_state = s4;
else
begin
next_state = s5;
assign out [5:0] = 6'b001010;
end
3'b101:
if(t < 1)
next_state = s0;
else
begin
next_state = s5;
assign out [5:0] = 6'b001001;
end
endcase
end
endmodule
模块交通灯(clk、t、out);
输入时钟,t;
输出;
局部参数s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101;
reg[2:0]状态,下一个_状态,t;
始终@(posedge clk)
开始
状态=下一个状态;
t=t-1;
终止
始终@(t或状态)
开始
案件(州)
3'b000:
if(t<5)
下一个_状态=s0;
其他的
开始
下一个_状态=s1;
分配出[5:0]=6'b100001;
终止
3'b001:
if(t<1)
下一个_状态=s1;
其他的
开始
下一个_状态=s2;
分配出[5:0]=6'b010001;
终止
3'b010:
if(t<1)
下一个_状态=s2;
其他的
开始
下一个状态=s3;
分配出[5:0]=6'b001001;
终止
3'b011:
if(t<5)
下一个状态=s3;
其他的
开始
下一个_状态=s4;
分配出[5:0]=6'b001100;
终止
3'b100:
if(t<1)
下一个_状态=s4;
其他的
开始
下一状态=s5;
分配出[5:0]=6'b001010;
终止
3'b101:
if(t<1)
下一个_状态=s0;
其他的
开始
下一状态=s5;
分配出[5:0]=6'b001001;
终止
尾声
终止
端模
这段代码有什么问题,有人能修复吗?在Verilog中,输入不能是
reg
,错误消息是这样说的。不要通过更改此行将t
声明为reg
:
reg[2:0] state, next_state, t;
为此:
reg[2:0] state, next_state;
我已经在问题中指出了代码中的各种问题。无论如何,如果
t
是一个输入,那么您可以找到一个更新的版本,然后您就不能分配它了<编码>输出输出代码>应输出寄存器[5:0]输出我们甚至不能驱动输入值-t=t-1代码>同样,不需要在程序块中使用赋值
-赋值[5:0]=6'b001001代码>@RahulBehl事实上,不应该在过程块中使用assign语句。这是合法的,但(a)意味着一些奇怪的东西,(b)是不赞成的。是的,你是对的。虽然如果我们在程序块中执行连续赋值,VCS 2014.10会报告编译时错误。因此,它们现在可能不合法。