www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Wie funktioniert Logik eines Dual-Port-RAMs?


Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Dual-Port-RAMs sind sehr teuer und nur mit kleinen kapazitäten
erhältlich. Ich spiele deshalb mit dem Gedanken mit einem normalen RAM
ein Dual-Port-RAM zu machen. Kann mir jemand sagen wie so ein RAM
wirklich im innern funktioniert. Also wie so einen Logik aufgebaut ist
?

Oder vielleicht kenn jemand so eine Schaltung?

Könnte man also mit einem schnellen RAM und einem CPLD ein solches RAM
machen?

Gruss

Weihnachtsmann

Autor: Uli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Dualportram! Wie schnell willst du auf den Speicher zugreifen.
Mit meiner 8Bit Grafikkarte geht das bei 8Mhz, ist aber auch kein
Problem es scheller hinzubekommen. Ich greife zuert mit einen Port zu
und dann mit den anderen Port. Dazu sollte der Speicher aber schnell
genug sein. Schau dir mal das Projekt an, unter Codesammlung.

Mfg Ulrich

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das geht. Ich baue daran an mehreren Projekten wie VGA Grafikkarte
oder Propeller Clock. Ich benutz einen 10ns asynchronen SRAM, der CPLD
wird mit 32MHz getaktet was 32ns Periode und 16ns pro Flanke ergibt.
Der CPLD multiplext nun zwei Ein-/Ausgangsbusse auf den Bus des SRAMs.
Bei 1 am Takt Bus 1 und bei 0 am Takt Bus 2. Abwechselnd können also
beide Geräte seuqentiell gemultiplext mit max. 32Mhz auf den SRAM
zugreifen. Es entstehen dabei aber Unterschiede zu richtigen
Dual-Port-SRAMs. Es gibt nämlich keine richtige Synchronisierng bei dem
Konzept bei Zugriffen beider Geräte auf die gleichen Speicherzellen.
Immer das Gerät 1 ist einen Halbtakt früher beim Lesen der gleichen
Speicherzelle dran wie das Gerät 2. Schreibt Gerät 2 also die gleiche
Speicherzelle so hat Geräte 1 noch den alten Inhalt geladen. Usw. usw.
Bei Dual-Port-SRAM's wird dies verhindert, man hat zusätzliche
Steuerleitungen die solche Konflikte anzeigen und einige
Dual-Port-SRAM's haben sogar spezielle Speicherbereiche die die
Imnplementierung eines sauberen "Lockings" ermöglichen.

Nungut, bei mir geht esd hauptsächlich darum das drr AVR als Master
sowohl Lesend wie auch Schreibend auf den SRAM Zugriff hat (ohne
Waitstates). Parallel dazu hat der CPLD selber lesenden Zugriff,
sozusagen liest er den Bildschirmspeicher aus und wandelt das in die
entsprechenden Signale um.

Beim AVR ist das XMEM Interface ebenfalls asynchron. Deshalb ergibt
sich bei 16Mhz Takt des AVR's ein minimal Takt des CPLD's von 32MHz
(wenn er Flankenbasiert auf das SRAM zugreift). Innerhalb eines 16 MHz
Taktes = ~WR Signalperiode ist ca 62ns wird der CPLD also mindestens 1
mal einen kompletten Zugriff für den AVR auf den SRAM durchführen
können. Im besten Falle sind es aber zwei Zugriffe. D.h. der CPLD-SRAM
Takt muß 4 mal höher sein als der Takt der angeschlossenen Geräte, wenn
sie ebenfalls ansynchron zugreifen wollen.

Bei 32MHz ergibt das also 15.625ns Zugriffe auf das SRAM. Asynchrone
SRAM's haben keine Nachlaufzeiten, d.h. sie schalten sofort bei
steigenden Flanken an CE/OE/WR die Datenleitungen auf Z. Das ist
wichtig. Die maximale Ansprechzeit beträgt 10ns bei der die
Addressleitungen gültig sein müssen. +5 ns um die Datenleitungen vom
High-Z runterzubekommen. Ergibt maximal 15ns Timeslots die ein 10ns
SRAM hergeben kann. Man ist also mit 32MHz für den CPLD schon fast am
Ende der Fahnenstange wenn man 10ns SRAM's benutzen möchte (schnellere
sind schweineteuer). Als CPLD nehme ich 5ns Typen.

Gruß Hagen

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Das kling ja sehr interessant.
Ich brauche einen  Bus als Eingang zum beschreiben dieses RAMs.
Beschrieben wird es mit einem PC, hier habe ich genug Zeit.
Den anderen Bus braucht ich als Ausgan, der wird von einem
Microcontroller gelesen und hat volle priorität. Der darf also nicht
gestört werden da dieser sonst abstürzt.
Reicht es wenn ich den Datenbus am Ausgang während des Beschreibens mit
einem Latch sichere?

Blöde Frage was ist der genaue Unterschied von normalen RAMs zu
Asynchronen RAMs?

Hast du vielleicht einen ganz ganz einfaches Schema?


Gruss

Weihnachtsmann

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry Uli

Habe dein Thread erst später gesehen.
Zielgerät läuft mit 20 Mhz gut wäre aber auch 40 Mhz.

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Uli

Ich habe versucht mit dem Webpack die Konfigration von CPLD zu lesen.
Ging nicht bekam einen Fehler. Hast du vielleicht sonst noch einen
Schaltplan um zu begreifen wie die Logik für das RAM-Managemet ist?

Eine Grafikkarte für einen AVR finde ich eine Megasuper-Idee.
Das kannst du ja ein Game für den Fernseher machen oder eine KO oder
oder. Ich kann nur sage: Hut ab.

Gruss

Weihnachtsmann

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.