Dual-Port RAM mit unterschiedlicher Bus-Breite

Gast #418217
Lesenswert?
• ▲
▼
Ich kenne es von den Altera Blockramzellen her: Dort ist das möglich:
Der eine Bus hat eine Adresse weniger, wobei zwei Teilzellen zu 16 bit
gleichzeitig adressiert und beschrieben werden. Das kann man aber auch
per Hand aus zwei 16-Wort RAMs aufbauen.
Angehängte Dateien:
OP #418220
Lesenswert?
• ▲
▼
Die Antwort von Jürgen kommt der Sache schon recht nahe.
Doch wie formuliere ich das in VHDL?

Im Moment ist das RAM so formuliert:
(auf Seite A nur Schreiben, auf Seite B nur Lesen)
------------------------------------------------------
architecture ReadThroughRAM512Byte16Bit_arch of
ReadThroughRAM512Byte16Bit is
    -- RAM Definition
    type ram_type is array (511 downto 0) of STD_LOGIC_VECTOR(15 downto
0);
    signal RAM      : ram_type;
    signal AB_sig   : STD_LOGIC_VECTOR(8 downto 0);
    -- wait Signale
    signal WAITA_sig     : STD_LOGIC;
    signal WAITB_sig     : STD_LOGIC;

begin
    process (INT_CLK)
    begin
        if rising_edge(INT_CLK) then
            if WEA = '1' then
                RAM(conv_integer(AA)) <= DA;
              end if;
            AB_sig   <= AB;
        end if;
    end process;
    DB <= RAM(conv_integer(AB_sig));

    -- wait Signal auf die andere Seite weitergeben
    WAITA_sig       <=  CSB;
    WAITA           <=  WAITA_sig;
    WAITB_sig       <=  CSA;
    WAITB           <=  WAITB_sig;
end ReadThroughRAM512Byte16Bit_arch;
------------------------------------------------------
Gast #418221
Lesenswert?
• ▲
▼
hallo schau doch mal unter den code templates :
VHDL -> Device Primitive Instantiation -> FPGA -> RAM\ROM -> Block RAM
-> Virtex2 Spartan 3 -> Dual Port Ram Missmatched Port Size ....

Weis ja nicht was du für ein FPGA hast ....
vielleicht hillfts ja weiter ....
OP #418223
Lesenswert?
• ▲
▼
Jürgen,

Sorry, das sind wirklich "andere" Signale.
Die haben mit dem eigentlichen DP RAM nichts zu tun und werden nur für
den Zugriffsschutz gebraucht, sozusagen als Handshaking dass die andere
Seite jeweils weiss, was die eine gerade tut. Eine Art
Einfachst-RAM-Arbiter also.

Gruss, Martin

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.