| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| // One-hot encoder |
| // Outputs a one-hot encoded version of an integer input. |
| |
| module prim_onehot_enc #( |
| parameter int unsigned OneHotWidth = 32, |
| localparam int unsigned InputWidth = $clog2(OneHotWidth) |
| ) ( |
| input logic [InputWidth-1:0] in_i, |
| input logic en_i, // out_o == '0 when en_i == 0 |
| |
| output logic [OneHotWidth-1:0] out_o |
| ); |
| |
| for (genvar i = 0; i < OneHotWidth; ++i) begin : g_out |
| assign out_o[i] = (in_i == i) & en_i; |
| end |
| endmodule |