Hi, die Xilinx FPGAs der Spartan 3E-Reihe haben ja auf dem Chip mehrere RAM Blöcke, die sich mit dem Core Generator instanziieren lassen. Mir schwebt nun vor vor, ein FIFO zu bauen, welches aus zwei RAM-Blöcken besteht. Der Ausgang von FIFO 1 ist also der Eingang von FIFO 2. Dies mache ich, um am Ausgang von FIFO 1 den Bitvektor zusätzlich abgreifen und weiter verarbeiten zu können (jepp, für eine spätere 2D-Faltung ;-) ) Das funktioniert natürlich nur, wenn die RAM Blöcke unabhängig voneinander instanziierbar sind. Ist dies der Fall? Ich denke ja, bin mir aber nicht ganz sicher, da ich mit den RAM Blöcken noch nie gearbeitet habe. Danke sagt Dito
Sorry, für den kleinen inhaltlichen Fauxpas: Ich rede erst von einem und dann von zwei FIFOS. Ich meine einen "großen" FIFO, der sich aus zwei hintereinander geschalteten "kleinen" FIFOS, FIFO 1 und FIFO 2, zusammensetzt.
> wenn die RAM Blöcke unabhängig voneinander instanziierbar sind.
Sind sie.
Du kannst sogar aus einen BRAM zwei (z.B. halb soi große) Single-Port
RAMS oder ROMs machen. Das ist schön, wenn man mehrere kleine Tabellen
abzulegen hat.
> Du kannst sogar aus einen BRAM zwei (z.B. halb soi große) Single-Port
RAMS oder ROMs machen.
Funktioniert denn beim Single-Port auch das gleichzeitige Lesen UND
Schreiben in einem Takt? Für ein FIFO ist das ja wichtig.... :-)
Dito
> Funktioniert denn beim Single-Port auch das gleichzeitige Lesen UND > Schreiben in einem Takt? Eigentlich schon sich schon, aber das macht keinen Sinn, weil ein Single-Port-RAM ja nur 1 Adressbus hat. Es könnte also nur genau die Adresse gelesen werden, die gleichzeitig auch beschrieben wird.
Du könntest auch einfach zwei FiFos mit je einem RAM-Block generieren. Genauer gesagt eigntlich einen, den Du zwei mal instanziierst. Dort baust Du einfach die Weiterleitung der Daten zweischen rein. So hast Du auch gleichzeitig zugriff auf die Daten zwischen den Fifos.
@ Lothar: Oder man simuliert/emuliert ein FIFO, also bei einem Takt schreiben, beim anderen lesen (was aber nur die Hälfte so schnell wäre). Wäre warscheinlich auch kein FIFO im eigentlichen Sinne.... @ Matthias: Ich brauche leider zwei RAM Blöcke, da der FIFO 2400 Elemente aufnehmen soll. Bei max. 2048 Elementen würde ich mit einem RAM Block auskommen. Dadurch habe ich zwar einen hohen Verschnitt, muss (und kann) ich mit leben. ;-)
Nur eine Frage : Warum laßt Du Dir vom Core Generator nicht die FIFOs erstellen? Dann brauchst Du Dir um BlockRam usw. keine Gedanken machen. Außerdem funktionieren diese garantiert besser als ein selbstgebautes.
@ Klaus Falser: Die FIFOs werde ich mir natürlich mit dem Core Generator erstellen. Mir ging es mehr um die korrekte Zusammenschaltung der FIFO-Instanzen.
Der Core Generator verwendet für jedes Fifo sicherlich getrennte BRAMs, weil jedes Fifo beide Ports der BRAMs verwendet. Falls es deine Frage war, ob das 2. Fifo den nicht verwendeten Teil des 1. Blockrams sozusagen "wiederverwertet", dann ist die Antwort ein klares Nein. Das geht nicht.
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.