Verilog 每个Case语句定义两件事
我正在使用Verilog 每个Case语句定义两件事,verilog,Verilog,我正在使用case语句来确定要打开的七个seg LED数字。我还试图使用相同的case语句来确定该数字上显示的实际数字。我的坏代码: always @(*) begin case(sel_state) 2'b00: selector = 3'b000; //1st digit BCD = BCD1; 2'b01: selector = 3'b100; //2nd digit 2
case
语句来确定要打开的七个seg LED数字。我还试图使用相同的case
语句来确定该数字上显示的实际数字。我的坏代码:
always @(*)
begin
case(sel_state)
2'b00: selector = 3'b000; //1st digit
BCD = BCD1;
2'b01: selector = 3'b100; //2nd digit
2'b01: BCD = BCD2;
2'b10: selector = 3'b110; //3rd digit
2'b10: BCD = BCD3;
2'b11: selector = 3'b001; //4th digit
2'b11: BCD = BCD4;
default: selector = 3'b000;
endcase
end
正如你所看到的,我对不同的语法进行了修改,但它似乎不喜欢我尝试过的任何东西。如果我像其他3个一样建模了第一个
案例
,那么案例
会在选择器之间切换,但不会改变BCD等于什么。如果我切换顺序,BCD会更改,但选择器不会更改。有人知道这样做的正确方法吗?使用begin
-end
always @* begin
case(sel_state)
2'b00: begin //1st digit
selector = 3'b000;
BCD = BCD1;
end
2'b01: begin //2nd digit
selector = 3'b100;
BCD = BCD2;
end
// ... others ...
endcase
end
使用
开始
-结束
always @* begin
case(sel_state)
2'b00: begin //1st digit
selector = 3'b000;
BCD = BCD1;
end
2'b01: begin //2nd digit
selector = 3'b100;
BCD = BCD2;
end
// ... others ...
endcase
end
看起来您唯一没有尝试过的就是使用,这正是您需要的:
case(sel_state)
2'b00: begin
selector = 3'b000;
BCD = BCD1;
end
2'b01: begin
selector = 3'b100;
BCD = BCD2;
end
: :
endcase
看起来您唯一没有尝试过的就是使用,这正是您需要的:
case(sel_state)
2'b00: begin
selector = 3'b000;
BCD = BCD1;
end
2'b01: begin
selector = 3'b100;
BCD = BCD2;
end
: :
endcase