Ein Atmega328 steuert einen Z80-Computer

Themabewertung:
  • 2 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#11
03.10.2016, 19:21

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
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#12
05.11.2016, 23:19

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 erstgellt 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


   
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#13
26.11.2016, 12:10

[Bild: eb4533dc54dd6c8a8250a9993c76d32b.jpg]

Gerade angekommen. Heute wird gelötet

Gesendet von meinem SM-N910F mit Tapatalk
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
tesacrep
Administrator
*******

Beiträge: 500
Registriert seit: Dec 2013
Bewertung: 2
#14
27.11.2016, 22:57

--- Off Topic ---
Darf man fragen wo Du eigentlich deine Platinen bestellst?

Sieht sehr ähnlich aus Wo ich immer bestelle. Eventuell sollten wir im Wiki einen Eintrag mit einer liste mit Herstellern starten.
Ich werde mich mal die Tage daran setzten.
--- /Off Topic ---

Ich finde es immer toll die Platinen nach so langer Wartezeit in der Hand zu halten. Umso ärgerlicher ist es dann immer wenn ein Fehler im Layout ist. Hast Du schon aufgelötet und kannst mehr berichten?

Grüße,

tesacrep
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#15
27.11.2016, 23:22

Hallo zusammen,

ja, ich habe schon aufgelötet. Die Platine ist fertig. Ich weiß, dass die Schaltung etwas tut, jedoch weiß ich noch nicht, ob sie das richtige tut.

Aus irgendeinem Grund will kein Bild auf dem Monitor erscheinen, obwohl ein Signal vorhanden ist. Da ich mit einem kleinen, selbst gebauten Verstärker arbeite, vermute ich das Problem dort. Das Teil hat so seine Tücken.

Die Schaltung habe ich inzwischen zweimal gelötet, ich bin ziemlich sicher, dass es da kein Problem gbt. Und mein Layout habe ich zig mal überprüft und auch auf dem breadboard getestet.

Dennoch... Es funktioniert noch nicht. Ich muss auf Fehlersuche gehen.

Gruß,
Uni

Ps: meine Platinen entwerfe ich auf Easyeda.com. Dort bestelle ich sie auch.

Gesendet von meinem SM-N910F mit Tapatalk
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#16
04.12.2016, 21:38

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
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
tesacrep
Administrator
*******

Beiträge: 500
Registriert seit: Dec 2013
Bewertung: 2
#17
05.12.2016, 23:30

Hey,

ja so geht es mir auch oft mit meinen Layouts. Das Letzte mal habe ich es aber anders gemacht. Ich würde an deiner stelle weiter mit den Platinen Arbeiten. Ich mach es dann immer so das mit dem Cutter die Leiterbahnen unterbreche und mit Kabeln dann Richtig verbinde. Dann hast Du am ende eine funktionierende Platine auf der nur wenige Fehler markiert sind und die Du dann einfach übertragen kannst. Wenn Du wieder alles auf ein Breadboard machst können dir die Fehler wieder untergehen.

Waren die Platinen umsonst oder der Check?
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#18
06.12.2016, 19:50

Mahlzeit,

Die Platinen haben mich nix gekostet, weil ich einen Gutschein von EasyEDA hatte. Ich hatte für die einige Übersetzungen geliefert, da haben die mir den Gutschein geschenkt. Und der Rest vom Gutschein reicht auch noch, um weitere Platinen erstellen zu lassen.

Ich habe mein Design nochmals leicht überarbeitet. Zwei fehlende Verbindungen wurden ergänzt und die Spannungsversorgung noch einmal komplett überarbeitet. Die ist aktuell nicht das Gelbe vom Ei, die Spannung bricht an verschiedenen Stellen um bis zu 1 Volt ein. Das ist bei TTL-Schaltkreisen tödlich, da sich dann Low- und High-Signale nicht mehr klar unterscheiden. Die Schaltung beginnt dann zu schwingen.

Außerdem habe ich noch einen Kontrollport eingebaut, damit ich Signalmessungen mit dem Logic-Analyzer vornehmen kann. Das geht zwar auch jetzt schon, dafür werden aber etliche Kabel benötigt.

Auf dem Breadboard stecke ich den neuen Schaltplan, also mit den Änderungen.

Gruß
Uni
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#19
21.01.2017, 21:09

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


Die Platine:
   


Erstes Bild auf dem Schirm:
   

Gesendet von meinem Y6 Max mit Tapatalk
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#20
25.01.2017, 09:42

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


PS: Um das zu veranschaulichen, habe ich im Schaltplan die betroffenen Bereiche mal Lila gekennzeichnet und den Schaltplan an diesen Beitrag gehängt. Für die, die es interessiert....


Angehängte Dateien Thumbnail(s)
   
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
(Dieser Beitrag wurde zuletzt bearbeitet: 10.02.2017, 11:50 von Unilein.)
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste