每个 Case 语句定义两件事
Defining Two Things per Case Statement
我正在使用 case
语句来确定要打开的七段 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 个一样建模第一个 case
,则 case
在选择器之间切换但不会改变 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
看起来您 唯一没有 尝试的是使用 block statement,这正是您需要的:
case(sel_state)
2'b00: begin
selector = 3'b000;
BCD = BCD1;
end
2'b01: begin
selector = 3'b100;
BCD = BCD2;
end
: :
endcase
我正在使用 case
语句来确定要打开的七段 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 个一样建模第一个 case
,则 case
在选择器之间切换但不会改变 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
看起来您 唯一没有 尝试的是使用 block statement,这正是您需要的:
case(sel_state)
2'b00: begin
selector = 3'b000;
BCD = BCD1;
end
2'b01: begin
selector = 3'b100;
BCD = BCD2;
end
: :
endcase