28 lines
525 B
Systemverilog
Executable File
28 lines
525 B
Systemverilog
Executable File
`ifndef __ONE_HOT_PRIORITY_ENCODER_SV__
|
|
`define __ONE_HOT_PRIORITY_ENCODER_SV__
|
|
|
|
|
|
module one_hot_priority_encoder
|
|
#(
|
|
parameter int unsigned SEL_WIDTH = 8
|
|
)
|
|
(
|
|
input logic[SEL_WIDTH-1:0] sel_i,
|
|
output logic[SEL_WIDTH-1:0] sel_o
|
|
);
|
|
|
|
localparam int unsigned SEL_ID_WIDHT = $clog2(SEL_WIDTH);
|
|
|
|
|
|
logic [SEL_WIDTH-1:0] sel_mask;
|
|
|
|
assign sel_mask = ((~sel_i + 1'b1) & sel_i);
|
|
|
|
assign sel_o = sel_mask;
|
|
|
|
|
|
|
|
|
|
endmodule : one_hot_priority_encoder
|
|
|
|
`endif |