Forum

Bitte oder Registrieren, um Beiträge und Themen zu erstellen.

Z80Ardu - Die Grafikkarte (mit MC6847)

Hallo zusammen,

hier möchte ich Euch die Entwicklung meiner Grafikkarte für den Z80Ardu vorstellen. Diese Karte existiert bereits, wie Ihr aus diesem Thread: Z80Ardu Homebrew Computer wisst (Sofern Ihr den gelesen bzw. verfolgt habt.

Auf der Seite Z80Ardu – Displayadapter (mit MC6847) findet Ihr jeweils die Version, die bei mir funktioniert. Evtl. finden sich dort auch mehrere funktionierende Versionen, da ich immer mal wieder Änderungen durchführe um Optionen hinzuzufügen oder Anpassungen am Design mache.

Gruß

Uni

Hallo zusammen,

aktuell arbeite ich an einer Version der Grafikkarte, die auch einen frei definierbaren Zeichenasatz zulässt. Prinzipiell unterstützt der MC6847 das. Ich fand allerdings bislang nirgendwo im Netz einen Schaltplan, in dem das verwirklicht wurde. Ich kenne allerdings das Projekt von Ed Snyder, dem Betreiber der Zippster Zone. Er hat für den CoCo 2 (Color Computer 2) ein entsprechendes Modul entwickelt (Erweiterung CoCo 2, MC6847 mit externem Zeichenrom). Einen Schaltplan hat er jedoch nicht veröffentlicht.

Also versuche ich mein Glück. Das Datenblatt des MC6847 beschreibt die grundsätzliche Vorgehensweise. Ein paar Dinge sind zu beachten bzw umzusetzen:

  • Um Semigrafik darstellen zu können, muss wieder auf den internen Modus geschaltet werden.
  • Ich möchte kein ROM sondern RAM verwenden, damit ich den Zeichensatz jederzeit anpassen kann
  • Das Zeichen RAM muss über den gleichen Weg beschrieben werden können wie das Video RAM

Eine erste Version des neuen Schaltplans habe ich gerade als PCB über JLCPCB bstellt. Mal sehen, was da so alles nicht funktioniert.

Gruß

Uni

Sodele,

es ist heiß die Tage. So heiß, dass man eigentlich besser nicht draussen herum hüpft. Das ist auch eine gute Gelegenheit, sich wieder um laufende Projekte zu kümmern. Wie zum Beispiel um die Grafikkarte für den Z80Ardu.

Ich hatte ja PCB's bestellt und wie nicht anders erwartet waren diese nach ca 9 Tagen da.

Ich habe zunächst alle Kontakte überprüft. Die PCB's entsprechen den Erwartungen! Das wa schonmal gut. Im Schnellverfahren habe ich die Platine mit Bauteilen bestückt und sogleich getestet. Und wie das (leider) bei meinem Projekten läuft, ist der erse Wurf Schrott.

Alles verzerrt!

Meine erste Vermutung war die Taktfrequenz. Am MC1372 war aber alles OK. Wer den Schaltplan man angeschaut hat, weiß evtl., dass ich das aktsignal noch über zwei Inverter schicke, um es zu stabilisieren. Das hat beim alten Entwurf (die kurze Karte) prima funktioniert.... Diesmal nicht! Es hat eine ganze Weile gedauert, bis ich das Problem eingegrenzt hatte.

Das das Signal direkt am Taktausgang des MC1372 aber perfekt war, habe ich die Leiterbahnen zum und vom 74HCT04 durchtrennt und den Taktausgang direkt mit dem Takteingang des MC6847 verbunden. Schon sah das Bild besser aus. Aber immer noch nicht wie gewünscht. Man konnte zwischen Streifen und Punkten so etwas wie Buchstaben erkennen. Also weiter messen und prüfen.

Ich habe dann nach und nach alle IC's entfernt, die etwas mit dem externen Zeichensatz zu tun hatten. Das hat allerdings ÜBERHAUPT KEINE Verbesserung gebracht. Also habe ich meinen Schaltplan noch einmal geprüft. Und Folgendes fand ich heraus: Abgesehen davon, dass das von mir umgesetzte Prinzip mit dem externen Zeichensatz so GAR NICHT funktionieren kann, musste ich festellen, dass ich die Adressleitungen des Videospeichers direkt mit dem Adressbus des Z80Ardu verbunden hatte und nicht, wie eigentlich vorgesehen, über die beiden 74HCT245, die den Adressbus nur bei Bedarf it dem Z80Ardu verbinden.

Tja... Die Platinen kann ich wegwerfen. Und die Idee mit dem externen, frei definierbaren Zeichensatz muss ich noch einmal überdenken.

Gruß

Uni

Hallo zusammen,

die Idee mit dem externen Zeichensatz habe ich erst einmal verworfen. Ich hätte ja gerne nicht nur einen anderen Zeichensatz, sodern auch die Möglichkeit, den Zeichensatz zum einen im Laufenden Betrieb zu ändern und zum anderen auc zum internen Zeichensatz zurückkehren zu können. Der im vorigen Beitrag vorgestellte Ansatz und das Ergebnis zeigen ja, dass es so nicht funktioniert.

Ich habe jetzt erst einmal die klassische, bislang gut funktionierende Version weiterentwickelt: Neues Platinenformat, angepasst an den aktuellen Z80Ardu ("lange Karte"). Gleichzeitig habe ich die zuvor genutzte Verbindung zu Adressbus überarbeitet und habe die Widerstände durch Bustranceiver (75HCT245) ersetzt. Jetzt sind die Adressleitungen immer sauber vom Rest des Computers getrennt, wenn die Grafikkarte nicht angesprochen wird.

Die Version mit den Widerständen hat im Textmodus immer einwandfrei funktioniert, in den Grafikmodi kam es jedoch dazu, dass Pixel dort erschienen, wo keine hin sollten. Das ist mit der Trennung des Adress- und des Datenbusses jetzt behoben.

Im neuen Design habe ich außerdem darauf verzichtet, weiter 4 Speicherblöcke á 8 KB als Bildschirmspeicher zur Vefügung zu stellen. Die Blöcke konnten unabhängig genutzt werden, habe ich aber nie genutzt. Mag sein, dass es nützlich war, aber aktuell sehe ich das nicht. Es sind also keine 32 KB mehr verbaut, sondern nur noch 8 KB. Für die Nutzung alles Grafikmodi ist das ausreichend. Es werden bei voller Aufösung lediglich 6144 Bytes benötigt.

Die Bildqualität der neuen Grafikkarte ist nun übrigens erheblich besser (sofern das mit einem Compositsignal möglich ist)

Neue MC6847-Grafikkarte

Gruß

Uni