blob: 7c505869c4acf77a1443ece5ef1153e2b1fc108f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
architecture spin1 of leds is
signal nrst : std_logic := '0';
signal clk_4hz: std_logic;
signal leds : std_ulogic_vector (1 to 5);
begin
(led1, led2, led3, led4, led5) <= leds;
led6 <= '0';
led7 <= '0';
led8 <= '0';
process (clk)
variable cnt : unsigned (1 downto 0) := "00";
begin
if rising_edge (clk) then
if cnt = 3 then
nrst <= '1';
else
cnt := cnt + 1;
end if;
end if;
end process;
process (clk)
-- 3_000_000 is 0x2dc6c0
variable counter : unsigned (23 downto 0);
begin
if rising_edge(clk) then
if nrst = '0' then
counter := x"000000";
else
if counter = 2_999_999 then
counter := x"000000";
clk_4hz <= '1';
else
counter := counter + 1;
clk_4hz <= '0';
end if;
end if;
end if;
end process;
process (clk)
begin
if rising_edge(clk) then
if nrst = '0' then
-- Initialize
leds <= "11000";
elsif clk_4hz = '1' then
-- Rotate
leds <= (leds (4), leds (1), leds (2), leds (3), '0');
end if;
end if;
end process;
end spin1;
|