PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Z80-Computer



oernie97
04.01.2012, 17:15
Hallo,

ich entwickle gerade einen Z80-Computer, der so ähnlich wie der Altair 8800 funktionieren soll (d.h. kein ROM, Programmierung über Kippschalter). Ich weiß, dass das nicht besonders sinnvoll ist, aber ich will das trotzdem mal ausprobieren.
Ich habe schon einen Schaltplan:

21089

Zum Programmieren/Auslesen des RAM's wird mit S3 der Prozessor in den Resetzustand versetzt.
Danach kann man mit S4-S16 eine Addresse angeben und stellt S2 (soll eigentlich ON/OFF/ON und nicht ON/ON sein) so, dass die Verbindung zwischen 2 und 3 besteht (LOAD). Damit wird der Wert an der Speicherstelle an den LEDs 2-9 ausgegeben. Zum Schreiben eines neuen Wertes muss man danach an den unteren 8 Kippschaltern das Datenbyte eingeben und mit S2 die Verbindung zwischen 1 und 2 hergestellt werden (STORE). Auf alle Fälle muss vorher aber LOAD ausgeführt worden sein, weil sonst die Addresse vorher nicht in die Flipflops geschrieben wird.
IC7 (die OR-Gates, für Active-Low also AND-Gates) sorgt dafür, dass LOAD und STORE nicht ausgeführt werden können, wenn die CPU nicht im Reset-Zustand ist.

Sind da irgendwelche groben Fehler drin bzw. ist der Schaltplan in Ordnung?

Ich habe noch relativ wenig Erfahrungen mit Elektronik (naja, eigentlich ist das mein erstes Projekt...).

Grüße,
oernie97

PicNick
04.01.2012, 17:45
Verrätst du, was du in etwa vorhast ? Ein Programm mit Adresse + Daten über schalter jedesmal nach dem Einschalten frisch reinzutippen (und keinen Fehler zu machen) ist recht mühsam, überhaupt, wenn's dann ein bisschen grösser wird.
Ich fürchte, über ein paar Grundversuche kommt man da kaum hinaus, und da ist so eine Platine schon aufwendig.

oernie97
04.01.2012, 18:04
Ich sagte ja schon, eigentlich ist es wenig sinnvoll.
Vielleicht nehme ich noch einen UART als I/O-Gerät, dann muss man nur einen Bootloader programmieren, der dann das Programm von einem Terminal (also PC) lädt.
Irgendwie so, dass der PC einen Magic-Code oder so, die Länge des Programms, danach die Ladeaddresse und dann das Programm schickt.

PicNick
04.01.2012, 19:05
Genau, das stell' ich mir zukunftsträchtiger vor. Wenn du einen Z80 SIO nimmst, brauchst du nur einen kleinen Bootloader.
Ich würd aber auf jeden Fall in der Platine Platz für einen EEPROM einrichten, du musst ja für den Anfang nix reinstecken, wenn du schon unbedingt die harte Tour gehen willst :-)

oernie97
04.01.2012, 19:24
Geht als UART auch ein 16C550 (mit MAX232)?

Besserwessi
04.01.2012, 19:26
Für ein erstes Projekt würde ich mir was einfacheres und sinnvollere aussuchen. Die Benutzung kann ich mir wirklich schwer vorstellen, vor allem die Fehlersuche, und um überhaupt festzustellen ob die CPU überhaupt läuft wären mir ein grauß. Ein Sockel für ein Optionales EPROM wäre wirklich gut - dann ginge es ggf. auch mit dem Bootloader.

Eine Alternative zum Bootloader wäre ein µC, der die Funktion der tasten Simulieren kann.
Damit man das ganz ohne Spannung abstecken kann, wäre ggf. eine Pufferbatterie für das RAM sinnvoll. Mit den CMOS Tyen wie 6216 oder 6264 geht das relativ einfach (R/W umschalten, und 3 V aus Batterie als Backup für die Versorgung). Auch 2 AA Zellen halten da sehr lange.

p.s. Im Plan sind noch keine Entkoppelkondensatoren für die Versorgung. Für ein oder 2 der tasten ist ggf. eine Entprellung nötig. Viel kann man aber auf dem Plan nicht erkennen.

