Dual Port RAM

Gast #544185
hallo,

Cypress:
FLEx18(TM) 3.3V 64K/128K/256K/512K x 18 Synchronous Dual-Port RAM

was genau bedeutet 32k x 18?

bedeutet die 32k, dass 32 Speicherplätze zur Verfügung stehen in jedem 
der beiden Register; man also auf einen schlag 32 Bits hineinschieben 
kann?

und bei der zahl 18 bin ich leider überfragt??

Mike
Persönliche Seite
Wenn Du 18 Bit breit organisierte RAMs mit einem 32 Bit breiten Datenbus 
verwendest, sollte Dir doch eigentlich klar sein, daß Du zwei davon 
verwenden musst und die vier unbenutzen Bits halt abklemmst/ins Leere 
laufen lässt.

Bei Speicherbausteinen wird üblicherweise deren Kapazität in der Form

  (Anzahl Speicherstellen) * (Wortbreite) angegeben,

ein 32k * 8 - RAM hat also eine Kapazität von 32 kByte und speichert 
ganze Bytes.

Das von Dir zitierte (oder eher herbeigeahnte) RAM ist aber ein 32k * 18 
- RAM, es hat also eine Kapazität von 32 kWorten, wobei ein Wort eben 18 
Bit breit ist.

Diese ungewöhnliche Wortbreite dient beispielsweise dem Unterbringen von 
Pariätsinformationen oder dem "Wer hat geschrieben?" - schließlich 
handelt es sich ja um ein Dual-Port-RAM.

Was bitte ist Deine Anwendung?
Doch natürlich kannst du in diesen Chip 2 * 16 Bit gleichzeitig 
unterbringen bzw. auslesen - dafür ist so ein "Dual Port" Ram da.
Bei einen Chip, den ich benutze(1k * 8 von idt) sind dazu auch alle Pins 
doppelt vorgesehen z.B. OEL, OEH, CSL, CSH usw...
Gast
hmm von einer ethernet-schnittstelle kommen die daten an und werden über 
den ersten µC in den dual port ram zwischengespeichert. diese daten 
werden von einem zweiten µC wieder aus dem ram geholt und an die 
veschiedenen outputs weitergeleitet.

die verbindung zum Ram muss parallel erfolgen, weil alle 32 bits (daher 
möchte ich auch 32 I/O haben beim dual port ram) gleichzeitig 
rausgeschickt werden müssen.

daher möchte ich gern 2k x 16 (zweimal) verwenden damit ich 32 I/O habe. 
die 2k brauch ich nicht, ist klar, aber was anderes hab ich noch nicht 
gefunden, was mir das realisieren würde... die taktraten der beiden µC 
sind nämlich unterschiedlich und die baudrate mit der die daten an den 
ersten µC kommen und vom zweiten wieder gehen ist auch unterschiedlich.

alles auf einem µC geht nicht, da ich nicht soviele I/O zur verfügung 
habe.
Gast
>Ja, dann brauchst Du entweder etwas mit xxxk * 32 oder eben zwei
>Käferchen mit xxxk * 16.

so würde ich das auch sehen... und nachdem die 16ner erst mit 2k 
anfangen wollt oder möchte ich gern 2k x 16 (zweimal) verwenden...
@Rufus ..

dann schau dir mal bitte den CY7C027 an
(hxxp://download.cypress.com.edgesuite.net/design_resources/datasheets/c 
ontents/cy7c027_8.pdf)  ist ein DUAL Port Ram 32k * 16Bit 12ns.

und dann sag mir mal bitte, ob man an diesen Chip keine Doppelten 
Signale
finden kann thx.
Gast
noch eine frage die mich grad beschäftigt: die A-Leitungen für was sind 
diese gedacht?

I/O sind die 16 ein- und ausgänge und RE und WR für das Schreiben und 
Lesen (zum steuern) und zwei Taktleitungen zum schreiben und lesen + vcc 
und gnd

