-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontador_m.vhd
55 lines (48 loc) · 1.26 KB
/
contador_m.vhd
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
55
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
ENTITY contador_m IS
GENERIC (
CONSTANT M : INTEGER := 50;
CONSTANT N : INTEGER := 6
);
PORT (
clock : IN STD_LOGIC;
zera : IN STD_LOGIC;
conta : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR (N - 1 DOWNTO 0);
fim : OUT STD_LOGIC;
meio : OUT STD_LOGIC
);
END ENTITY contador_m;
ARCHITECTURE contador_m_arch OF contador_m IS
SIGNAL IQ : INTEGER RANGE 0 TO M - 1;
BEGIN
PROCESS (clock, zera, conta, IQ)
BEGIN
IF zera = '1' THEN
IQ <= 0;
ELSIF clock'event AND clock = '1' THEN
IF conta = '1' THEN
IF IQ = M - 1 THEN
IQ <= 0;
ELSE
IQ <= IQ + 1;
END IF;
END IF;
END IF;
-- fim de contagem
IF IQ = M - 1 THEN
fim <= '1';
ELSE
fim <= '0';
END IF;
-- meio da contagem
IF IQ = M/2 - 1 THEN
meio <= '1';
ELSE
meio <= '0';
END IF;
Q <= STD_LOGIC_VECTOR(to_unsigned(IQ, Q'length));
END PROCESS;
END ARCHITECTURE;