Forum: FPGA, VHDL & Co. Microblaze Ausgabe an DVI


von hanel (Gast)


Lesenswert?

Hallo,
ich habe das SP605-Board. Auf Basis des Reference Design von Xilinx kann 
ich ein einfaches Testbild erzeugen in VHDL, nämlich ein Bild mit zwei 
Balken, Auflösung 1280x1024@70 Hz, pixel clock = 100MHz.

Nun möchte ich das gleiche Bild erzeugen mit Microblaze. Der DVI Block 
wird als Slave mit dem Microblaze über FSL-Bus verbunden (FSL_Clk = 
100MHz). Mit folgendem Befehl schicke ich Daten an den DVI-Block: 
putfslx(value, 0, FSL_NONBLOCKING); Und hier tritt das Problem auf. Es 
dauert 6 Taktzyklen bis ein Wert in den FSL Fifo geschrieben wird 
(gemessen durch FSL_S_Exists = '1' in Chipscope anaylzer). Der DVI Block 
braucht aber Daten nach jedem Clock.

Gibt es eine Lösung, womit kontinuierliche Daten @ 100 MHz oder höher 
(z.B. für Full HD @ 60Hz min. pixel clock = 125 MHz) vom Microblaze an 
den DVI geschickt werden?

Wenn ein FIFO dazwischen geschaltet wird, wird es irgendwann underflow 
sein, weil ankommende Daten langsamer sind als ausgehende.

Für Ratschläge bin ich sehr dankbar.

Grüße

von Uwe N. (ex-aetzer)


Lesenswert?

Hallo Hanel,

bin kein VHDL-Experte, aber ich denke, dein Ansatz ist nicht ganz der 
richtige. Du versuchst, mit dem Microblaze die Bild-Daten zu erzeugen 
und per DVI auszugeben. Das bringt sicherlich Timing-Schwierigkeiten mit 
sich, da der Prozessor die Daten erzeugen/ bearbeiten und an DVI 
weitergeben muss - da wird er sicherlich mal aus dem Tritt kommen ... 
(abgesehen von den Latenzen)

Vermutlich ist es besser, dem µBlaze einen Video-RAM (kein FIFO) zu 
spendieren. Das sollte mit dem SP605 gehen. D.h. der Microblaze schreibt 
nur die neuen Daten in das VRam und der DVI-Block holt sich diese 
selbständig aus dem V-Ram.

Ausserdem hat der Prozessor jetzt mehr "Luft" für andere Aufgaben.

Gruss Uwe

von hanel (Gast)


Lesenswert?

Hallo Uwe,
Dankeschön für deinen Vorschlag. Auf dem SP605 ist ein 128MB DDR3 
Speicher. Und ich bin auch "noch" nicht fit in VHDL, deshalb möchte ich 
mit Hilfe des Microblaze den DDR3 steuern (sowohl schreiben als auch 
lesen). Aber wenn ich richtig verstanden habe, der Microblaze kann mir 
die Arbeit des Datenschreibens ins RAM erleichtern, nur das Lesen aus 
dem RAM muss ich mit HDL erledigen, damit das Timing funktioniert, 
stimmts?

Danke und viele Grüße
Hanel

von Vanilla (Gast)


Lesenswert?

hanel schrieb:
> Aber wenn ich richtig verstanden habe, der Microblaze kann mir
> die Arbeit des Datenschreibens ins RAM erleichtern, nur das Lesen aus
> dem RAM muss ich mit HDL erledigen, damit das Timing funktioniert,
> stimmts?
>
> Danke und viele Grüße
> Hanel

Hallo Hanel,

Schau Dir mal den Multiport Memorycontroller MPMC an.

An diesen kannst Du einen Zugang vom Microblaze zum RAM schalten und 
einen weiteren als dedizierten Leseport anschliessen.

Wie schon richtig bemerkt, ist eine relativ schwachbruestige CPU im 
Mittel nicht in der Lage ein kontinuierliches Hires Bild auszugeben.

von hanel (Gast)


Lesenswert?

Eure Tipps bringen mich wirklich weiter. Nochmal herzlichen Dank an Uwe 
und Vanilla :-)

von Duke Scarring (Gast)


Lesenswert?

hanel schrieb:
> Gibt es eine Lösung, womit kontinuierliche Daten @ 100 MHz oder höher
> (z.B. für Full HD @ 60Hz min. pixel clock = 125 MHz) vom Microblaze an
> den DVI geschickt werden?
Schau mal in den EDK IP Catalog, da gibt es "IO Modules -> XPS TFT".
Das ist genau dafür gemacht worden.

Duke

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.