a18b998c5dbb5784888a4c1af6bfa3b9aa0efae0
[calu.git] / cpu / src / ram_xilinx_b.vhd
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.std_logic_misc.all;
4 use ieee.std_logic_arith.all;
5 use ieee.std_logic_unsigned.all;
6 library UNISIM;
7 use UNISIM.vcomponents.all;
8
9 architecture logic of ram_xilinx is
10         constant ZERO : std_logic_vector(31 downto 0) := "00000000000000000000000000000000";
11         constant ONE : std_logic_vector(31 downto 0) := "11111111111111111111111111111111";
12 begin
13
14    RAMB16_S9_inst0 : RAMB16_S9 -- 2k x 8bit (+ 1 bit parity)
15    generic map (
16 INIT_00 => X"000000000000000000000000000000000000000000000000000000000c080400",
17 INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
18 INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
19 INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
20 INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
21 INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
22 INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
23 INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000",
24 INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000",
25 INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000",
26 INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000",
27 INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000",
28 INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000",
29 INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000",
30 INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000",
31 INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000",
32 INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000",
33 INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000",
34 INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000",
35 INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000",
36 INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000",
37 INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000",
38 INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000",
39 INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000",
40 INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000",
41 INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000",
42 INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000",
43 INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000",
44 INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000",
45 INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000",
46 INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000",
47 INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000",
48 INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000",
49 INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000",
50 INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000",
51 INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000",
52 INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000",
53 INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000",
54 INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
55 INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
56 INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000",
57 INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000",
58 INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
59 INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
60 INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
61 INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
62 INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
63 INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
64 INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
65 INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
66 INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
67 INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
68 INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
69 INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
70 INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
71 INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
72 INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
73 INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
74 INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
75 INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
76 INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
77 INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
78 INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
79 INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
80    port map (
81       DO   => q(31 downto 24),
82       DOP  => open, 
83       ADDR => addr(ADDR_WIDTH-1 downto 0),
84       CLK  => clk, 
85       DI   => wdata(31 downto 24),
86       DIP  => ZERO(0 downto 0),
87       EN   => ONE(0),
88       SSR  => ZERO(0),
89       WE   => be(3));
90
91    RAMB16_S9_inst1 : RAMB16_S9
92    generic map (
93 INIT_00 => X"000000000000000000000000000000000000000000000000000000000d090501",
94 INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
95 INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
96 INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
97 INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
98 INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
99 INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
100 INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000",
101 INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000",
102 INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000",
103 INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000",
104 INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000",
105 INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000",
106 INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000",
107 INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000",
108 INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000",
109 INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000",
110 INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000",
111 INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000",
112 INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000",
113 INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000",
114 INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000",
115 INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000",
116 INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000",
117 INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000",
118 INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000",
119 INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000",
120 INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000",
121 INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000",
122 INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000",
123 INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000",
124 INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000",
125 INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000",
126 INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000",
127 INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000",
128 INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000",
129 INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000",
130 INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000",
131 INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
132 INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
133 INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000",
134 INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000",
135 INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
136 INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
137 INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
138 INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
139 INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
140 INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
141 INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
142 INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
143 INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
144 INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
145 INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
146 INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
147 INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
148 INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
149 INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
150 INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
151 INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
152 INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
153 INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
154 INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
155 INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
156 INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
157    port map (
158       DO   => q(23 downto 16),
159       DOP  => open, 
160       ADDR => addr(12 downto 2),
161       CLK  => clk, 
162       DI   => wdata(23 downto 16),
163       DIP  => ZERO(0 downto 0),
164       EN   => ONE(0),
165       SSR  => ZERO(0),
166       WE   => be(2));
167
168    RAMB16_S9_inst2 : RAMB16_S9
169    generic map (
170 INIT_00 => X"000000000000000000000000000000000000000000000000000000000e0a0602",
171 INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
172 INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
173 INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
174 INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
175 INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
176 INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
177 INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000",
178 INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000",
179 INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000",
180 INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000",
181 INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000",
182 INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000",
183 INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000",
184 INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000",
185 INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000",
186 INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000",
187 INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000",
188 INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000",
189 INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000",
190 INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000",
191 INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000",
192 INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000",
193 INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000",
194 INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000",
195 INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000",
196 INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000",
197 INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000",
198 INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000",
199 INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000",
200 INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000",
201 INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000",
202 INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000",
203 INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000",
204 INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000",
205 INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000",
206 INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000",
207 INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000",
208 INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
209 INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
210 INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000",
211 INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000",
212 INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
213 INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
214 INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
215 INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
216 INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
217 INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
218 INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
219 INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
220 INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
221 INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
222 INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
223 INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
224 INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
225 INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
226 INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
227 INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
228 INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
229 INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
230 INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
231 INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
232 INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
233 INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
234    port map (
235       DO   => q(15 downto 8),
236       DOP  => open, 
237       ADDR => addr(12 downto 2),
238       CLK  => clk, 
239       DI   => wdata(15 downto 8),
240       DIP  => ZERO(0 downto 0),
241       EN   => ONE(0),
242       SSR  => ZERO(0),
243       WE   => be(1));
244
245    RAMB16_S9_inst3 : RAMB16_S9
246    generic map (
247 INIT_00 => X"000000000000000000000000000000000000000000000000000000000f0b0703",
248 INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
249 INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
250 INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
251 INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
252 INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
253 INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
254 INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000",
255 INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000",
256 INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000",
257 INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000",
258 INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000",
259 INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000",
260 INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000",
261 INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000",
262 INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000",
263 INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000",
264 INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000",
265 INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000",
266 INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000",
267 INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000",
268 INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000",
269 INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000",
270 INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000",
271 INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000",
272 INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000",
273 INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000",
274 INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000",
275 INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000",
276 INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000",
277 INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000",
278 INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000",
279 INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000",
280 INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000",
281 INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000",
282 INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000",
283 INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000",
284 INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000",
285 INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
286 INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
287 INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000",
288 INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000",
289 INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
290 INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
291 INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
292 INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
293 INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
294 INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
295 INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
296 INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
297 INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
298 INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
299 INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
300 INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
301 INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
302 INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
303 INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
304 INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
305 INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
306 INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
307 INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
308 INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
309 INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
310 INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000")
311    port map (
312       DO   => q(7 downto 0),
313       DOP  => open, 
314       ADDR => addr(12 downto 2),
315       CLK  => clk, 
316       DI   => wdata(7 downto 0),
317       DIP  => ZERO(0 downto 0),
318       EN   => ONE(0),
319       SSR  => ZERO(0),
320       WE   => be(0));
321 end;