www.mikrocontroller.net

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


Autor: kkll (Gast)
Datum:

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

Autor: Rick Dangerus (Gast)
Datum:

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

Autor: you2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll denn eine FSM sein. Ne State Machine?

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... 320x240 ..

LCD-Controller?

Autor: you2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So etwas wie ein Bildspeicher.

Autor: Morin (Gast)
Datum:

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

Autor: you2 (Gast)
Datum:

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

Autor: Morin (Gast)
Datum:

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

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.