blob: 0bb6191f1f7ada18ad2a5bc5cd1e808e7f586dd9 (
plain)
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
|
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))) := memAWrite;
memARead <= memAWrite;
else
memARead <= ram(to_integer(unsigned(memAAddr)));
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))) := memBWrite;
memBRead <= memBWrite;
else
memBRead <= ram(to_integer(unsigned(memBAddr)));
end if;
end if;
end process;
end dualport_ram_arch;
|