Priority encoder with casez
// synthesis verilog_input_version verilog_2001
/*
解释:
4'bzzz1:这个掩码表示 in[3:1] 可以是任何值,只要 in[0] 为 1。输出 pos 为 0。
4'bzz1z:这个掩码表示 in[3] 和 in[1:0] 可以是任何值,只要 in[1] 为 1。输出 pos 为 1。
4'bz1zz:这个掩码表示 in[3] 和 in[0] 可以是任何值,只要 in[2] 为 1。输出 pos 为 2。
4'b1zzz:这个掩码表示 in[2:0] 可以是任何值,只要 in[3] 为 1。输出 pos 为 3。
*/
module top_module (
input [7:0] in,
output reg [2:0] pos );
always@(*) begin
casez(in)
8'bzzzzzzz1 : pos = 0;
8'bzzzzzz1z : pos = 1;
8'bzzzzz1zz : pos = 2;
8'bzzzz1zzz : pos = 3;
8'bzzz1zzzz : pos = 4;
8'bzz1zzzzz : pos = 5;
8'bz1zzzzzz : pos = 6;
8'b1zzzzzzz : pos = 7;
default : pos = 0;
endcase
end
endmodule