-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmaster.vhdl
More file actions
85 lines (76 loc) · 2.14 KB
/
master.vhdl
File metadata and controls
85 lines (76 loc) · 2.14 KB
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
library IEEE;
use IEEE.NUMERIC_STD.ALL;
use IEEE.STD_LOGIC_1164.ALL;
entity master is
Port ( sda : inout STD_LOGIC;
scl : out STD_LOGIC
);
end master;
architecture lab3 of master is
COMPONENT validate is
PORT ( sdaIn : in STD_LOGIC;
sclIn : in STD_LOGIC;
sdaOut : out STD_LOGIC;
start : out STD_LOGIC;
stop : out STD_LOGIC
);
END COMPONENT validate;
COMPONENT FSM is
Port ( start : in STD_LOGIC;
stop : in STD_LOGIC;
scl : in STD_LOGIC;
sda : in STD_LOGIC;
ack0 : out STD_LOGIC;
ack1 : out STD_LOGIC;
ack2 : out STD_LOGIC;
addr : out STD_LOGIC;
reg : out STD_LOGIC;
rw : out STD_LOGIC;
data : out STD_LOGIC;
enclk : out STD_LOGIC;
number : out UNSIGNED (2 downto 0)
);
END COMPONENT FSM;
SIGNAL clk: STD_LOGIC ;
SIGNAL s_clk: STD_LOGIC ;
SIGNAL sdaValid: STD_LOGIC;
SIGNAL stop_signal: STD_LOGIC;
SIGNAL start_signal: STD_LOGIC;
SIGNAL ack0_signal: STD_LOGIC := '0';
SIGNAL ack1_signal: STD_LOGIC := '0';
SIGNAL ack2_signal: STD_LOGIC := '0';
SIGNAL addr: STD_LOGIC := '0';
SIGNAL rw: STD_LOGIC := '0';
SIGNAL reg: STD_LOGIC := '0';
SIGNAL data: STD_LOGIC := '0';
SIGNAL enclk: STD_LOGIC := '0';
SIGNAL address: UNSIGNED (2 downto 0):= "000";
begin
VALIDATE_MODULE: validate PORT MAP(
sdaIn => sda,
sclIn => s_clk,
sdaOut => sdaValid,
start => start_signal,
stop => stop_signal
);
FSM_MODULE: fsm PORT MAP( start => start_signal,
stop => stop_signal,
scl => s_clk,
sda => sdaValid,
ack0 => ack0_signal,
ack1 => ack1_signal,
ack2 => ack2_signal,
addr => addr,
reg => reg,
rw => rw,
data => data,
enclk => enclk,
number => address
);
PROCESS( clk ) BEGIN
--wait for 10000 ns;
CLK <= NOT clk;
s_clk <= CLK AND enclk;
END PROCESS;
scl <= s_clk;
end lab3;