Z80 CTC (in der DDR U857) Funktionsbeschreibung | ![]() |
![]() |
Letztmalig dran rumgefummelt: 11.02.05 03:56:08 |
![]() |
Implementiert in ein 28-poliges DIL-Gehäuse präsentiert sich die Z80-CTC mit einem 8 Bit breitem Daten-BUS als Aritmetic-Logical Unit mit den Befehlen eines Prozessorsystems zum Ein- und Auslesen von 8 Bit breiten Datenbussen mit 3 leitungsfähigen Interruptmodi und einem linear adressierbarem Speichervolumen von 64 KByte (das entspricht 65536 Adressen). Die CPU verfügt über nur eine 5 Volt-Versorgungsspannung, einen Einphasentakt. Alle Ausgänge sind TTL-kompatibel und können eine Standardlast treiben. |
![]() |
1. Betriebsartenauswahl 2. Betriebsartenbeschreibung 3. CTC-Praxis |
![]() |
Warum fiel die Wahl für die Unterrichtsarbeit ausgerechnet auf den Z80 bzw. sein System? Dieser Prozessor sowie sein System vereinigt eine Reihe positiver Merkmale für den Rechentechnik-Einsteiger:
|
![]() |
Die IS U857 ist ein Zähler/Zeitgeber-Schaltkreis (CTC), die bezüglich Interruptverhalten und Leistungsfähigkeit auf das System U880 zugeschnitten ist. Sie umfasst vier vollständige Zähler/Zeitgeber-Kanäle mit einem Zählumfang von jeweils 8 Bit sowie 8-Bit-Vorteilern, die in der Zeitgeberbetriebsart zum Herunterteilen des Systemtakts dienen. Die Einheit ist in ihren Eigenschaften in weiten Grenzen programmierbar (Zeitkonstanten, Vorteiler, Triggerflanken, Interruptverhalten usw.). Die charakteristischen Merkmale der IS sind
Typische Anwendungsfälle für den CTC sind Zeitgeber für Anzeigeroutinen und Echtzeituhren, Ereigniszähler, Frequenzzähler und integrierende DA-Wandler. Die IS ist hierbei aufgrund der Vielzahl der programmierbaren Eigenschaften sehr anpassungs- |
1. Betriebsartenauswahl | ![]() |
![]() |
![]() |
![]() |
Aus den insgesamt zwei Grundbetriebsarten kann hier nochmals eine Differenzierung der Kombination aus Interrupt- oder nicht interrptgesteuerter Programmierung, aus ex- oder intern gestartetem Modus und unter Hinzuziehung einer Zeitkonstante oder eben auch nicht gewählt werden. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Rücksetzen Nach Zuschalten der Betriebsspannung nimmt der Zähler/Zeitgeber
einen undefinierten Zustand ein. Das Anlegen eines RESET-Impulses an den
zugehörigen Pin bewirkt ein Unterbrechen der Zählvorgänge aller Kanäle, ein
Rücksetzen der Interruptbearbeitungszustände der Ports, die Inaktivierung aller
Kanalausgänge sowie das Abschalten der Datenbusleitungen. Dieses hardwaremäßige
Rücksetzen erfolgt üblicherweise in Mikrorechnern systemweit nach Einschalten
der Betriebsspannung durch ein "power-on-reset". Eine weitere Möglichkeit des
Rücksetzens von Zähler/Zeitgeber-Kanälen ist softwaremäßig durch Setzen des Bits
D1 der Kanalsteuerregister gegeben. Hiermit kann ebenfalls eine
Unterbrechung des Zählvorgangs erreicht werden. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Interruptvektor - siehe auch hier sowie auch hier Bei Anwendung der leistungsfähigen
Interruptbetriebsart IM2 der
CPU U880 wird von dem den Interrupt anmeldenden peripheren Gerät ein
Interruptvektor im Interruptquittierungszyklus der CPU abgefordert. Dieser
8-bit-Vektor bildet in Verbindung mit dem CPU-internen Register I einen
16-bit-Pointer, der im Hauptspeicher auf die Startadressentabelle der
Interruptbearbeitung zeigt.
Tabelle 1 - CTC-Interrptvektor-Allgemein Das Bit D0 = 0 identifiziert das Steuerwort als Interruptvektor. Beim
Einschreiben dieses Vektors werden die beiden Bits D2 und D1 nicht
berücksichtigt und können deshalb einen beliebigen Wert haben.
Tabelle 2 - CTC-Interrptvektor-Kanal 0
Tabelle 3 - CTC-Interrptvektor-Kanal 1
Tabelle 4 - CTC-Interrptvektor-Kanal 2
Tabelle 5 - CTC-Interrptvektor-Kanal 3 Bei Freigabe aller Interruptfreigabeflipflops können somit im Zusammenhang mit dem I-Register der CPU vier verschiedene Pointer gebildet werden, die in der Startadressentabelle auf vier unterschiedliche ISR-Startadressen hinweisen. Damit kann jeder Zähler/ Zeitgeber-Kanal mit einer eigenen ISR bedient werden. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Kanalsteuerwort - siehe auch hier Jeder der vier Kanäle der IS U857 kann entweder als Zähler oder als Zeitgeber arbeiten. Die Auswahl hierzu wird im Kanalsteuerregister vorgenommen. Ebenso werden in diesem Register die Vorteilerauswahl, die Definition der Auslösebedingungen (Trigger), das Laden des Zeitkonstantenregisters, das Rücksetzen des Kanals und die Interruptfreigabe festgelegt. Das Steuerregister des entsprechenden Kanals (ausgewählt durch die Selectsignale CS0 und CS1) wird durch eine OUT-Operation der CPU mit dem Kanalsteuerwort geladen. Dieses Steuerwort hat folgendes Format:
Tabelle 6 - CTC-Kanalsteuerwort
Die Belegung des Bits D0 = 1 identifiziert das Steuerwort als Kanalsteuerwort.
Es wird somit vom Interruptvektor des Kanals 0 unterschieden.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Zeitkonstante Nach der Initialisierung eines Zähler/Zeitgeber-Kanals mit Hilfe eines entsprechenden Kanalsteuerworts kann das CTC-Port erst nach Laden eines Datenworts in das Zeitkonstantenregister des ausgewählten Kanals mit der programmierten Operation beginnen. Das Laden des Zeitkonstantenregisters erfolgt durch eine OUT-Operation der CPU, wenn zuvor in den Kanal ein Kanalsteuerwort mit gesetztem Bit D2 (D2 = 1) eingeschrieben wurde. Das hiermit gesetzte Bit D2 des Kanalsteuerregisters bewirkt, dass die Kanalsteuerlogik dieses nachfolgende Datenwort von der CPU als Zeitkonstante interpretiert. Deshalb werden keine besonderen Bitbelegungen des Zeitkonstantenworts zur Kennzeichnung benötigt, somit sind alle 8 bit für die Informationsübertragung gültig. Das Zeitkonstantenwort hat folgendes Format:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Zusammenfassung In der Tafel unten ist die Programmierung vom Zähler/Zeitgeber U857 zusammenfassend dargestellt. |
2. Betriebsartenbeschreibung | ![]() |
![]() |
![]() |
![]() |
Aus den insgesamt zwei Grundbetriebsarten kann hier nochmals eine Differenzierung der Kombination aus Interrupt- oder nicht interrptgesteuerter Programmierung, aus ex- oder intern gestartetem Modus und unter Hinzuziehung einer Zeitkonstante oder eben auch nicht gewählt werden. |
![]() |
Zählermode Der Zähler/Zeitgeber U857 hat vier Kanäle, die unabhängig
voneinander betrieben werden können. Ein Kanal des CTC nimmt die Betriebsart
Zähler ein, wenn in sein Kanalsteuerregister ein Datenwort mit gesetztem Bit D6
geladen wird. Bei einer Initialisierung, also bei zuvor rückgesetztem Port, muss
zur Inbetriebnahme außerdem eine Zeitkonstante in das entsprechende Register
dieses Kanals eingeschrieben werden. Der Rückwärtszähler wird dann bei jedem
Aktivwerden bzw. sinngemäß mit jeder aktiven Flanke am Kanaleingang CLK/TRG
dekrementiert. Hierbei wird durch Bit D, im Steuerregister des Kanals
festgelegt, welcher Pegel an diesem Eingang aktiv ist (H oder L).
Während des Betriebs können Zählbedingungen für den Kanal verändert werden, indem ein neues Steuerwort in das Kanalsteuerregister eingeschrieben wird. In diesem Datenwort muss Bit D1 rückgesetzt sein, damit der Dekrementiervorgang des Rückwärtszählers nicht unterbrochen wird. Es ist somit möglich, eine neue Zeitkonstante anzukündigen, die Zählflanke zu ändern, das Interruptfreigabeflipflop zu beeinflussen oder in die Betriebsart Zeitgeber überzuwechseln. Ein Rücksetzen des Kanals kann softwaremäßig durch Setzen des Bits D1 des Kanalsteuerregisters oder hardwaremäßig durch Anlegen eines RESET-Impulses erfolgen. |
![]() |
Zeitgebermode Das Einstellen dieser CTC-Betriebsart erfolgt ebenfalls durch
Laden eines Steuerworts in das entsprechende Kanalsteuerregister. Das Bit D6
dieses Datenworts ist hierbei rückgesetzt. Der Zeitgebervorgang beginnt in
Abhängigkeit vom Wert des Bits D3 dieses Steuerworts entweder direkt nach dem
Laden der Zeitkonstante in das betreffende Kanalregister oder nachdem bei
bereits geladenem Zeitkonstantenregister am Eingang CLK/ TRG eine vorgewählte
Triggerbedingung eintrifft. Das Laden der Kanalsteuerregister und
Zeitkonstantenregister erfolgt wie in der Zählermode mit dem im
Bild dargestellten Zeitverhalten. Auch das Auslesen
des Inhalts der Rückwärtszähler erfolgt wie im Abschnitt oben bereits beschrieben (Bild). |
![]() |
Interruptbearbeitung Die Auslösung von Interruptanmeldungen eines Zähler/Zeitgeber-Kanals erfolgt
unabhängig von der gewählten Betriebsart durch die Nulldurchgänge des
Rückwärtszählers. Voraussetzungen für die Weitergabe dieser Anmeldungen an die
CPU sind, dass sowohl das Interruptfreigabeflipflop der Kanalsteuerlogik gesetzt
ist als auch der betrachtete Kanal die höchste aktuelle Interruptpriorität im
Mikrorechnersystem aufweist (also am Eingang IEI H-Potential führt). |
3. CTC-Praxis | ![]() |
![]() |
![]() |
![]() |
Aus den insgesamt zwei Grundbetriebsarten kann hier nochmals eine Differenzierung der Kombination aus Interrupt- oder nicht interrptgesteuerter Programmierung, aus ex- oder intern gestartetem Modus und unter Hinzuziehung einer Zeitkonstante oder eben auch nicht gewählt werden. |
![]() |
![]()
|
![]() |
Ein CTC enthält vier völlig unabhängig programmierbare Kanäle. Jeder Kanal kann in einer von zwei Betriebsarten arbeiten: 1. Zeitgeber
In dieser Betriebsart wird die Betriebsfrequenz intern über einen Vorteiler auf
einen programmierbaren Teiler gegeben.
Der Kanaleingang kann für einen hardwaremäßigen -Start der eingestellten Zeit benutzt werden (Triggerung). Sonst beginnt der Zeitablauf sofort nach der Programmierung der Zeitkonstante. Nach Ablauf der Zeit beginnt automatisch ein neuer Start, unabhängig, ob der Interrupt beantwortet wurde oder nicht. 2. Zähler |