Forum: Mikrocontroller und Digitale Elektronik Dual Port RAM


von Mike (Gast)


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

von Kai (Gast)


Lesenswert?

Es passen 32768 Worte a 18 Bit hinein.

von Mike (Gast)


Lesenswert?

d.h. wenn ich 32 Bit parallel in den Speicher schaufeln möchte, brauche 
ich zwei 2k x 16?

von Obelix (Gast)


Lesenswert?

Du kannst nicht 32 Bit auf einmal schreiben, sondern nur 18Bit.

Du kannst instgesammt 32768 * 18 Bit in diesem Speicher unterbringen.

von Mike (Gast)


Lesenswert?

deshalb meinte ich ja, dass ich dann zwei 2k x 16 benötige um auf 32 Bit 
zu kommen

von Obelix (Gast)


Lesenswert?

Ich glaube, du kannst mit dem "k" hinter der Zahl nix anfangen, oder?

von Mike (Gast)


Lesenswert?

k = 1024

ich möchte 32 mal 1Bit unterbringen; diese 32 müssen aber auch 
gleichzeitig mit einem befehl aus dem speicher rausgeholt werden können

von Rufus Τ. F. (rufus) Benutzerseite


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?

von Simon H. (simi)


Lesenswert?

Ja, dann brauchst Du entweder etwas mit xxxk * 32 oder eben zwei 
Käferchen mit xxxk * 16.

von Ulli V. (vex)


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...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Den Hinweis von Ulli würde ich mit ... Vorsicht genießen. Der hilft dem 
Fragesteller mit allerhöchster Wahrscheinlichkeit nicht weiter.

von Mike (Gast)


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.

von Mike (Gast)


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...

von Ulli V. (vex)


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.

von Mike (Gast)


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?

von Ulli V. (vex)


Lesenswert?

4k * 16Bit seh ich hier im Plcc84 Gehäuse cy7c024

von Ulli V. (vex)


Lesenswert?

A Leitungen sind die Adressen

von Mike (Gast)


Lesenswert?

hab mir den CY7C133 mit 2k x 16 angeschaut

von Ulli V. (vex)


Lesenswert?

Hier noch ein Kandidat IDT70vXX 
(hxxp://www.idt.com/products/getDoc.cfm?docID=10863)

von Mike (Gast)


Lesenswert?

DS 1609   warum hat dieser hier von Maxim keine separaten 
adressleitungen?

von Kai (Gast)


Lesenswert?

Der Maxim DS1609 hat gemultiplexte Daten-/Adressleitungen, d.h. die 
Leitungen AD7-0 werden sowohl für die Daten, als auch für die Adressen 
verwendet.

von Kai (Gast)


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!

von Mike (Gast)


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?

von Mike (Gast)


Lesenswert?

die daten kommen viermal schneller an als sie wieder versendet werden

von Obelix (Gast)


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.

von Obelix (Gast)


Lesenswert?

Ausserdem gehe ich eh davon aus, dass du kein sau teures Dualport-RAM 
benötigst.

von Mike (Gast)


Lesenswert?

das problem ist leider auch dass ich keinen 32Bit µC finde, der 118 
I/O`s hat...

von Mike (Gast)


Lesenswert?

wäre es denn möglich die adressleitungen über eine serielle 
Schnittstelle zu versorgen?? z.B. I²C??

von AVR-User (Gast)


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).

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Obelix (Gast)


Lesenswert?

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.

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.