Der TMPZ 84 C112 | ![]() |
![]() |
Blockschaltbild eines Einchiprechners
![]() |
1. Der Z80 ist tot - es lebe der Z80 2. Programmierbare Eigenschaften 3. Programmierung 4. Die Schaltung |
1. Der Z80 ist tot - es lebe der Z80 | ![]() |
![]() |
![]() |
Dipl.-Phys. A. BOGATZ
Seit seiner Markteinführung im Jahre 1975 erfreut sich das 8-Bit-Prozessorsystem
der Z80-Familie großer Beliebtheit sowohl bei Hardware- als auch bei Software-Entwicklern. Gerade bei kleineren Steuerungsaufgaben wird dieses System
neben den Einchip-Lösungen (Z8, 8051) immer wieder gern benutzt. Diesem Trend folgend, entwickelte Toshiba eine CMOS-Einchip-Familie, die voll Z
80-kompatibel ist. Der Beitrag stellt eine Experimentierplatine vor, die auf dieser Basis
entstand.
Der ungekrönte König unter den 8-Bit-Mikrorechnern ist sicher der Z 80, seinerzeit
auch unter dem Künstlernamen U 880 bekannt. Obwohl inzwischen eine Vielfalt an Einchip-Mikrorechnern am Markt verfügbar ist, wird der Z 80 von vielen
Entwicklern immer wieder gern eingesetzt. Der Vorteil liegt klar auf der Hand: Alle bereits
geschriebene Software in Form von Unterprogrammsammlungen in Assembler, in die mitunter Mann-Jahre an Arbeit
investiert wurden, kann immer wieder weiter verwendet werden. Der Nachteil der Z-80-Systeme liegt im Vergleich zum
EinchipMikrorechner darin, dass weder RAM noch Peripherie-Ports on-chip integriert
sind. Dieser Nachteil wurde nun beseitigt, indem Toshiba eine Familie von
Einchip-Mikrorechnern schuf, deren interne Komponenten, angefangen bei der CPU selbst,
über PIO, SIO, CTC und DMA voll Z 80-kompatibel sind. Darüber hinaus ist ein Taktgenerator mit integriert, so dass als
externe Beschaltung nur ein Quarz oder Keramik-Resonator benötigt wird. Mit Hilfe
einer integrierten Takt-Controller-Schaltung (CGC) kann das System definiert in einen Schlafzustand (stand by-Mode) bzw.
in einen „Halbschlaf" (Idle-Mode, Takt läuft weiter) versetzt werden. So lässt sich
z. B. stromsparend auf einen Interrupt warten, was sich besonders bei batteriebetriebenen Geräten günstig auswirkt. Dank
der eingesetzten CMOS-Technologie werden insgesamt hervorragende elektrische Eigenschaften erreicht.
Die Tabelle vermittelt eine Übersicht zur TLCS-Z 80-ASSP-Familie:
![]() |
TMPZ 84 C 011 - enthält Z80-Prozessor, CGC, Z 80-CTC sowie 5 (!) 8-Bit-In/Out-Ports im 100pol. Flatpack-Gehäuse |
![]() |
TMPZ 84 C 013 - enthält Z 80-Prozessor, CGC, Z 80-CTC und Z 80-SIO im 84poligen PLCC-Gehäuse |
![]() |
TMPZ 84 C 015 - enthält Z 80-Prozessor, CGC, Z 80-CTC, Z 80-SIO und Z 80-PIO im 100poligen Flatpack-Gehäuse |
![]() |
TMPZ 84 C 112 - enthält Z 80-Prozessor, Taktgeber, 256 Byte RAM, 23-Bit-In/Out Port und einen Timerkanal im 64poligen Flat-pack oder 64poligen DIL-Gehäuse |
![]() |
TMPZ 84 C 810 - enthält Z 80-Prozessor, CGC, Z 80-CTC, Z 80-SIO, Z 80-DMA, 2 MB Speicherverwaltung und 8-Bit-In/Out-Port im 100poligen Flatpack-Gehäuse |
Übersicht zur TLCS-Z 80-ASSP-Familie
Allen Typen gemeinsam sind die maximale Taktfrequenz von 6 MHz und der niedrige Stromverbrauch von maximal 25 mA (Idle-Mode 2 mA bzw. stand by 0,5,uA!). Als besonders interessant für eigene Experimente erscheint natürlich die IS TMPZ 84 C 112, da sie einen integrierten RAM enthält und zudem in einem DIL-Gehäuse lieferbar ist. Daher wollen wir uns mit dieser IS näher beschäftigen.
2. Programmierbare Eigenschaften | ![]() |
![]() |
![]() |
Bild 1 zeigt die Anschlussbelegung des TMPZ84 C 112 anhand des 64poligen DIL-Gehäuses. Besonders bemerkenswert ist
es, dass mit Hilfe des Pin 29 (MODE) zwischen zwei alternativen Anschlussbelegungen umgeschaltet werden kann: einem voll
Z 8O-kompatiblen Modus für große Systeme (MODE = L), wobei weitere Z 80-Peripherie-Bausteine mit allen ihren Möglichkeiten (z. B. Interrupt-Mode 2) und
der volle Speicherausbau von 64 KByte unterstützt werden, und einem Minimalmodus (MODE = H), bei dem die maximale
Menge von 23 In/Out-Portleitungen unterstützt wird. Die Bezeichnung der
alternativen Pins ist in Bild 1 so dargestellt, dass die nicht eingeklammerte Bezeichnung für
den Minimalmodus gilt, den wir in unserem Projekt nutzen wollen. Alle folgenden Ausführungen einschließlich der
Programmierhinweise gelten somit nur für diesen Modus!
![]() |
|
![]() |
Die Anschlüsse DO ... D7, AO ... Al l und A15 entsprechen denen einer Z80-CPU
und bilden den Daten- und Adressbus, wobei wegen der fehlenden A12 ... A14 nur
zwei 4-KByte-Bereiche nutzbar sind: Mit A15 = L ab Adresse 0000 für den externen (EP)ROM und mit A15 = H ab Adresse 8000 für externen RAM oder (EP)ROM, wobei jedoch 8000H ... 80FFH vom internen RAM belegt werden! Wir nutzen daher in unserem Projekt nur den unteren Bereich ab 0000. Die Steuerleitungen RD, WR, TU-E0, HALT, NM1, INT, WAIT, BUSREG und BUSACK entsprechen in ihrer Funktion direkt den gleichnamigen Z 80-Signalen. Abweichend zum Z 80 liefern die Signale IORD bzw. IOWR nur dann L-Pegel, wenn der Prozessor IO- Port-Lesen bzw. 10-Port-Schreiben durchführt (Original-Z 80: RD bzw. WR und zusätzlich Signal IORQ). Dadurch lassen recht einfach Z 80-fremde Peripherie-Bausteine (8250, 8255) anschließen, die ein solches Signalspiel fordern. An den Anschlüssen XIN und XOUT kann direkt ein Quarz mit der doppelten Systemtaktfrequenz angeschlossen werden, während der Systemtakt selbst am Ausgang CKOUT verfügbar ist. Der Anschluss TOUT ist der Ausgang eines Timers, der den Systemtakt wahlweise durch 4096, 8192, 16384 oder 32768 geteilt bereitstellt. Dieser Timer eignet sich in Zusammenhang mit dem NMI, INT oder RESET-Eingang dazu, in definierten Zeitintervallen eine Prozessorreaktion auszulösen. Deshalb sind auch zwei RESET-Signale verfügbar: RESET bewirkt nur das Rücksetzen des Prozessors, die Programmierung der Portleitungen bleibt hiervon völlig unbeeinflusst. Dagegen bewirkt ein L-Signal an RESET1, dass der Prozessor unbeeinflusst bleibt. Es setzt aber alle In/Out-Ports und der Timerkanal zurück, d. h., alle Ports werden auf Input geschaltet, TOUT nimmt H-Pegel an, und das Teilerverhältnis des Timerkanals wird auf 4096 eingestellt. |
![]() |
Zu guter Letzt bilden PAO ... PA6, PBO ... PB7 und PCO ... PC7 insgesamt 23 programmierbare In/Out-Leitungen. Dabei lassen sich die Ports A bzw. B in 4-Bit-Gruppen als Eingang oder Ausgang programmieren, während bei Port C jedes einzelne Bit in seiner Richtung frei programmierbar ist. Während der System-Initialisierung (über RESETl) ist es möglich, zunächst das Datenwort an den als Ausgang vorgesehenen Port auszugeben und erst anschließend den Port als Ausgang zu programmieren. Das unterdrückt alle ungewollten Nadelimpulse während der Initialisierung sicher. Die Daten eines als Ausgang programmierten Ports werden in Latches zwischengespeichert und lassen sich auch wieder einlesen. Bei als Eingang programmierten Portleitungen werden die Informationen eingelesen, die während der UH-Flanke von RD bzw. IORD aktuell anliegen. |
3. Programmierung | ![]() |
![]() |
![]() |
Die Programmierung des Timers und der In/Out-Ports erfolgt über einen Satz von integrierten 8-Bit-Registern, die über die
In/Out-Adressen 80H bis 86H erreicht und teilweise nur beschrieben und nicht
gelesen werden können. In dem von uns benutzten Minimalmode haben die Register
Mit x gekennzeichnete Bits in den Steuer- und Datenwörtern werden ignoriert und
können unbestimmte Werte annehmen.
bei der Programmierung des Timers ist zu beachten, dass er nicht angehalten werden
kann. Am Ausgang TOUT liegt also ein Rechtecksignal mit Tastverhältnis 1 : 1 an,
solange der Timer bzw. der TOUT-Ausgang nicht per Software rückgesetzt wird.
Soweit zu den programmierbaren Eigenschaften des Schaltkreises.
![]() |
|
![]() |
|
![]() |
4. Hardware des Experimentierboards | ![]() |
![]() |
![]() |
![]() |
|
![]() |
Bild 2 zeigt dessen Stromlaufplan. Neben dem Einchip-Rechner 1C1 benötigen wir
den EPROM IC2, für den ein 8-KByteTyp zum Einsatz kam. Im einfachsten Fall
werden jedoch nur die unteren 4 KByte benutzt, die sich direkt über die Adressleitungen
A0 bis A11 adressieren lassen. Die EPROM-Adresse A12 ist in diesem Fall über R4 auf L-Pegel gelegt. Falls der volle
Adressbereich von 8 KByte benutzt werden muss, kann durch Schließen der Brücke X5
eine Speicher-Bankumschaltung durch die Portleitung PA6 erfolgen. Die dazu
notwendige Software-Struktur setzt jedoch speziell bei der Nutzung von Interrupts ein
hohes Maß an Programmiererfahrung voraus. Die Selektion des EPROMs IC2 erfolgt über L-Pegel an der Adressleitung
A15 _und gleichzeitigen L-Pegel an MREO und RD (mit Hilfe von IC3.D
ausgewertet). Der EPROM wird also aktiviert bei Speicherlesen im Bereich 0000 bis 7FFFH. Als Systemtakt haben wir 4 MHz gewählt, weshalb ein 8-MHz-Quarz Ol zum Einsatz kommt. Die Kondensatoren C5 und. C6 stellen mit 01 und dem integrierten Inverter die Oszillatorschaltung dar. 1C3.B-bildet mit Rl, C2 und 131 einen RESET-Impuls beim Einschalten der Baugruppe. Dabei werden beide RESET-Anschlüsse von IC1 parallel betätigt. Eine zusätzliche RESET-Taste kann an X7 angeschlossen werden. Alle In/Out-Portleitungen sind auf drei Anschlussfelder Xl, X2 und X3 geführt und stehen frei zur Verfügung. Am Anschlußfeld X4 liegen (über Gatter getrieben) der Systemtakt CLOCK, das RESET-Signal und das Timer-Ausgangssignal TOUT zur freien Verwendung. Als Eingangsleitungen stehen die beiden Interruptleitungen K-11 und INT zur Verfügung, die im Ruhezustand über R2, R3 auf H-Pegel gehalten werden. Für eine zeitgesteuerte Interrupt-Auslösung durch den internen Timerkanal lässt sich der Ausgang TOUT über die Brücke X6 an den INT-Eingang legen. Bei der Gestaltung der Interruptsoftware ist dann zu beachten, dass vor einer erneuten Interruptfreigabe der Ausgang TOUT per Software rückzusetzen ist. |
![]() |
Den Bestückungsplan des Experimentierboards zeigt Bild 5. Dabei haben wir die Standard-Eurokarte (100 mm x 160 mm) durch ein großes Lochrasterfeld aufgefüllt. Das Layout der Platinen zeigen die Bilder 3 und 4. |
![]() |
|
![]() |
|
![]() |
Quelle FUNKAMATEUR 4/92 S. 203 ff. |