aber die ganze A-Leitungen?
Gast
Sinn und Zweck eines Dual-Port-Rams ist es, einen gewissen gemeinsamen 
Speicherplatzt für zwei Controller zu schaffen.

So wie ich es von dir verstanden habe, kommen die Daten immer nur von 
einem Controller und gehen zum anderen, aber nie in die entgegengesetzte 
Richtung. Je nachdem wie schnell die Daten kommen und wie schnell der 
zweite Controller diese abholen kann, wäre vielleicht ein Latch (oder 
mehrere) die einfachere und billigere Alternative für dich!
Gast
d.h. man benötigt viel weniger I/Os am µC

ist das nicht interessanter für mich, wenn ich nur die daten sozusagen 
kurz zwischenspeicher auf dem dual port ram? eigentlich reicht es mir, 
wenn z.B. ein bit an I/O 5 (Input) reingeht und am I/O 5 (Output) wieder 
rauskommt... oder hätte das irgendeinen nachteil für mich?

gibt es denn sowas auch mit 16 Bit?
Gast
Einen guten Tipp von mir. Bevor du ernsthafte sachen mit Dualport-RAMs 
basteln willst, solltest du dich ersteinmal mit den Grundlagen der 
Microrechentechnik gefassen. Also z.B. wie schcließe ich einen normales 
RAM einene CPU (nicht µC) an usw. Weiterhin wie funktioniert das mit dem 
Daten-, Adress- und Steuerbus.
Gast
Wieso verwendest du nicht gleich einfach einen µC mit Ethernet der genug 
Performance hat um alle Aufgaben zu erledigen? Kommt auch deutlich 
billiger...
Alternativ wäre auch ein gut gepufferter SPI mit DMA denkbar (da ja die 
Daten eh nur in eine Richtung transportiert werden sollen).
Persönliche Seite
Auch Dualport-RAMs schließt man nicht an I/O-Leitungen an, sondern an 
einen externen Bus. Geeignete Controller haben so etwas. Sonst 
programmiert man sich einen Krampf im Arsch.

Bei Verwendung eines externen Busses ist die erreichbare 
Speicherbandbreite ausreichend hoch, daß man in vielen Fällen mit 
geringerer Busbreite auskommt und so ein byteweise organisiertes RAM 
ausreichen kann.

Wenn die Zugriffe beider Prozessoren auf das RAM synchronisiert werden, 
kann man das auch über geeignete Bustreiber über einen gemeinsamen Bus 
ansteuern, dann spart man sich auch das Dualport-RAM.

So etwas scheint mir bei der genannten Anwendung vollkommen zu genügen.

Prozessor A (der mit dem Ethernet-Interface) schreibt das RAM mit einem 
Datenpaket voll und signalisiert dann Prozessor B diesen Sachverhalt, 
beispielsweise mit einem Interrupt.
Prozessor B beginnt dann, die im RAM gespeicherten Daten auszuwerten und 
signalisiert Prozessor A, wenn er damit fertig ist.
Dieser schreibt dann das nächste empfangene Datenpaket ins RAM etc.

Das lässt sich mit einem stinknormalen 8-Bit-SRAM und einer Handvoll 
Bustreiber (74xx245/541) erledigen. Die '245 trennen die jeweiligen 
Datenbusse der Prozessoren vom RAM ab, die '541 (unidirektional) machen 
dasselbe mit den Adressbussen und Zugriffsleitungen (/OE, /WE, /CS).


Wenn die Datenrate von Prozessor A deutlich größer als die von Prozessor 
B ist, dann liegt ein grundlegender Desginfehler vor, bei dem auch ein 
echtes Dualport-RAM nicht helfen kann. Schließlich darf während der 
Auswertung der Daten durch Prozessor B das Datenpaket nicht schon durch 
ein neueres überschrieben werden.
Gast
Mir scheint eh, das Mike selbst nicht weis was er will. Ich sage es 
nochmal ZUERST mal die Grundlagen der Microrechentechnik aneignen. 
Warscheinlich sind noch nicht einmal 2 µCs erforderlich.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [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.