www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Text via VGA ausgeben


Autor: Markus Red_corner04 (markus-red_corner04)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Habe ne kurze Frage. Ich habe bereits eine VGA Ansteuerung die mir 
Bilder ausgeben kann. Jetzt will ich auch ganz normalen Text ausgeben 
und da bin ich noch auf der Suche nach ner passenden Lösung.  Was gibts 
es da für Realisierungsmöglichkeiten?

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit FPGA? in VHDL ? Bitte etwas genauer. VGA ist auch etwas ungenau, 
640*480 und 16 Farben, Pixelclock/ Bildfrequenz?
Ich habe zum Beispiel vor kurzem als erstes FPGA-Projekt auf einem 
SpartanII  1024*768 in 15Bit, (je 5 RGB) mit 65 MHz Pixelclock 
programmiert, mit Webpack 8.1 und grafischer Eingabe.

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst folgendes machen (oder Dir solchen quellcode im netz suchen)
- einen RAM anlegen in dem Zeichen abgelegt werden
- eine Look-up-Tabelle, die für jeden Buchstabe das "grafische Aussehen" 
gespeichert hat

-jetzt kannst Du Daten in den RAM schreiben, die angezeigt werden 
sollen.
-nun fortlaufend die daten aus dem RAM auslesen und mittels 
Look-up-Tabelle die Zeichen ausgeben.

Das ist alles andere als schnell und leicht gestrickt. Such mal im Netz 
danach. Es gibt einige (freie) Lösungen dafür.
frank

Autor: Markus Red_corner04 (markus-red_corner04)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich mit hilfe eines FPGA's. Habe bisher eine VGA Ansteuerung 
640x480 mit 16 Farben. Mein Problem ist ja auch nicht mehr die genaue 
Implementierung sondern, wie ich es am einfachsten schaffe Buchstaben zu 
erzeugen, d.h. aus    Buchstaben mir eben die benötigen Pixelwerte am 
einfachsten zu generieren.

Autor: Markus Red_corner04 (markus-red_corner04)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Frank. So ungefähr habe ich mir das auch schon gedacht. Mein 
Gedanke war eben, vielleicht kennt irgendwer noch ne elegantere Lösung.
Ne passende Internetadresse kannst mir nicht gleich liefern....

Autor: fpgaküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, du suchst also einen zeichengenerator oder besser gesagt eine ROM 
Tabelle mit Pixel für einen zeichensatz?

Ich hab mich dafür aus den Unix C Quellen bedient, genau bei banner.c.
Quellcode hier:
http://src.opensolaris.org/source/xref/onnv/onnv-g...

Die tabelle dort (Obacht sind octalwerte) habe ich mit ein bißchen 
Suchen und ersetzten in einen bitvector ungeformt und damit einen BRAM 
per generic initialisiert:

<VHDL>
CONSTANT C_CHARSET : bit_vector( 0 TO (8*8*48)-1)  :=
  i2bv(34)&   i2bv(42)&  i2bv(101)& i2bv(101)& i2bv(101)& i2bv(42)& 
i2bv(34)&  i2bv(0)&  -- 0 */
  i2bv(10)&   i2bv(30)&  i2bv(50)&  i2bv(10)&  i2bv(10)&  i2bv(10)& 
i2bv(76)&  i2bv(0)&  -- 1 */
  i2bv(76)&   i2bv(101)& i2bv(1)&   i2bv(76)&  i2bv(100)& i2bv(100)& 
i2bv(177)& i2bv(0)&  -- 2 */
</VHDL>
wobei:
<VHDL>
FUNCTION i2bv (CONSTANT OP : integer) RETURN bit_vector IS
    VARIABLE tmp1,tmp2 : integer;
  BEGIN
    --convert octal to integer
    tmp1 := (op / 100) * 64;
    tmp2 := op - ((op / 100) * 100);
    tmp1 := tmp1 + ((tmp2 / 10) * 8);
    tmp2 := tmp2 - ((tmp2 / 10) * 10);
    tmp1 := tmp1 + tmp2;

    RETURN to_bitvector((std_logic_vector(to_unsigned(tmp1, 8))));
  END FUNCTION i2bv;

</VHDL>


Als fingerübung kann man das ganze eleganter schreiben. den Komplettcode
gibts nicht (Lohnarbeit).

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll der Text als Pixel-Zeichen innerhalb eines sowieso bestehenden 
Grafikspeichers stehen, oder liegt er in einem Textspeicherbereich als 
ASCII vor? FPGAs haben nicht so reichlich RAM, da wäre letzteres 
vermutlich sparsamer.

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.