为什么case语句不执行到count=2? case(count) 1'b00:begin tx_data <= data[2'd0]; flag <= 1'b1; count <= 1'b01; end 1'b01:begin tx_data <= data[2'd1]; flag <= 1'b1; count <= 1'b10; end 1'b10:begin//不做这个? tx_data <= data[2'd2]; flag <= 1'b1; count <= 1'b00; led <= 1'b0; end 1'b11:begin tx_data <= 8'b00000000; flag <= 1'b0; count <= 1'b00; end endcase
时间: 2024-02-06 13:09:09 浏览: 58
PM9A1 256G-2T最新固件(解决掉速,包含00B00)
因为在 `1'b10` 分支里面,`count` 被赋值为 `1'b00`,所以在 `endcase` 后会回到 `1'b00` 分支,而不会进入 `1'b10` 分支。如果你想要执行完 `1'b10` 分支后结束 `case`,可以添加一个 `default` 分支,如下所示:
```
case(count)
1'b00:begin
tx_data <= data[2'd0];
flag <= 1'b1;
count <= 1'b01;
end
1'b01:begin
tx_data <= data[2'd1];
flag <= 1'b1;
count <= 1'b10;
end
1'b10:begin
tx_data <= data[2'd2];
flag <= 1'b1;
led <= 1'b0;
end
1'b11:begin
tx_data <= 8'b00000000;
flag <= 1'b0;
count <= 1'b00;
end
default:begin
count <= 1'b00;
end
endcase
```
这样,当 `count` 的值不是 `1'b00`、`1'b01`、`1'b10`、`1'b11` 时,就会执行 `default` 分支,将 `count` 赋值为 `1'b00`,从而结束 `case` 结构。
阅读全文