You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
967 B
40 lines
967 B
include "7seg_driver";
|
|
|
|
subdesign LED_7seg_driver (
|
|
D[0..7][0..3], clk : input;
|
|
dig[0..7], seg[6..0] : output;
|
|
)
|
|
|
|
variable
|
|
in_buf[7..0][3..0] : DFF;
|
|
decoder_out[7..0][7..0] : NODE;
|
|
switcher[3..0] : DFF;
|
|
|
|
begin
|
|
|
|
DEFAULTS
|
|
switcher[].d = 0;
|
|
END DEFAULTS;
|
|
|
|
in_buf[][].clk = clk;
|
|
in_buf[7..0][3..0].d = D[7..0][3..0];
|
|
|
|
switcher[].clk = clk;
|
|
if switcher[].q == 7
|
|
THEN
|
|
switcher[].d = 0;
|
|
ELSE
|
|
switcher[].d = switcher[].q + 1;
|
|
END IF;
|
|
|
|
CASE switcher[].q IS
|
|
WHEN 0 => dig[] = 0; seg[] = 7seg_driver(in_buf[0][].q);
|
|
WHEN 1 => dig[] = 1; seg[] = 7seg_driver(in_buf[1][].q);
|
|
WHEN 2 => dig[] = 2; seg[] = 7seg_driver(in_buf[2][].q);
|
|
WHEN 3 => dig[] = 3; seg[] = 7seg_driver(in_buf[3][].q);
|
|
WHEN 4 => dig[] = 4; seg[] = 7seg_driver(in_buf[4][].q);
|
|
WHEN 5 => dig[] = 5; seg[] = 7seg_driver(in_buf[5][].q);
|
|
WHEN 6 => dig[] = 6; seg[] = 7seg_driver(in_buf[6][].q);
|
|
WHEN 7 => dig[] = 7; seg[] = 7seg_driver(in_buf[7][].q);
|
|
END CASE;
|
|
end; |