mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Dual Port RAM


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es passen 32768 Worte a 18 Bit hinein.

Autor: Mike (Gast)
Datum:

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

Autor: Obelix (Gast)
Datum:

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

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

Autor: Mike (Gast)
Datum:

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

Autor: Obelix (Gast)
Datum:

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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Simon Huwyler (simi)
Datum:

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

Autor: Ulli Vex (vex)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ulli Vex (vex)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ulli Vex (vex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
4k * 16Bit seh ich hier im Plcc84 Gehäuse cy7c024

Autor: Ulli Vex (vex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A Leitungen sind die Adressen

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab mir den CY7C133 mit 2k x 16 angeschaut

Autor: Ulli Vex (vex)
Datum:

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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DS 1609   warum hat dieser hier von Maxim keine separaten 
adressleitungen?

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die daten kommen viermal schneller an als sie wieder versendet werden

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Obelix (Gast)
Datum:

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

Autor: Mike (Gast)
Datum:

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

Autor: Mike (Gast)
Datum:

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

Autor: AVR-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.