mikrocontroller.net

Forum: FPGA, VHDL & Co. Dual-Port RAM mit unterschiedlicher Bus-Breite


Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist es möglich ein 1kByte RAM so zu implementieren, dass auf der einen
Seite ein 32Bit Datenbus und auf der anderen Seite ein 16Bit Datenbus
zur Verfügung stehen?

Wenn ja, wie?

Autor: Jürgen Schuhmacher (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicherlich. Kannst ja auf der 16Bitseite mit highword und lowwordzugriff
arbeiten.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du ein internes Dual-Port-Ram in einem FPGA meinst, dann ist es bei
Xilinx auch möglich. Am besten Du verwendest den Core-Generator und
setzt Width A und Width B nach deinen Wünschen.

Klaus

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht 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;
------------------------------------------------------

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ....

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe nicht ganz, was die waits dort machen. DP heisst ja eigentlich
simultaner, ungeblockter Zuriff. Oder sind das interne Signale, anderer
Bedeutung?

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@chris:

Wo genau finde ich diese Code Templates? Im ISE?
(habe 6.3 und 8.1 im Einsatz)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.