module CaseStatementExample (
input wire [1:0] sel,
output wire result
);
// case 语句
always @*
begin
case (sel)
2'b00: result = 1'b0;
2'b01: result = 1'b1;
2'b10: result = 1'b1;
2'b11: result = 1'b0;
default: result = 1'bx; // 默认情况
endcase
end
endmodule
在上面的例子中,case 语句根据输入信号 sel 的值执行相应的语句块。不同的输入值触发不同的分支。在这个例子中,如果 sel 的值为 2'b01,则执行 result = 1'b1;。
case 语句的语法类似于C语言中的 switch 语句,它可以更清晰地表示多路分支的逻辑。在 case 语句中,可以列举多个可能的输入值,每个值后面跟着对应的执行语句。默认情况下,如果输入的值不匹配任何已列举的情况,将执行 default 分支。
需要注意的是,case 语句也可以在不同的时序逻辑块中使用,例如在 always @(posedge clk) 中。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11029/Verilog