Forum: FPGA, VHDL & Co. Datenübertragung von SD auf VGA


von Mike (Gast)


Lesenswert?

Hallo zusammen,

dank dieses Forums konnte ich meine ersten erfolgreichen Schritte in 
Richtung FPGA und VHDL Programmierung machen. ;-)

Nach ersten Fehlversuchen konnte ich nun endlich ein einfaches 
VGA-Signal erzeugen (roter Bildschirm) und auf einem LCD-Monitor 
darstellen.

Nun möchte ich gerne ein bmp. auf einer SD-Karte speichern (FAT-Format), 
über mein Altera DE2-115 Board per FPGA einlesen und via VGA auf meinen 
Bildschirm übertragen.

Ich habe per Google schon viel nach Beispiel-Codes in VHDL gesucht, aber 
nichts wirklich brauchbares finden können.

Ich hoffe, dass der eine oder andere vielleicht eine nützliche 
Verlinkung zu einem Tutorial/Beispiel-Code posten kann, die mich in die 
Material einführt.

(Vielleicht ist das Endziel meiner Arbeit für den ein oder anderen auch 
interessant: Ich möchte ein MPEG2-Signal über das DE2 Board einlesen und 
per VGA ausgeben. Daher wollte ich mich schrittweise über die SD-Card an 
diesen Projekt ran tasten... ;-) )

von Vanilla (Gast)


Lesenswert?

Mike schrieb:
> (Vielleicht ist das Endziel meiner Arbeit für den ein oder anderen auch
>
> interessant: Ich möchte ein MPEG2-Signal über das DE2 Board einlesen und
> per VGA ausgeben. Daher wollte ich mich schrittweise über die SD-Card an
> diesen Projekt ran tasten... ;-) )

Hm, dein Anliegen ist SEHR sportlich. Von Null auf MPEG2... Du solltest 
Dir ein paar zehn Zwischenziele suchen.

Zu deinem Anliegen:
Du möchtest etwas auf einem VGA Display ausgeben: RGB mit sagen wir rund 
25Mhz. Wenns Farbe sein darf, verdreifacht sich der Datendurchsatz, bei 
8Bit wären wir bei 75MB/sec. Die SD-Karten die das schaffen kannst Du 
mit einer Hand abzählen, benötigst aber beide zum Geld auf die Kasse 
legen.

Um Daten von einer SD-Karte zu lesen, kannst Du grundsätzlich zwei 
Protokolle nutzten (MMI kompatibel (SPI) oder SD-Mode (proprietär mit 
4Bit).
FAT Format liest eigentlich niemand mit dem nackten FPGA. Hier würde man 
wohl eine CPU einsetzten (entweder als Softcore im FPGA oder extern).

MPGEG2 Dekoding wiederum setzt einiges an Hardwareaufwand nach sich:
externer Speicher am FPGA, Größe des FPGAs und ist nichtwirklich das was 
heute noch im Fokus liegt (passende Hardware in Form eines NAS Gehäuses 
+HDD +Videoausgänge die nebenbei noch ein Dudzend andere Formate spielen 
inkl. MPEG4 alias H.264 bekommt man < 100EUR.

Meine Einschätzung nach wärst Du während dem gesamten Projekt auf Dich 
alleine gestellt.

Gruß

Vanilla

von M. (Gast)


Lesenswert?

So etwas macht man doch einfacher mit einer CPU im FPGA (Nios oder so), 
die das Bild von der Karte in den Speicher schiebt. Von dort dann auf 
den Bildschirm. Der Ganze Fat Kram läßt sich doch so viel einfacher 
erledigen. Das Skaling des Bilders kann man ja wieder in Hardware 
machen...

Grüße

von PittyJ (Gast)


Lesenswert?

Ich war letztens auf einem Altera Workshop, wo es um der IP-Cores zum 
Videoprozessing ging. Das möchte ich selber in VHDL nicht mache, da 
sitze ich Jahre dran.
Wenn es nur zum Spielen ist: nimm eine CPU.
Wenn es für die Arbeit ist: kaufe die IP-Cores. Das wird billiger.

von Mike (Gast)


Lesenswert?

Verleihen wir das Sache mal ein wenig "persönliches Profil"...

Studiere E-Technik und bin hier nun für ein Praktikum für 2 Monate in 
die Türkei gekommen und nun via Altera Board folgende Aufgabe lösen 
(wurde gerade von Chef geupdatet ;-) ):

MPEG-2-Video-Signal wird per PSK-Modulator versendet, via Antenne wieder 
empfangen und von einem Tuner wieder als 8bit-Stream decodiert.

Dieses Signal soll nun per Altera Board eingelesen, im Schritt 1 die 
Service-ID im Header ausgelesen und im Schritt 2 das MPEG2-Signal 
decodiert und als VGA-Signal ausgegeben werden.

Heavy Stuff, ich weiß... vor allem, da ich vor 2 Wochen noch nicht mal 
VHDL richtig konnte (von den paar Vorlesungen mal abgesehen).

Danke an M., Vanilla, und PittyJ für die hilfreichen Kommentare, dann 
werde ich wohl in jedem Fall auf die CPU umschwenken.

@ vanilla: Hab wohl mein Zwischenziel mit der SD-Karte ein wenig zu grob 
beschrieben: Die SD-Karte hat ein einzelnes Bild, was ausgelesen werden 
sollte, also kein Stream in dem Sinne. Ansonsten würde ich wohl die von 
dir genannten Geschwindigkeiten beachten müssen....

von PittyJ (Gast)


Lesenswert?

Sowie ich die Jungs von Altera verstanden habe, ist deine 
Aufgabenstellung gut mit deren angebotenen IP-Cores zu lösen.
Falls das Produkt also wichtig sein sollte, kontaktiere die Altera 
Entwickler und frage, was möglich ist.
Allerdings würde ich auch dafür den Rahmen von 2 Monate für recht 
sportlich halten.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

> MPEG-2-Video-Signal wird per PSK-Modulator versendet, via Antenne wieder
> empfangen und von einem Tuner wieder als 8bit-Stream decodiert.
>
> Dieses Signal soll nun per Altera Board eingelesen, im Schritt 1 die
> Service-ID im Header ausgelesen und im Schritt 2 das MPEG2-Signal
> decodiert und als VGA-Signal ausgegeben werden.

Ich kenne mich mit MPEG2 nicht jetzt gerade aus. Ich weiss nur auf die 
Schnelle, dass immer Masterbilder und bei den folgeden Bilder die 
Differenz gensendert wird.

Ich habe mich mal intensiv mit JPEG beschäfftigt und den ersten Schritt 
für dich. Die Labels aus dem Datenstrom picken. Und einen Huffmandecoder 
für JPEG. Der sollte auch für MPEG gehen.

Der Code ist auch nicht auf dem letzten Stand, du kannst dir schon mal 
einen Enblick holen.


http://opencores.org/project,huffmandecoder

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.