HyperBus_simulation.vhd


1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4
5
entity HyperBus_simulation is
6
end HyperBus_simulation;
7
8
architecture Behavioral of HyperBus_simulation is
9
10
component s27kl0641 is port(
11
    DQ7: inout std_logic;
12
    DQ6: inout std_logic;
13
    DQ5: inout std_logic;
14
    DQ4: inout std_logic;
15
    DQ3: inout std_logic;
16
    DQ2: inout std_logic;
17
    DQ1: inout std_logic;
18
    DQ0: inout std_logic;
19
    RWDS: inout std_logic;
20
    CSNeg: in std_logic;
21
    CK: in std_logic;
22
    RESETNeg: in std_logic);
23
end component;
24
25
signal nReset: std_logic:='1';
26
signal nCS: std_logic:='1';
27
signal CK: std_logic:='0';
28
signal RWDS: std_logic:='Z';
29
signal DQ: std_logic_vector(7 downto 0):=x"00";
30
31
begin
32
  
33
RAM: s27kl0641 port map(
34
    DQ7 => DQ(7),
35
    DQ6 => DQ(6),
36
    DQ5 => DQ(5),
37
    DQ4 => DQ(4),
38
    DQ3 => DQ(3),
39
    DQ2 => DQ(2),
40
    DQ1 => DQ(1),
41
    DQ0 => DQ(0),
42
    RWDS => RWDS,
43
    CSNeg => nCS,
44
    CK => CK,
45
    RESETNeg => nReset);
46
47
process begin
48
  RWDS <= 'Z';
49
  DQ <= x"00";
50
  wait for 200 us;
51
  nReset <= '0';
52
  wait for 400 ns;
53
  nReset <= '1';
54
  wait for 1 us;
55
  
56
  -- WRITE
57
  nCS <= '0';
58
  wait for 10.1 ns;
59
  DQ <= x"20";
60
  wait for 2.4 ns;
61
  CK <= '1';
62
  wait for 2.6 ns;
63
  DQ <= x"00";
64
  wait for 2.4 ns;
65
  CK <= '0';
66
  wait for 5 ns;
67
  CK <= '1';
68
  wait for 2.6 ns;
69
  DQ <= x"01";
70
  wait for 2.4 ns;
71
  CK <= '0';
72
  wait for 2.6 ns;
73
  DQ <= x"00";
74
  wait for 2.4 ns;
75
  CK <= '1';
76
  wait for 2.6 ns;
77
  DQ <= x"01";
78
  wait for 2.4 ns;
79
  CK <= '0';
80
  wait for 2.6 ns;
81
  DQ <= x"00";
82
  wait for 2.4 ns;
83
  CK <= '1';
84
  wait for 5 ns;
85
  CK <= '0';
86
  wait for 5 ns;
87
  CK <= '1';
88
  wait for 5 ns;
89
  CK <= '0';
90
  wait for 5 ns;
91
  CK <= '1';
92
  wait for 5 ns;
93
  CK <= '0';
94
  wait for 5 ns;
95
  CK <= '1';
96
  wait for 5 ns;
97
  CK <= '0';
98
  wait for 5 ns;
99
  CK <= '1';
100
  wait for 5 ns;
101
  CK <= '0';
102
  wait for 5 ns;
103
  CK <= '1';
104
  wait for 5 ns;
105
  CK <= '0';
106
  wait for 5 ns;
107
  CK <= '1';
108
  wait for 5 ns;
109
  CK <= '0';
110
  wait for 5 ns;
111
  CK <= '1';
112
  wait for 5 ns;
113
  CK <= '0';
114
  wait for 5 ns;
115
  CK <= '1';
116
  wait for 5 ns;
117
  CK <= '0';
118
  wait for 5 ns;
119
  CK <= '1';
120
  wait for 5 ns;
121
  CK <= '0';
122
  wait for 2.5 ns;
123
  RWDS <= '0';
124
  wait for 2.5 ns;
125
  CK <= '1';
126
  wait for 5 ns;
127
  CK <= '0';
128
  wait for 2.6 ns;
129
  DQ <= x"01";
130
  wait for 2.4 ns;
131
  CK <= '1';
132
  wait for 2.6 ns;
133
  DQ <= x"a0";
134
  wait for 2.4 ns;
135
  CK <= '0';
136
  wait for 2.6 ns;
137
  DQ <= x"00";
138
  RWDS <= 'Z';
139
  nCS <= '1';
140
  wait for 1 us;
141
  
142
  -- READ
143
  nCS <= '0';
144
  wait for 10.1 ns;
145
  DQ <= x"A0";
146
  wait for 2.4 ns;
147
  CK <= '1';
148
  wait for 2.6 ns;
149
  DQ <= x"00";
150
  wait for 2.4 ns;
151
  CK <= '0';
152
  wait for 5 ns;
153
  CK <= '1';
154
  wait for 2.6 ns;
155
  DQ <= x"01";
156
  wait for 2.4 ns;
157
  CK <= '0';
158
  wait for 2.6 ns;
159
  DQ <= x"00";
160
  wait for 2.4 ns;
161
  CK <= '1';
162
  wait for 2.6 ns;
163
  DQ <= x"01";
164
  wait for 2.4 ns;
165
  CK <= '0';
166
  wait for 2.6 ns;
167
  DQ <= x"00";
168
  wait for 2.4 ns;
169
  CK <= '1';
170
  wait for 5 ns;
171
  CK <= '0';
172
  wait for 5 ns;
173
  CK <= '1';
174
  wait for 5 ns;
175
  CK <= '0';
176
  wait for 5 ns;
177
  CK <= '1';
178
  wait for 5 ns;
179
  CK <= '0';
180
  wait for 5 ns;
181
  CK <= '1';
182
  wait for 5 ns;
183
  CK <= '0';
184
  wait for 5 ns;
185
  CK <= '1';
186
  wait for 5 ns;
187
  CK <= '0';
188
  wait for 5 ns;
189
  CK <= '1';
190
  wait for 5 ns;
191
  CK <= '0';
192
  wait for 5 ns;
193
  CK <= '1';
194
  wait for 5 ns;
195
  CK <= '0';
196
  wait for 5 ns;
197
  CK <= '1';
198
  wait for 5 ns;
199
  CK <= '0';
200
  wait for 5 ns;
201
  CK <= '1';
202
  wait for 5 ns;
203
  CK <= '0';
204
  wait for 5 ns;
205
  CK <= '1';
206
  wait for 5 ns;
207
  CK <= '0';
208
  wait for 5 ns;
209
  CK <= '1';
210
  wait for 5 ns;
211
  DQ <= "ZZZZZZZZ";
212
  CK <= '0';
213
  wait for 5 ns;
214
  CK <= '1';
215
  wait for 5 ns;
216
  CK <= '0';
217
  wait for 2.6 ns;
218
  nCS <= '1';
219
  wait for 2.4 ns;
220
  DQ <= x"00";
221
  wait;
222
end process;
223
224
end Behavioral;