Mikrocontroller-Projekte
Ronald Daleske

Startseite Impressum Warenzeichen

CPD-VGAGEN2 - anspruchsvolle VGA-Grafikkarte (512x240 Pixel)

Aufbauend auf der einfachen VGA-Grafikkarte VGAGEN (Grundidee aus dem Projekt http://lucidscience.com) wurde vom Autor eine recht anspruchsvolle VGA-Grafikkarte mit 3 Mikrocontrollern für das CP/M-Projekt CPD5 entwickelt, die die Nachteile der VGAGEN (geringe Auflösung, langsamer Bildaufbau) beseitigen sollte. Dies ist auch mit ATMEGA-Controllern sehr gut möglich. Allein der Aufwand ist etwas höher.

Inhaltsverzeichnis

1. Beschreibung der Grafikkarte
2. Technische Daten
3. Hardware
4. Assembler-Quelltext ATMEGA48/ATMEGA8
5. Lizenz (Assembler-Quelltext)
6. PASCAL-Quelltext ATMEGA644P/ATMEGA1284P
7. Lizenz (PASCAL-Quelltext)


1. Beschreibung der Grafikkarte


Das Projekt VGAGEN (nach einer Grundidee von http://lucidscience.com) hat zwei entscheidende Nachteile:

  1. Die Auflösung von 256x240 Pixel reicht nur für maximal 42 Zeichen pro Zeile. Das ist für das normale Arbeiten mit CP/M zu wenig (Standard sind 80x24 Zeichen).
  2. Die Programmierung des Mikrocontrollers ist zeitkritisch und damit recht kompliziert in Assembler geschrieben. Trotzdem ist der Bildschirmaufbau langsam, da der µC die meiste Zeit den VGA-Anschluss mit Daten versorgen muss.

zu 1.

Wie schon in VGAGEN beschrieben ist der ATMEGA mit maximal 20 MHz (in der DIL-Variante) für die Generierung der Adressen voll ausgereitzt. Für die regelmäßige Anzeige des Bildschirmspeichers ist aber keine komplizierte Logik notwendig. Ein einfacher binärer Zähler für die Adressierung des SRAMs kann den Inhalt des Bildwiedeholspeichers genau so gut anzeigen. Der Aufwand für einen schnellen binären Zähler in TTL-Technik (Rücksetzen auf 0 und binäres Vorwärtszählen z.B. mit 74HC193) ist relativ gering und kann mit bis zu 40 MHz angesteuert werden.

zu 2.

Das Problem zum 2. Punkt entsteht durch die vielen Aufgaben, die der eine Mikrocontroller übernehmen soll. Die einfachste Lösung ist das Verteilen der Aufgaben auf 2 Mikrocontroller. Der erste Mikrocontroller startet den Zähler für die Adressgenerierung und erzeugt die Horizontal- und Vertikal-Synchronsignale (wieder in Assembler aber sehr einfach).

Der zweite Mikrocontroller ist für die Bearbeitung der Zeichenfläche (Zeichen generieren, Bildschirm löschen, Screenroll, Grafiken zeichnen usw.) zuständig. Diese Aufgaben können dann auch in PASCAL programmiert werden. Trotz der Hochsprache ist der zweite Mikrocontroller schnell genug, da er keine weiteren Aufgaben zu erledigen hat.

Zusatz

Im VGAGEN werden 2 RAM-Seiten (Bildwiederholseiten) genutzt. Eine Seite enthält den Inhalt der aktuellen Bildschirmseite. Die andere Seite wird durch die vorhandenen Softwarepakete neu beschrieben. Danach wird umgeschaltet. Praktisch haben beide RAM-Seiten nach der letzten Aktualisierung den gleichen Inhalt.

Im Projekt VGAGEN2, in dem die Anzeige von der Generierung der Bildwiderholseite getrennt ist, werden nun auch 2 RAM-Schaltkreise (für jede Aufgabe einen IC) genutzt.

2. Technische Daten

3. Hardware

Die wesentlich besseren Eigenschaften der Grafikkarte VGAGEN2 gegenüber der VGAGEN erfordern leider einen deutlich höheren Schaltungsaufwand.

Das sind in erster Linie die 10 Adress-Umschalter (74HC244N - im Schaltplan in der Mitte dargestellt), die die beiden SRAM-Schaltkreise jeweils an den Binärzähler oder an den Microcontroller ATMEGA644P umschalten.

Die genaue Arbeitsweise der Selektierung der Steuerleitungen und der Ansteuerung des RAM-Latch (74HC245 - rechts im Schaltplan) während des Lese- und des Schreibvorgangs wird in den beiden folgenden Übersichtsbildern dargestellt:

Aufteilung des Bildwiederholspeiches und der genutzten Register und des Page-Umschalters (A16)

Schaltplan

Schaltplan im PDF-Format: VGAGEN2.pdf

Schaltplan im EAGLE-Format: VGAGEN2.zip

4. Assembler-Quelltext ATMEGA48/ATMEGA8

Für die Generierung der Horizontal- und Vertikalimpulse, sowie für die Steuerung des binären Zählers für die Generierung der Bildwiederholadressen des SRAMs war eigentlich ein ATMEGA48 geplant, da dieser mit 20 MHz angesteuert werden soll. Da dieser aber nicht zur Hand war, wurde ein ATMEGA8 genutzt und etwas übertaktet.

Das Programm ist ein abgespecktes Gerüst aus dem Projekt VGA Video Generator. Die Aufgaben sind sehr einfach und daher ist auch das Programm (im Gegensatz zum VGAGEN) recht einfach.

Assembler-Quelltext: VGAGEN2.ZIP

In der Datei befindet sich nur der Quelltext "VGAGEN2.asm". Zur Übersetzung wurde der Assembler des AVR-Studio 4 genutzt (ein Projekt kann man schnell selbst erzeugen).

5. Lizenz (Assembler-Quelltext)

Grundidee

Die Grundidee wurde von http://lucidscience.com dem Projekt VGA Video Generator übernommen (Lizenz: GNU General Public License).

Erweiterungen

Die Erweiterungen unterliegen ebenfalls der GNU General Public License

keine Mängelgewähr

DIESE SOFTWARE WIRD VOM URHEBERRECHTSINHABER "OHNE MÄNGELGEWÄHR" BEREITGESTELLT. ALLE AUSDRÜCKLICHEN ODER STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN, EINSCHLIESSLICH DER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK (JEDOCH NICHT DARAUF BESCHRÄNKT), WERDEN AUSGESCHLOSSEN. DER URHEBERRECHTSINHABER IST IN KEINEM FALL UND NACH KEINER HAFTUNGSTHEORIE (SEI ES AUF VERTRAGSBASIS, AUF DER BASIS STRENGER HAFTUNG ODER UNERLAUBTER HANDLUNGEN, EINSCHLIESSLICH FAHRLÄSSIGKEIT) FÜR BELIEBIGE VERURSACHTE DIREKTE, INDIREKTE, ZUFÄLLIGE, BESONDERE, EXEMPLARISCHE SCHÄDEN ODER FOLGESCHÄDEN (EINSCHLIESSLICH, JEDOCH NICHT BESCHRÄNKT AUF BESCHAFFUNG VON ERSATZPRODUKTEN ODER -LEISTUNGEN, NUTZUNGSAUSFALL, DATEN- UND GEWINNVERLUST ODER GESCHÄFTSAUSFALL) HAFTBAR, DIE AUFGRUND DER VERWENDUNG DIESER SOFTWARE ENTSTEHEN KÖNNEN. DIES GILT AUCH, WENN AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN HINGEWIESEN WURDE.


THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


6. PASCAL-Quelltext ATMEGA644P/ATMEGA1284P

Der Grafikcontroller (GCON) konnte nun endlich in PASCAL geschrieben werden. Da die beiden Aufgaben:

  1. kontinuierliche Anzeige des Bildwiederholspeichers (1. RAM-Page) an den VGA-Monitor durch den Video-Controller (VCON) und
  2. Beschreiben der 2. RAM-Page durch den Grafik-Controller (GCON) über eine serielle Schnittstelle

in der Hardware des VGAGEN2 strikt getrennt sind, kann man sich nun beim GCON auf den Text- und Grafikmodus konzentrieren.

Ein kleines Problem musste aber trotzden erst noch gelöst werden.

In den vergangenen Projekten hatte ich immer den AVRco PASCAL-Compiler der Firma E-LAB Computers (http://www.e-lab.de) genutzt. Der ist aber nur für den ATMEGA8 voll nutzbar. Für alle anderen ATMEGAs gibt es nur die Testversion, mit der man nur ein kleines Programm übersetzen kann.

Was macht ein Informatiker, wenn er keinen passenden Compiler zur Hand hat? - Er programmiert sich halt einen eigenen Compiler.

Der RONPAS-Compiler kann unter RONPAS - AVR© PASCAL-Compiler im Bereich "Programmier-Projekte Lazarus / Free Pascal" herunter geladen werden. Da es sich hier noch um eine Beta-Version handelt, kann keinerlei Garantie über den Erfolg der Nutzung gegeben werden (siehe Lizenzbedingungen).

Zurück zum Grafik-Controller (GCON). Er wandelt die Zeichen der seriellen Schnittstelle in farbige Pixel um (meist in der Vordergrungfarbe "FCOLOR") und schreibt diese in die zugeschaltete RAM-Page. Wird nun die Steuerleitung "VS1_GS2" (PortD, PIN5) umgeschaltet, so zeigt der Video-Controller (VCON) sofort den Inhalt der eben beschriebenen RAM-Page an. Damit ist nun die vorher angezeigte RAM-Page im Zugriff des Grafik-Controllers (GCON) und kann ebenfalls beschrieben werden.

In der Regel werden alle Zeichen nacheinander auf die beiden RAM-Pages geschrieben um beide Seiten auf dem gleichen Stand zu halten. Ein weiterer Vorteil von VGAGEN2 ist, dass die Umschaltung zu jedem Zeitpunkt geschehen kann. Eine Synchronisation ist nicht erforderlich.

Als Mikrocontroller kann ein ATMEGA644P oder ATMEGA1284P genutzt werden (beide sind PIN-Kompatibel und unterscheiden sich im Wesentlichen nur durch die Größe des FLASH-Speichers.

In der Zusammenfassung kann man sagen, dass der VGAGEN2 zur vollsten Zufriedenheit arbeitet. Der Video-Controller (VCON) ist sehr einfach, arbeitet unabhängig vom Grafik-Controllers (GCON) und braucht nicht mehr verändert werden. So kann man seine ganze Kreativität auf die Programmierung des Grafik-Controllers (GCON) in einer sehr angenehmen Hochsprache PASCAL stecken. Der freie FLASH-Speicher bietet noch viel Raum für weitere Features.

genaue Pixel-Position der Textzeichen

PASCAL-Quelltext: GCON_1.04.ZIP

7. Lizenz (PASCAL-Quelltext)

Creative Commons Lizenzvertrag
Diese(s) Werk bzw. Inhalt von Ronald Daleske steht unter einer Creative Commons Namensnennung-Nicht-kommerziell 3.0 Deutschland Lizenz.


keine Mängelgewähr

DIESE SOFTWARE WIRD VOM URHEBERRECHTSINHABER "OHNE MÄNGELGEWÄHR" BEREITGESTELLT. ALLE AUSDRÜCKLICHEN ODER STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN, EINSCHLIESSLICH DER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK (JEDOCH NICHT DARAUF BESCHRÄNKT), WERDEN AUSGESCHLOSSEN. DER URHEBERRECHTSINHABER IST IN KEINEM FALL UND NACH KEINER HAFTUNGSTHEORIE (SEI ES AUF VERTRAGSBASIS, AUF DER BASIS STRENGER HAFTUNG ODER UNERLAUBTER HANDLUNGEN, EINSCHLIESSLICH FAHRLÄSSIGKEIT) FÜR BELIEBIGE VERURSACHTE DIREKTE, INDIREKTE, ZUFÄLLIGE, BESONDERE, EXEMPLARISCHE SCHÄDEN ODER FOLGESCHÄDEN (EINSCHLIESSLICH, JEDOCH NICHT BESCHRÄNKT AUF BESCHAFFUNG VON ERSATZPRODUKTEN ODER -LEISTUNGEN, NUTZUNGSAUSFALL, DATEN- UND GEWINNVERLUST ODER GESCHÄFTSAUSFALL) HAFTBAR, DIE AUFGRUND DER VERWENDUNG DIESER SOFTWARE ENTSTEHEN KÖNNEN. DIES GILT AUCH, WENN AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN HINGEWIESEN WURDE.


THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



Startseite Impressum Warenzeichen