Hallo. Ich werde ab Oktober eine Diplomarbeit schreiben und befinde mich derzeit schonmal in der Recherche- Phase. Hier mal ein kurzer Überblick zu meinem Thema: Es soll ein Bildmustergenerator mittels FPGA realisiert werden. Der grobe Ablauf mal im Überblick: Ein Bitmap- File soll in einem Speicher eingelesen werden. Anschließend sollen die Daten im FPGA etwas manipuliert und über eine VGA- Schnittstelle ausgegeben werden. Bereits jetzt stellen sich mir einige grundlegende Fragen: 1) Wie kann ich ein Bitmap- File mittels VHDL in das RAM des FPGA einlesen? 2) Welche Kenntnisse benötige ich über den BMP- Standard ? 3) Wie organisiere ich mir am einfachsten den Speicher auf dem FPGA ? 4) Wie erstelle ich aus den Bilddaten schließlich einmal das VGA- Format für die Ausgabe ? 5) Wie läuft die Ansteuerung der VGA- Schnitstelle ab ? Und nun meine Bitte an Euch: Wer hat sich schonmal mit einem ähnlichem Thema beschäftigt und kann mir u.U. wertvolle Tipps oder vielleicht sogar mit VHDL- Code weiterhelfen? Besonders hilfreich wären mir Tipps zum Einlesen des Bitmaps- Bildes in den Speicher, wird das doch das erste zu lösende Problem sein. Zum jetzigen Zeitpunkt sind mir jegliche Ratschläge hilfreich. Gerne kann ich Euch auch noch genauere Informationen über mein Thema geben.
Ich bin zwar noch nicht soweit wie du, aber ein paar Anregungen versuche ich mal zu geben. Ansonsten sollen mich die Profis hier bitte korrigieren. Zu 1) Verstehe ich nicht ganz, willst du zur Entwicklungszeit die Datei schon reinladen? Denke nicht, deshalb solltest du dir zuerst eine Schnittstelle überlegen wie du die Daten im System mit dem FPGA einlesen kannst. Da würde sich eine Schnittstelle zum PC (RS232 , USB) anbieten, die vom einem MC verwaltet wird, der deinen FPGA (oder dessen Speicher) "füttert" wenn Daten kommen. Wenn du das BMP-Format im PC demontierst (über Standartbefehle kann du ja die Farb.inf. einzelner Pixel abfragen, wenn du das Bild z.B. in eine Canvas-Komponente geladen hast; damit ergibt sich dann auch die Möglichkeit jpg und gif ... zu laden => Kenntnisse über das Format brauchst du nicht!) und nur die Pixelposition samt Farbinformation rüber schickst, kannst du dir das im FPGA sparen. Für den Speicher könnte man ein Ram und einen Flash nehmen. Der Flash soll dazu dienen, Muster abspeichern zu können (nach dem Ausschalten), sodass nicht für jede Anwendung deines Gerätes ein PC notwendig ist. Wenn dieser beim Lesen schnell genung ist, kannst du dir den Ram schenken. Einen grösseren Ram im FPGA selbst programmiern tut man nicht; das ist Platzverschwendung. Da nimmt man besser ein externes Ram oder einen FPGA der bereits genügend Ramzellen fest integriert hat (gibts glaube ich nicht so oft). Zu 4) (Auch nicht ganz klar was gemeint ist) Angenommen dein (Teil-)Bild ist 45x100 Pixel gross und das ausgegebene Signal hat eine Auflösung von 200 Pixel pro horizontaler Linie (nur mal als Beispiel), dann sind Pixel 0 bis 44 die ersten 45 horizontalen Pixel aus dem Bild, Pixel 45 des erzeugten Signals ist wieder Pixel 0 aus den Bild; Pixeln 89 des erz. Sig. ist wieder Pixel 44 des Bildes etc. (der Rest wird nicht verwendet, also abgeschnitten). So reihst du dein Teilbild aneinender. Das ließe sich wohl mit zwei Zähler implementieren, die als max. Wert die Länge bzw. Breite des Testbildes minus 1 haben. So kommst du der Reihe nach an die Pixel des zu erz. Signals. Zum Thema VGA-Schnittstelle wurde hier schon einiges gemacht. Einfach mal Forumssuche verwenden. Soweit ich weiss hat ein Nutzer namens Hagen hier schon einmal eine Art Grafikkarte auf einem CPLD programmiert. Daraus ließe sich wahrscheinlich einiges ableiten. Soweit die Anregungen. Hoffe mal da ist nicht zuviel Schrott drin. Gruss Henrik
zu 1) Klar so war dasvon mir schon geplant. Die DAten werden über eine Schnittstelle geladen. Dein Vorschlag zum BMP- Format klingt recht gut. Kennst du die Standardbefehle und was ist eine Canvas- Komponente? Ich hätte mir halt sonst das Bild über eine C oder C++- Routine eben zuerst demontiert. Zur VGA- Geschichte. Danke für deine Ausführungen und nach dem Nutzer Hagen werde ich dann mal suchen... Gruß Markus
Moin... Canvas ist AFAIK eine Javaklasse die recht komfortabel den Zugriff auf Bilddaten erlaubt. Also zumindestens gibts in Java diese Klasse, ob die jetzt gemeint war ist ne andere Frage. Wie groß soll denn die dargestellte Grafik sein? Ungekehrt: auf welchem FPGA soll das stattfinden? Kann ja nicht alles sein was der Käfer machen soll. Kleiner Tip: Xilinx Spartan3 Eval-Board. Billig, komplett mit VGA Ausgang zum basteln. -- Sven Johannes
Canvas ist ein Basisklasse von Image; eine Basisklasse für alle Arten von Grafiken, so ist es jedenfalls in Delphi. War sehr praktisch anzuwenden um Bilder zu manipulieren, da es, wie schon gesagt, in Image eine Load-Funktion gab, die nahezu alle Grafikformate importieren konnte. Mit den Standartfunktionen von Canvas konnte man dann alles machen. Wie das unter C++ heisst weiss ich nicht. Die Standartbefehle bezogen sich auf Pixelmanipulation, das Zeichen von Rechtecken, Kreisen, Linien etc.. In Delphi ginge das ungefähr so: bool procedure senden(); var hohe, breite: integer; var Farbe: TColor; // TColor besteht aus 3 Byte, für jede Farbe also 256 Abstufungen var Wert: Byte; begin from(hohe=0 to Image1.ClientHeight) do from (breite=0 to Image1.ClientWidth) do begin Farbe:=Image1.Canvas.Pixels[hohe, breite]; //Lese Farbe des Pixels Wert:=Bearbeite(Farbe); // hier musst du den Wert von TColor deinen Vorstellungen anpassen Sende(hohe); // Positionsangaben Sende(breite); Sende(Wert) // an deinen MC end; end; (habe lange nicht mehr Delphi programmiert; nur um Schema zu verdeutlichen) Gruss Henrik
@Markus kommt das Bitmap-File vom PC ? Für das Laden ins FPGA / RAM gäbe es X Möglichkeiten, da musst Du sicher überlegen, was für die Anwendung am besten wäre. meine erste Idee wäre : simplen UART ins FPGA einbauen oder FT232 / FT245 verwenden und das ganze mit dem PC verbinden. Wenn genügend Block-RAMs im FPGA sind (wieviel Speicher brauchst Du ?), dann die Daten direkt im FPGA speichern, ansonsten externen Speicher verwenden. Speicher im FPGA gibts bis > 10 MBits. Wenns etwas anspruchsvoller sein soll : Flash-Karte ans FPGA stöpseln, MMC oder sonstwas und von dort die Daten einlesen. Wer konfiguriert denn das FPGA ? soll das ein Config-PROM machen oder ein Mikrocontroller oder der PC ? Über einen FT245 von FTDI könntest Du wahrscheinlich das FPGA vom PC aus konfigurieren und danach auch Daten rüberschicken. Oder soll das ganze als Stand-Alone laufen können ? Fragen über Fragen ...
@FPGA- User zu deinen Fragen, soweit sie jetzt schon beantwortbar sind. Für das Laden ins FPGA/RAM habe ich mir vorerst auch erstmal einen simplen UART vorgestellt. Was den Speicherplatz anbelangt, so gehts vorerst nur mal um Demonstrationszwecke, sprich die Speicher auf dem FPGA sollten vorerst reichen. Im weiteren Verlauf wäre natürlich die Variante mit Flash- Karten oder MMC schon sehr interessant. Hier ist sicher die Frage, ob das dann jetzt für die Diplomarbeit nicht zu umfangreich wird und ich nachher zu viele offene Baustellen habe. ZUr Konfiguartion: Da bin ich ehrlich gesagt auch noch bischen am überlegen, was das beste ist. Im Endzustand, sicher nach der Diplomarbeit, ist es schon angedacht das ganze mal als Stand- Alone laufen zu lassen. Ziel ist es ja im Prinzip, beispielsweise auf Messen ein einfaches Demonstrationsobjekt zum vielfältigen Einsatz von FPGA's zu zeigen. Von demher wäre wohl ratsam, die Konfiguration mittels Mikrocontroller zu realisieren. Lass mich da aber auch gerne eines besseren belehren.
Hallo Markus, kannsz du mir sagen, wo du deine Diplomarbeit schreibst? Ich habe nämlich ein ähnliches Thema in meinem Praxissemester gehabt und bin an der fehlenden Unterstützung in der Firma daran gescheitert? Mich würde ienfach interessieren, ob du in der selben Firma bist? Gruß Tobias
Hallo Markus. Als ehemaliger Entwickler von CCD-Kameras ( da allerdings noch in C++),LVDS seriell_ausgabe usw.interessiert mich ihr Projekt. Da ich z.Zt. an einem Projekt für eine 3-D Erfassung und Wiedergabe arbeite,unter Zuhilfenahme von FPGA's und VHDL der Firmen xxxxx ! koennte ich ihnen vielleicht einige Verfahrensweisen und konkrete Vorschläge unterbreiten. Sollten sie noch Interesse haben, dann einfach kurze Mail an mich. Bodo Mueller
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.