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
d.h. wenn ich 32 Bit parallel in den Speicher schaufeln möchte, brauche ich zwei 2k x 16?
Du kannst nicht 32 Bit auf einmal schreiben, sondern nur 18Bit. Du kannst instgesammt 32768 * 18 Bit in diesem Speicher unterbringen.
deshalb meinte ich ja, dass ich dann zwei 2k x 16 benötige um auf 32 Bit zu kommen
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
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?
Ja, dann brauchst Du entweder etwas mit xxxk * 32 oder eben zwei Käferchen mit xxxk * 16.
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...
Den Hinweis von Ulli würde ich mit ... Vorsicht genießen. Der hilft dem Fragesteller mit allerhöchster Wahrscheinlichkeit nicht weiter.
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.
>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.
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?
Hier noch ein Kandidat IDT70vXX (hxxp://www.idt.com/products/getDoc.cfm?docID=10863)
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.
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!
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?
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.
wäre es denn möglich die adressleitungen über eine serielle Schnittstelle zu versorgen?? z.B. I²C??
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).
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.