Skip to content

Instantly share code, notes, and snippets.

@leonrinkel
Created October 10, 2021 10:36
Show Gist options
  • Save leonrinkel/c671c78ac3c1711bd783b2234276faef to your computer and use it in GitHub Desktop.
Save leonrinkel/c671c78ac3c1711bd783b2234276faef to your computer and use it in GitHub Desktop.
Verilog BCD to Seven Segment Decoder
module bcd_to_seven_segment_decoder(
input [3:0] in,
output reg a, b, c, d, e, f, g
);
always @(in) begin
case (in)
0: assign {a, b, c, d, e, f, g} = 7'b1111110;
1: assign {a, b, c, d, e, f, g} = 7'b0110000;
2: assign {a, b, c, d, e, f, g} = 7'b1101101;
3: assign {a, b, c, d, e, f, g} = 7'b1111001;
4: assign {a, b, c, d, e, f, g} = 7'b0110011;
5: assign {a, b, c, d, e, f, g} = 7'b1011011;
6: assign {a, b, c, d, e, f, g} = 7'b1011111;
7: assign {a, b, c, d, e, f, g} = 7'b1110000;
8: assign {a, b, c, d, e, f, g} = 7'b1111111;
9: assign {a, b, c, d, e, f, g} = 7'b1111011;
default: assign {a, b, c, d, e, f, g} = 7'b0;
endcase
end
endmodule
module bcd_to_seven_segment_decoder_testbench();
reg [3:0] in;
wire a, b, c, d, e, f, g;
localparam T = 20;
bcd_to_seven_segment_decoder uut(
.in(in),
.a(a), .b(b), .c(c), .d(d), .e(e), .f(f), .g(g)
);
initial begin
in <= 0;
#T;
if (!a || !b || !c || !d || !e || !f || g)
$display("assertion failed");
in <= 1;
#T;
if (a || !b || !c || d || e || f || g)
$display("assertion failed");
in <= 2;
#T;
if (!a || !b || c || !d || !e || f || !g)
$display("assertion failed");
in <= 3;
#T;
if (!a || !b || !c || !d || e || f || !g)
$display("assertion failed");
in <= 4;
#T;
if (a || !b || !c || d || e || !f || !g)
$display("assertion failed");
in <= 5;
#T;
if (!a || b || !c || !d || e || !f || !g)
$display("assertion failed");
in <= 6;
#T;
if (!a || b || !c || !d || !e || !f || !g)
$display("assertion failed");
in <= 7;
#T;
if (!a || !b || !c || d || e || f || g)
$display("assertion failed");
in <= 8;
#T;
if (!a || !b || !c || !d || !e || !f || !g)
$display("assertion failed");
in <= 9;
#T;
if (!a || !b || !c || !d || e || !f || !g)
$display("assertion failed");
in <= 10;
#T;
if (a || b || c || d || e || f || g)
$display("assertion failed");
in <= 11;
#T;
if (a || b || c || d || e || f || g)
$display("assertion failed");
in <= 12;
#T;
if (a || b || c || d || e || f || g)
$display("assertion failed");
in <= 13;
#T;
if (a || b || c || d || e || f || g)
$display("assertion failed");
in <= 14;
#T;
if (a || b || c || d || e || f || g)
$display("assertion failed");
in <= 15;
#T;
if (a || b || c || d || e || f || g)
$display("assertion failed");
$finish;
end
endmodule
a
-----
| |
f | | b
| g |
-----
| |
e | | c
| |
-----
d
a a a
----- ----- -----
| | | | | | |
f | | b | b | b | b f | | b
| | | g | g | | g |
----- ----- -----
| | | | | |
e | | c | c e | | c | c
| | | | | |
----- ----- -----
d d d
a a a a a
----- ----- ----- ----- -----
| | | | | | |
f | f | | b f | | b f | | b
| g | g | | g | | g |
----- ----- ----- -----
| | | | | | |
| c e | | c | c e | | c | c
| | | | | | |
----- ----- ----- -----
d d d d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment