Forum

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

Z80Ardu - Ein homebrew Computer mit Z80 und Atmega328

VorherigeSeite 2 von 5Nächste

Hallo zusammen,

hier ist ja auch schon eine Weile nichts mehr passiert.

Also mal einen kurzen Zwischenstand: Ich wollte ja ursprünglich einen Arduino UNO einsetzen, um den Speicher für den Z80 mit einem ordentlichen Programm zu füllen. Das war ja schon gescheitert. Danach wollte ich den Atmega162 als "Programmgeber" verwenden. Rein schaltungstechnisch wäre das auch gegangen. Allerdings habe ich große Probleme, einen SD-Kartenleser an dem Chip in Betrieb zu nehmen. Weder mein Oshonsoft-Basic noch die Arduino-IDE wollen mit dem Chip. Da ich eine schnelle Lösung gesucht habe, wollte ich nicht irgendwas Neues für den Atmel in C entwickeln und dort eine entsprechende Lib einbinden. Der Schwerpunkt des Projekts liegt beim Z80.

Also habe ich nun beschlossen, einen Mega2560 zu verwenden. Da war es natürlich kein Problem, einen Kartenleser per Arduino einzubinden. Also habe ich das gemacht. Der nächste Schritt wird nun die Anbindung an die Speicherbausteine in meinem Schaltplanentwurf sein.

Der Mega2560 ist definitiv oversized für das Projekt, dafür hat er dann aber auch mehr als genug Pins, um Adressierung und Daten zu trennen und trotzdem noch den Kartenleser und evtl. eine Tastatur anzuschließen. Außerdem kann ich noch ein TFT-Display zur Anzeige von Statusmeldungen dran basteln. und der Mega2560 kann später auch noch direkt in das Softwaregeschehen des Z80 eingreifen.

Es geht langsam voran.... aber es wird sicher irgendwann mal fertig 🙂

Gruß
Uni

So...

Jetzt geht es hier auch mal weiter. Ich habe mein Schaltungsdesign komplett überarbeitet. Der Arduino ist aus dem Schaltplan komplett verschwunden. Stattdessen gibt es zwei Buchsenleisten, über die der kleine Z80-Rechner "befüllt" werden kann.

Der Z80-Rechner hat kein ROM. Stattdessen wird das RAM über die eben genannten Verbinder mit einem Programm befüllt. Aktuell verwende ich dazu ein Arduino Mega2560. Und das funktioniert prima. Als Programm verwende ich ein ROM-Image vom VZ200. Das war ein Heimcomputer der frühen 80er. Es handelt sich dabei primär um einen BASIC-Interpreter.

Mit dem Arduino kann ich den Z80-Rechner anhalten und zurücksetzen. Außerdem wird (später) die Tastatur über den Arduino abgefragt und die Daten an den Z80-Rechner übergeben. Entsprechende Ports im Z80-Design habe ich dafür bereits vorgesehen.

Ich hab jetzt mal ein PCB erstellt und 5 Platinen in Far-East bestellt. In ca. 4 Wochen werden die wohl eintreffen. Dann baue ich die Schaltung mal fest auf. und erst dann weiß ich, ob das Teil sauber funktioniert. Der Aufbau auf dem Breadboard hat soweit funktioniert, war jedoch mit vielen Störsignalen zu regelmäßigen Abstürzen verdammt.

Im Anhang findet Ihr mal wieder den aktuellen Schaltplan.

Gruß
Uni

 

Z80 Rechner ohne Mikrocontroller

Hallo zusammen,

 

Platinen sind eingetroffen.

 

Zwischenstand: Ich habe mal wieder Fehler entdeckt. 100 mal das Layout gecheckt und trotzdem Fehler drin. Mindestens zwei Dinge sind nicht in Ordnung: Die Spannungsversorgung vom Z80 und Output enable von einem der beiden HCT245 Bustreiber. Ich will gar nicht erst weiter suchen. Da würde ich dann sicher nochmal etwas finden.

Also was tun? Die Platinen werfe ich weg (sind übrigens ROHS-konform und haben mich nichts gekostet.) Die Bauteile waren gesockelt. Also auch kein Problem. Jetzt wird der Mist wieder auf ein Breadboard gesteckt und erneut geprüft. Und wenns dann evtl doch klappt, werde ich neue Platinen bestellen.

Gruß
Uni

So,

inzwischen habe ich neue Platinen aus Singapur bekommen. Leider hatte der Zoll zugeschlagen und ich musste 7.04€ Einfuhrumsatzsteuer zahlen. Pech gehabt.

Heute habe ich dann endlich Zeit gefunden, die Schaltung aufzulöten. Alles erst mal prima gelaufen. Der erste, rein technische Test hat geklappt. Der Computer läuft an und zeigt Chaos auf dem Bildschirm an.

Jetzt gilt es, ein Programm zu schreiben, welches zunächst die Schaltung in einen definierten Zustand bringt.

Das Programm wird dann mit einem Arduino Mega 2560 über den "Programmierport" des kleinen Computers hoch geladen und der Computer über eine Signalfolge gestartet.

Beigefügt noch ein Bildchen von der aktuellen Platine

Gruß
Uni

 

 

 

 

Hallo zusammen,

wieder mal ein kurzer Zwischenstand:

Es wäre ja zu schön gewesen, wenn alles perfekt gewesen wäre. Leider ist es das nicht. Mir ist ein logischer Fehler unterlaufen, der dazu führt, dass ein Signal nicht den richtigen Pegel hat, wenn es nötig wäre.

In der Schaltung ist ein Latch vom Typ SN74HCT4573 eingebaut. Das Latch gibt seine Daten dann weiter, wenn an dem Pin LE kurz ein High-Signal angelegt wird. Dieses Signal erzeuge ich mit einem Demultiplexer (SN74HCT138). Mein Ansatz war, dass wenn der Demultiplexer aktiv ist und an seinen Eingängen Low-Signale anliegen, am Pin Y0 ein High-Signal anliegt. Das ist jedoch falsch. Es liegt ein Low-Signal vor. Desweiteren gibt es die Situatuation, dass der Demultiplexer NICHT aktiv ist. In diesem Fall sind die Ausgänge ALLE auf High. Das bedeutet, dass Y0 auf High liegt, LE am Latch aktiv ist und das Latch munter alle Daten vom Datenbus an meine Videochip-steuerung übergibt. Mit dem Latch wird der Grafikmodus gesteuert. Entsprechend wild sieht das auf dem Bildschirm aus. Der flackert wie die Beleuchtung in einer Disco.

Nunja... Es ist wie es ist... Das Latch-Problem ist lösbar. Ich baue eine kleine Zusatzplatine, die ich statt des Latch auf den Sockel stecke. Auf die Platine packe ich das Latch und einen Inverter, um die Signale umzukehren. So wird verhindert, dass das Latch alle Daten durch läßt, wenn die Ausgänge des Demultiplexers alle auf High sind. Außerdem verbinde ich den Pin LE des Latch über einen Pulldown-Widerstand mit GND. So ist sicher gestellt, dass das Latch "zu" ist, wenn die Signalsituation seitens des Demultiplexers unklar erscheint.

Da hätte ich auch schon früher drauf kommen können....

Egal! Die Schaltung ist noch nicht verloren. Ich versuche mal den Umbau. Die nächste Revision der Schaltung wird das dann auch gleich ordentlich berücksichtigen. Ich bin halt doch kein Profi und ich bewundere Jungs wie Steve Wozniak (Der Erbauer des ersten Apple-Computers), die mit wesentlich weniger Messmöglichkeiten und außerdem ohne Unterstützung irgendwelcher Software wie EasyEDA oder Eagle solche Schaltungen entworfen haben.

Gruß
Uni

Hallo zusammen,

ich habe das Projekt mit der bestehenden Plaine abgehakt. Immer wenn ich aus meinen Entwürfen eine Platine erstellen lasse und anschliessend meine Bauteile auflöte, habe ich eine neue Fehlfunktion, die ich mir nicht direkt erklären kann.

Ich baue meinen "Einplatinencomputer" jetzt auf mehreren einzelnen Platinen auf. Ganz klassisch auf Lötstreifenraster mit Kabelbrücken. Für jede Einheit erstelle ich eine eigene Platine. Ich trenne wie folgt auf:

* Eine Platine für den Prozessor mit Taktquelle und Speicherlogik
* Eine Platine für RAM und ROM (in meinem Fall EEProm oder alternativ auch RAM)
* Eine Platine für den Videochip mit RAM mit eigener Taktquelle
* Eine Platine für die Ausgabeeinheit für den Bildschirm
* Und vielleicht eine weitere Platine für etwas zusätzlicher Logik

Faxen dicke!!

Grrr.... Das ist ja fast ein Lebenswerk.

Gruss
Uni

Zwischenstand: Ich habe angefangen. Das war's aber auch schon. Momentan keine Zeit, das Projekt weiter fortzuführen.

Der Rechner selbst funktioniert inzwischen einwandfrei.
Lediglich das Timing für den Videocontroller stimmt noch nicht.
Aktuell habe ich aber keine Geduld, um das genau zu analysieren Big Grin

 

Moin,

inzwischen habe ich damit weiter gemacht, die einzelnen Teile des Z80Ardu auf Platinen aufzubauen. Eine Grundplatine dient dabei als "Bus". Zwei Bilder habe ich mal beigefügt, die das Ganze veranschaulichen sollen (Gundplatine und Prozessorplatine).

Gruß
Uni

 

 

Hallo zusammen,

die Z80-Karte ist jetzt fertig und getestet. Der Kern des Computers funktioniert also. Als nächstes wird das "Lademodul", der Arduino Nano, der die "Firmware " bereit stellt, aufgebaut.

Der Z80 :

 

Und da Gerippe des Arduino Steuerboards:

 

VorherigeSeite 2 von 5Nächste