1 |
6 |
dilbert57 |
library IEEE;
|
2 |
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
3 |
|
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
4 |
|
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
5 |
|
|
library unisim;
|
6 |
|
|
use unisim.all;
|
7 |
|
|
--library simprim;
|
8 |
|
|
-- use simprim.all;
|
9 |
|
|
|
10 |
|
|
entity swtbug_rom is
|
11 |
|
|
Port (
|
12 |
|
|
clk : in std_logic;
|
13 |
|
|
rst : in std_logic;
|
14 |
|
|
cs : in std_logic;
|
15 |
|
|
rw : in std_logic;
|
16 |
|
|
addr : in std_logic_vector (9 downto 0);
|
17 |
|
|
wdata : in std_logic_vector (7 downto 0);
|
18 |
|
|
rdata : out std_logic_vector (7 downto 0)
|
19 |
|
|
);
|
20 |
|
|
end swtbug_rom;
|
21 |
|
|
|
22 |
|
|
architecture rtl of swtbug_rom is
|
23 |
|
|
|
24 |
|
|
signal we : std_logic;
|
25 |
|
|
signal reset : std_logic;
|
26 |
|
|
signal rdata0 : std_logic_vector (7 downto 0);
|
27 |
|
|
signal rdata1 : std_logic_vector (7 downto 0);
|
28 |
|
|
signal ena0 : std_logic;
|
29 |
|
|
signal ena1 : std_logic;
|
30 |
|
|
|
31 |
|
|
component RAMB4_S8
|
32 |
|
|
generic (
|
33 |
|
|
INIT_00, INIT_01, INIT_02, INIT_03,
|
34 |
|
|
INIT_04, INIT_05, INIT_06, INIT_07,
|
35 |
|
|
INIT_08, INIT_09, INIT_0A, INIT_0B,
|
36 |
|
|
INIT_0C, INIT_0D, INIT_0E, INIT_0F : bit_vector (255 downto 0) :=
|
37 |
|
|
x"0000000000000000000000000000000000000000000000000000000000000000"
|
38 |
|
|
);
|
39 |
|
|
|
40 |
|
|
port (
|
41 |
|
|
clk, we, en, rst : in std_logic;
|
42 |
|
|
addr : in std_logic_vector(8 downto 0);
|
43 |
|
|
di : in std_logic_vector(7 downto 0);
|
44 |
|
|
do : out std_logic_vector(7 downto 0)
|
45 |
|
|
);
|
46 |
|
|
end component;
|
47 |
|
|
|
48 |
|
|
begin
|
49 |
|
|
|
50 |
|
|
ROM0 : RAMB4_S8
|
51 |
|
|
generic map (
|
52 |
|
|
INIT_00 => x"7FF026318129273981618DFA265381678D34E3BD041610006E408D006E00A0FE",
|
53 |
|
|
INIT_01 => x"CF270FA07CF02008082600A100A7092747A07A288D1C8D47A0B70280318D0FA0",
|
54 |
|
|
INIT_02 => x"161B4C8D1648484848538D390DA0FE0EA0B7078D0DA0B70C8DD4E27E318D3F86",
|
55 |
|
|
INIT_03 => x"00A608F88DACE17ED1E17E078B02233981308B0F8444444444390FA0F70FA0FB",
|
56 |
|
|
INIT_04 => x"272081DB8D318D318D0DA0FE348D0DA0CEEF8D9DE1CEBD8D4AE17E39F7260481",
|
57 |
|
|
INIT_05 => x"A6390780402E1681442B11810A2F09814C2B3080CC8D012C205E81E0270D81FA",
|
58 |
|
|
INIT_06 => x"A0FFAC200DA0FF090907262C2042A08EA5202086F38DF58DA3200800A6A48D00",
|
59 |
|
|
INIT_07 => x"2008A0BE40E07E912700A100A70957E0BDBD8D9D224681A12530816D2002200D",
|
60 |
|
|
INIT_08 => x"A7118600A7038639261920022002A100A684E2BD0480CE08E3BDFF8608A0BF49",
|
61 |
|
|
INIT_09 => x"8A8D8C8D8E8D0808A0FE7EE0BD9DE1CE066A056A0226066D3008A0BF012F2000",
|
62 |
|
|
INIT_0A => x"738D0CA07F0AA0FF0480CE42A08E192723E18C12A0FEC8E0BD08A0CE848D868D",
|
63 |
|
|
INIT_0B => x"6E01EECCE0BD072600A1D1E3CE398D7EE0BD9CE1CE47E3BD53E3BD7DE2BD0327",
|
64 |
|
|
INIT_0C => x"150A0D13043153000000150A0D043953006E12A0FEBF20ED26F8E38C08080800",
|
65 |
|
|
INIT_0D => x"0DA0FF00A61655E0BD47E0BD04A0FF47E0BD4020006E06A0FE4C200424000000",
|
66 |
|
|
INIT_0E => x"393303E101E6370AA0FE10A0FF3A203B10200DA0CE7EE0BD9DE1CE2120022711",
|
67 |
|
|
INIT_0F => x"A600A715862826DA8D37313131397F84068DCD20089E2704A0BC0DA0FEC8E0BD"
|
68 |
|
|
)
|
69 |
|
|
|
70 |
|
|
port map ( clk => clk,
|
71 |
|
|
en => ena0,
|
72 |
|
|
we => we,
|
73 |
|
|
rst => reset,
|
74 |
|
|
addr(8 downto 0) => addr(8 downto 0),
|
75 |
|
|
di(7 downto 0) => wdata(7 downto 0),
|
76 |
|
|
do(7 downto 0) => rdata0(7 downto 0)
|
77 |
|
|
);
|
78 |
|
|
|
79 |
|
|
ROM1 : RAMB4_S8
|
80 |
|
|
generic map (
|
81 |
|
|
INIT_00 => x"FE3301A7FA24575700E600E711C62E26C38D37112007270CA0F601A6FB244700",
|
82 |
|
|
INIT_01 => x"DE2013270CA0F6218DF7265A4600690D2A8D5802E704C63A8DFC2B00A63910A0",
|
83 |
|
|
INIT_02 => x"026CFC2A026DC420028DC82A5802E6F7265A460D00A7108D168D006A0AC6238D",
|
84 |
|
|
INIT_03 => x"A7348676E17E17EFE3CE078D108D0AA0FE0BA07F16838DF120F78D026F39026A",
|
85 |
|
|
INIT_04 => x"066FFA2601C504E6258D0BC62E8D14807F3902A7006C01A70786006C3902A703",
|
86 |
|
|
INIT_05 => x"8D04E700247EEF2601C51880F60800A71B80B6062702C50024CE178D9CC61D8D",
|
87 |
|
|
INIT_06 => x"2712A0BC23E1CE582047E3BDF18D7EE0BD09E0CE39FA2614808C09FFFFCE3900",
|
88 |
|
|
INIT_07 => x"A0B614A0FE6BE17E1E8D23E1CE00A73F8616A0B700A614A0FF47E0BD328D081A",
|
89 |
|
|
INIT_08 => x"A0CE0F205A8D3912A0FF24E1CE062723E18C12A0FE43A0B7DA2024E1CE00A716",
|
90 |
|
|
INIT_09 => x"D9E1BD1A8D20C611860CA07352E17E918D248D7EE0BD90E1CE528D0904A0FF49",
|
91 |
|
|
INIT_0A => x"861627D6E1BD75E0BD08C61486042004C612860A2010C613863903A73C860427",
|
92 |
|
|
INIT_0B => x"A0B6CF8D44A0FF02A0FE3900E701A70686028D00E701C60286088D0C8D01CA02",
|
93 |
|
|
INIT_0C => x"BD93E1CE46A0B7038047A0B7048B0F8602251081042644A0F204A0F645A0B005",
|
94 |
|
|
INIT_0D => x"8D30375344A0FFF92646A07A188D44A0FE1D8D1F8D44A0CE248D47A0CE5F7EE0",
|
95 |
|
|
INIT_0E => x"30E152AEE14688E04D00C05AD0E147BFE07E00EB39B32604A0BC0944A0FE330B",
|
96 |
|
|
INIT_0F => x"D0E0A7E18BE100E01EE3450CE04C1AE35069E24FD9E2428FE244CCE24305E04A"
|
97 |
|
|
)
|
98 |
|
|
|
99 |
|
|
port map ( clk => clk,
|
100 |
|
|
en => ena1,
|
101 |
|
|
we => we,
|
102 |
|
|
rst => reset,
|
103 |
|
|
addr(8 downto 0) => addr(8 downto 0),
|
104 |
|
|
di(7 downto 0) => wdata(7 downto 0),
|
105 |
|
|
do(7 downto 0) => rdata1(7 downto 0)
|
106 |
|
|
);
|
107 |
|
|
|
108 |
|
|
my_swtbug : process ( clk, rst, cs, rw, rdata0, rdata1 )
|
109 |
|
|
begin
|
110 |
|
|
if addr(9) = '0' then
|
111 |
|
|
ena0 <= cs;
|
112 |
|
|
ena1 <= '0';
|
113 |
|
|
rdata <= rdata0;
|
114 |
|
|
else
|
115 |
|
|
ena0 <= '0';
|
116 |
|
|
ena1 <= cs;
|
117 |
|
|
rdata <= rdata1;
|
118 |
|
|
end if;
|
119 |
|
|
|
120 |
|
|
we <= cs and (not rw);
|
121 |
|
|
reset <= '0';
|
122 |
|
|
|
123 |
|
|
end process my_swtbug;
|
124 |
|
|
|
125 |
|
|
end;
|
126 |
|
|
|