module ExampleModule(
input wire [1:0] sel,
output reg result
);
always @(sel) begin
// case 语句
case (sel)
2'b00: result = 1'b0;
2'b01: result = 1'b1;
2'b10: result = 1'b0;
2'b11: result = 1'b1;
default: result = 1'bx; // 默认情况
endcase
end
endmodule
在这个例子中,sel 是一个两位的输入信号,根据其值选择相应的操作。每个分支后面的冒号指定了模式,然后是要执行的代码块。如果 sel 的值不匹配任何分支,将执行 default 分支。
还可以使用 casez 或 casex 来匹配未知或不确定的模式,其中 z 表示高阻态,x 表示无法确定的值。例如:
module ExampleModule(
input wire [1:0] sel,
output reg result
);
always @(sel) begin
// casez 语句
casez (sel)
2'b0?: result = 1'b0; // 匹配任何以 0 开头的模式
2'b1?: result = 1'b1; // 匹配任何以 1 开头的模式
default: result = 1'bx; // 默认情况
endcase
end
endmodule
在这个例子中,casez 语句用于匹配任何以 0 或 1 开头的模式。
case 语句提供了一种清晰和灵活的方式来实现多路分支逻辑。
转载请注明出处:http://www.zyzy.cn/article/detail/15099/Verilog