Forum: FPGA, VHDL & Co. PicoBlaze von Xilinx Programmieren


von kkll (Gast)


Lesenswert?

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ß.

von Rick Dangerus (Gast)


Lesenswert?

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

von you2 (Gast)


Lesenswert?

Was soll denn eine FSM sein. Ne State Machine?

von Manfred (Gast)


Lesenswert?

... 320x240 ..

LCD-Controller?

von you2 (Gast)


Lesenswert?

So etwas wie ein Bildspeicher.

von Morin (Gast)


Lesenswert?

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.

von you2 (Gast)


Lesenswert?

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.

von Morin (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.