oernie97
04.01.2012, 19:42
Der Schaltplan war eigentlich besser aufgelöst, vielleicht wurde der von der Uploadfunktion verkleinert. Ich lade den sonst noch mal bei imageshack oder so hoch.
Dass da vielleicht noch Pufferkondensatoren an die Stromversorgung müssen, habe ich mir schon gedacht, aber in den Schaltplan nicht eingezeichnet.
Die schwere Bedienung ist mir schon bewusst, aber das ist eigentlich von mir so gewollt. Es ist ja auch nur für kleinere Programme gedacht, oder eben zum Nachladen vom PC. Da muss man dann halt wieder den Code so optimieren, dass er möglichst klein ist.
Klar ist das für ein Anfängerprojekt ein bisschen viel, aber ich habe sonst eigentlich wenig Ideen, und einen Z80-Computer finde ich ganz interessant.

EDIT: Und nur mit RAM spare ich mir immerhin den (E)EPROM-Programmer ;-).

Manf
04.01.2012, 20:46
Eine solche Stufe, einen Mikroprozessor über Kippschalter bitweise mit Information zu versorgen ist kritisch und sollte nur vorkommen, wenn man sich für die Einstiegsphase wirklich nicht anders helfen kann, denn das sinnvollste Programm das man auf diese Weise eingeben kann ist eines, das sich selbst damit überflüssig macht.
Das Programm zu optimieren und dann vielleicht sogar zu simulieren mag noch eine Herausforderung sein.
Die Realisierung und die Bedienung über Kippschalter selbst ist wohl in jeder Phase nur frustrierend und in keiner Phase wirklich lehrreich.

oernie97
04.01.2012, 20:59
OK, langsam überzeugt ihr mich, dass ich ROM verwenden sollte, aber dann möchte ich eigentlich auch z.B. ein PS/2-Interface haben oder BAS-Fernsehsignale erzeugen. Das sind dann im Vergleich zum anderen Entwurf aber wieder zu hohe Ansprüche als dass ich das bauen könnte. Da ist dann das mit den Kippschaltern eher einfacher, denke ich.

oernie97
04.01.2012, 21:06
Ich habe den Schaltplan hier nochmal in höherer Auflösung: http://imageshack.us/f/684/z80board.png/

Peter1060
06.01.2012, 13:58
moin moin,

so wird das nichts, die CPU legt doch die Adressen an, die willst Du aber selber vorgeben....und BUSRQ wird nicht geschaltet...
leg die Eingänge der CPU über 4K7 auf VCC, dann kannst Du später immer noch was erweitern.
...und nimm ne CMOS-CPU die kann statischen Takt -> und siehe für Takt dann eine entprellte Taste vor, dann kannst Du den Programmablauf Taktweise kennenlernen.

Viiieel SPAS!!
Peter

oernie97
06.01.2012, 15:57
Hallo,

erstmal danke fürs Überprüfen des Schaltplans.
Die Addressen werden von den Flipflops ja nur ausgegeben, wenn die CPU im Reset-Zustand ist, und da sind die Address- und Datenleitungen in einem High-Impedance-Zustand, also kann man diese Leitungen so kontrollieren. Ich hatte zuerst vorgesehen, BUSRQ zu benutzen, aber wenn man den RAM programmiert, will man meist sowieso die CPU resetten, also habe ich das weggelassen. Das Single-Stepping (das ist doch das, wenn man den Takt einzeln vorgibt?) wäre wirklich interessant, mal sehen, ob ich das noch einbaue.

oernie97

Dirk123
06.01.2012, 23:15
Hi oernie97,
ich bastel mir auch gerade einen Z80-Computer, bin aber schon ein paar Schritte weiter :-) Für Anregungen zu dem Thema schau mal in meinen Blog
dirk-hobbyblog.blogspot.com
I (http://dirk-hobbyblog.blogspot.com)ch habe u.A. ein EEProm und einen Mikrocontroller in meinem Design. Der µC ist über UART mit meinem PC verbunden und kann den Z80 resetten, EEProm programmieren und Takt für den Z80 erzeugen.
Beim Reset solltest Du übrigens beachten, dass nur Daten- und Adressbus hochohmig werden. /RD, /WR oder /MREQ werden nur inaktiv, sprich high. Ich habe daher einen 74HCT125 benutzt, um die Control Lines im Reset vom RAM/EEProm zu trennen.

Viele Grüße,
Dirk

oernie97
10.01.2012, 16:46
Hallo,

@Dirk123:
Dein System ist ja auch interessant, ist wohl eher auf Benutzbarkeit ausgelegt als meins. Der RAM wird bei dir ja so ähnlich programmiert wie bei mir dann auch, nur eben mit einem µC statt Schaltern.
Ich denke, ich bestelle mir jetzt erstmal ein paar µCs und was so dazugehört, damit ich (außer einen ASURO zusammenlöten) schon mal was praktisches (LEDs blinken lassen oder so) in der Richtung gemacht habe.

oernie97