`ifndef SEVEN_SEG_H_SV `define SEVEN_SEG_H_SV module seven_seg( input logic [3:0] num, input logic [0:0] rbi_inv, output logic [7:0] segments); always_comb begin case (num) 4'b0000: segments = (rbi_inv) ? ~(8'b01111111) : ~(8'b00000000); // zero or blank 4'b0001: segments = ~(8'b00001101); 4'b0010: segments = ~(8'b10110111); 4'b0011: segments = ~(8'b10011111); 4'b0100: segments = ~(8'b11001101); 4'b0101: segments = ~(8'b11011011); 4'b0110: segments = ~(8'b11111011); 4'b0111: segments = ~(8'b00001111); 4'b1000: segments = ~(8'b11111111); 4'b1001: segments = ~(8'b11001111); 4'b1010: segments = ~(8'b11101111); 4'b1011: segments = ~(8'b11111001); 4'b1100: segments = ~(8'b01110011); 4'b1101: segments = ~(8'b10111101); 4'b1110: segments = ~(8'b11110011); 4'b1111: segments = ~(8'b11100011); default: segments = ~(8'bxxxxxxxx); endcase end endmodule module seven_seg_2digit( input logic [3:0] b, // left input logic [3:0] a, // right output logic [7:0] seg_b, // left output logic [7:0] seg_a); // right // seg_b seven_seg left_digit( .num(b), .rbi_inv(1'b0), // blanking enabled .segments(seg_b) ); // seg_a seven_seg right_digit( .num(a), .rbi_inv(1'b1), // blanking disabled .segments(seg_a) ); endmodule `endif