Dual Port RAM

Gast #544185
Lesenswert?
• ▲
▼
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 #544243
Lesenswert?
• ▲
▼
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?
#544251
Lesenswert?
• ▲
▼
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 #544273
Lesenswert?
• ▲
▼
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 #544278
Lesenswert?
• ▲
▼
>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...
#544286
Lesenswert?
• ▲
▼
@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 #544292
Lesenswert?
• ▲
▼
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 #544311
Lesenswert?
• ▲
▼
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 #544315
Lesenswert?
• ▲
▼
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 #544498
Lesenswert?
• ▲
▼
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 #544551
Lesenswert?
• ▲
▼
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 #544574
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren