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


von Weihnachtsmann (Gast)


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

von Uli (Gast)


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

von Hagen (Gast)


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

von Weihnachtsmann (Gast)


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

von Weihnachtsmann (Gast)


Lesenswert?

Sorry Uli

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

von Weihnachtsmann (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.