difftastic/sample_files/vhdl_2.vhd

36 lines
752 B
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity blinky is
port (
clk: in std_logic;
led: out std_logic_vector(3 downto 0)
);
end entity;
architecture a of blinky is
constant CLK_FREQ: positive := 48_000_000;
signal counter1: unsigned(25 downto 0) := (others => '0');
signal counter2: unsigned(1 downto 0) := (others => '0');
begin
process(clk)
begin
if rising_edge(clk) then
if to_integer(counter1) = CLK_FREQ / 2 then
counter2 <= counter2 + 1;
counter1 <= (others => '0');
else
counter1 <= counter1 + 1;
end if;
end if;
end process;
process(counter2)
begin
for n in 0 to 3 loop
led(n) <= '1' when to_integer(counter2) = n else '0';
end loop;
end process;
end architecture;