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
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
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
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
Sorry Uli Habe dein Thread erst später gesehen. Zielgerät läuft mit 20 Mhz gut wäre aber auch 40 Mhz.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.