79 lines
1.5 KiB
VHDL
79 lines
1.5 KiB
VHDL
|
library IEEE;
|
||
|
use IEEE.STD_LOGIC_1164.all;
|
||
|
use IEEE.NUMERIC_STD.all;
|
||
|
|
||
|
entity CounterDemo is
|
||
|
port
|
||
|
(
|
||
|
CLOCK_50 : in std_logic;
|
||
|
KEY : in std_logic_vector(1 downto 0);
|
||
|
HEX0 : out std_logic_vector(6 downto 0);
|
||
|
HEX1 : out std_logic_vector(6 downto 0)
|
||
|
);
|
||
|
end CounterDemo;
|
||
|
|
||
|
architecture Shell of CounterDemo is
|
||
|
signal s_pulse, s_reset, s_toggle : std_logic;
|
||
|
signal s_count : std_logic_vector(3 downto 0);
|
||
|
|
||
|
signal s_startStop : std_logic := '1';
|
||
|
|
||
|
signal s_display0, s_display1 : std_logic_vector(3 downto 0);
|
||
|
begin
|
||
|
s_reset <= not KEY(1);
|
||
|
|
||
|
pulse_gen : entity work.pulse_gen(Behavioral)
|
||
|
generic map (MAX => 20_000_000)
|
||
|
port map
|
||
|
(
|
||
|
clk => CLOCK_50,
|
||
|
pulse => s_pulse
|
||
|
);
|
||
|
|
||
|
key_debounce : entity work.Debouncer(Behavioral)
|
||
|
port map
|
||
|
(
|
||
|
refClk => CLOCK_50,
|
||
|
dirtyIn => KEY(0),
|
||
|
pulsedOut => s_toggle
|
||
|
);
|
||
|
|
||
|
start_stop : entity work.ToggleSwitch(Behavioral)
|
||
|
port map
|
||
|
(
|
||
|
toggle => s_toggle,
|
||
|
reset => s_reset,
|
||
|
startStop => s_startStop
|
||
|
);
|
||
|
|
||
|
counter : entity work.Counter(Behavioral)
|
||
|
port map
|
||
|
(
|
||
|
clk => s_pulse,
|
||
|
reset => s_reset,
|
||
|
start => s_startStop,
|
||
|
count => s_count
|
||
|
);
|
||
|
|
||
|
bin2bcd : entity work.Bin2Bcd(Behavioral)
|
||
|
port map
|
||
|
(
|
||
|
hexIn => s_count,
|
||
|
decOut0 => s_display0,
|
||
|
decOut1 => s_display1
|
||
|
);
|
||
|
|
||
|
display0 : entity work.Bin7SegDecoder(Behavioral)
|
||
|
port map
|
||
|
(
|
||
|
binInput => s_display0,
|
||
|
decOut_n => HEX0
|
||
|
);
|
||
|
|
||
|
display1 : entity work.Bin7SegDecoder(Behavioral)
|
||
|
port map
|
||
|
(
|
||
|
binInput => s_display1,
|
||
|
decOut_n => HEX1
|
||
|
);
|
||
|
end Shell;
|