Files
zSoft/rtl/IOCP_BootROM.vhd

1122 lines
34 KiB
VHDL
Raw Permalink Blame History

-- ZPU
--
-- Copyright 2004-2008 oharboe - <20>yvind Harboe - oyvind.harboe@zylin.com
-- Modified by Philip Smart 02/2019 for the ZPU Evo implementation.
--
-- The FreeBSD license
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions
-- are met:
--
-- 1. Redistributions of source code must retain the above copyright
-- notice, this list of conditions and the following disclaimer.
-- 2. Redistributions in binary form must reproduce the above
-- copyright notice, this list of conditions and the following
-- disclaimer in the documentation and/or other materials
-- provided with the distribution.
--
-- THIS SOFTWARE IS PROVIDED BY THE ZPU PROJECT ``AS IS'' AND ANY
-- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-- ZPU PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--
-- The views and conclusions contained in the software and documentation
-- are those of the authors and should not be interpreted as representing
-- official policies, either expressed or implied, of the ZPU Project.
library ieee;
library pkgs;
library work;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.zpu_pkg.all;
use work.zpu_soc_pkg.all;
entity BootROM is
port (
clk : in std_logic;
areset : in std_logic := '0';
memAWriteEnable : in std_logic;
memAAddr : in std_logic_vector(ADDR_32BIT_BRAM_RANGE);
memAWrite : in std_logic_vector(WORD_32BIT_RANGE);
memBWriteEnable : in std_logic;
memBAddr : in std_logic_vector(ADDR_32BIT_BRAM_RANGE);
memBWrite : in std_logic_vector(WORD_32BIT_RANGE);
memARead : out std_logic_vector(WORD_32BIT_RANGE);
memBRead : out std_logic_vector(WORD_32BIT_RANGE)
);
end BootROM;
architecture arch of BootROM is
type ram_type is array(natural range 0 to (2**(SOC_MAX_ADDR_BRAM_BIT-2))-1) of std_logic_vector(WORD_32BIT_RANGE);
shared variable ram : ram_type :=
(
0 => x"0b0b0b88",
1 => x"e0040000",
2 => x"00000000",
3 => x"00000000",
4 => x"00000000",
5 => x"00000000",
6 => x"00000000",
7 => x"00000000",
8 => x"88088c08",
9 => x"90080b0b",
10 => x"0b888008",
11 => x"2d900c8c",
12 => x"0c880c04",
13 => x"00000000",
14 => x"00000000",
15 => x"00000000",
16 => x"71fd0608",
17 => x"72830609",
18 => x"81058205",
19 => x"832b2a83",
20 => x"ffff0652",
21 => x"04000000",
22 => x"00000000",
23 => x"00000000",
24 => x"71fd0608",
25 => x"83ffff73",
26 => x"83060981",
27 => x"05820583",
28 => x"2b2b0906",
29 => x"7383ffff",
30 => x"0b0b0b0b",
31 => x"83a50400",
32 => x"72098105",
33 => x"72057373",
34 => x"09060906",
35 => x"73097306",
36 => x"070a8106",
37 => x"53510400",
38 => x"00000000",
39 => x"00000000",
40 => x"72722473",
41 => x"732e0753",
42 => x"51040000",
43 => x"00000000",
44 => x"00000000",
45 => x"00000000",
46 => x"00000000",
47 => x"00000000",
48 => x"71737109",
49 => x"71068106",
50 => x"09810572",
51 => x"0a100a72",
52 => x"0a100a31",
53 => x"050a8106",
54 => x"51515351",
55 => x"04000000",
56 => x"72722673",
57 => x"732e0753",
58 => x"51040000",
59 => x"00000000",
60 => x"00000000",
61 => x"00000000",
62 => x"00000000",
63 => x"00000000",
64 => x"00000000",
65 => x"00000000",
66 => x"00000000",
67 => x"00000000",
68 => x"00000000",
69 => x"00000000",
70 => x"00000000",
71 => x"00000000",
72 => x"0b0b0b88",
73 => x"c4040000",
74 => x"00000000",
75 => x"00000000",
76 => x"00000000",
77 => x"00000000",
78 => x"00000000",
79 => x"00000000",
80 => x"720a722b",
81 => x"0a535104",
82 => x"00000000",
83 => x"00000000",
84 => x"00000000",
85 => x"00000000",
86 => x"00000000",
87 => x"00000000",
88 => x"72729f06",
89 => x"0981050b",
90 => x"0b0b88a7",
91 => x"05040000",
92 => x"00000000",
93 => x"00000000",
94 => x"00000000",
95 => x"00000000",
96 => x"72722aff",
97 => x"739f062a",
98 => x"0974090a",
99 => x"8106ff05",
100 => x"06075351",
101 => x"04000000",
102 => x"00000000",
103 => x"00000000",
104 => x"71715351",
105 => x"04067383",
106 => x"06098105",
107 => x"8205832b",
108 => x"0b2b0772",
109 => x"fc060c51",
110 => x"51040000",
111 => x"00000000",
112 => x"72098105",
113 => x"72050970",
114 => x"81050906",
115 => x"0a810653",
116 => x"51040000",
117 => x"00000000",
118 => x"00000000",
119 => x"00000000",
120 => x"72098105",
121 => x"72050970",
122 => x"81050906",
123 => x"0a098106",
124 => x"53510400",
125 => x"00000000",
126 => x"00000000",
127 => x"00000000",
128 => x"71098105",
129 => x"52040000",
130 => x"00000000",
131 => x"00000000",
132 => x"00000000",
133 => x"00000000",
134 => x"00000000",
135 => x"00000000",
136 => x"72720981",
137 => x"05055351",
138 => x"04000000",
139 => x"00000000",
140 => x"00000000",
141 => x"00000000",
142 => x"00000000",
143 => x"00000000",
144 => x"72097206",
145 => x"73730906",
146 => x"07535104",
147 => x"00000000",
148 => x"00000000",
149 => x"00000000",
150 => x"00000000",
151 => x"00000000",
152 => x"71fc0608",
153 => x"72830609",
154 => x"81058305",
155 => x"1010102a",
156 => x"81ff0652",
157 => x"04000000",
158 => x"00000000",
159 => x"00000000",
160 => x"71fc0608",
161 => x"0b0b0b9f",
162 => x"d0738306",
163 => x"10100508",
164 => x"060b0b0b",
165 => x"88ac0400",
166 => x"00000000",
167 => x"00000000",
168 => x"88088c08",
169 => x"90087575",
170 => x"0b0b0b89",
171 => x"cf2d5050",
172 => x"88085690",
173 => x"0c8c0c88",
174 => x"0c510400",
175 => x"00000000",
176 => x"88088c08",
177 => x"90087575",
178 => x"0b0b0b8b",
179 => x"812d5050",
180 => x"88085690",
181 => x"0c8c0c88",
182 => x"0c510400",
183 => x"00000000",
184 => x"72097081",
185 => x"0509060a",
186 => x"8106ff05",
187 => x"70547106",
188 => x"73097274",
189 => x"05ff0506",
190 => x"07515151",
191 => x"04000000",
192 => x"72097081",
193 => x"0509060a",
194 => x"098106ff",
195 => x"05705471",
196 => x"06730972",
197 => x"7405ff05",
198 => x"06075151",
199 => x"51040000",
200 => x"05ff0504",
201 => x"00000000",
202 => x"00000000",
203 => x"00000000",
204 => x"00000000",
205 => x"00000000",
206 => x"00000000",
207 => x"00000000",
208 => x"04000000",
209 => x"00000000",
210 => x"00000000",
211 => x"00000000",
212 => x"00000000",
213 => x"00000000",
214 => x"00000000",
215 => x"00000000",
216 => x"71810552",
217 => x"04000000",
218 => x"00000000",
219 => x"00000000",
220 => x"00000000",
221 => x"00000000",
222 => x"00000000",
223 => x"00000000",
224 => x"04000000",
225 => x"00000000",
226 => x"00000000",
227 => x"00000000",
228 => x"00000000",
229 => x"00000000",
230 => x"00000000",
231 => x"00000000",
232 => x"02840572",
233 => x"10100552",
234 => x"04000000",
235 => x"00000000",
236 => x"00000000",
237 => x"00000000",
238 => x"00000000",
239 => x"00000000",
240 => x"00000000",
241 => x"00000000",
242 => x"00000000",
243 => x"00000000",
244 => x"00000000",
245 => x"00000000",
246 => x"00000000",
247 => x"00000000",
248 => x"717105ff",
249 => x"05715351",
250 => x"020d0400",
251 => x"00000000",
252 => x"00000000",
253 => x"00000000",
254 => x"00000000",
255 => x"00000000",
256 => x"00000404",
257 => x"04000000",
258 => x"10101010",
259 => x"10101010",
260 => x"10101010",
261 => x"10101010",
262 => x"10101010",
263 => x"10101010",
264 => x"10101010",
265 => x"10101053",
266 => x"51040000",
267 => x"7381ff06",
268 => x"73830609",
269 => x"81058305",
270 => x"1010102b",
271 => x"0772fc06",
272 => x"0c515104",
273 => x"72728072",
274 => x"8106ff05",
275 => x"09720605",
276 => x"71105272",
277 => x"0a100a53",
278 => x"72ed3851",
279 => x"51535104",
280 => x"9ff470a0",
281 => x"a4278e38",
282 => x"80717084",
283 => x"05530c0b",
284 => x"0b0b88e2",
285 => x"0488fe51",
286 => x"9e9d0400",
287 => x"80040088",
288 => x"fe040000",
289 => x"00940802",
290 => x"940cfd3d",
291 => x"0d805394",
292 => x"088c0508",
293 => x"52940888",
294 => x"05085182",
295 => x"de3f8808",
296 => x"70880c54",
297 => x"853d0d94",
298 => x"0c049408",
299 => x"02940cfd",
300 => x"3d0d8153",
301 => x"94088c05",
302 => x"08529408",
303 => x"88050851",
304 => x"82b93f88",
305 => x"0870880c",
306 => x"54853d0d",
307 => x"940c0494",
308 => x"0802940c",
309 => x"f93d0d80",
310 => x"0b9408fc",
311 => x"050c9408",
312 => x"88050880",
313 => x"25ab3894",
314 => x"08880508",
315 => x"30940888",
316 => x"050c800b",
317 => x"9408f405",
318 => x"0c9408fc",
319 => x"05088838",
320 => x"810b9408",
321 => x"f4050c94",
322 => x"08f40508",
323 => x"9408fc05",
324 => x"0c94088c",
325 => x"05088025",
326 => x"ab389408",
327 => x"8c050830",
328 => x"94088c05",
329 => x"0c800b94",
330 => x"08f0050c",
331 => x"9408fc05",
332 => x"08883881",
333 => x"0b9408f0",
334 => x"050c9408",
335 => x"f0050894",
336 => x"08fc050c",
337 => x"80539408",
338 => x"8c050852",
339 => x"94088805",
340 => x"085181a7",
341 => x"3f880870",
342 => x"9408f805",
343 => x"0c549408",
344 => x"fc050880",
345 => x"2e8c3894",
346 => x"08f80508",
347 => x"309408f8",
348 => x"050c9408",
349 => x"f8050870",
350 => x"880c5489",
351 => x"3d0d940c",
352 => x"04940802",
353 => x"940cfb3d",
354 => x"0d800b94",
355 => x"08fc050c",
356 => x"94088805",
357 => x"08802593",
358 => x"38940888",
359 => x"05083094",
360 => x"0888050c",
361 => x"810b9408",
362 => x"fc050c94",
363 => x"088c0508",
364 => x"80258c38",
365 => x"94088c05",
366 => x"08309408",
367 => x"8c050c81",
368 => x"5394088c",
369 => x"05085294",
370 => x"08880508",
371 => x"51ad3f88",
372 => x"08709408",
373 => x"f8050c54",
374 => x"9408fc05",
375 => x"08802e8c",
376 => x"389408f8",
377 => x"05083094",
378 => x"08f8050c",
379 => x"9408f805",
380 => x"0870880c",
381 => x"54873d0d",
382 => x"940c0494",
383 => x"0802940c",
384 => x"fd3d0d81",
385 => x"0b9408fc",
386 => x"050c800b",
387 => x"9408f805",
388 => x"0c94088c",
389 => x"05089408",
390 => x"88050827",
391 => x"ac389408",
392 => x"fc050880",
393 => x"2ea33880",
394 => x"0b94088c",
395 => x"05082499",
396 => x"3894088c",
397 => x"05081094",
398 => x"088c050c",
399 => x"9408fc05",
400 => x"08109408",
401 => x"fc050cc9",
402 => x"399408fc",
403 => x"0508802e",
404 => x"80c93894",
405 => x"088c0508",
406 => x"94088805",
407 => x"0826a138",
408 => x"94088805",
409 => x"0894088c",
410 => x"05083194",
411 => x"0888050c",
412 => x"9408f805",
413 => x"089408fc",
414 => x"05080794",
415 => x"08f8050c",
416 => x"9408fc05",
417 => x"08812a94",
418 => x"08fc050c",
419 => x"94088c05",
420 => x"08812a94",
421 => x"088c050c",
422 => x"ffaf3994",
423 => x"08900508",
424 => x"802e8f38",
425 => x"94088805",
426 => x"08709408",
427 => x"f4050c51",
428 => x"8d399408",
429 => x"f8050870",
430 => x"9408f405",
431 => x"0c519408",
432 => x"f4050888",
433 => x"0c853d0d",
434 => x"940c04ff",
435 => x"3d0d8188",
436 => x"0b87c092",
437 => x"8c0c810b",
438 => x"87c0928c",
439 => x"0c850b87",
440 => x"c0988c0c",
441 => x"87c0928c",
442 => x"08708206",
443 => x"51517080",
444 => x"2e8a3887",
445 => x"c0988c08",
446 => x"5170e938",
447 => x"87c0928c",
448 => x"08fc8080",
449 => x"06527193",
450 => x"3887c098",
451 => x"8c085170",
452 => x"802e8838",
453 => x"710b0b0b",
454 => x"9ff0340b",
455 => x"0b0b9ff0",
456 => x"33880c83",
457 => x"3d0d04fa",
458 => x"3d0d787b",
459 => x"7d565856",
460 => x"800b0b0b",
461 => x"0b9ff033",
462 => x"81065255",
463 => x"82527075",
464 => x"2e098106",
465 => x"819e3885",
466 => x"0b87c098",
467 => x"8c0c7987",
468 => x"c092800c",
469 => x"840b87c0",
470 => x"928c0c87",
471 => x"c0928c08",
472 => x"70852a70",
473 => x"81065152",
474 => x"5370802e",
475 => x"a73887c0",
476 => x"92840870",
477 => x"81ff0676",
478 => x"79275253",
479 => x"5173802e",
480 => x"90387080",
481 => x"2e8b3871",
482 => x"76708105",
483 => x"5834ff14",
484 => x"54811555",
485 => x"72a20651",
486 => x"70802e8b",
487 => x"3887c098",
488 => x"8c085170",
489 => x"ffb53887",
490 => x"c0988c08",
491 => x"51709538",
492 => x"810b87c0",
493 => x"928c0c87",
494 => x"c0928c08",
495 => x"70820651",
496 => x"5170f438",
497 => x"8073fc80",
498 => x"80065252",
499 => x"70722e09",
500 => x"81068f38",
501 => x"87c0988c",
502 => x"08517072",
503 => x"2e098106",
504 => x"83388152",
505 => x"71880c88",
506 => x"3d0d04fe",
507 => x"3d0d7481",
508 => x"11337133",
509 => x"71882b07",
510 => x"880c5351",
511 => x"843d0d04",
512 => x"fd3d0d75",
513 => x"83113382",
514 => x"12337190",
515 => x"2b71882b",
516 => x"07811433",
517 => x"70720788",
518 => x"2b753371",
519 => x"07880c52",
520 => x"53545654",
521 => x"52853d0d",
522 => x"04f93d0d",
523 => x"790b0b0b",
524 => x"9ff40857",
525 => x"57817727",
526 => x"80ed3876",
527 => x"88170827",
528 => x"80e53875",
529 => x"33557482",
530 => x"2e893874",
531 => x"832eae38",
532 => x"80d53974",
533 => x"54761083",
534 => x"fe065376",
535 => x"882a8c17",
536 => x"08055288",
537 => x"3d705255",
538 => x"fdbd3f88",
539 => x"08b93874",
540 => x"51fef83f",
541 => x"880883ff",
542 => x"ff0655ad",
543 => x"39845476",
544 => x"822b83fc",
545 => x"06537687",
546 => x"2a8c1708",
547 => x"0552883d",
548 => x"705255fd",
549 => x"923f8808",
550 => x"8e387451",
551 => x"fee23f88",
552 => x"08f00a06",
553 => x"55833981",
554 => x"5574880c",
555 => x"893d0d04",
556 => x"fb3d0d0b",
557 => x"0b0b9ff4",
558 => x"08fe1988",
559 => x"1208fe05",
560 => x"55565480",
561 => x"56747327",
562 => x"8d388214",
563 => x"33757129",
564 => x"94160805",
565 => x"57537588",
566 => x"0c873d0d",
567 => x"04fd3d0d",
568 => x"7554800b",
569 => x"0b0b0b9f",
570 => x"f4087033",
571 => x"51535371",
572 => x"832e0981",
573 => x"068c3894",
574 => x"1451fdef",
575 => x"3f880890",
576 => x"2b539a14",
577 => x"51fde43f",
578 => x"880883ff",
579 => x"ff067307",
580 => x"880c853d",
581 => x"0d04fc3d",
582 => x"0d760b0b",
583 => x"0b9ff408",
584 => x"55558075",
585 => x"23881508",
586 => x"5372812e",
587 => x"88388814",
588 => x"08732685",
589 => x"388152b0",
590 => x"39729038",
591 => x"73335271",
592 => x"832e0981",
593 => x"06853890",
594 => x"14085372",
595 => x"8c160c72",
596 => x"802e8b38",
597 => x"7251fed8",
598 => x"3f880852",
599 => x"85399014",
600 => x"08527190",
601 => x"160c8052",
602 => x"71880c86",
603 => x"3d0d04fa",
604 => x"3d0d780b",
605 => x"0b0b9ff4",
606 => x"08712281",
607 => x"057083ff",
608 => x"ff065754",
609 => x"57557380",
610 => x"2e883890",
611 => x"15085372",
612 => x"86388352",
613 => x"80dc3973",
614 => x"8f065271",
615 => x"80cf3881",
616 => x"1390160c",
617 => x"8c150853",
618 => x"728f3883",
619 => x"0b841722",
620 => x"57527376",
621 => x"27bc38b5",
622 => x"39821633",
623 => x"ff057484",
624 => x"2a065271",
625 => x"a8387251",
626 => x"fcdf3f81",
627 => x"52718808",
628 => x"27a03883",
629 => x"52880888",
630 => x"17082796",
631 => x"3888088c",
632 => x"160c8808",
633 => x"51fdc93f",
634 => x"88089016",
635 => x"0c737523",
636 => x"80527188",
637 => x"0c883d0d",
638 => x"04f23d0d",
639 => x"60626458",
640 => x"5e5c7533",
641 => x"5574a02e",
642 => x"09810688",
643 => x"38811670",
644 => x"4456ef39",
645 => x"62703356",
646 => x"5674af2e",
647 => x"09810684",
648 => x"38811643",
649 => x"800b881d",
650 => x"0c627033",
651 => x"5155749f",
652 => x"268f387b",
653 => x"51fddf3f",
654 => x"88085680",
655 => x"7d3482d3",
656 => x"39933d84",
657 => x"1d087058",
658 => x"5a5f8a55",
659 => x"a0767081",
660 => x"055834ff",
661 => x"155574ff",
662 => x"2e098106",
663 => x"ef388070",
664 => x"595b887f",
665 => x"085f5a7a",
666 => x"811c7081",
667 => x"ff066013",
668 => x"703370af",
669 => x"327030a0",
670 => x"73277180",
671 => x"25075151",
672 => x"525b535d",
673 => x"57557480",
674 => x"c73876ae",
675 => x"2e098106",
676 => x"83388155",
677 => x"777a2775",
678 => x"07557480",
679 => x"2e9f3879",
680 => x"88327030",
681 => x"78ae3270",
682 => x"30707307",
683 => x"9f2a5351",
684 => x"57515675",
685 => x"9b388858",
686 => x"8b5affab",
687 => x"39778119",
688 => x"7081ff06",
689 => x"721c535a",
690 => x"57557675",
691 => x"34ff9839",
692 => x"7a1e7f0c",
693 => x"805576a0",
694 => x"26833881",
695 => x"55748b1a",
696 => x"347b51fc",
697 => x"b13f8808",
698 => x"80ef38a0",
699 => x"547b2270",
700 => x"852b83e0",
701 => x"06545590",
702 => x"1c08527c",
703 => x"51f8a83f",
704 => x"88085788",
705 => x"0880fb38",
706 => x"7c335574",
707 => x"802e80ee",
708 => x"388b1d33",
709 => x"70832a70",
710 => x"81065156",
711 => x"5674b238",
712 => x"8b7d841e",
713 => x"08880859",
714 => x"5b5b58ff",
715 => x"185877ff",
716 => x"2e9a3879",
717 => x"7081055b",
718 => x"33797081",
719 => x"055b3371",
720 => x"71315256",
721 => x"5675802e",
722 => x"e2388639",
723 => x"75802e92",
724 => x"387b51fc",
725 => x"9a3fff8e",
726 => x"39880856",
727 => x"8808b438",
728 => x"83397656",
729 => x"841c088b",
730 => x"11335155",
731 => x"74a5388b",
732 => x"1d337084",
733 => x"2a708106",
734 => x"51565674",
735 => x"89388356",
736 => x"92398156",
737 => x"8e397c51",
738 => x"fad33f88",
739 => x"08881d0c",
740 => x"fdaf3975",
741 => x"880c903d",
742 => x"0d04f93d",
743 => x"0d797b59",
744 => x"57825483",
745 => x"fe537752",
746 => x"7651f6fb",
747 => x"3f835688",
748 => x"0880e738",
749 => x"7651f8b3",
750 => x"3f880883",
751 => x"ffff0655",
752 => x"82567482",
753 => x"d4d52e09",
754 => x"810680ce",
755 => x"387554b6",
756 => x"53775276",
757 => x"51f6d03f",
758 => x"88085688",
759 => x"08943876",
760 => x"51f8883f",
761 => x"880883ff",
762 => x"ff065574",
763 => x"8182c62e",
764 => x"a9388254",
765 => x"80d25377",
766 => x"527651f6",
767 => x"aa3f8808",
768 => x"56880894",
769 => x"387651f7",
770 => x"e23f8808",
771 => x"83ffff06",
772 => x"55748182",
773 => x"c62e8338",
774 => x"81567588",
775 => x"0c893d0d",
776 => x"04ed3d0d",
777 => x"6559800b",
778 => x"0b0b0b9f",
779 => x"f40cf59b",
780 => x"3f880881",
781 => x"06558256",
782 => x"7482f238",
783 => x"7475538d",
784 => x"3d705357",
785 => x"5afed33f",
786 => x"880881ff",
787 => x"06577681",
788 => x"2e098106",
789 => x"b3389054",
790 => x"83be5374",
791 => x"527551f5",
792 => x"c63f8808",
793 => x"ab388d3d",
794 => x"33557480",
795 => x"2eac3895",
796 => x"3de40551",
797 => x"f78a3f88",
798 => x"08880853",
799 => x"76525afe",
800 => x"993f8808",
801 => x"81ff0657",
802 => x"76832e09",
803 => x"81068638",
804 => x"81568299",
805 => x"3976802e",
806 => x"86388656",
807 => x"828f39a4",
808 => x"548d5379",
809 => x"527551f4",
810 => x"fe3f8156",
811 => x"880881fd",
812 => x"38953de5",
813 => x"0551f6b3",
814 => x"3f880883",
815 => x"ffff0658",
816 => x"778c3895",
817 => x"3df30551",
818 => x"f6b63f88",
819 => x"085802af",
820 => x"05337871",
821 => x"29028805",
822 => x"ad057054",
823 => x"52595bf6",
824 => x"8a3f8808",
825 => x"83ffff06",
826 => x"7a058c1a",
827 => x"0c8c3d33",
828 => x"821a3495",
829 => x"3de00551",
830 => x"f5f13f88",
831 => x"08841a23",
832 => x"953de205",
833 => x"51f5e43f",
834 => x"880883ff",
835 => x"ff065675",
836 => x"8c38953d",
837 => x"ef0551f5",
838 => x"e73f8808",
839 => x"567a51f5",
840 => x"ca3f8808",
841 => x"83ffff06",
842 => x"76713179",
843 => x"31841b22",
844 => x"70842a82",
845 => x"1d335672",
846 => x"71315559",
847 => x"5c5155ee",
848 => x"c43f8808",
849 => x"82057088",
850 => x"1b0c8808",
851 => x"e08a0556",
852 => x"567483df",
853 => x"fe268338",
854 => x"825783ff",
855 => x"f6762785",
856 => x"38835789",
857 => x"39865676",
858 => x"802e80c1",
859 => x"38767934",
860 => x"76832e09",
861 => x"81069038",
862 => x"953dfb05",
863 => x"51f5813f",
864 => x"8808901a",
865 => x"0c88398c",
866 => x"19081890",
867 => x"1a0c7983",
868 => x"ffff068c",
869 => x"1a081971",
870 => x"842a0594",
871 => x"1b0c5580",
872 => x"0b811a34",
873 => x"780b0b0b",
874 => x"9ff40c80",
875 => x"5675880c",
876 => x"953d0d04",
877 => x"ea3d0d0b",
878 => x"0b0b9ff4",
879 => x"08558554",
880 => x"74802e80",
881 => x"df38800b",
882 => x"81163498",
883 => x"3de01145",
884 => x"6954893d",
885 => x"705457ec",
886 => x"0551f89d",
887 => x"3f880854",
888 => x"880880c0",
889 => x"38883d33",
890 => x"5473802e",
891 => x"933802a7",
892 => x"05337084",
893 => x"2a708106",
894 => x"51555773",
895 => x"802e8538",
896 => x"8354a139",
897 => x"7551f5d5",
898 => x"3f8808a0",
899 => x"160c983d",
900 => x"dc0551f3",
901 => x"eb3f8808",
902 => x"9c160c73",
903 => x"98160c81",
904 => x"0b811634",
905 => x"73880c98",
906 => x"3d0d04f6",
907 => x"3d0d7d7f",
908 => x"7e0b0b0b",
909 => x"9ff40859",
910 => x"5b5c5880",
911 => x"7b0c8557",
912 => x"75802e81",
913 => x"d1388116",
914 => x"33810655",
915 => x"84577480",
916 => x"2e81c338",
917 => x"91397481",
918 => x"17348639",
919 => x"800b8117",
920 => x"34815781",
921 => x"b1399c16",
922 => x"08981708",
923 => x"31557478",
924 => x"27833874",
925 => x"5877802e",
926 => x"819a3898",
927 => x"16087083",
928 => x"ff065657",
929 => x"7480c738",
930 => x"821633ff",
931 => x"0577892a",
932 => x"067081ff",
933 => x"065b5579",
934 => x"9e387687",
935 => x"38a01608",
936 => x"558b39a4",
937 => x"160851f3",
938 => x"803f8808",
939 => x"55817527",
940 => x"ffaa3874",
941 => x"a4170ca4",
942 => x"160851f3",
943 => x"f33f8808",
944 => x"55880880",
945 => x"2eff8f38",
946 => x"88081aa8",
947 => x"170c9816",
948 => x"0883ff06",
949 => x"84807131",
950 => x"51557775",
951 => x"27833877",
952 => x"55745498",
953 => x"160883ff",
954 => x"0653a816",
955 => x"08527851",
956 => x"f0b53f88",
957 => x"08fee538",
958 => x"98160815",
959 => x"98170c77",
960 => x"75317b08",
961 => x"167c0c58",
962 => x"78802efe",
963 => x"e8387419",
964 => x"59fee239",
965 => x"80577688",
966 => x"0c8c3d0d",
967 => x"04fb3d0d",
968 => x"87c0948c",
969 => x"08548784",
970 => x"80527351",
971 => x"ead73f88",
972 => x"08902b87",
973 => x"c0948c08",
974 => x"56548784",
975 => x"80527451",
976 => x"eac33f73",
977 => x"88080787",
978 => x"c0948c0c",
979 => x"87c0949c",
980 => x"08548784",
981 => x"80527351",
982 => x"eaab3f88",
983 => x"08902b87",
984 => x"c0949c08",
985 => x"56548784",
986 => x"80527451",
987 => x"ea973f73",
988 => x"88080787",
989 => x"c0949c0c",
990 => x"8c80830b",
991 => x"87c09484",
992 => x"0c8c8083",
993 => x"0b87c094",
994 => x"940c9ff8",
995 => x"51f9923f",
996 => x"8808b838",
997 => x"9fe051fc",
998 => x"9b3f8808",
999 => x"ae38a080",
1000 => x"0b880887",
1001 => x"c098880c",
1002 => x"55873dfc",
1003 => x"05538480",
1004 => x"527451fc",
1005 => x"f63f8808",
1006 => x"8d387554",
1007 => x"73802e86",
1008 => x"38731555",
1009 => x"e439a080",
1010 => x"54730480",
1011 => x"54fb3900",
1012 => x"00ffffff",
1013 => x"ff00ffff",
1014 => x"ffff00ff",
1015 => x"ffffff00",
1016 => x"424f4f54",
1017 => x"54494e59",
1018 => x"2e524f4d",
1019 => x"00000000",
1020 => x"01000000",
others => x"00000000"
);
begin
process (clk)
begin
if (clk'event and clk = '1') then
if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
report "write collision" severity failure;
end if;
if (memAWriteEnable = '1') then
ram(to_integer(unsigned(memAAddr(ADDR_32BIT_BRAM_RANGE)))) := memAWrite;
memARead <= memAWrite;
else
memARead <= ram(to_integer(unsigned(memAAddr(ADDR_32BIT_BRAM_RANGE))));
end if;
end if;
end process;
process (clk)
begin
if (clk'event and clk = '1') then
if (memBWriteEnable = '1') then
ram(to_integer(unsigned(memBAddr(ADDR_32BIT_BRAM_RANGE)))) := memBWrite;
memBRead <= memBWrite;
else
memBRead <= ram(to_integer(unsigned(memBAddr(ADDR_32BIT_BRAM_RANGE))));
end if;
end if;
end process;
end arch;