“附近的Verilog语法错误”<=&引用;在案例陈述中
在这段代码中:“附近的Verilog语法错误”<=&引用;在案例陈述中,verilog,Verilog,在这段代码中: reg [4:0] status_led = 5'b00100; case (status_led) default: begin if (rotation) begin status_led[4] <= status_led[3]; status_led[3] <= status_led[2];
reg [4:0] status_led = 5'b00100;
case (status_led)
default: begin
if (rotation) begin
status_led[4] <= status_led[3];
status_led[3] <= status_led[2];
status_led[2] <= status_led[1];
status_led[1] <= status_led[0];
status_led[0] <= status_led[4];
end else if (~rotation) begin
status_led[4] <= status_led[0];
status_led[3] <= status_led[4];
status_led[2] <= status_led[3];
status_led[1] <= status_led[2];
status_led[0] <= status_led[1];
end
end
endcase
reg[4:0]状态_led=5'b00100;
案例(状态指示灯)
默认值:开始
如果(旋转)开始
状态指示[4]您没有始终在内部定义案例,因此出现错误。这应该能解决你的问题。最好不要将组合块和顺序块混合在一起
reg [4:0] status_led = 5'b00100;
always@(posedge clk) begin
case (status_led)
default: begin
if (rotation) begin
status_led[4] <= status_led[3];
status_led[3] <= status_led[2];
status_led[2] <= status_led[1];
status_led[1] <= status_led[0];
status_led[0] <= status_led[4];
end else if (~rotation) begin
status_led[4] <= status_led[0];
status_led[3] <= status_led[4];
status_led[2] <= status_led[3];
status_led[1] <= status_led[2];
status_led[0] <= status_led[1];
end
end
endcase
end
reg[4:0]状态_led=5'b00100;
始终@(posedge clk)开始
案例(状态指示灯)
默认值:开始
如果(旋转)开始
状态指示灯[4]在显示的代码之前是什么?这是块的一部分还是函数的一部分?为什么要费心使用case
语句而只使用default
case?这段代码是独立的。最初我有其他的案例,但我改变了代码。我已经用高级代码替换了这段代码,但我很好奇,如果将来我需要编写类似的代码,为什么会出现上述错误?你不能在verilog中使用独立的case
。它必须包含在程序块内,例如“始终”。@Serge a案例
在始终
/初始
合法生成构造之外(在生成
-结束生成
之内是可选的)。对于此特定问题,案例
需要位于顺序始终
块内(例如始终@(posedge clk)
)