Dual Port RAM im BlockRAM mit 2 frequenzen?

Gast #912626
Lesenswert?

Guten Tag!

für meinen Projekt habe ich ein DualPort RAM geschrieben:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.numeric_std.all;
4
-----------------------------------------------------------------------------
5
entity vram is
6

7
  port
8
  (
9
    clka        : in std_logic;
10
    dina  : in std_logic_vector(7 downto 0);
11
    addra   : in std_logic_vector(12 downto 0);
12
    wea         : in std_logic;
13
    addrb    : in std_logic_vector(12 downto 0);
14
    doutb     : out std_logic_vector(7 downto 0)
15
  );
16

17
end vram;
18

19
architecture ram_arch of vram is
20

21
  type ram_t is array (0 to 8191) of std_logic_vector(7 downto 0);
22
  signal ram : ram_t;
23

24
begin
25

26
process(clka) -- clka 56MHz
27
begin
28
  if(clka'event and clka = '1') then
29
    if wea = '1' then
30
      ram(to_integer(unsigned(addra))) <= dina;
31
    end if;
32
  end if;
33
end process;
34

35
doutb <= ram(to_integer(unsigned(addrb)));
36

37
end ram_arch;

Daten werden mit 56MHz geschrieben und mit 35MHz ausgelesen.
Geht es so oder soll ich besser daten so auslesen???
1
process(clkb) -- clkb 35MHz
2
begin
3
  if(clkb'event and clkb = '1') then
4
    doutb <= ram(to_integer(unsigned(addrb)));
5
  end if;
6
end process;
Gast #914978
Lesenswert?

Hast du denn mal geschaut, ob deine VHDL-Beschreibung für das RAM
vom Synthese-Tool auch als RAM (Embedded RAM) implementiert wird
(sollte in irgendeinem Map/Ressourcen-Report ersichtlich sein) ?

Wieso verwendest du nicht ein Dual-Clock-RAM-Template ? Oder
benötigst du das RAM lediglich für Simulationszwecke ?

Gruß
Willy
Gast #914999
Lesenswert?

Ein BRAM kann von der Synthese eingesetzt werden, wenn die Adresse 
registiert (getaktet) ist. Es ist irrelevant, ob der Ausgang ebenfalls 
getaktet oder concurrent zugewiesen wird.
Wenn die Adresse kombinatorisch ist, wird ein Distributed RAM 
eingesetzt.

D.h. es müsste auf jeden Fall auch die Adresse B registriert werden.
Und damit gilt fürs Auslesen die Schreibweise 2.

Nach der Synthese im Synthese-Report nachsehen, ob auch wirklich BRAMs 
eingesetzt wurden.


Was der Berater meint dürfte ein Handshake sein, mit dem die schreibende 
Seite der lesenden Seite mitteilt, dass da was zum Abholen bereitsteht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren