Moin, ich hab da mel eine Frage! Kann ich mit einem PicoBlaze einen SRAM Adressieren, der 20 Bit Adressen besitzt? Ich muss Daten mit dem FPGA eines Virtex 4 in den SRAM schreiben. Da die DAten Menge 320x240 beträgt, ist der ADressbereich auch dem entsprechend groß.
Nicht mit dem Picoblaze-Adressbus. Der kann IMHO nur 1024 Worte adressieren. Aber es verbietet Dir niemand, drei 8-Bit Speicherstellen als 24-Bit Adresssignal zu verwenden. Je nachdem, wie Deine Daten bereitgestellt werden, kommst Du aber evtl. mit einer FSM schneller zum Ziel. Rick
Die 24-Bit-Adressen herbeitricksen musst du nur solange du den Speicher als RAM (random access memory) verwenden willst. Dann kannst du z.B. drei externe Register benutzen, die du in 3 I/O Zyklen des Pico beschreibst und die die Adresse für den Bildspeicher enthalten. Danach kommt der eigentliche Schreibbefehl an eine vierte I/O-Adresse, welche den Schreibzugriff an die Adresse im Bildspeicher weiterleitet, die durch die drei Adressregister bestimmt wird. Falls du aber keinen random-Zugriff brauchst, gehts auch schneller (d.h. ohne drei extra Schreibzyklen nur um die Adresse zu generieren). Zum Beispiel kann das Adressregister eine Zählautomatik enthalten, um hintereinanderliegende Pixel des Bildspeichers nacheinander zu schreiben. Für weitere Ratschläge wär es also praktisch, wenn du etwas mehr über die Zugriffsmuster auf den Bildspeicher schreibst.
Beid em Speicher handelt es sihc um einen SRAM. Es wird zu erst ein komplettes Bild in den SRAM gespeichert, welches dann Zeile für Zeile ausgelesen wird. Jede Zeile wird dann in einem BlockRAM auf dem FPGA gepuffert.Dort werden Sie dann über einen VIDEODAC (ADV7125) über VGA ausgegeben. Anschließen werden nur noch sich ändernde Pixel über die serielle Schnittstelle zum SRAM gesendet.
Okay, dann ist der Zähler-Ansatz der richtige Weg. Soll heißen: du baust einen Zähler [1] (in VHDL), welcher durch einen Schreibbefehl des Pico nach I/O-Adresse A auf den Wert 0 resettet werden kann. Schreiben nach I/O-Adresse B speichert den geschriebenen Wert an der Adresse im SRAM, welcher durch den Zähler gegeben ist, und lässt den Zähler eins hochzählen. Nach dem resetten kannst du also durch wiederholtes schreiben nach B einen Pixel nach dem anderen schreiben und damit ein ganzes Bild einspeichern. Auf die selbe Art kann lesen von der Adresse B einen Wert aus dem SRAM auslesen und den Zähler eins hochzählen; damit kannst du das Bild wieder Zeile für Zeile ausgeben (je Bild vorher durch Schreiben nach A den Zähler resetten). Was das spätere Ändern der Pixel angeht kommt es wieder auf das Zugriffsmuster an. Evtl. kannst du auch da den Zähler ganz oder teilweise wiederverwenden. Das Grundprinzip ist aber dasselbe: Die Zugriffsadresse für das SRAM kommt nicht oder nicht direkt vom Pico, sondern von eine Spezialschaltung, die du in VHDL schreibst. [1] 320*240 = 76800; 2^216 < 76800 < 2^17, also muss der Zähler 17 Bit breit sein.
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.