Dual Ported Ram

Gast #1514768
Lesenswert?
• ▲
▼
Hi

Ich habe folgendes Problem. Ich habe 2 Module die sich ein menge an 
Daten (ca 25kbit). Ein Modul schreibt die Daten nur und das andere liest 
die Daten. Daher wäre es doch sinnvoll einen DualPorted Ram zu nehmen? 
Benutze einen Xilinx Sparten 3 und will mir den Ram mit de Core 
Generator erstellen. Gibt es da etwas auf das ich speziel achten muss 
bzw. wie sieht es da mit den timing aus?

MFG Gast
#1514772
Lesenswert?
• ▲
▼
@  Fresh (Gast)

>die Daten. Daher wäre es doch sinnvoll einen DualPorted Ram zu nehmen?

Ja. Wenn das ganze aber eher einen Datemstrom darstellt, dann eher ein 
FIFO.

>Benutze einen Xilinx Sparten 3 und will mir den Ram mit de Core
>Generator erstellen.

Dann tu das.

> Gibt es da etwas auf das ich speziel achten muss

Nicht direkt.

>bzw. wie sieht es da mit den timing aus?

Steht im Datenblatt. Ist aber trivial.

MFG
Falk
Gast #1514783
Lesenswert?
• ▲
▼
Hi

Danke für die Antwort. Das mit der FiFo habe ich mir auch überlegt aber 
es ist kein Datenstrom. Das Modul welches was hineinschreibt macht dies 
so ab und zu. Das lesende Modul liest regelmässig alle Speicherblöcke 
durch. Beim Timing stellt sich mir die Frage was passsiert wenn beide 
gleichzeitig auf die selbe Speicherstelle zugreifen wollen?!

MFG Gast
#1514792
Lesenswert?
• ▲
▼
@  Fresh (Gast)

>durch. Beim Timing stellt sich mir die Frage was passsiert wenn beide
>gleichzeitig auf die selbe Speicherstelle zugreifen wollen?!

Steht im Datenblatt. Der Leser bekommt den aktuellen Wert, der Schreiber 
überschrieb den im nächstzen Takt mit dem neuen Wert.

MFG
Falk
Gast #1514805
Lesenswert?
• ▲
▼
Hi

also ich verwende im gesamten Design den selben Takt. Auch das Ram wird 
bei Port A und bei Port B den selben Takt erhalten. Aber es kann ja 
trotzdem passieren das der eine auf den speicherbereich schreibt von den 
der andere liest oder wird der Ausgang zwischengespeichert?!

Beim schreiben und lesen muss ich nehme ich an in einen Takt das enable 
signal anlegen und die adresse und im nächsten Takt sind die Daten 
bereit bzw gespeichert oder?

MFG Fresh
Moderator (Firma: Titel) Persönliche Seite #1514816
Lesenswert?
• ▲
▼
> wird der Ausgang zwischengespeichert?!
Ja, das kannst du sogar (begrenzt) einstellen.
Lies mal das Manual zum Thema BRAM.

> Beim schreiben und lesen muss ich nehme ich an in einen Takt das enable
> signal anlegen und die adresse und im nächsten Takt sind die Daten
> bereit bzw gespeichert oder?
Ja, und wenn jetzt Daten an die selbe Adresse geschrieben und von der 
selben Adresse gelesen werden, hast du fast zwangsläufig die alten 
Daten. Du kannst allerdings eine Art "Transparentmodus" einschalten, 
dann bekommst du gleich die aktuellen Daten.
Gast #1514847
Lesenswert?
• ▲
▼
Bin gerade dabei die Beschreibung von BlockMemory Generator v2,7 von 
Xilinx zu lesen. Habe schon festgestellt das ich gar kein True Dual Post 
Ram brauch sondern ein Simple Dual Port reicht. Weil diese unterstützt 
genau meinen Anwendungsfall. Das mit den Speichern am Ausgang ist nehme 
ich an das Register an Port B oder?

MFG Fresh
Gast #1514908
Lesenswert?
• ▲
▼
Macht es auch sinn diese Register am Ausgang zu verwenden bei einen 
Simple Dual Port? Dadruch dauert das lesen ja einen Zyklus länger was 
mich allerdings nicht stören würde da ich mindestens 100 Zyklen bei 
80MHz zeit habe um etwas zu lesen. Wenn ich die Register nicht verwende 
kann es zu einen fehler kommen oder?
Moderator (Firma: Titel) Persönliche Seite #1514932
Lesenswert?
• ▲
▼
Nicht bei 80 MHz...

Hintergrund:
Das Signal hat aus der Speicherzelle heraus bis an den Port des RAMs 
eine gewisse Laufzeit. Diese Laufzeit addiert sich zu deinem 
anschliessenden Routing+Kombinatorik. Mit dem Register dazwischen 
entkoppelst du die Laufzeit des RAMs und deine Routinglaufzeit. Damit 
wird dein Design u.U. schneller, du hast aber einen Takt Latenz.
Gast #1514938
Lesenswert?
• ▲
▼
Hi
Habe es nun eh mit eine Register am Ausgang erstellt. Die Latenz ist 
aber nur ein Zyklus von den 80MHz oder? also ich lege die Adresse und 
das Enable SIgnal an Port B an und einen 2Takte Später habe ich den 
Inhalt der Speicherzelle oder verstehe ich das falsch?!

MFG Fresh
Gast #1515218
Lesenswert?
• ▲
▼
Fresh schrieb:
> Hi
> Habe es nun eh mit eine Register am Ausgang erstellt. Die Latenz ist
> aber nur ein Zyklus von den 80MHz oder? also ich lege die Adresse und
> das Enable SIgnal an Port B an und einen 2Takte Später habe ich den
> Inhalt der Speicherzelle oder verstehe ich das falsch?!
>
> MFG Fresh

Nein so ist es richtig
Gast #1518595
Lesenswert?
• ▲
▼
HI habe noch ne kleine Frage zum schreiben in den Ram. Das schreiben 
dauert ja auch zwei Zyklen oder? Sprich ich lege mit den Takt die 
adresse und die daten an und setzte das Wea bit und beim nächsten Takt 
wird es übernommen oder?
Moderator (Firma: Titel) Persönliche Seite #1518601
Lesenswert?
• ▲
▼
> lege mit den Takt die adresse und die daten an und setzte das Wea bit
> und beim nächsten Takt wird es übernommen oder?
Richtig, aber nach allgemeiner Lesart ist das nur 1 Takt, denn den einen 
Takt zur Vorbereitung der Adressen bräuchtest du sowieso...

Andersherum wird ein Schuh daraus:
Rechtzeitig vor der Taktflanke müssen die Daten, die Adressen und das 
Enable richtig anliegen, dann wird beim nächsten Takt geschrieben.

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