-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinterface_hcsr04_fd.vhd
102 lines (91 loc) · 2.44 KB
/
interface_hcsr04_fd.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY interface_hcsr04_fd IS
PORT (
clock : IN STD_LOGIC;
echo : IN STD_LOGIC;
zera : IN STD_LOGIC;
gera : IN STD_LOGIC;
limpa : IN STD_LOGIC;
registra : IN STD_LOGIC;
fim_medida : OUT STD_LOGIC;
medida : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
trigger : OUT STD_LOGIC
);
END interface_hcsr04_fd;
ARCHITECTURE comportamental OF interface_hcsr04_fd IS
COMPONENT contador_cm IS
GENERIC (
CONSTANT R : INTEGER;
CONSTANT N : INTEGER
);
PORT (
clock : IN STD_LOGIC;
reset : IN STD_LOGIC;
pulso : IN STD_LOGIC;
digito0 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
digito1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
digito2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
fim : OUT STD_LOGIC;
pronto : OUT STD_LOGIC
);
END COMPONENT;
COMPONENT gerador_pulso IS
GENERIC (
largura : INTEGER := 25
);
PORT (
clock : IN STD_LOGIC;
reset : IN STD_LOGIC;
gera : IN STD_LOGIC;
para : IN STD_LOGIC;
pulso : OUT STD_LOGIC;
pronto : OUT STD_LOGIC
);
END COMPONENT;
COMPONENT registrador_n IS
GENERIC (
CONSTANT N : INTEGER := 8
);
PORT (
clock : IN STD_LOGIC;
clear : IN STD_LOGIC;
enable : IN STD_LOGIC;
D : IN STD_LOGIC_VECTOR (N - 1 DOWNTO 0);
Q : OUT STD_LOGIC_VECTOR (N - 1 DOWNTO 0)
);
END COMPONENT;
SIGNAL s_medida : STD_LOGIC_VECTOR(11 DOWNTO 0);
BEGIN
CM : contador_cm
GENERIC MAP(R => 2941, N => 12)
PORT MAP(
clock => clock,
reset => zera,
pulso => echo,
digito0 => s_medida(3 DOWNTO 0),
digito1 => s_medida(7 DOWNTO 4),
digito2 => s_medida(11 DOWNTO 8),
fim => OPEN,
pronto => fim_medida
);
GTRG : gerador_pulso
GENERIC MAP(largura => 500)
PORT MAP(
clock => clock,
reset => zera,
gera => gera,
para => zera,
pulso => trigger,
pronto => OPEN
);
REG1 : registrador_n
GENERIC MAP(N => 12)
PORT MAP(
clock => clock,
clear => limpa,
enable => registra,
D => s_medida,
Q => medida
);
END ARCHITECTURE;