heise online
  • c't
  • iX
  • Technology Review
  • Mac & i
  • mobil
  • Security
  • Netze
  • Open Source
  • Developer
  • c't-TV
  • Download
  • Telepolis
  • Resale
  • Foto
  • Autos
  • Preisvergleich
  • Stellenmarkt
  • Abo
  • weitere Angebote
    • Shop
    • Artikel-Archiv
    • Veranstaltungen
    • Whitepapers
    • heise-marktplatz
    • IT-Markt
    • Tarifrechner
    • Jobs bei Heise

c't Magazin
  • Startseite
  • Artikel
  • c't-Projekte
  • Hotline & FAQ
  • Treiber & mehr
  • Kolumnen
Software zu Projekten Allgemeine Hinweise
Archiv-Suche Newsletter RSS-FeedRSS

c't › c't-Projekte

c't-Lab
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Start Page
  • Index
  • History
  • Last Change

QVGA-/Composite-Treiber für FPGA

browser:Bilder/DACRAM-qvga.JPG

c't-LabScript kann auch eingesetzt werden, um mittels der Video-Interface-Konfigurationsdatei (VGA.BIT oder FBAS60.BIT) Messwerte und einfache Grafiken auf einem am FPGA-Modul angeschlossenen VGA-Monitor darzustellen. Die Auflösung beträgt 320 x 240 Bildpunkte bei 64 Farben (Zeilenverdopplung auf VGA-Standard bei vga.bit). Sie benötigen dafür die FPGA-Modul-Firmware ab Version 1.1 (aktuell: 2.1).

Als Video-Speicher für das FPGA ist ein simples 32 KByte-SRAM (62256 o.ä.) ausreichend, das entsprechend dem Schaltplan schem_FPGA_RAM.pdf auf einer Lochraster-Steckkarte aufgebaut werden kann; Platinenlayouts zum Selberätzen sind ebenfalls vorhanden. c't 4/2009 stellt die universelle Erweiterungskarte DACRAM vor, die ebenfalls ein Video-RAM enthält.

Eine kleine Demonstration der Möglichkeiten (auch von LabScript) zeigt DEMOVGA.INI im Unterverzeichnis "sdcard" (im ZIP-File, Inhalt komplett auf eine SD-Karte kopieren und DEMOVGA.INI starten - VGA.BIT wird automatisch geladen).

Die Firmware überprüft nach jedem Laden einer Konfigurationsdatei, ob sie ein Video-Interface enthält -- indem sie versucht, in den Grafikspeicher bestimmte Werte abzulegen und wieder fehlerfrei auszulesen. Die FPGA-Modul-SubChannel? auf den Adressen 64 bis 79 sind für das Video-Interface reserviert und dürfen nicht für andere Zwecke missbraucht werden, das könnte die Firmware verwirren. Unser FPGA-Video-Interface nutzt von diesem Adressbereich nur die ersten drei Register: Das erste ist ein Adressregister für das Framebuffer-RAM mit Autoinkrement (zählt bei jedem Byte-Zugriff auf das Buffer-RAM eins weiter), das zweite dient nur zum Auslesen der Framebuffer-Daten, und das dritte ist ein Befehlsregister für den hier "pixel_engine" genannten VHDL-Funktionsblock.

Die etwas hochtrabende Bezeichnung täuscht darüber hinweg, das die "Engine" nur einfachste Bit-Manipulationen beherrscht (Pixel anhand einer Maske setzen, invertieren, löschen) -- wir wollten ja auch keinen 6845 oder gar 3D-Grafikchip implementieren. Immerhin wurde der Block gut auf den (eigentlich für kleine LCDs gedachten) generischen Grafiktreiber abgestimmt, den der bei der Firmware-Entwicklung verwendete Cross-Compiler (AVRCo Pascal von E-Lab) bereitstellt.

Wenn Sie die FPGA-Sourcen genauer untersuchen, werden Sie feststellen, dass das SPI gegenüber dem des FPGA-Frequenzzählers auf das Nötigste zusammengestrichen wurde. Der Video-Sync-Generator "sync" ist dagegen beispielhaft und kann (über Konstanten im zugehörigen VDHL-Code, siehe Kommentare dort) in weiten Grenzen parametriert werden. Für das langsamere FBAS-Timing benötigt er allerdings einen durch acht und nicht durch vier geteilten 50-MHz-Takt; ein Zähler (Mitte oben im QVGA-Schaltbild) ist dafür schon vorgesehen.

Das zunächst "schwarzweiße" Video-Signal serialisiert nach alter Väter Sitte ein 8-Bit-Schieberegister, das seine Daten direkt aus dem (externen) Video-RAM bekommt. Die farbige Darstellung erreichen wir, indem die Video-Ausgänge mit einem Farb-Byte aus der oberen Adresshälfte verUNDet werden. Großer Vorteil: Der Atmel-Controller muss sich nur um einbittige Schwarzweiß-Pixel kümmern, als Nachteil haben immer acht nebeneinander liegende Pixel die gleiche Farbe -- was für die angedachte Messwert-Visualisierung wohl kein allzu großes Manko darstellt.

Gegenüber der ersten Version wurde das Timing überarbeitet, das QVGA-Interface läuft nun mit allen LC-Monitoren.

Download in other formats:

  • Plain Text

Trac Powered

Powered by Trac 0.11.7
By Edgewall Software.

http://www.ctmagazin.de/
http://www.ctmagazin.de/projekte/

  • Datenschutzhinweis
  • Impressum
  • Kritik, Anregungen bitte an c't-WWW
  • Mediadaten
  • Copyright © 2011 Heise Zeitschriften Verlag
  • International: The H, The H Security, The H Open Source