-
Hintergrund der Erfindung
-
1. Technisches Gebiet der Erfindung
-
Die
Erfindung betrifft einen Mikrocomputer mit Programmrevisionsfähigkeit,
in dem ein Programmspeicher nicht einfach von einem Substrat entfernt
werden kann, insbesondere einen Einzelchip-Mikrocomputer, in dem
alle den Mikrocomputer bildenden Funktionselemente einstückig als
Einzelchip ausgebildet sind.
-
2. Beschreibung des Standes
der Technik
-
Bekanntlich
besteht ein Mikrocomputer aus einer zentralen Prozessoreinheit (CPU),
einem Nur-Lese-Speicher (ROM) zum Speichern verschiedener Programme
und Konstanten, einem Speicher mit wahlfreiem Zugriff (RAM) zum
Speichern temporärer
Daten und einer Eingang/Ausgang-Schnittstellenschaltung (I/O), wobei
diese Elemente geeignet auf einer Leiterplatte angeordnet und dort
installiert sind. In einem Einzelchip-Mikrocomputer sind die typischen
Elemente CPU, ROM, RAM und I/0 einstückig als Einzelchip ausgebildet,
und die Programme werden im Vorfeld im Laufe der Herstellung des
Einzelchip-Mikrocomputers in dem ROM gespeichert. In ähnlicher
Weise werden in einem Mikrocomputer, in dem der ROM nicht einfach
von der Leiterplatte entfernt werden kann, die Programme im Vorfeld
während
der Herstellung des Mikrocomputers in dem ROM gespeichert. Nach
Herstellung dieser Mikrocomputer kann in den in dem ROM gespeicherten Programmen
praktisch keine Revision vorgenommen werden.
-
Stellt
sich während
der Herstellung des Mikrocomputers oder danach heraus, daß in den
in dem ROM gespeicherten Programmen eine Revision vorgenommen werden
muß, so
müssen
die hergestellten Mikrocomputer verschrottet werden. Ist der hergestellte
Mikrocomputer fest an einem elektronischen Produkt angebracht, so
muß auch
dieses verschrottet werden.
-
Als
Beispiel für
die Revision der gespeicherten Programme sind Fälle zu nennen, in denen in
einem der gespeicherten Programme Fehler gefunden werden, in denen
in einem der gespeicherten Programme eine Änderung gemacht wird, und in
denen den gespeicherten Programmen ein Zusatzprogramm hinzugefügt wird.
-
Dagegen
kann in einem Mikrocomputer, in dem der ROM entfernbar auf der Leiterplatte
installiert ist, eine Revision in den gespeicherten Programmen in
einfacher Weise vorgenommen werden, z.B. unter Verwendung einer
ROM-Schreibvorrichtung. Der
ROM wird nämlich
von der Leiterplatte entfernt und dann in der ROM-Schreibvorrichtung
montiert, um die Revision in den gespeicherten Programmen vorzunehmen.
Nachdem die Revision abgeschlossen ist, wird der ROM wieder auf
die Leiterplatte gebracht und dort installiert.
-
In
dieser Beschreibung ist mit dem Begriff "Mikrocomputer" ein Mikrocomputer einschließlich eines
Einzelchip-Mikrocomputers gemeint, in dem der ROM nicht einfach
entfernt werden kann.
-
Herkömmlicherweise
wird vorgeschlagen, einem Mikrocomputer einen elektrisch löschbaren Nur-Lese-Speicher
(EEPROM) zuzuordnen, um eine Revision in zuvor in einem ROM des
Mikrocomputers gespeicherten Programmen vorzunehmen, wie dies beispielsweise
in dem
US-Patent 5 809 345 beschrieben
ist. Wird eine Revision in den gespeicherten Programmen nach Herstellung
des Mikrocomputers vorgenommen, wird ein Revisionsprogramm später in den
EEPROM geschrieben. Wird der Mikrocomputer eingeschaltet, so wird
das Revisionsprogramm aus dem EEPROM ausgelesen und dann unter einer
vorbestimmten Adresse eines RAMs des Mikrocomputers gespeichert.
Während
der Ausführung
der Programme des ROMs erfolgt ein Zugriff auf die vorbestimmte
Adresse des ROMs um so das Revisionsprogramm auszuführen, was
im Ergebnis zu einer virtuellen Revision der Programme des ROMs
führt.
-
Insbesondere
kann unter den verschiedenen Programmen, die in dem ROM gespeichert
sind, ein Programm sein, das anfällig
für die
Entwicklung von Fehlern ist, und/oder ein Programm, das zukünftig gebraucht
wird. In diesem Fall wird im Vorfeld in einen Kopf des betreffenden
Programms ein Programmaufruf-Befehl geschrieben und eine Adresse, die
dem Programmaufruf-Befehl entspricht, im Vorfeld in dem RAM gesetzt.
-
Nach
der Herstellung des Mikrocomputers wird dann, wenn in dem betreffenden
Programm unglücklicherweise
Fehler gefunden werden oder in dem betreffenden Programm eine Revision
vorgenommen werden muß,
ein Revisionsprogramm geschrieben und in dem EEPROM gespeichert.
Wann immer der Mikrocomputer eingeschaltet wird, wird das Revisionsprogramm
aus dem EEPROM ausgelesen und dann unter der im Vorfeld gesetzten
Adresse des RAMs gespeichert.
-
Während der
Ausführung
der in dem ROM gespeicherten Programme wird, wenn der Programmaufruf-Befehl
gelesen wird, die Ausführung der
Programme des ROMs einmal unterbrochen, und es erfolgt ein Zugriff
auf die im Vorfeld gesetzte Adresse des RAMs. Ist das Revisionsprogramm
unter der im Vorfeld gesetzten Adresse des RAMs gespeichert, so
wird das Revisionsprogramm ausgeführt, und die Ausführung der
Programme des ROMs wird nach vollendeter Ausführung des Revisionsprogramms
wieder aufgenommen. Ist dagegen das Revisionsprogramm nicht unter
der im Vorfeld gesetzten Adresse des RAMs gespeichert, so wird die
Ausführung
der Programme des ROMs unmittelbar wieder aufgenommen. Auf diese
Weise ist eine virtuelle Revision der in dem ROM gespeicherten Programme möglich.
-
Wie
aus dem vorstehend Erläuterten
jedoch hervorgeht, kann in dem herkömmlichen Verfahren eine Revision
nicht an einer wahlfreien Stelle der in dem ROM gespeicherten Programme
vorgenommen werden, da ein Programmaufruf-Befehl in einen Kopf eines
Programms geschrieben werden muß,
das im Vorfeld aus den in dem ROM gespeicherten Programmen ausgewählt worden
ist. So ist es unmöglich,
eine Revision in einem Programm vorzunehmen, in dessen Kopf der
Programmaufruf-Befehl nicht geschrieben worden ist.
-
Ein
Mikrocomputer nach dem Oberbegriff des Anspruchs 1 ist aus der
US 5 813 043 A bekannt.
-
Kurzzusammenfassung der Erfindung
-
Es
ist deshalb Aufgabe der Erfindung, einen Mikrocomputer mit Programmrevisionsfähigkeit
bereitzustellen, bei dem eine Revision an einer wahlfreien Stelle
der in einem ROM des Mikrocomputers gespeicherten Programmen vorgenommen
werden kann.
-
Diese
Aufgabe wird gelöst
durch den Gegenstand des Anspruchs 1.
-
Vorzugsweise
enthält
der Mikrocomputer weiterhin einen wiederbeschreibbaren, nichtflüchtigen
Speicher, der das Revisionsprogramm, das Vergleichsadressdatum und
das Vektoradressdatum speichert, ein Lese/Schreib-System, das das Revisionsprogramm,
das Vergleichsadressdatum und das Vektoradressdatum aus dem wiederbeschreibbaren, nichtflüchtigen
Speicher ausliest und dann diese Daten jedes Mal in den Speicher
mit wahlfreiem Zugriff, die Vergleichsadress-Speichervorrichtung bzw. die Vektoradress-Speichervorrichtung
schreibt, wenn der Computer eingeschaltet wird.
-
In
dem Mikrocomputer kann der Adressvergleicher an den Programmzähler angeschlossen sein,
um so aus diesem die erneuerte Adresse wiederzugewinnen. Auch kann
der Adressvergleicher an einen sich zu dem Programmzähler erstreckenden Adressbus
angeschlossen sein, um so aus dem Programmzähler die erneuerter Adresse
wiederzugewinnen.
-
Der
Mikrocomputer kann weiterhin ein Vektoradress-Datensetzsystem enthalten,
das das Vektoradressdatum aus der Vektoradress-Speichervorrichtung
ausliest und dann in dem Programmzähler setzt, wobei die Steuerung/Rechnervorrichtung
auf die Kopfadresse des Revisionsprogramms zugreift, wodurch die
Unterbrechungsverarbeitung gemäß dem Revisionsprogramm
ausgeführt
wird.
-
Der
Mikrocomputer kann weiterhin enthalten eine zur temporären Speicherung
bestimmte Vektoradress-Speichervorrichtung, die das Vektoradressdatum
von der Vektoradress-Speichervorrichtung empfängt, wenn der Adressvergleicher
feststellt, daß Übereinstimmung
zwischen Vergleichsadressdatum und erneuerter Adresse des Programmzählers gegeben
ist, und ein Vektoradress-Datensetzsystem, das das Vektoradressdatum
aus der Vektoradress-Speichervorrichtung ausliest und dann in dem
Programmzähler
setzt, wobei die Steuerung/Rechnervorrichtung auf die Kopfadresse
des Revisionsprogramms zugreift, wodurch der Interrupt-Prozess gemäß dem Revisionsprogramm
ausgeführt
wird.
-
Der
Mikrocomputer enthält
weiterhin ein Rücksprungadress-Setzsystem,
das das Vergleichsadressdatum als Rücksprungadressdatum in dem Programmzähler setzt,
wenn die Ausführung
des Interrupt-Prozesses gemäß dem Revisionsprogramm abgeschlossen
ist, und ein Adress-Koinzidenz-Deaktivie-rungssystem, das die Übereinstimmung
zwischen dem Vergleichsadressdatum und der Rücksprungadresse, die in dem
Programmzähler
von dem Rücksprungadress-Setzsystem gesetzt
worden ist, außer
Kraft setzt.
-
Kurzbeschreibung der Zeichnungen
-
Die
Aufgabe sowie weitere Aufgaben der Erfindung sind besser mit folgender
Beschreibung verständlich,
worin auf die beigefügten
Zeichnungen Bezug genommen wird. Darin zeigen:
-
1 ein
Blockdiagramm eines gemäß vorliegender
Erfindung ausgebildeten Mikrocomputers,
-
2 ein
Blockdiagramm eines typischen Schaltungselementes aus acht Schaltungselementen,
die in einer Adress-Koinzidenz-Unterbrechungs-Steuerung (ACIC) enthalten
sind, die einen Teil eines ersten Ausführungsbeispiels des erfindungsgemäßen Mikrocomputers
bildet,
-
3 eine
schematische Darstellung eines Speicherbereichs eines elektrisch
löschbaren Nur-Lese-Speichers
(EEPROM), der einen Teil des erfindungsgemäßen Mikrocomputers bildet,
-
4 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR),
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines ersten Schaltungselementes,
die Vergleichsadress-Daten (CA0), Flagdaten (FE0) bzw. Vektoradressdaten (VA0)
halten,
-
5 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR),
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines zweiten Schaltungselementes,
die Vergleichsadress-Daten (CA1), Flagdaten (FEI) bzw. Vektoradressdaten (VA1)
halten,
-
6 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR),
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines dritten Schaltungselementes,
die Vergleichsadress-Daten (CA2), Flagdaten (FE2) bzw. Vektoradress-Daten (VA2)
halten,
-
7 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR).
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines vierten Schaltungselementes,
die Vergleichsadress-Daten (CA3), Flagdaten (FE3) bzw. Vektoradressdaten (VA3)
halten,
-
8 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR),
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines fünften Schaltungselementes,
die Vergleichsadress-Daten (CA4), Flagdaten (FE4) bzw. Vektoradressdaten (VA4)
halten,
-
9 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR),
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines sechsten Schaltungselementes,
die Vergleichsadress-Daten (CA5), Flagdaten (FE5) bzw. Vektoradressdaten
(VA5) halten,
-
10 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR),
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines siebenten Schaltungselementes,
die Vergleichsadress-Daten (CA6), Flagdaten (FE6) bzw. Vektoradressdaten
(VA6) halten,
-
11 eine
schematische Darstellung eines Vergleichsadress-Registers (CAR),
eines Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) und
eines Vektoradress-Registers (VAR) eines achten Schaltungselementes,
die Vergleichsadress-Daten (CA7), Flagdaten (FE7) und Vektoradressdaten (VA7)
halten,
-
12 eine
schematische Darstellung eines Speicherbereichs eines Speichers
mit wahlfreiem Zugriff (RAM), der einen Teil des erfindungsgemäßen Mikrocomputers
bildet,
-
13 eine
schematische Darstellung eines Adress-Koinzidenz-Unterbrechungsverbot-Registers
(ACIPR), eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des ersten Schaltungselementes, die Flagdaten (FD0, FC0
bzw. FM0) halten,
-
14 eine
schematische Darstellung eines Adress-Koinzidenz-Unterbrechungsverbot-Registers (ACIPR),
eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des zweiten Schaltungselementes, die Flagdaten (FD1, FC1
bzw. FM1) halten,
-
15 eine
schematische Darstellung eines Adress-Koinzidenz-Unterbrechungsverbot-Registers (ACIPR),
eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des dritten Schaltungselementes, die Flagdaten (FD2, FC2
bzw. FM2) halten,
-
16 eine
schematische Darstellung eines Adress-Koinzidenz- Unterbrechungsverbot-Registers (ACIPR),
eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress- Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des vierten Schaltungselementes, die Flagdaten (FD3; FC3
bzw. FM3) halten,
-
17 eine
schematische Darstellung eines Adress-Koinzidenz-Unterbrechungsverbot-Registers (ACIPR),
eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des fünften
Schaltungselementes, die Flagdaten (FD4, FC4 bzw. FM4) halten,
-
18 eine
schematische Darstellung eines Adress-Koinzidenz-Unterbrechungsverbot-Registers (ACIPR),
eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des sechsten Schaltungselementes, die Flagdaten (FD5, FC5
bzw. FM5) halten,
-
19 eine
schematische Darstellung eines Adress-Koinzidenz-Unterbrechungsverbot-Registers (ACIPR),
eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des siebenten Schaltungselementes, die Flagdaten (FD6, FC6
bzw. FM6) halten,
-
20 eine
schematische Darstellung eines Adress-Koinzidenz-Unterbrechungsverbot-Registers (ACIPR),
eines Adress-Koinzidenz-Unterbrechungslösch-Registers
(ACICR) und eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers
(ACIMR) des achten Schaltungsregisters, die Flagdaten (FD7, FC7
bzw. FM7) halten,
-
21 ein
Flußdiagramm
einer sequentiellen Unterbrechungs-Obergangs-Verarbeitung, die von einer Steuereinheit
(CU) ausgeführt
wird, die einen Teil des erfindungsgemäßen Mikrocomputers bildet,
-
22 den
Schaltplan einer Rücksetzschaltung,
die einen Teil des erfindungsgemäßen Mikrocomputers
bildet,
-
23 ein
Zeitdiagramm der in 22 gezeigten Rücksetzschaltung,
-
24 ein
Flußdiagramm
einer sequentiellen Unterbrechungs-Rücksprung-Verarbeitung, die von der Steuereinheit
(CU) des erfindungsgemäßen Mikrocomputers
ausgeführt
wird,
-
25 einen
Schaltplan einer anderen Rücksetzschaltung,
die einen Teil des erfindungsgemäßen Mikrocomputers
bildet,
-
26 ein
Zeitdiagramm der in 25 gezeigten Rücksetzschaltung,
-
27 ein
Flußdiagramm
einer Systembetriebsroutine für
ein elektronisches Produkt, in dem der erfindungsgemäße Mikrocomputer
eingebaut ist, z.B. einem Drucker, einer Videokamera, einer digitalen
Einzelbildkamera, einer elektronischen Uhr etc.,
-
28 einen
Teil einer Verarbeitungsroutine, die in Schritt 2709 der
in 27 gezeigten Systembetriebsroutine auszuführen ist,
-
29 eine
schematische Darstellung des Zusammenhangs zwischen Adressen, die
in einem einen Teil des erfindungsgemäßen Mikrocomputers bildenden
Programmzähler
sukzessiv erneuert werden, und Befehlen, die in den Schritten 2801 bis 2810 der
in 28 gezeigten Verarbeitungsroutine ausgeführt werden,
-
30 eine
schematische Darstellung eines Teilspeicherbereichs eines Nur-Lese-Speichers (ROM),
der einen Teil des erfindungsgemäßen Mikrocomputers
bildet,
-
31 eine
schematische Darstellung eines Teils eines Programmspeicherbereichs
des RAMs,
-
32 ein
Blockdiagramm eines modifizierten typischen Schaltungselementes
aus den acht Schaltungselementen, die in der Adress-Koinzidenz-Unterbrechungs-Steuerung
(ACIC) des ersten Ausführungsbeispiels
des erfindungsgemäßen Mikrocomputers
enthalten sind,
-
33 ein
Blockdiagramm eines typischen Schaltungselementes aus den acht Schaltungselementen,
die in einer Adress-Koinzidenz-Unterbrechungs-Steuerung
(ACIC) enthalten sind, die einen Teil eines zweiten Ausführungsbeispiels
des erfindungsgemäßen Mikrocomputers
bildet,
-
34 ein
Flußdiagramm
einer sequentiellen Unterbrechungs-Übergangs-Verarbeitung, die von der Steuereinheit
(CU) des zweiten Ausführungsbeispiels
des erfindungsgemäßen Mikrocomputers
ausgeführt
wird,
-
35 eine
schematische Darstellung eines Teilspeicherbereichs des ROMs des
zweiten Ausführungsbeispiels
des erfindungsgemäßen Mikrocomputers,
und
-
36 ein
modifiziertes typisches Schaltungselement aus den acht Schaltungselementen, die
in der Adress-Koinzidenz-Unterbrechungs-Steuerung (ACIC) des zweiten Ausführungsbeispiels
des erfindungsgemäßen Mikrocomputers
enthalten sind.
-
Beschreibung der bevorzugten
Ausführungsbeispiele
-
1 zeigt
ein Blockdiagramm eines Mikrocomputers mit Programmrevisionsfähigkeit,
der gemäß der vorliegenden
Erfindung als Einzelchip-Mikrocomputer ausgebildet ist.
-
Der
Mikrocomputer enthält
eine zentrale Verarbeitungseinheit (CPU) 10, einen Nur-Lese-Speicher
(ROM) 12 zum Speichern verschiedener Programme und Konstanten,
einen Speicher mit wahlfreiem Zugriff (RAM) 14 zum Speichern
temporärer Daten
und eine Eingabe/Ausgabe-Schnittstellenschaltung (I/O) 16.
Die CPU 10 ist über
die I/O 16 mit einigen Elementen nicht gezeigter Peripheriegeräte verbunden,
so daß verschiedene
Befehlssignale und Datensignale zwischen der CPU 10 und
den Elementen der Peripheriegeräte
ausgetauscht werden. Die CPU 10 zeichnet sich durch einen
elektrisch löschbaren,
an die I/0 16 angeschlossenen Nur-Lese-Speicher (EEPROM) 18 aus,
der verschiedene Daten zum Durchführen von Revisionen in den
in dem ROM 12 gespeicherten Programmen, mindestens ein
Revisionsprogramm und/oder mindestens ein Zusatzprogramm speichert,
falls dies erforderlich ist. Unter der Voraussetzung, daß das Revisionsprogramm und/oder
das Zusatzprogramm in dem EEPROM 18 gespeichert ist, werden
diese Programme, jedes Mal wenn die CPU 10 eingeschaltet
wird, aus dem EEPROM 18 ausgelesen und dann in den RAM 14 geschrieben.
Jedes der in dem RAM 14 gespeicherten Programme wird während einer
Ausführung
der ROM-gespeicherten Programme in geeigneter Weise ausgeführt, wie
nachfolgend im Detail erläutert wird.
-
Wie
in 1 gezeigt, enthält die CPU 10 eine
Steuereinheit (CU) 20, die mit einem Taktimpulsgenerator 22 und
einer Rückstellschaltung 24 versehen
ist. Der Taktimpulsgenerator 22 erzeugt eine Reihe von
Grundtaktimpulsen, und die CU 20 erzeugt auf Grundlage
dieser Reihe von Grundtaktimpulsen unterschiedliche Arten von Steuertaktimpulsen
mit verschiedenen Frequenzen. Die unterschiedlichen Arten von Steuertaktimpulsen
werden zur Steuerung verschiedener Ele mente eingesetzt, die die
CPU 10 bilden. Die Rücksetzschaltung 24 gibt
an die CU 20 ein Rückstellsignal
aus, wenn die CPU 10 eingeschaltet wird, wodurch die verschiedenen,
die CPU 10 bildenden Elemente initialisiert werden.
-
Die
CPU 10 enthält
weiterhin einen Programmzähler 26,
ein Befehlsregister 28 und einen Befehlsdecoder 30,
und die CU 20 arbeitet mit diesen Elementen 26, 28 und 30 zusammen,
um Befehle, die nacheinander aus den ROM-gespeicherten Programmen ausgelesen
werden, zu decodieren, und gibt gemäß den decodierten Befehlen
Steuersignale an verschiedene Elemente aus, welche die CPU 10 bilden.
-
Insbesondere
besteht jedes der ROM-gespeicherten Programme aus einer Reihe von
Programmbefehlen, die jeweils unter einer vorgegebenen Adresse des
ROMs 12 gespeichert sind. Die CU 20 liest einen
Befehl aus einer Adresse des ROMs 12 aus, die von dem Programmzähler 26 angezeigt
wird. Der ausgelesene Befehl wird in dem Befehlsregister 28 gehalten
und von dem Befehlsdecoder 30 decodiert. Dann gibt die
CU 20 ein Steuersignal gemäß dem decodierten Befehl an
eines der die CPU 10 bildenden Elemente aus, und in dem
betreffenden Element der CPU 10 wird auf Grundlage des
decodierten Befehls eine Verarbeitung ausgeführt. Sobald die Verarbeitung
vollständig
ausgeführt
ist, wird die von dem Programmzähler 26 angezeigte
Adresse um beispielsweise 1 inkrementiert, was zu einer Erneuerung
der Adresse führt,
wobei aus der erneuerten Adresse ein Befehl von der CU 20 ausgelesen
werden soll. In diesem Ausführungsbeispiel
besteht jede Adresse des ROMs 12 aus 16 Bits, und der Programmzähler ist
als 16-Bit-Register ausgebildet.
-
Die
CPU 10 enthält
weiterhin eine Arithmetik-Logik-Einheit (ALU) 32, ein temporäres Register 34,
einen Akkumulator 36 und ein Statusregister 38. Die
ALU 32 führt
in Verbindung mit dem temporären Register 34,
dem Akkumulator 36 und dem Statusregister 38 eine
Binäroperation
auf Grundlage eines von der CU 20 ausgegebenen Steuersignals
aus.
-
Die
in der Binäroperation
zu verarbeitenden Binärdaten
werden von der ALU 32 in geeigneter Weise aus dem temporären Register 34 und
dem Akkumulator 36 wiedergewonnen. Beispielsweise werden
aus dem ROM 12 ausgelesene konstante Daten oder aus dem
RAM 14 ausgelesene temporäre Daten in dem temporären Register 34 gehalten
und dann von der ALU 32 aus dem temporären Register 34 wiedergewonnen,
wobei die Daten in der von der ALU 32 ausgeführten Binäroperation
verarbeitet werden. Die verarbeiteten Daten oder resultierende Daten
werden dem Akkumulator 36 zugeführt, der eine Berechnungsfunktion
hat. Die dem Akkumulator 36 zugeführten resultierenden Daten
werden nämlich mittels
dessen Berechnungsfunktion verarbeitet und in dem Akkumulator 36 gehalten.
Auch werden von der ALU 32 die Daten aus dem Akkumulator 36 in
geeigneter Weise wiedergewonnen, falls dies notwendig ist.
-
Das
Statusregister 38 hält
verschiedene Statusinformationselemente in Form von Flagdaten, welche
die Zustände
der von der ALU 32 ausgeführten Binäroperation darstellen. So werden
beispielsweise zur Darstellung der Zustände der von der ALU 32 ausgeführten Binäroperation
von dem Statusregister 38 ein Übertragflag, ein Überlaufflag,
ein Nullflag, ein Vorzeichenflag und dergleichen gehalten.
-
Auch
hält das
Statusregister 38 ein Unterbrechungsfreigabeflag, das auf
den Wert 0 initialisiert wird, wenn die CPU 10 eingeschaltet
wird. Ist das Unterbrechungsfreigabeflag auf 1 eingestellt, so sind
in der CPU 10 verschiedene Unterbrechungen erlaubt. Ist
das Unterbrechungsfreigabeflag 0, so sind alle Unterbrechungen verboten,
mit Ausnahme einer nichtmaskierbaren Unterbrechung (NMI) und einer Softwareunterbrechung.
-
Wie
in 1 gezeigt, ist die CPU weiterhin mit einer Unterbrechungssteuerung 40,
einem Allzweckregister 42 und einem Stapelzeiger 44 versehen.
Die Unterbrechungssteuerung 40 steuert die Ausführung einer
Unterbrechungsverarbeitung oder -unterroutine, die auf einem Unterbrechungssignal basiert,
das entweder von der CU 20 oder einem Element der an die
I/0 16 angeschlossenen Peripheriegerate (nicht gezeigt)
ausgegeben wird. Das Allzweckregister 42 wird als Mehr zweckregister
eingesetzt. Das Allzweckregister 42 ist nämlich in
einige Bereiche unterteilt, die jeweils beispielsweise als Akkumulator,
Indexregister, Stapelspeicher oder dergleichen festgelegt sind.
Der Stapelspeicher 44 ist als Register zum Anzeigen einer
Adresse des Stapelspeichers ausgebildet, festgelegt in dem Allzweckregister 42,
aus dem die Daten ausgelesen werden sollen. Beispielsweise hält der Stapelspeicher
eine Rücksprungadresse,
auf die zurückgegriffen
werden soll, nachdem die Ausführung
einer Unterbrechungsverarbeitung oder – unterroutine abgeschlossen
ist.
-
In 1 ist
mit 46 ein Multiplexer bezeichnet, der verwendet wird,
um Steuersignale und Daten auf die Unterbrechungssteuerung 40,
das Allzweckregister 42 und den Stapelspeicher 44 zu
verteilen.
-
Obgleich
die vorstehend genannten Elemente der CPU 10 auf diesem
Gebiet wohl bekannt sind, zeichnet sich die CPU 10 durch
ein neues Element aus, nämlich
einer Adress-Koinzidenz-Unterbrechungs-Steuerung (ACIC) 48,
die gemäß der vorliegenden
Erfindung ausgebildet ist.
-
In
einem ersten Ausführungsbeispiel
der Erfindung enthält
die ACIC 48 acht Schaltungselemente, von denen in 2 nur
eines stellvertretend dargestellt ist und die mit den Bezugszeichen 48n (n = 0,1, ... 6 und 7) bezeichnet
sind. Die Schaltungselemente 48 sind natürlich im
wesentlichen identisch. Die Anzahl der Schaltungselemente 48n entspricht einer Anzahl wahlfreier
Stellen, an denen jeweils die ROM-gespeicherten Programme revidiert
werden sollen. In diesem Ausführungsbeispiel
ist es so möglich,
die ROM-gespeicherten Programme an acht wahlfreien Programmstellen
zu revidieren, wie nachfolgend im Detail beschrieben wird.
-
Wie
in 2 gezeigt, enthält jedes Schaltungselement 48 ein
Vergleichsadress-Register (CAR) 50,
das initialisiert wird, wenn die CPU 10 eingeschaltet wird,
und das über
einen Steuerbus, einen Adressbus und einen Datenbus in geeigneter
Weise an die Elemente des Mikrocomputers angeschlossen ist. Das
CAR 50 ist als 16-Bit-Register ausgebildet, dessen Bitanzahl
gleich der einer Adresse des ROMs 12 ist. In jedes der
acht Schaltungselemente 48n wird eine
gegebene Adresse in das CAR 50 geschrieben, falls dies
erforderlich ist.
-
Stellt
sich beispielsweise heraus, daß Fehler in
einem der ROM-gespeicherten Programme enthalten sind, so wird eine
Kopfadresse des die Fehler enthaltenden Programms in das CAR 50 geschrieben.
Soll ein Zusatzprogramm an einer Stelle der in dem ROM 12 gespeicherten
Programme hinzugefügt werden,
so wird eine dieser Stelle entsprechende Adresse in das CAR 50 geschrieben.
Das Schreiben der Adresse in das CAR 50 wird nachfolgend
im Detail erläutert.
-
Wie
in 2 gezeigt, ist das CAR 50 über einen
Bus mit einem Adressvergleicher 52 verbunden, und der Programmzähler 26 ist über einen
Bus an den Adressvergleicher 52 angeschlossen. Wie vorstehend
erläutert,
wird in dem Programmzähler 26 eine
Adresse sukzessive erneuert, während
die ROM-gespeicherten Programme ausgeführt werden. Jedes Mal, wenn
die Adresse erneuert wird, wird die erneuerte Adresse von dem Adressvergleicher 52 mit der
in dem CAR 50 gespeicherten Adresse verglichen. Selbstredend
werden die jeweiligen Vergleiche der erneuerten Adressen mit den
in den CARs 50 der Schaltungselemente 48n gehaltenen
Adressen gleichzeitig ausgeführt.
-
Der
Adressvergleicher 52 hat einen Ausgangsanschluss, der mit
einem von zwei Eingangsanschlüssen
eines UND-Gatters 54 verbunden ist, wobei der auf das UND-Gatter 54 geführte Ausgangspegel
des Adressvergleichers 52 normalerweise ein niedriger Pegel
ist. Stimmen die erneuerten Adressen des Programmzählers 26 mit
den in dem CAR 50 gehaltenen Adressen überein, so ändert sich der Ausgangspegel
des Adressvergleichers 53 von niedrigem Pegel zu hohem
Pegel. Besteht nämlich Übereinstimmung
zwischen der erneuerten Adresse des Programmzählers 26 und der Adresse
des CAR 50, so wird von dem Adressvergleicher 52 ein Adress-Koinzidenz-Signal
(AC) als Hochpegelsignal ausgegeben. Wird die CPU 10 eingeschaltet,
so wird der Adressvergleicher 52 so initialisiert, daß das Niederpegelsignal
aus dem Adressvergleicher 52 ausgegeben wird.
-
Wie
in 2 gezeigt, ist der andere Eingangsanschluss des
UND-Gatters 54 mit einem Ausgangsanschluss eines Inverters 56 verbunden,
und ein Eingangsanschluss des Inverters 56 ist dann an einen
Ausgangsanschluss eines Adress-Koinzidenz-Unterbrechungsverbot-Registers
(ACIPR) 58 angeschlossen. Das ACIPR 58 ist als
1-Bit-Register ausgebildet und über
einen Steuerbus, einen Adressbus und einen Datenbus in geeigneter
Weise an die Elemente des Mikrocomputers angeschlossen. Normalerweise
ist das ACIPR 58 auf 0 eingestellt, so daß der auf
den Inverter 56 führende
Ausgangspegel des ACIPR 58 ein Niedrigpegel ist. Ist jedoch
das ACIPR 58 auf 1 eingestellt, so wird der Ausgangspegel
des ACIPR 58 von niedrig nach hoch verändert. Die 1-Bit-Daten des
ACIPR 58 sind also normalerweise 0, so daß ein Hochpegelsignal
von dem Inverter 56 ausgegeben wird. Ändern sich die 1-Bit-Daten
des ACIPR 58 von 0 nach 1, so wird von dem Inverter 56 ein
Niederpegelsignal ausgegeben. Die Änderung der 1-Bit-Daten des ACIPR 58 von
0 nach 1 wird im folgenden im Detail erläutert.
-
Dem
ACIPR 58 ist eine Rücksetzschaltung 60 zugeordnet,
die dafür
vorgesehen ist, die 1-Bit-Daten des ACIPR 58 jedes Mal
von 1 auf 0 zurückzusetzen,
wenn die 1-Bit-Daten des ACIPR 58 von 0 nach 1 geändert werden.
Nachdem die 1-Bit-Daten
des ACIPR 58 von 0 nach 1 geändert worden sind, werden nämlich, wenn
ein Rückstellsignal
RE1 als Hochpegelsignal von der Rückstellschaltung 60 an
den ACIPR 58 ausgegeben wird, die 1-Bit-Daten das ACIPR 58 von
1 auf 0 zurückgesetzt.
-
Nicht
nur das Adress-Koinzidenz-Signal (AC) wird von dem Adressvergleicher 52 der
Rücksetzschaltung 60 zugeführt, sondern
auch eine Reihe von Systemtaktimpulsen, um die zeitlichen Festlegungen
für verschiedene
Operationen der CPU 10 zu steuern. Die Rücksetzschaltung 60 erzeugt
auf Grundlage des AC-Signals und der Systemtaktimpulse das Rücksetzsignal
RE1, wie nachfolgend im Detail erläutert wird. Die Rücksetzschaltung 60 wird durch
ein ihr zugeführtes
Rücksetzsignal
initialisiert, wenn die CPU 10 eingeschaltet wird.
-
Wie
in 2 gezeigt, ist ein Ausgangsanschluss des UND-Gatters 54 mit
einem Eingangsanschluss C des Flipflops 62 verbunden, dessen
Eingangsanschluss D nach Einschalten der CPU 10 stets ein
Hochpegelsignal zugeführt
wird. Wird das Adress-Koinzidenz-Signal (AC) von dem Adressvergleicher 52 ausgegeben,
so gibt das UND-Gatter 54 unter der Voraussetzung, daß das Hochpegelsignal aus
dem Inverter 56 ausgegeben wird, aus seinem Ausgangsanschluss
ein Hochpegelsignal an den Eingangsanschluss C des Flipflops 62 aus.
Zu diesem Zeitpunkt wird ein Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) als Hochpegelsignal von dem Ausgangsanschluss Q des Flipflops 62 ausgegeben.
-
Der
Ausgangsanschluss Q des Flipflops 62 ist mit einem Eingangsanschluss
eines Adress-Koinzidenz-Unterbrechungsüberwachungs-Registers (ACIMR) 64 verbunden.
Wie das ACIPR 58 ist auch das ACIMR als 1-Bit-Register
ausgebildet und über einen
Steuerbus, einen Adressbus und einen Datenbus in geeigneter Weise
an die Elemente des Mikrocomputers angeschlossen. 1-Bit-Daten des
ACIMR 64 werden durch ein ihm zugeführtes Rücksetzsignal auf 0 initialisiert,
wenn die CPU 10 eingeschaltet wird. Wird das Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) (Hochpegel) von dem Ausgangsanschluss Q des Flipflops 62 ausgegeben,
so ändern
sich die 1-Bit-Daten des ACIMR 64 von 0 nach 1. Kommt die
Ausgabe des ACIR-Signals zum Stillstand, d.h. ändert sich der Ausgangspegel
des Ausgangsanschlusses Q des Flipflops 62 von hoch nach
niedrig, so werden die 1-Bit-Daten des ACIMR 64 von 1 auf
0 zurückgeführt. Durch
Auslesen der 1-Bit-Daten aus dem ACIMR 64 ist es also möglich zu bestimmen,
ob das ACIR-Signal von dem Ausgangsanschluss Q des Flipflops 62 ausgegeben
wird.
-
Wie
in 2 gezeigt, ist der Ausgangsanschluss Q des Flipflops 62 mit
einem von zwei Eingangsanschlüssen
eines UND-Gatters 66 verbunden, und der andere Eingangsanschluss
des UND-Gatters 66 ist mit einem Ausgangsanschluss eines
Adress-Koinzidenz-Unterbrechungsfreigabe-Registers (ACIAR) 68 verbunden.
Das ACIAR 68 ist ebenfalls als 1-Bit-Register ausgebildet
und über
einen Steuerbus, einen Adressbus und einen Datenbus in geeigneter
Weise an die Elemente des Mikrocomputers angeschlossen. 1-Bit-Daten
des ACIAR werden durch ein ihm zugeführtes Rücksetzsignal auf 0 initialisiert,
wenn die CPU 10 eingeschaltet wird. Ist das ACIAR 68 auf
1 eingestellt, so wird aus dem Ausgangsanschluss des ACIAR 68 ein
Hochpegelsignal ausgegeben und dann dem anderen Eingangsanschluss
des UND-Gatters 66 zugeführt. Ist das ACIAR 68 auf
0 eingestellt, so wird aus dem Ausgangsanschluss des ACIAR 68 ein
Niederpegelsignal ausgegeben und dann dem anderen Eingangsanschluss
des UND-Gatters 66 zugeführt.
-
Ist
das ACIAR 68 auf 1 eingestellt, und wird das Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) von dem Ausgangsanschluss Q des Flipflops 62 ausgegeben,
so werden deshalb beiden Eingangsanschlüssen des UND-Gatters 66 Hochpegelsignale
zugeführt,
wobei ein Adress-Koinzidenz-Unterbrechungssignal
als Hochpegelsignal von einem Ausgangsanschluss des UND-Gatters 66 an
die Unterbrechungssteuerung 40 ausgegeben wird. Wird das
ACI-Signal der Unterbrechungssteuerung 40 zugeführt, so
wird in der CPU 10 eine Unterbrechungsverarbeitung ausgeführt, wie
nachfolgend im Detail erläutert
wird.
-
Wie
aus 2 hervorgeht, wird das Adress-Koinzidenz-Unterbrechungssignal
(ACI) von dem UND-Gatter 66 auch einem Vektoradress-Register
(VAR) 70 zugeführt.
Das VAR 70 wird durch ein ihm zugeführtes Rücksetzsignal initialisiert,
wenn die CPU 10 eingeschaltet wird, und ist über einen
Steuerbus, einen Adressbus und einen Datenbus in geeigneter Weise
an die Elemente des Mikrocomputers angeschlossen. Wie das CAR 50 ist
auch das VAR 70 als 16-Bit-Register ausgebildet, dessen
Bitanzahl gleich der einer Adresse des ROMs 12 ist.
-
In
jedem der acht Schaltungselemente 48n wird
eine gegebene Vektoradresse in das VAR 70 geschrieben,
falls dies erforderlich ist. Eine in das jeweilige VAR 70 zu
schreibende Vektoradresse entspricht einer Kopfadresse eines in
dem RAM 14 gespeicherten Programms. Wird die CPU 10 eingeschaltet,
so werden unter der Voraussetzung, daß in dem EEPROM 18 ein
Revisionsprogramm und/oder ein Zusatzprogramm gespeichert sind,
diese Programme aus dem EEPROM 18 ausgelesen und, wie vorstehend
erläutert,
in den RAM 14 geschrieben.
-
Wird
das Adress-Koinzidenz-Unterbrechungssignal (ACI) von dem UND-Gatter 66 dem VAR 70 zugeführt, so
wird von dem VAR 70 die Vektoradresse an einen Programmzähler 26 ausgegeben
und dann in diesen geschrieben. Das Schreiben einer Vektoradresse
in das jeweilige VAR 70 wird nachfolgend im Detail erläutert.
-
Nachdem
das Adress-Koinzidenz-Unterbrechungsanforderungssignal (ACIR) von
dem Ausgangsanschluss Q des Flipflops 62 ausgegeben worden
ist, wird ein Rücksetzsignal
RE2 als Hochpegelsignal von einer Rücksetzschaltung 72 an
einen Rücksetzanschluss
R des Flipflops 62 ausgegeben, so daß der Flipflop 62 entsperrt
wird, wodurch die Ausgabe des ACIR-Signals zum Stillstand kommt.
In Folge der Ausgabe des Rücksetzsignals
RE2 von der Rücksetzschaltung 72 an
den Rücksetzanschluss
R des Flipflops 62 wird nämlich der Ausgangspegel des Ausgangsanschlusses
Q des Flipflops 62 von hoch nach niedrig zurückgeführt.
-
Wie
in 2 gezeigt, ist der Rücksetzschaltung 72 ein
Adress-Koinzidenz-Unterbrechungslösch-Register
(ACICR) 74 zugeordnet, das ein Löschsignal CL erzeugt und an
die Rücksetzschaltung 72 ausgibt.
Weiterhin werden der Rücksetzschaltung 72 die
vorstehend genannten Systemtaktimpulse zugeführt. Das Rücksetzsignal RE2 wird auf Grundlage
des Löschsignals
CL und der Systemtaktimpulse erzeugt, wie nachfolgend im Detail
erläutert wird.
Die Rücksetzschaltung 72 wird
durch ein ihr zugeführtes
Rücksetzsignal
initialisiert, wenn die CPU 10 eingeschaltet wird.
-
Auch
das ACICR 74 ist als 1-Bit-Register ausgebildet und über einen
Steuerbus, einen Adressbus und einen Datenbus in geeigneter Weise
an die Elemente des Mikrocomputers angeschlossen. Normalerweise
ist das ACICR 74 auf 0 gesetzt, jedoch ändern sich die 1-Bit-Daten
des ACICR 74 von 0 nach 1, nachdem das UND-Gatter 66 das
Adress-Koinzidenz-Unterbrechungssignal (ACI) der Unterbrechungssteuerung 40 zugeführt hat.
Zu diesem Zeitpunkt wird das Löschsignal
CL als Hochpegelsignal von dem ACICR 74 an die Rücksetzschaltung 72 ausgegeben.
Das Setzen der an das ACICR auszugebenden 1-Bit-Daten wird im folgenden
im Detail erläutert.
-
Wird
das Flipflop 62 entsperrt, indem die Rücksetzschaltung 72 das
Rücksetzsignal
RE2 dem Flipflop 62 zuführt,
so gibt die Rücksetzschaltung 72 ein
Rücksetzsignal
RE3 an das ACICR 74 aus, wobei 1-Bit-Daten des ACICR von
1 nach 0 zurückgeführt werden,
so daß die
Ausgabe des Löschsignals
CL von dem ACICR 74 an die Rücksetzschaltung 72 zum
Stillstand kommt. Der auf die Rücksetzschaltung 72 führende Ausgangspegel
des ACICR 74 wird nämlich
von hohem Pegel auf niedrigen Pegel zurückgeführt. Ähnlich dem Rücksetzsignal
RE2 wird das Rücksetzsignal
RE3 auf Grundlage des Löschsignals
CL und der Systemtaktimpulse erzeugt, wie nachfolgend im Detail
erläutert
wird.
-
In
dem ersten Ausführungsbeispiel
speichert der EEPROM 18 acht Vergleichsadressdaten, acht Flagdaten
und acht Vektoradressdaten. Jedes Mal wenn die CPU 10 eingeschaltet
wird, werden die acht Vergleichsadressdaten, die acht Flagdaten
und die acht Vektoradressdaten aus dem EEPROM 18 ausgelesen
und in die CARs 50, die ACIARs 68 bzw. die VARs 70 der
acht Schaltungselemente 48, geschrieben. Wie schon vorher
erläutert,
speichert der EEPROM 18, falls dies erforderlich ist, ein
Revisionsprogramm und/oder ein Zusatzprogramm, um in den ROM-gespeicherten
Programmen Revisionen durchzuführen.
Diese Programme werden jedes Mal, wenn die CPU 10 eingeschaltet
wird, in dem RAM 14 gespeichert.
-
Ist
der EEPROM 18 fest in dem Mikrocomputer installiert, d.h.
kann er aus diesem nicht entfernt werden, so werden die vorstehend
genannten verschiedenen Daten und Programme mittels eines nicht
dargestellten EEPROM-Schreibcomputers, der an den Mikrocomputer
(1) angeschlossen ist, in den EEPROM 18 geschrieben.
Das Schreiben der verschiedenen Daten und Programme in den EEPROM 18 erfolgt
nämlich
durch den EEPROM-Schreibcomputer über die CPU 10 des Mikrocomputers.
Natürlich
wird in diesem Fall ein EEPROM-Schreibprogramm vorher in dem ROM 12 gespeichert.
-
Ist
dagegen der EEPROM 18 entfernbar in dem Mikrocomputer installiert,
so wird der EEPROM 18 einmal aus dem Mikrocomputer entfernt
und dann in einen nicht gezeigten EEPROM-Schreibcomputer montiert,
um die verschiedenen Daten und Programme in den EEPROM 18 zu
schreiben. Nachdem das Schreiben der verschiedenen Daten und Programme in
den EEPROM 18 abgeschlossen ist, wird der EEPROM 18 aus
dem EEPROM-Schreibcomputer entfernt und dann wieder in den Mikrocomputer
gebracht. In diesem Fall ist die Speicherung des EEPROM-Schreibprogramms
in dem ROM 12 selbstredend überflüssig.
-
In 3 ist
ein Speicherbereich des EEPROMs 18 schematisch dargestellt.
Wie in dieser Zeichnung gezeigt, enthält der EEPROM 18 acht
Vergleichsadress-Speicherzonen
CAZ0, CAZ1, ... CAZ6 und CAZ7, in denen Vergleichsadressdaten CA0[CA000, CA001, ... Ca014, CA015], Ca1[CA100, CA101, ... CA114, CA115], ... CA6[CA600, CA601, ... CA614, CA615] bzw. CA7[CA700, CA701, ... CA714, CA715] gespeichert
sind. Der EEPROM 18 enthält auch acht Vektoradress-Speicherzonen VAZ0,
VAZ1, ... VAZ6 und VAZ7, in denen Vektoradressdaten VAO[VA000, VA001, ... VA014, VA015], VA1[VA100, VA101, ... VA114, VA115], ... VA6[VA600, VA601, ... VA614, VA615] bzw. VA7[Va700, VA701, ... VA714, VA715] gespeichert
sind. Wie vorstehend erläutert,
sind die Vergleichsadressdaten CA0, Ca1, ... CA6 und CA7 jeweils
als 16-Bit-Daten und auch die Vektoradressdaten Va0, VA1, ... VA6
und VA7 als 16-Bit-Daten ausgebildet. Der EEPROM 18 enthält weiterhin
acht Flagdaten-Speicherzonen, in denen Flagdaten FE0, FE1, ... FE6
bzw. FE7 gespeichert sind, die jeweils als 1-Bit-Daten ausgebildet
sind. Die jeweiligen Vergleichsadressdaten CA0, CA1, ... CA6 und
CA7 entsprechen den Vektoradressdaten VA0, VA1, ... VA6 und VA7
und auch den Flagdaten FE0, FE1, ... FE6 und FE7.
-
Weiterhin
enthält
der EEPROM 18 einen Programmspeicherbereich und einen Datenspeicherbereich.
In dem Programmspeicherbereich sind, falls dies erforder lich ist,
ein Revisionsprogramm und/oder ein Zusatzprogramm für die Durchführung von
Revisionen in den ROM-gespeicherten Programmen gespeichert. Der
Datenspeicherbereich wird auch eingesetzt, um verschiedene Daten,
z. B. Korrekturdaten, für
ein elektronisches Produkt, in das der Computer (1)
eingebaut ist, zu speichern, wie es beispielsweise eine elektronische
Kamera, eine Videokamera, ein Drucker oder dergleichen darstellt.
Ein erstes Beispiel für
die Revision der ROM-gespeicherten Programme ist auf einen Fall
gerichtet, in dem eines der ROM-gespeicherten Programme Fehler enthält. In diesem
ersten Beispiel ist ein Revisionsprogramm oder korrektes Programm,
das das die Fehler enthaltende Programm ersetzen soll, vorbereitet
und in dem Programmspeicherbereich des EEPROM 18 (3)
gespeichert. Eine Adresse, unter der ein Befehl gespeichert ist,
mit dem eine Ausführung
des die Fehler enthaltenden Programms geleitet wird, ist als Vergleichsadresse
in eine der Vergleichsadress-Speicherzonen
CAZ0, CAZ1, ... CAZ6 und CAZ7 des EEPROM 18 (3)
geschrieben. Eine Adresse des RAMs 14, unter der ein erster
Befehl des korrekten Programms gespeichert werden soll, d.h. eine
Kopfadresse des korrekten Programms, wird in Form von Vektoradressdaten
in eine Vektoradress-Speicherzone (VAZ0, VAZ1, ... VAZ6, VAZ7) geschrieben,
entsprechend der Vergleichsadress-Speicherzone (CAZ0, CAZ1, ... CAZ6,
CAZ7), in welche die Vergleichsadressdaten geschrieben sind. Weiterhin
werden Flagdaten (FE0, FE1, ... FE6, FE7) entsprechend der Vergleichsadress-Speicherzone
(CAZ0, CAZ1, ... CAZ6, CAZ7), in die die Vergleichsadressdaten geschrieben
sind, auf 1 gesetzt. Sind beispielsweise die Vergleichsadressdaten
in die Vergleichsadress-Speicherzone CAZ0 geschrieben, so werden
die Vektoradressdaten in die entsprechende Vektoradress-Speicherzone
VAZ0 geschrieben, und die entsprechenden Flagdaten FE0 werden auf
1 gesetzt.
-
Die
Adresse des RAMs 14, unter der der erste Befehl des korrekten
Programms gespeichert werden soll, wird im folgenden als Kopfadresse
des korrekten Programms bezeichnet.
-
Ein
zweites Beispiel für
die Revision der ROM-gespeicherten Programme ist auf einen Fall gerichtet,
in dem ein Zusatzprogramm den ROM-gespeicherten Programmen an einer
wahlfreien Programmstelle hinzugefügt wird. In diesem zweiten
Beispiel ist ein Zusatzprogramm, das den ROM-gespeicherten Programmen
hinzugefügt
werden soll, vorbereitet und in dem Programmspeicherbereich des
EEPROM 18 gespeichert. Eine Adresse, die dieser Stelle
der ROM-gespeicherten Programme entspricht, ist als Vergleichsadressdatum
in eine der Vergleichsadress-Speicherzonen CAZ0, CAZ1, ... CAZ6
und CAZ/ des EEPROMs 18 geschrieben. Eine Adresse des RAMs 14,
unter der ein erster Befehl des Zusatzprogramms gespeichert werden
soll, wird als Vektoradressdatum in eine Vektoradress-Speicherzone (VAZ0,
VAZ1, ... VAZ6, VAZ7) geschrieben, entsprechend der Vergleichsadress-Speicherzone
(CAZ0, CAZ1, ... CAZ6, CAZ7), in die das Vergleichsadressdatum geschrieben
ist. Weiterhin wird ein Flagdatum (FE0, FE1, FE6, FE7), das der
Vergleichsadress-Speicherzone (CAZ0, CAZ1, ... CAZ6, CAZ7) entspricht,
in die das Vergleichsadressdatum geschrieben ist, auf 1 gesetzt.
Weiterhin wird ein Flagdatum (FE0, FE1, ... FE6, FE7) auf 1 gesetzt,
das der Vergleichsadress-Speicherzone (CAZ0, CAZ1, ... CAZ6, CAZ7)
entspricht, in die das Vergleichsadressdatum geschrieben ist. Ist
beispielsweise das Vergleichsadressdatum in die Vergleichsadress-Speicherzone
CAZ1 geschrieben, so wird das Vektoradressdatum in die entsprechende
Vektoradress-Speicherzone VAZ1 geschrieben, und das entsprechende
Flagdatum FEI wird auf 1 gesetzt.
-
Die
Adresse des RAMs 14, unter der der erste Befehl des Zusatzprogramms
gespeichert werden soll, wird im folgenden als Kopfadresse des Zusatzprogramms
bezeichnet.
-
Ein
drittes Beispiel für
die Revision der ROM-gespeicherten Programme ist auf einen Fall gerichtet,
daß eines
der ROM-gespeicherten Programme an einer anderen wahlfreien Stelle
der Programme ausgeführt
wird. in diesem dritten Beispiel ist ein Aufrufprogramm, mit dem
aus den ROM-gespeicherten Programmen das betreffende Programm aufgerufen
wird, vorbereitet und in den Programmspeicherbereich des EEPROMs 18 gespeichert.
Eine dieser Stelle der ROM-gespeicherten Programme entsprechende
Adresse ist als Vergleichsadressdatum in eine der Vergleichsadress-Speicherzonen CAZ0,
CAZ1, ... CAZ6 und CAZ7 des EEPROMs 18 geschrieben. Eine
Adresse des RAMs 14, unter der ein erster Befehl des Aufrufprogramms
gespeichert werden soll, ist als Vektoradressdatum in einer Vektoradress-Speicherzone
(VAZ0, VAZ1, ... VAZ6, VAZ7) gespeichert, die der Vergleichsadress-Speicherzone
(CAZ0, CAZ1, ... CAZ6, CAZ7) entspricht, in die die Vergleichsadresse
geschrieben ist. Weiterhin wird ein Flagdatum (FE0, FE1, ... FE6,
FE7) auf 1 gesetzt, das der Vergleichsadress-Speicherzone (CAZ0, CAZ1, ... CAZ6,
CAZ7) entspricht, in die die Vergleichsadressdatum geschrieben ist.
Ist beispielsweise das Vergleichsadressdatum in die Vergleichsadress-Speicherzone
CAZ2 geschrieben, so wird das Vektoradressdatum in die entsprechende
Vektoradress-Speicherzone VAZ2 geschrieben, und das entsprechenden
Flagdatum FE2 wird auf 1 gesetzt.
-
Die
Adresse des RAMs 14, unter der der erste Befehl des Aufrufprogramms
gespeichert werden soll, wird im Folgenden als Kopfadresse des Aufrufprogramms
bezeichnet.
-
Die
Flagdaten FE1, FE1, ... FE6 und FE7 werden jeweils zur Unterscheidung
eingesetzt, ob eine in einer entsprechenden Vergleichsadress-Speicherzone
(CAZ0, CAZ1, ... CAZ6, CAZ7) gespeicherte Vergleichsadresse und
eine entsprechende Vektoradress-Speicherzone (VAZ0, VAZ1, ... VZ6,
VAZ7) an einer aktuellen Revision der ROM-gespeicherten Programme
teilhaben. Sind die vorstehend genannten drei Beispiele in den ROM-gespeicherten
Programmen enthalten, so werden lediglich die drei Flagdaten FE0,
FE1 und FE2 auf 1 gesetzt, da die entsprechenden Vergleichsadressdaten
CA0, CA1 und CA2 und die entsprechenden Vektoradressdaten VA0, VA1
und VA2 an den aktuellen Revisionen der ROM-gespeicherten Programme
teilhaben. In diesem Fall werden die übrigen Flagdaten FE3, FE4,
... FE6 und FE7 auf 0 gesetzt, da ein bestimmtes, als Vergleichsadressdatum
(CA3, CA4, ... CA6, CA7) in der jeweiligen Vergleichsadress-Speicherzone (CAZ3,
CAZ4, ... CAZ6, CAZ7) gespeichertes Datum und ein bestimmtes, als
Vektoradressdatum (VA3, VA4, ... VA6, VA7) in der jeweiligen Vektoradress-Speicherzone
(VAZ3, VAZ4, ... VAZ6, VAZ7) gespeichertes Datum an der aktuellen
Revision der ROM-gespeicherten Programme nicht teilhaben.
-
Wie
schon vorher erläutert,
werden die Vergleichsadressdaten CA0, CA1, ... CA6 und CA7 jedes
Mal aus den Vergleichsadress-Speicherzonen CAZ0, CAZ1, ... CAZ6,
CAZ7 des EEPROMs 18 ausgelesen, wenn die CPU 10 eingeschaltet
wird, und dann in die CARs 50 der jeweiligen Schaltungselemente 48n geschrieben, gleichgültig ob
die jeweiligen Vergleichsadressdaten an der aktuellen Revision der ROM-gespeicherten
Programme teilhaben oder nicht. In ähnlicher Weise werden, wann
immer die CPU 10 eingeschaltet wird, die Vektoradressdaten VA0,
VA1, ... VA6 und VA7 aus den Vektoradress-Speicherzonen VAZ0, VAZ1,
... VAZ6 und VAZ7 des EEPROMs 18 ausgelesen und dann in
die VARs 70 der jeweiligen Schaltungselemente 48n geschrieben. Außerdem werden, wann immer die
CPU 10 eingeschaltet wird, die Flagdaten FE0, FE1, ... FE6
und FE7 aus dem EEPROM 18 ausgelesen und dann in die ACIARs
der jeweiligen Schaltungselemente 48n geschrieben.
-
In
den 4 bis 11 sind schematisch das CAR 50,
das ACIAR 68 und das VAR 70 eines jeden Schaltungselementes 48n gezeigt, welche die entsprechenden
Vergleichsadressdaten (CA0, CA1, ... CA6, CA7), die entsprechenden
Flagdaten (FE0, FE1, ... FE6, FE7) bzw. die entsprechenden Vektoradressdaten
(VA0, VA1, VA6, VA7) halten. Sind die vorstehend genannten Revisionsbeispiele
in die ROM-gespeicherten Programme eingearbeitet, so nehmen, wie
oben erläutert,
die Vergleichsadressdaten CA0, CA1 und CA2 und die Vektoradressdaten VA0,
VA1 und VA2 an den aktuellen Revisionen der ROM-gespeicherten Programme
teil, so daß die Flagdaten
FE0, FE1 und FE2 auf 1 gesetzt sind (4, 5 und 6).
Dagegen nehmen die Vergleichsadressdaten CA3, CA4, ... CA6 und CA7
und die Vektoradressdaten VA3, VA4, ... VA6 und VA7 an keiner aktuellen
Revision der ROM-gespeicherten Programme teil, so daß die Flagdaten
FE3, FE4, ... FE6 und FE7 auf 0 gesetzt sind (7, 8, 9, 10 und 11).
Kurz gesagt, kann durch die Werte (1 oder 0) der jeweiligen Flagdaten
(FE0, FE1, ... FE6, FE7) unterschieden werden, ob sowohl den betreffenden
Flagdaten entsprechende Vergleichsadress daten als auch den betreffenden
Flagdaten entsprechende Vektoradressdaten an einer aktuellen Revision
der ROM-gespeicherten Programme teilhaben oder nicht.
-
Wenn
die vorstehend genannten Revisionsbeispiele in den ROM-gespeicherten
Programmen eingearbeitet sind, werden jedes Mal, wenn die CPU 10 eingeschaltet
wird, das Revisionsprogramm, das Zusatzprogramm und das Aufrufprogramm
aus dem Programmspeicherbereich des EEPROMs 18 ausgelesen
und dann in den RAM 14 gespeichert. Selbstverständlich werden
zu diesem Zeitpunkt die verschiedenen Daten, wie z.B. die Korrekturdaten,
für das
elektronische Produkt, in das der Mikrocomputer (1)
eingebaut ist, aus dem Datenspeicherbereich des EEPROMs 18 ausgelesen
und dann in dem RAM 14 gespeichert.
-
In 12 ist
ein Speicherbereich des RAMs 14 schematisch dargestellt.
Wie in dieser Zeichnung gezeigt, enthält der RAM 14 einen
für die
Programmausführung
bestimmten Arbeitsbereich, einen Datenspeicherbereich, einen Programmspeicherbereich
und Stapelspeicherbereich, wobei diese Bereiche in dem RAM 14 festgelegt
sind. Der für
die Programmausführung
bestimmte Arbeitsbereich wird verwendet, um beispielsweise verschiedene
temporäre
Daten zu speichern, die während
einer Ausführung
der ROM-gespeicherten Programme erzeugt werden. Der Datenspeicherbereich
dient der Speicherung verschiedener Daten, die aus dem Datenspeicherbereich
des EEPROMs 18 ausgelesen werden. Der Programmspeicherbereich
ist für
das Revisionsprogramm, das Zusatzprogramm und das Aufrufprogramm
vorgesehen, die aus dem Programmspeicherbereich des EEPROMs 18 ausgelesen
werden. Der Stapelspeicherbereich dient als Arbeitsbereich zum Speichern
verschiedener Daten, die später während der
Ausführung
der ROM-gespeicherten Programme zu verarbeiten sind.
-
In
den 13 bis 20 sind
die ACIPRs 58, die ACICRs 74 und die ACIMRs 64 der
Schaltungselemente 48n schematisch
gezeigt, wobei jedes dieser Register 58, 74 und 64 als
1-Bit-Register ausgebildet ist, wie schon oben erläutert wurde.
-
In
den ACIPRs 58 der Schaltungselemente 48n sind
Flagdaten FD0, FD1, ... FD6 bzw. FD7 definiert, die auf den Wert
0 initialisiert werden, wenn die CPU 10 eingeschaltet wird.
Das geeignete Einstellen des Wertes 1 für die jeweiligen Flagdaten
(FD0, FD1, ... FD6, FD7) erfolgt gemäß einem Betriebsaspekt der
CPU 10.
-
In
den ACICRs 74 der Schaltungselemente 48n sind
Flagdaten FC0, FC1, ... FC6 bzw. FC7 festgelegt, die auf den Wert
0 initialisiert werden, wenn die CPU 10 eingeschaltet wird.
Die geeignete Einstellung des Wertes 1 der jeweiligen Flagdaten
(FC0, FC1, ... FC6, FC7) erfolgt gemäß einem Betriebsaspekt der
CPU 10.
-
In
den ACIMRs 64 der Schaltungselemente 48n sind
Flagdaten FM0, FM1, ... FM6 bzw. FM7 festgelegt, die auf den Wert
0 initialisiert werden, wenn die CPU 10 eingeschaltet wird.
Die geeignete Einstellung des Wertes 1 für die jeweiligen Flagdaten
(FM0, FM1, ... FM6, FM7) erfolgt gemäß einem Betriebsaspekt der
CPU 10.
-
Wie
schon erläutert,
wird während
des Betriebs der CPU 10 eine Adresse in dem Programmzähler 26 sukzessive
erneuert. In jedem der Schaltungselemente 48n gewinnt
ein entsprechender Adressvergleicher 52 die sukzessiv erneuerte
Adresse aus dem Programmzähler 26 wieder
und vergleicht diese mit einem Vergleichsadressdatum (CA0, CA1,
... CA6, CA7), das in dem entsprechenden CAR 50 gehalten
ist. Besteht eine Übereinstimmung
zwischen der wiedergewonnenen Adresse und dem in einem der acht
CARs 50 gehaltenen Vergleichsadressdatum, so wird von dem
Adressvergleicher 52 ein Adress-Koinzidenz-Signal (AC)
als Hochpegelsignal ausgegeben.
-
Stimmt
beispielsweise die wiedergewonnene Adresse mit dem Vergleichsadressdatum
CA0 überein,
das in dem CAR 50 des Schaltungselementes 480 gehalten ist, so wird das Adress-Koinzidenz-Signal
(AC) von dem Adressvergleicher 52 des Schaltungselementes 480 ausgegeben und dann einem der beiden
Eingangsanschlüsse
des UND-Gatters 54 des Schaltungselementes 480 zugeführt. Anderer seits gibt der
Ausgangsanschluss des Inverters 56 ein Hochpegelsignal
an den anderen Eingangsanschluss des UND-Gatters 54 aus,
und zwar wegen der anfänglichen
Einstellung des Wertes 0 für
das Flagdatum FD0, das in dem ACIPR 58 des Schaltungselementes 480 festgelegt ist. Wird also das AC-Signal
von dem Adressvergleicher 52 ausgegeben, so ändert sich
der Ausgangspegel des UND-Gatters 54 von
niedrig nach hoch, und das Hochpegelsignal wird dem Eingangsanschluss
C des Flipflops 62 zugeführt.
-
Wie
vorstehend erläutert,
wird dem Eingangsanschluss D des Flipflops 62 stets das
Hochpegelsignal zugeführt.
Wird das AC-Signal von dem Adressvergleicher 52 ausgegeben,
so gibt deshalb der Ausgangsanschluss Q des Flipflops 62 ein Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) an einen der Eingangsanschlüsse des UND-Gatters 66 aus.
-
Sind
die vorstehend genannten Revisionsbeispiele in die ROM-gespeicherten
Programme eingearbeitet, nehmen die Vergleichsadressdaten CA0, CA1
und CA2, die in den CARs 50 der Schaltungselemente 480 , 481 bzw. 482 gehalten sind, an den aktuellen Revisionen
der ROM-gespeicherten Programme teil, und die entsprechenden Flagdaten
FE0, FE1 und FE2 werden auf den Wert 1 eingestellt. In jedem der
Schaltungselemente 480 , 481 und 482 wird
so ein Adress-Koinzidenz-Unterbrechungsfreigabesignal (ACTA)
als Hochpegelsignal von dem ACIAR 68 ausgegeben.
-
Folglich
wird, wenn eine aus dem Programmzähler 26 wiedergewonnene
Adresse mit einem in dem CAR 50 gespeicherten Vergleichsadressdatum (CA0,
CA1, CA2) übereinstimmt,
d.h. ein Adress-Koinzidenz-Signal (AC) von dem Adressvergleicher 52 ausgegeben
wird, ein Adress-Koinzidenz-Unterbrechungssignal (ACI) aus dem Ausgangsanschluss des
UND-Gatters 66 an die Unterbrechungssteuerung 40 und
das VAR 70 ausgegeben, und zwar wegen des ACIR-Signals,
das von dem ACIAR 68 an das UND-Gatter 66 ausgegeben
wird (FE0 = 1, FE1 = 1, FE2 = 1).
-
Obgleich
die übrigen
Vergleichsadressdaten CA3, CA4, CA5, CA6 und CA7 jeweils an einer
aktuellen Revision der ROM-gespeicherten Programme nicht teilhaben,
werden die Vergleichsadressdaten jeweils in Form vorbestimmter 16-Bit-Daten in einer entsprechenden
Vergleichsadress-Speicherzone (CAZ3, CAZ4, CAZ5, CAZ6, CAZ7) des
EEPROMs 18 gespeichert. Wie vorstehend erläutert, werden
die jeweiligen Vergleichsadressdaten CA3, CA4, CA5, CA6 und CA7,
wenn die CPU 10 eingeschaltet wird, aus den Vergleichsadress-Speicherzonen
CAZ3, CAZ4, CAZ5, CAZ6 und CAZ7 des EEPROMs 18 ausgelesen
und dann in die CARs 50 der Schaltungselemente 483 , 484 , 485 , 486 und 487 geschrieben. Folglich kann in jedem
der Schaltungselemente 483 bis 487 eine aus dem Programmzähler 26 wiedergewonnene
Adresse zufälligerweise
mit einem in dem CAR 50 gehaltenen Vergleichsadressdatum
(CA3, CA4, CA5, CA6, CA7) übereinstimmen.
Besteht eine Übereinstimmung
zwischen der wiedergewonnenen Adresse und den Vergleichsadressdaten
(CA3, CA4, CA5, CA6, CA7), so wird selbstverständlich ein Adress-Koinzidenz-Signal
(AC) von dem Adressvergleicher 52 ausgegeben, was zur Folge
hat, daß der Ausgangsanschluß Q des
Flipflops 62 ein Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) ausgibt. Jedoch kann ein Adress-Koinzidenz-Unterbrechungssignal
(ACI) nicht von dem Ausgangsanschluss des UND-Gatters 66 an
die Unterbrechungssteuerung 40 und das VAR 70 ausgegeben
werden, da die Flagdaten FE3, FE4, FE5, FE6 und FE7 jeweils 0 sind,
wodurch angezeigt wird, daß keine
der Vergleichsadressdaten CA3, CA4, CA5, CA6 und CA7 an einer aktuellen
Revision der ROM-gespeicherten
Programme teilhaben.
-
In
jedem der Schaltungselemente 480 , 481 und 482 wird,
wenn der Ausgangsanschluss des UND-Gatters 66 der Unterbrechungssteuerung 40 das
ACI-Signal zuführt,
eine sequentielle Unterbrechungs-Übergangs-Verarbeitung von der
CU 20 der CPU 10 gemäß einem in 21 gezeigten
Flußdiagramm
ausgeführt.
Die Ausführung
der sequentiellen Unterbrechungs-Übergangs-Verarbeitung wird
unabhängig
von den ROM-gespeicherten Programmen jedes Mal automatisch ausgeführt, wenn
das ACI-Signal der Unterbrechungssteuerung 40 zugeführt wird.
-
In
Schritt 2101 wird die Adresse des Programmzählers 26,
die mit den Vergleichsadressdaten (CA0, CA1, CA2) übereinstimmt,
temporär
als Rücksprungadresse
in dem Stapelspeicherbereich des RAMs 14 (12)
gespeichert. Dann werden in Schritt 2102 die verschiedenen
Flagdaten (wie das Übertragflag,
das Überlaufflag,
das Nullflag, das Vorzeichenflag und dergleichen) des Statusregisters 38 temporär in dem
Stapelspeicherbereich des RAMs 14 gespeichert. Nachfolgend
wird in Schritt S2103 das in dem Statusregister 38 gehaltene
Unterbrechungsfreigabeflag auf 0 gesetzt, wodurch, wie schon oben
erwähnt,
alle Unterbrechungen mit Ausnahme einer nichtmaskierbaren Unterbrechung (NMI)
und einer Softwareunterbrechung unterbunden sind.
-
Die
mit den Schritten 2101, 2102 und 2103 erfolgende
Verarbeitung ist Teil einer gewöhnlichen sequentiellen
Unterbrechungs-Übergangs-Verarbeitung,
die in einem herkömmlichen
Mikrocomputer ausgeführt
wird.
-
In
Schritt 2104 werden die in dem VAR 70 gehaltenen
Vektoradressdaten (VA0, VA1, VA2) auf Grundlage eines von dem UND-Gatter 66 an
das VAR 70 ausgegebenen ACI-Signals in dem Programmzähler 26 gesetzt.
Beispielsweise wird nämlich
in dem Schaltungselement 48, wenn das UND-Gatter 66 das
ACI-Signal an an das VAR 70 ausgibt, das Vektoradressdatum
VA0 aus dem VAR 70 ausgelesen und dann in dem Programmzähler 70 gesetzt.
Kurz gesagt, wird die Adresse des Programmzählers 26 durch die
in dem VAR 70 gehaltenen Vektoradressdaten (VA0, VA1, VA2)
erneuert.
-
In
den vorstehend genannten Revisionsbeispielen entsprechen, wie schon
oben erläutert,
die jeweiligen Vektoradressdaten VA0, VA1 und VA2 den Kopfadressen
des korrekten Programms, des Zusatzprogramms und des Aufrufprogramms,
die in dem Programmspeicherbereich des RAMs 17 gespeichert
sind. Nachdem die Adresse des Programmzählers 26 durch die
Vektoradressdaten (VA0, VA, VA2) erneuert worden sind, greift die
CU 20 auf die Kopfadresse (Vektoradresse) eines entsprechenden
Programms aus korrektem Programm, Zusatzprogramm und Aufrufprogramm
des RAMs 14 zu, so daß das
entsprechende Revisionsprogramm als Unterbrechungsverarbeitung ausgeführt wird
(Schritt 2105).
-
Sobald
die Ausführung
der Unterbrechungsverarbeitung gestartet ist (Schritt 2105),
werden ein entsprechendes Flagdatum (FC0, FC1, FC2), das in dem
ACICR 74 gehalten ist, auf 1 gesetzt, wodurch das Löschsignal
aus dem ACICR 74 an die Rücksetzschaltung 72 ausgegeben
wird. Wie oben erläutert, wird
das Rücksetzsignal
RE2, wenn das Löschsignal CL
als Hochpegelsignal der Rücksetzschaltung 72 zugeführt, dort
erzeugt und dann an den Rücksetzanschluss
R des Flipflops 62 ausgegeben, so daß der Flipflop 62 entsperrt
wird, wodurch die Ausgabe des ACIR-Signals aus dem Ausgangsanschluss
Q des Flipflops 62 zum Stillstand kommt. Wegen der Ausgabe
des Rücksetzsignals
RE2 an den Rücksetzanschluss
R des Flipflops 62 wird nämlich der Ausgangspegel des
Ausgangsanschlusses Q des Flipflops 62 von hohem Pegel
auf niedrigen Pegel zurückgeführt. So
kommt auch die Ausgabe des ACI-Signals aus dem Ausgangsanschluss
des UND-Gatters 66 an die Unterbrechungssteuerung 40 zum
Stillstand. Andererseits wird auch das Rücksetzsignal RE3 in der Rücksetzschaltung 72 erzeugt
und dann an das ACICR 74 ausgegeben, wodurch das entsprechende
Flagdatum (FC0, FC1, FC2) auf 0 zurückgesetzt wird, so daß die Ausgabe
des Löschsignals
CL aus dem ACICR 74 an die Rücksetzschaltung 72 zum
Stillstand kommt.
-
22 zeigt
einen Schaltplan der Rücksetzschaltung 72.
Wie in dieser Zeichnung gezeigt, enthält die Rücksetzschaltung 72 ein
erstes Flipflop 72A, ein zweites Flipflop 72B,
ein UND-Gatter 72C und ein ODER-Gatter 72D. Der
Ausgangsanschluss des ACICR 74 ist an einen Eingangsanschluss
D des ersten Flipflops 72A und an einen von zwei Eingangsanschlüssen des
UND-Gatters 72C angeschlossen. Der andere Eingangsanschluss
des UND-Gatters 72C ist an einen invertierten (mit einem Balken
versehenen) Ausgangsanschluss Q des zweiten Flipflops 72B angeschlossen.
Ein Ausgangsanschluss Q des ersten Flipflops 72A ist mit
einem Eingangsanschluss D des zweiten Flipflops 726 verbunden,
und ein Ausgangsanschluss des zweiten Flipflops 728 ist
an einen von zwei Eingangsan schlüssen
des ODER-Gatters 72D angeschlossen. Ein Ausgangsanschluss
des UND-Gatters 72C ist mit dem Rücksetzanschluss R des Flipflops 62 verbunden,
und ein Ausgang des ODER-Gatters 72D ist an den Eingangsanschluss
des ACICR 74 angeschlossen.
-
Wird
die CPU 10 eingeschaltet, so wird das Rücksetzsignal beiden Rücksetzanschlüssen R des ersten
und des zweiten Flipflops 72A und 72B zugeführt, wodurch
das erste und das zweite Flipflop 72A und 72B zurückgesetzt
werden. Das Rücksetzsignal wird
auch dem anderen Eingangsanschluss des ODER-Gatters 72D zugeführt und
aus diesem als Rücksetzsignal
RE3 ausgegeben, wobei das in dem ACICR 74 gehaltene Flagdatum
(F0, FC1, FC2) auf 0 zurückgesetzt
wird. Außerdem
wird, wie in 22 gezeigt, beiden Eingangsanschlüssen C des
ersten und des zweiten Flipflops 72A und 72B eine
Reihe von Systemtaktimpulsen fortgesetzt zugeführt, nachdem die CPU 10 eingeschaltet
worden ist.
-
23 zeigt
ein Zeitdiagramm der in 22 dargestellten
Rücksetzschaltung 72.
-
Während das
in dem ACICR 74 gehaltene Flagdatum (FC0, FC1, FC2) gleich
0 ist, d.h. sich der Ausgangspegel des ACICR 74 auf niedrigem
Pegel befindet, ist der Ausgangspegel Q1 des Ausgangsanschlusses
Q des ersten Flipflops 72A niederpegelig, wie in dem Zeitdiagramm
nach 23 gezeigt ist. Andererseits ist ein Ausgangspegel
Q2 des Ausgangsanschlusses Q des zweiten Flipflops 726 niederpegelig
und ein (mit dem Balken versehener) Ausgangspegel Q2 des invertierten
(mit dem Balken versehenen) Ausgangsanschlusses Q des zweiten Flipflops 728 hochpegelig.
So befindet sich ein Ausgangspegel (RE2) des UND-Gatters 72C auf niedrigem Pegel
und ein Ausgangspegel (RE3) des ODER-Gatters 72D auf niedrigem Pegel.
-
Wenn
das in dem ACICR 74 gehaltene Flagdatum (FC0, FC1, FC2)
auf 1 gesetzt wird, d.h. das Löschsignal
CL von dem ACICR 74 als Hochpegelsignal an die Rücksetzschaltung 72 ausgegeben
wird, wird das Löschsignal
CL und dem UND-Gatter 72C zugeführt, wobei
das Rücksetzsignal
RE2 als Hochpegelsignal von dem Ausgangsanschluss des UND-Gatters 72b ausgegeben
wird, wie in dem Zeitdiagramm nach 23 gezeigt
ist. Zu diesem Zeitpunkt befindet sich der (mit dem Balken versehene) Ausgangspegel
Q2 des (mit dem Balken versehenen) invertierten Ausgangsanschlusses
Q des zweiten Flipflops 726 auf hohem Pegel. Wie vorstehend erläutert, wird
so das Flipflop 62 entsperrt, wodurch die Ausgabe des ACIR-Signals
aus dem Ausgangsanschluss Q des Flipflops 62 zum Stillstand
kommt.
-
Wird
das Löschsignal
CL dem Eingangsanschluss D des ersten Flipflops 72A zugeführt, so
wird andererseits, wie in dem Zeitdiagramm nach 23 dargestellt,
der Ausgangspegel Q1 des Ausgangsanschlusses Q des ersten Flipflops 72A von
niedrigem Pegel zu hohem Pegel verändert, und zwar in Synchronisation
mit dem Anstieg eines der Systemtaktimpulse, wie ebenfalls in 23 dargestellt
ist. Wird dieses Hochpegelsignal (Q1) dem Eingangsanschluss D des
zweiten Flipflops 726 zugeführt, so wird der Ausgangspegel
Q2 des Ausgangsanschlusses Q des zweiten Flipflops 726 von
niedrigem Pegel zu hohem Pegel verändert, und der (mit dem Balken versehene).
Ausgangspegel Q des (mit Balken versehenen) invertierten Ausgangsanschlusses
Q des zweiten Flipflops 728 wird von hohem Pegel zu niedrigem
Pegel verändert,
wobei beide Änderungen
zugleich in Synchronisation mit dem Anstieg eines der Systemtaktimpulse
auftreten, wie in dem Zeitdiagramm nach 23 gezeigt
ist.
-
Der
Ausgangspegel des UND-Gatters 72C wird so von hohem Pegel
auf niedrigen Pegel zurückgeführt, da
sich der (mit dem Balken versehene) Ausgangspegel Q des (mit dem
Balken versehenen) invertierten Ausgangsanschlusses des zweiten
Flipflops 72B von hohem Pegel auf niedrigen Pegel ändert. Die
Ausgabe des Rücksetzsignals
RE2 aus dem UND-Gatter 72C kommt nämlich zum Stillstand. Andererseits ändert sich
der Ausgangspegel des ODER-Gatters 72D von niedrigem Pegel
auf hohen Pegel, da sich der Ausgangspegel Q2 des Ausgangsanschlusses
Q des zweiten Flipflops 726 von niedrigem Pegel auf hohen
Pegel ändert.
Das Rücksetzsignal
RE3 wird nämlich
als Hochpegelsignal an das ACIC-Register 74 ausgegeben,
wie in dem Zeitdiagramm nach 23 gezeigt
ist.
-
Wird
das Rücksetzsignal
RE3 dem ACICR 74 zugeführt,
so wird das Flagdatum (FC0, FC1, FC2) von 1 auf 0 zurückgesetzt,
wobei der auf die Rücksetzschaltung 72 führende Ausgangspegel
des ACICR 74 von hohem Pegel auf niedrigen Pegel zurückgeführt wird.
Die Ausgabe des Löschsignals
CL von dem ACICR 74 an die Rücksetzschaltung 72 kommt
nämlich
zum Stillstand. Wie aus dem Zeitdiagramm nach 23 hervorgeht,
wird das erste Flipflop 72A in Synchronisation mit dem
Anstieg eines der Systemtaktimpulse entsperrt, nachdem die Ausgabe
des Löschsignals
CL von dem ACICR 74 an die Rücksetzschaltung 72 zum
Stillstand gekommen ist, wobei der Ausgangspegel Q1 des Ausgangsanschlusses
Q des ersten Flipflops 72A von hohem Pegel zu niedrigem
Pegel zurückgeführt wird,
wie in dem Zeitdiagramm nach 23 gezeigt
ist.
-
Nach
der Rückführung des
Ausgangspegels Q1 des Ausgangsanschlusses Q des ersten Flipflops 72A von
hohem Pegel auf niedrigen Pegel wird dann das zweite Flipflop 72B in
Synchronisation mit dem Anstieg eines der Systemtaktimpulse entsperrt,
wobei der Ausgangspegel Q1 des Ausgangsanschlusses Q des zweiten
Flipflops 72B von hohem Pegel auf niedrigen Pegel zurückgeführt wird
und der (mit dem Balken versehene) Ausgangspegel Q2 des (mit dem
Balken versehenen) invertierten Ausgangsanschlusses Q des zweiten
Flipflops 72A von niedrigem Pegel auf hohen Pegel zurückgeführt wird,
wie in dem Zeitdiagramm der 23 gezeigt
ist.
-
Kurz
gesagt, wird also, wie unter Bezugnahme auf die vorstehend genannten
Revisionsbeispiele erklärt
wurde, das in dem ACICR 74 gehaltene Flagdatum (FC0, FC1,
FC2) auf 1 gesetzt, sobald die Unterbrechungsverarbeitung für die Revision
der ROM-gespeicherten Programme infolge der Ausgabe des ACI-Signals von dem UND-Gatter 66 an
die Unterbrechungssteuerung 40 ausgeführt wird, wobei die Ausgabe
des ACI-Signals von dem UND-Gatter 66 an die Unterbrechungssteuerung 40 zum
Stillstand kommt. Sobald die Ausgabe des ACI-Signals von dem UND-Gatter 66 an
die Unterbrechungssteuerung 40 zum Still stand kommt, wird
dann das in dem ACICR 74 gehaltene Flagdatum (FC0, FC1,
FC2) von 1 auf 0 zurückgeführt.
-
Nachdem
die Ausführung
der auf dem vorstehend genannten zweiten oder dritten Revisionsbeispiel
basierenden Unterbrechungsverarbeitung abgeschlossen ist, wird von
der CU 20 der CPU 10 gemäß einem in 24 gezeigten
Flußdiagramm eine
sequentielle Unterbrechungs-Rücksprung-Verarbeitung
durchgeführt.
-
Wie
nachfolgend im Detail erläutert,
werden beim Ausführung
der Unterbrechungsverarbeitung die in dem ACIPR 58 gehaltenen
Flagdaten (FD1, FD2) auf 1 gesetzt, wobei der auf den Inverter 56 führende Ausgangspegel
des ACIPR 58 von niedrigem Pegel auf hohen Pegel geändert wird,
was zu einer Änderung
des Ausgangspegels des Inverters 56 von hohem Pegel zu
niedrigem Pegel führt.
-
In
Schritt 2401 werden verschiedene, temporär in dem
Stapelspeicherbereich des RAMs 14 gespeicherte Flagdaten
in das Statusregister 38 zurückgeführt, und das in dem Statusregister 38 gehaltene
Unterbrechungsfreigabeflag wird auf 1 gesetzt, wodurch wieder alle
Unterbrechungen erlaubt sind.
-
In
Schritt 2402 wird die in dem Stapelspeicherbereich des
RAMs 14 temporär
gespeicherte Rücksprungadresse
in den Programmzähler 26 zurückgeführt und
dort gesetzt. Dann greift in Schritt 2403 die CU 20 auf
die durch den Programmzähler 26 angezeigte
Rücksprungadresse
des ROMs 12 zu, wodurch eine auf den ROM-gespeicherten
Programmen basierende Verarbeitung durchgeführt wird.
-
In
der sequentiellen Unterbrechungs-Rücksprung-Verarbeitung nach 24 wird,
wenn die Rücksprungadresse
in dem Programmzähler 26 gesetzt
ist (Schritt 2402), das AC-Signal wieder von dem Adressvergleicher 52 ausgegeben,
da Übereinstimmung
zwischen der Rücksprungadresse
und den in dem CAR 50 gehaltenen Vergleichsadressdaten (CA1,
CA2) besteht. Jedoch wird die Ausgabe des AC-Signals aus dem Adressvergleicher 52 ignoriert, da
der auf das UND-Gatter 54 führende Ausgangspegel
des Inverters 56 infolge der Einstellung der Flagdaten
(FD1, FD2) auf 1 der niedrige Pegel ist. Das ACIR-Signal kann also
nicht von dem Ausgangsanschluss Q des Flipflops 62 ausgegeben
werden.
-
Ist
die Rücksprungadresse
in dem Programmzähler 26 gesetzt
(Schritt 2402), so wird andererseits das von dem Adressvergleicher 52 ausgegebene
AC-Signal der Rücksetzschaltung 60 zugeführt. Wird
die Rücksprungadresse
des Programmzählers 26 gemäß der Ausführung der
ROM-gespeicherten Programme erneuert, so kommt dann die Ausgabe des
AC-Signals aus dem Adressvergleicher 52 zum Stillstand,
da keine Übereinstimmung
zwischen der erneuerten Adresse und den in dem CAR 50 gehaltenen
Vergleichsadressdaten (CA1, CA2) besteht. Kommt die Ausgabe des
AC-Signals aus dem Adressvergleicher 52 zum Stillstand,
d.h. wird der auf die Rücksetzschaltung 60 führende Ausgangspegel des
Adressvergleichers 52 von hohem Pegel auf niedrigen Pegel
zurückgeführt, so
wird in der Rücksetzschaltung 60 das
Rücksetzsignal
RE1 erzeugt und an das ACIPR 58 ausgegeben, wobei die in
dem ACIPR 58 gehaltenen Flagdaten (FD1, FD2) von 1 auf
0 zurückgeführt werden,
was wiederum dazu führt,
daß der
auf den Inverter 56 führende
Ausgangspegel des ACIPR 58 von hohem Pegel auf niedrigen
Pegel zurückgeführt wird.
-
25 zeigt
einen Schaltplan der Rücksetzschaltung 60.
Wie in dieser Zeichnung gezeigt, enthält die Rücksetzschaltung 60 ein
erstes Flipflop 60A, ein zweites Flipflop 606,
einen Inverter 60C, ein UND-Gatter 60D und ein
ODER-Gatter 60E. Der Ausgangsanschluss des Adressvergleichers 52 ist mit
einem Eingangsanschluss D des ersten Flipflops 60A und
einem Eingangsanschluss des Inverters 60C verbunden, und
ein Ausgangsanschluss Q des ersten Flipflops 60A ist an
einen Eingangsanschluss D des zweiten Flipflops 60B angeschlossen.
Ein Ausgangsanschluss des Inverters 60C ist mit einem der beiden
Eingangsanschlüsse
des UND-Gatters 60D und der andere Eingangsanschluss des
UND-Gatters 60D mit einem Ausgangsanschluss Q des zweiten
Flipflops 60B verbunden. Ein Ausgangsanschluss des UND-Gatters 60D ist
mit einem der beiden Eingangsanschlüsse des ODER-Gatters 60E verbunden,
und ein Ausgangsanschluss des ODER-Gatters 60E ist an einen
Eingangsanschluss des ACIPR 58 angeschlossen.
-
Wird
die CPU 10 eingeschaltet, so wird das Rücksetzsignal beiden Rücksetzanschlüssen R des ersten
und des zweiten Flipflops 60A und 60B zugeführt, wodurch
das erste und das zweite Flipflop 60A und 60B zurückgesetzt
werden. Das Rücksetzsignal wird
auch dem anderen Eingangsanschluss des ODER-Gatters 60E zugeführt und
dann als Rücksetzsignal
RE1 von dem Ausgangsanschluss des ODER-Gatters 60E ausgegeben,
wodurch das in dem ACIPR 58 gehaltene Flagdatum (FD1, FD2)
auf 0 zurückgesetzt
wird. Wie in 25 gezeigt, wird weiterhin eine
Reihe von Systemtaktimpulsen beiden Eingangsanschlüssen C des
ersten und des zweiten Flipflops 60A und 60B fortgesetzt
zugeführt,
nachdem die CPU 10 eingeschaltet worden ist.
-
26 zeigt
ein Zeitdiagramm der in 25 dargestellten
Rücksetzschaltung 60.
-
Wie
schon vorher erwähnt,
wird das AC-Signal, wenn die Rücksprungadresse
in den Programmzähler 26 während der
Ausführung
der sequentiellen Unterbrechungs-Rücksprung-Verarbeitung nach 24 gesetzt
wird (Schritt 2402), wieder von dem Adressvergleicher 52 ausgegeben,
da zwischen der Rücksprungadresse
und dem in dem CAR 50 gehaltenen Vergleichsadressdatum
(CA1, CA2) Übereinstimmung
besteht. Der Ausgangspegel des Adressvergleichers 52 wird
nämlich
von niedrigem Pegel auf hohen Pegel geändert, wie das Zeitdiagramm
nach 26 zeigt.
-
Obgleich
das AC-Signal von dem Adressvergleicher 52 ausgegeben wird,
kann das ACIR-Signal nicht von dem Ausgangsanschluss Q des Flipflops 62 ausgegeben
werden, da das in dem ACIPR 58 gehaltene Flagdatum (FD1,
FD2) auf 1 gesetzt ist, wie schon oben erläutert wurde.
-
Wird
das von dem Adressvergleicher 52 ausgegebene AC-Signal
an den Inverter 60C ausgegeben, so wird ein Ausgangspegel
INV des Inverters 60C von hohem Pegel auf niedrigen Pegel
geändert, wie
in dem Zeitdiagramm nach 26 gezeigt
ist. Nachdem das AC-Signal dem Eingangsanschluss D des ersten Flipflops 60A zugeführt worden
ist, wird ein Ausgangspegel des Ausgangsanschlusses Q des ersten
Flipflops 60A von niedrigem Pegel auf hohen Pegel in Synchronisation
mit einem Anstieg eines der Systemtaktimpulse geändert. Nachdem dieses Hochpegelsignal
(Q1) dem Eingangsanschluss D des zweiten Flipflops 60B zugeführt worden
ist, wird ein Ausgangspegel Q2 des Ausgangsanschlusses Q des zweiten
Flipflops 60B von niedrigem Pegel auf hohen Pegel in Synchronisation
mit einem Anstieg eines der Systemtaktimpulse geändert, wie das Zeitdiagramm
nach 26 zeigt. Zu diesem Zeitpunkt ist der Ausgangspegel
des UND-Gatters 60D immer noch
auf niedrigem Pegel, da der Inverter 60C vorhanden ist.
-
Wird
die Rücksprungadresse
des Programmzählers 26 gemäß der Ausführung der ROM-gespeicherten
Programme erneuert, so kommt die Ausgabe des AC-Signals aus dem Adressvergleicher 52 zum
Stillstand, da keine Übereinstimmung zwischen
der erneuerten Adresse und dem in dem CAR 50 gehaltenen
Vergleichsadressdatum (CA1, CA2) besteht. Der Ausgangspegel des
Adressvergleichers 52 wird nämlich von hohem Pegel auf niedrigen
Pegel zurückgeführt, wie
in dem Zeitdiagramm nach 26 gezeigt
ist. Der Ausgangspegel INV des Inverters 60C wird so von
niedrigem Pegel auf hohen Pegel zurückgeführt, wodurch sich der Ausgangspegel
des UND-Gatters 60D von niedrigem Pegel auf hohen Pegel ändert, was
zu einer Ausgabe des Rücksetzsignals
RE1 aus dem Ausgangsanschluss des ODER-Gatters 60E an das
ACIPR 58 führt.
Wird das Rücksetzsignal
RE1 dem ACIPR 58 zugeführt, so
wird das dort gehaltene Flagdatum (FD1, FD2) auf 0 zurückgesetzt,
wie schon oben erläutert
wurde.
-
Nachdem
die Ausgabe des AC-Signals aus dem Adressvergleicher 52 zum
Stillstand gekommen ist, d.h. der auf den Eingangsanschluss des
ersten Flipflops 60A führende
Ausgangspegel des Adressvergleichers 52 von hohem Pegel
auf niedrigen Pegel zurückgeführt worden
ist, wird andererseits das erste Flipflop 60A in Synchronisation
mit einem Anstieg eines der Systemtaktimpulse entsperrt, wodurch
der Ausgangspegel Q1 des Ausgangsanschlusses Q des ersten Flipflops 60A von
hohem Pegel auf niedrigen Pegel zurückgeführt wird, wie das Zeitdiagramm nach 26 zeigt.
Nachdem das Niederpegelsignal (Q1) dem Ausgangsanschluss Q des zweiten
Flipflops 60B zugeführt
worden ist, wird dieses Flipflop 60B in Synchronisation
mit einem Anstieg eines der Systemtaktimpulse entsperrt, wodurch
der Ausgangspegel Q2 des Ausgangsanschlusses Q des zweiten Flipflops 60B von
hohem Pegel auf niedrigen Pegel zurückgeführt wird, wie in dem Zeitdiagramm nach 26 gezeigt
ist. Der Ausgangspegel des UND-Gatters 60D wird
so von hohem Pegel auf niedrigen Pegel zurückgeführt, wodurch die Ausgabe des Rücksetzsignals
RE1 aus dem ODER-Gatter 60E zum Stillstand kommt. Der Ausgangspegel
des ODER-Gatters 60E wird nämlich von hohem Pegel auf niedrigen
Pegel zurückgeführt.
-
In
dem vorstehend genannten zweiten und dritten Revisionsbeispiel wird
also vor Abschluss der Ausführung
der Unterbrechungsverarbeitung das in dem ACIPR 58 gehaltene
Flagdatum (FD1, FD2) auf 1 gesetzt, wodurch die Ausgabe des ACIR-Signals aus dem Ausgangsanschluss
Q des Flipflops 62 und damit die Ausgabe des ACI-Signals
aus dem UND-Gatter 66 verboten ist, was der Ausgabe des AC-Signals aus dem Adressvergleicher 52 nicht
entgegensteht, da Übereinstimmung
zwischen der Rücksprungadresse
und dem in dem CAR 50 gehaltenen Vergleichsadressdatum
(CA1, CA2) besteht. Ist die Rücksprungadresse
des Programmzählers 26 erneuert,
so wird dann das Flagdatum (FD1, FD2) infolge der Rücksetzschaltung 60,
die wie in 25 gezeigt ausgebildet ist,
auf 0 zurückgesetzt.
-
In
dem vorstehend genannten ersten Revisionsbeispiel, das auf den Fall
gerichtet ist, daß die ROM-gespeicherten
Programme Fehler enthalten, kann das in dem ACIPR 58 gehaltene
Flagdatum FD0, wie nachfolgend erläutert, selbst dann nicht auf 1
gesetzt werden, wenn die Ausführung
der Unterbrechungsverarbeitung abgeschlossen ist, so daß die sequentielle
Unterbrechungs-Rücksprung-Verarbeitung (24)
nicht ausgeführt
werden kann, da ansonsten infolge der Rückführung der Rücksprungadresse aus dem Stapelspeicherbereich
des RAMs 14 auf den Programmzähler 26 das Programm
mit seinen Fehlern ausgeführt werden
würde.
In dem vorstehend genannten ersten Revisionsbeispiel muß also die
CU 20 nach Abschluss der Ausführung der Unterbrechungsverarbeitung
einen Zugriff auf eine geeignete Adresse vornehmen, bevor die Ausführung des
die Fehler enthaltenden Programms verhindert werden kann. In dem
vorstehend genannten ersten Revisionsbeispiel wird nämlich nach
Abschluss der Ausführung
eine in diesem Sinne geeignete Adresse in dem Programmzähler 26 gesetzt.
-
In
dem vorstehend genannten ersten Revisionsbeispiel werden die verschiedenen
in dem Stapelspeicherbereich des RAMs 14 temporär gespeicherten
Flagdaten während
der Ausführung
der Unterbrechungsverarbeitung verwendet, falls dies erforderlich
ist, und ansonsten "weggeworfen". Selbstredend wird
die in dem Stapelspeicherbereich des RAMs 14 temporär gespeicherte
Rücksprungadresse
weggeworfen.
-
In
dem vorstehend genannten zweiten und dritten Revisionsbeispiel greift
die CU 20 nach Abschluss der Ausführung der Unterbrechungsverarbeitung
nicht notwendigerweise auf die Rücksprungadresse
zu. Die CU 20 nimmt nämlich ähnlich wie
im Fall des vorstehend genannten ersten Revisionsbeispiels einen
Zugriff auf eine geeignete Adresse vor, nachdem die Ausführung der
Unterbrechungsverarbeitung abgeschlossen ist.
-
27 zeigt
beispielhaft eine Systembetriebsroutine für ein elektronisches Produkt,
in das der vorstehend beschriebene Mikrocomputer eingebaut ist,
wie es z.B. ein Drucker, eine Videokamera, eine digitale Einzelbildkamera,
eine elektronische Uhr etc. darstellt. Die Ausführung der Systembetriebsroutine
wird dadurch gestartet, daß das
elektronische Produkt elektrisch eingeschaltet wird.
-
In
Schritt 2701 wird die CPU 10 initialisiert, und
in Schritt 2702 werden dann in dem elektronischen Produkt
enthaltene Peripherieschaltungen initialisiert.
-
In
Schritt 2703 wird ermittelt, ob Bedarf besteht, Revisionsprogramme
und verschiedene Daten in den EEPROM 18 zu schreiben. Wie
schon vorher erläutert,
ist der Mikrocomputer (1), wenn der EEPROM 18 nicht
aus dem Mikrocomputer entfernt werden kann, mit dem EEPROM-Schreibcomputer (nicht
gezeigt) verbunden, um die Revisionsprogramme und verschiedene Daten
in den EEPROM 18 zu schreiben. In diesem Fall gibt der
EEPROM-Schreibcomputer an die CPU 10 des Mikrocomputers
ein Signal aus, mit dem verlangt wird, daß die Revisionsprogramme und
die verschiedenen Daten in den EEPROM 18 geschrieben werden.
Auf diese Weise ist es möglich
zu ermitteln, ob ein Bedarf besteht, die Revisionsprogramme und
die verschiedenen Daten in den EEPROM 18 zu schreiben.
-
Bestätigt sich
in Schritt 2703, daß ein
Bedarf besteht, die Revisionsprogramme und die verschiedenen Daten
in den EEPROM 18 zu schreiben, so fährt der Steuerablauf mit Schritt 2704 fort,
in dem das im Vorfeld in dem ROM 12 gespeicherte EEPROM-Schreibprogramm
ausgeführt
wird, wodurch die Revisionsprogramme und die verschiedenen Daten
unter der Steuerung des EEPROM-Schreibcomputers
in den EEPROM 18 geschrieben werden. Sind die vorstehend
genannten drei Revisionsbeispiele in die ROM-gespeicherten Programme
eingearbeitet, so werden selbstverständlich die Vergleichsadressdaten
CA0, CA1 und CA2, die Vektoradressdaten VA0, VA1 und VA2 sowie die
Flagdaten FE0, FE1 und FE2 in Schritt 2704 in den EEPROM 18 geschrieben. Falls
erforderlich, werden in Schritt 2704 auch verschiedene
auf das elektronische Produkt bezogene Daten, z.B. Korrektionsdaten,
in den EEPROM 18 geschrieben.
-
Wenn
das Schreiben der Revisionsprogramme und der verschiedenen Daten
in den EEPROM 18 abgeschlossen ist, d.h. der EEPROM-Schreibcomputer
von dem Mikrocomputer getrennt wird, fährt der Steuerablauf mit Schritt
S2705 fort. Besteht dagegen in Schritt 2704 kein Bedarf,
Revisionsprogramme und verschiedene Daten in den EEPROM 18 zu schreiben,
d.h. ist der Mikrocomputer nicht an den EEPROM-Schreibcomputer angeschlossen,
so überspringt
der Steuerablauf Schritt 2704 und fährt mit Schritt 2705 fort.
-
In
beiden Fällen
werden in Schritt 2705 die verschiedenen Daten für das elektronische
Produkt, z.B. Korrekturdaten, aus dem Datenspeicherbereich des EE- PROMs 18 (3)
ausgelesen und dann in den Datenspeicherbereich des RAMs 14 (12) geschrieben.
-
Ist
der EEPROM 18 entfernbar in dem Mikrocomputer eingebaut,
so werden die Revisionsprogramme und die verschiedenen Daten mittels
des EEPROM-Schreibcomputers,
auf dem der entfernte EEPROM 18 montiert ist, direkt in
den EEPROM 18 geschrieben, wie schon oben erläutert wurde.
In diesem Fall werden in der Systembetriebsroutine nach 27 die
Schritte 2703 und 2704 weggelassen.
-
In
Schritt 2706 wird bestimmt, ob eine Anzahl von aus dem
Programmspeicherbereich des EEPROMs 18 (3)
auszulesenden Bytes gleich 0 ist. Ist mindestens ein Revisionsprogramm
in dem Programmspeicherbereich des EEPROMs gespeichert, so ist eine
Anzahl an Bytes entsprechend dem gespeicherten Revisionsprogramm
vorhanden. Ist jedoch in dem Programmspeicherbereich des EE-PROMs 18 kein
Revisionsprogramm gespeichert, so ist die Anzahl an Bytes, die aus
dem Programmspeicherbereich des EEPROMs 18 auszulesen sind,
gleich 0.
-
Ist
die Anzahl an Bytes, die aus dem Programmspeicherbereich des EEPROMs 18 auszulesen
sind, nicht gleich Null, d.h. ist mindestens ein Revisionsprogramm
in dem Programmspeicherbereich des EEPROMs 18 gespeichert,
so fährt
der Steuerablauf mit Schritt 2707 fort, in dem das Revisionsprogramm
aus dem Programmspeicherbereich des EEPROMs 18 ausgelesen
und dann in den Programmspeicherbereich des RAMs 14 geschrieben
wird.
-
In
Schritt 2708 werden die jeweiligen Vergleichsadressdaten
CA0, CA1, ... CA6 und CA7 aus den Vergleichsadress-Speicherzonen
CAZ0, CAZ1, ... CAZ6 und CAZ7 des EEPROMs 18 ausgelesen und
dann in die CARs 50 der Schaltungselemente 48 geschrieben,
die jeweiligen Vektoradressdaten VA0, VA1, ... VA6 und VA7 aus den
Vektoradress-Speicherzonen VAZ0, VAZ1, ... VAZ6 und VAZ7 des EEPROMs 18 ausgelesen
und dann in die VARs 70 der Schaltungselemente geschrieben
sowie die jeweiligen Flagdaten FE0, FEI, ... FE6 und FE7 aus den acht
Flagdaten-Speicherzonen des EEPROMs 18 ausgelesen und dann
in die ACIARs 68 der Schaltungselemente 48 geschrieben.
Anschließend
werden in Schritt 2709 verschiedene Verarbeitungsroutinen
gemäß den ROM-gespeicherten
Programmen ausgeführt.
-
Ist
in Schritt 2706 die Anzahl an Bytes, die aus dem Programmspeicherbereich
des EEPROMs 18 auszulesen sind, gleich Null, d.h. kein
Revisionsprogramm in dem Programmspeicherbereich des EEPROMs 18 gespeichert,
so überspringt
der Steuerablauf selbstredend die Schritte 2707 sowie 2708 und
fährt mit
Schritt 2709 fort.
-
In 28 ist
ein Teil einer in Schritt 2709 der Systembetriebsroutine
(27) auszuführenden Verarbeitungsroutine
beispielhaft gezeigt. Wie aus 28 hervorgeht,
enthält
die Verarbeitungsroutine Schritte 2801 bis 2810,
wobei in jedem Schritt (2801, 2802, ... 2809, 2810)
ein Befehl ausgeführt
wird, der in dem ROM 12 unter einer vorgegebenen Adresse gespeichert
ist.
-
In
dem Mikrocomputer (1) besteht ein in dem jeweiligen
Schritt (2801, 2802, ... 2809, 2810) auszuführender
Befehl aus 4 Bytes, und ist deshalb in einer 4-Byte-Adresse (ROM 12) gespeichert.
-
In
Schritt 2801 wird eine Unterroutine A aufgerufen und ausgeführt. Ein
Befehl zum Aufrufen und Ausführen
der Unterroutine A ist in einer 4-Byte-Adresse gespeichert, die
beispielsweise aus vier aufeinanderfolgenden Adressen 9800H bis 9803H
(ROM 12) besteht, die jeweils aus einem Byte bestehen.
Das Zeichen "H", das jeweils den
vier Ziffern enthaltenden Adressnummern angefügt ist, gibt an, daß die Adressnummer
auf der hexadezimalen Darstellung beruht. Eine Kopfadressnummer
der Unterroutine A wird dabei beispielsweise als 1000H dargestellt.
-
In
Schritt 2802 wird ein Befehl zur Unterscheidung eines bedingten
Abzweiges X ausgeführt. Dieser
Befehl ist in einer 4-Byte-Adresse gespeichert, die aus vier aufeinanderfolgenden
Adressen 9804H bis 9807H besteht, die der Adresse 9803H folgen.
-
Unter
der Voraussetzung, daß der
Steuerablauf ausgehend von Schritt 2802 infolge des Ergebnisses
der Unterscheidung des bedingten Abzweigs X mit Schritt 2803 fortfährt, wird
eine Unterroutine B aufgerufen und ausgeführt (Schritt 2803).
Ein Befehl zum Aufrufen und Ausführen
der Unterroutine B ist in einer 4-Byte-Adresse gespeichert, die aus vier
aufeinanderfolgenden Adressen 9808H bis 980BH besteht, die der Adresse
9807H folgen. Eine Kopfadressnummer der Unterroutine B wird beispielsweise als
2000H dargestellt.
-
In
Schritt 2804 wird eine Unterroutine C aufgerufen und ausgeführt. Ein
Befehl zum Aufrufen und Ausführen
der Unterroutine C ist in einer 4-Byte-Adresse gespeichert, die
aus vier der Adresse 980BH folgenden Adressen 980CH bis 980FH besteht.
Eine Kopfadressnummer der Unterroutine C ist beispielsweise als
3000H dargestellt.
-
In
Schritt 2804 springt der Steuerablauf nach Abschluss der
Ausführung
der Unterroutine C zu einem optionalen Schritt "W".
Ein Befehl, der den Steuerablauf zum Sprung nach Schritt "W" veranlasst, ist in einer 4-Byte-Adresse
gespeichert, die aus vier aufeinanderfolgenden Adressen 9810H bis
9813H besteht, der Adresse 980FH folgen.
-
Unter
der Voraussetzung, daß der
Steuerablauf ausgehend von Schritt 2802 als Folge des Ergebnisses
der Unterscheidung des bedingten Abzweigs X nach Schritt 2805 springt,
wird ein Befehl zur Unterscheidung eines bedingten Abzweigs Y ausgeführt (Schritt 2805).
Dieser Befehl ist in einer 4-Byte-Adresse gespeichert, der aus vier
aufeinanderfolgenden Adressen 9814H bis 9817H besteht, die der Adresse
9813H folgen.
-
Unter
der Voraussetzung, daß der
Steuerablauf ausgehend von Schritt 2805 infolge der Unterscheidung
des bedingten Abzweigs Y mit Schritt 2806 fortfährt, wird
eine Unterroutine D aufgerufen und ausgeführt (Schritt 2806).
Ein Befehl zum Aufrufen und Ausführen
der Unterroutine D ist in einer 4-Byte-Adresse gespeichert, die
aus vier aufeinanderfolgenden Adressen 9818H bis 981BH besteht, die
der Adresse 9817H folgen. Eine Kopfadressnummer der Unterroutine
D wird beispielsweise als 4000H dargestellt.
-
In
Schritt 2807 wird ein Befehl zur Unterscheidung eines bedingten
Abzweigs Z ausgeführt. Dieser
Befehl ist in einer 4-Byte-Adresse gespeichert, die aus vier aufeinanderfolgenden
Adressen 981CH bis 981FH besteht, die der Adresse 981 BH folgen.
-
Unter
der Voraussetzung, daß der
Steuerablauf ausgehend von Schritt 2807 infolge der Unterscheidung
des bedingten Abzweigs Z mit Schritt 2808 fortfährt, wird
eine Unterroutine E aufgerufen und ausgeführt (Schritt 2808).
Ein Befehl zum Aufrufen und Ausführen
der Unterroutine E ist in einer 4-Byte-Adresse gespeichert, die
aus vier aufeinanderfolgenden Adressen 9820H bis 9823H besteht, die
der Adresse 981FH folgen. Eine Kopfadressnummer der Unterroutine
E wird beispielsweise als 5000H dargestellt.
-
In
Schritt 2808 springt der Steuerablauf nach Abschluss der
Ausführung
der Unterroutine E zu dem optionalen Schritt "W'.
Ein Befehl, der den Steuerablauf zu dem Schritt "W" springen
lässt,
ist in einer 4-Byte-Adresse gespeichert, die aus vier aufeinanderfolgenden
Adressen 9824H bis 9827H besteht, die der Adresse 9823H folgen.
-
Unter
der Voraussetzung, daß der
Steuerablauf infolge der Unterscheidung des bedingten Abzweigs Z
ausgehend von Schritt 2807 zu Schritt 2809 springt,
wird eine Unterroutine F aufgerufen und ausgeführt (Schritt 2809).
Ein Befehl zum Aufrufen und Ausführen
der Unterroutine F ist in einer 4-Byte-Adresse gespeichert, die
aus vier aufeinanderfolgenden Adressen 9828H bis 982BH besteht, die
der Adresse 9827H folgen. Eine Kopfadressnummer der Unterroutine
F wird beispielsweise als 6000H dargestellt.
-
In
Schritt 2809 springt der Steuerablauf nach Abschluss der
Ausführung
der Unterroutine F zu dem optionalen Schritt "W".
Ein Befehl, der den Steuerablauf zu dem Schritt "W' springen
lässt,
ist in einer 4-Byte-Adresse gespeichert, die aus vier aufeinanderfolgenden
Adressen 982CH bis 982FH besteht, die der Adresse 982BH folgen.
-
Unter
der Voraussetzung, daß der
Steuerablauf infolge der Unterscheidung des bedingten Abzweigs Y
ausgehend von Schritt 2805 zu Schritt 2810 springt,
wird eine Unterroutine G aufgerufen und ausgeführt (Schritt 2810).
Ein Befehl zum Aufrufen und Ausführen
der Unterroutine G ist in einer 4-Byte-Adresse gespeichert, die
aus vier aufeinanderfolgenden Adressen 9830H bis 9833H besteht, die
der Adresse 982FH folgen. Eine Kopfadressnummer der Unterroutine
G wird beispielsweise als 7000H dargestellt.
-
In
Schritt 2810 springt der Steuerablauf nach Abschluss der
Ausführung
der Unterroutine G zu dem optionalen Schritt "W'.
Ein Befehl, der den Steuerablauf zu Schritt "W' springen
lässt,
ist in einer 4-Byte-Adresse gespeichert, die aus vier aufeinanderfolgenden
Adressen 9834H bis 9837H besteht, die der Adresse 9833H folgen.
-
29 zeigt
schematisch den Zusammenhang zwischen den in dem Programmzähler 26 sukzessive
erneuerten Adressen und den Befehlen, die in den Schritten 2801 bis 2810 der
Verarbeitungsroutine nach 28 ausgeführt werden.
-
Während der
Ausführung
der Verarbeitungsroutine nach 28 werden
in dem Mikrocomputer (1) vier aufeinanderfolgende
1-Byte-Adresselemente sukzessive in dem Programmzähler erneuert, während ein
in einer 4-Byte-Adresse gespeicherter Befehl von der CU 20 decodiert
wird. Beispielsweise werden die Adressen 9800H bis 9803H sukzessive
in dem Programmcomputer erneuert, während die CU 20 auf
die vier aufeinanderfolgenden Adressen 9800H bis 9803H zugreift,
um den Befehl zum Aufrufen und Ausführen der Unterroutine H zu
deco dieren. Während
die Verarbeitungsroutine nach 28 ausgeführt wird,
wird also eine 1-Byte-Adresse sukzessive in dem Programmzähler 28 erneuert,
wie in 29 dargestellt ist.
-
Andererseits
sind die Unterroutinen A, B, C, D, E, F und G, die in den Schritten 2801, 2803, 2804, 2806, 2808, 2809 bzw. 2810 ausgeführt werden,
in dem ROM 12 gespeichert, wie schematisch in 30 dargestellt.
-
Wie
aus 30 hervorgeht, ist die Unterroutine A in Form
eines Programms gespeichert, das aus einer Reihe von Befehlen besteht,
die in dem ROM 12 in der Kopfadresse 1000H und den nachfolgenden
Adressen gespeichert sind. Die Unterroutine B ist als Programm gespeichert,
das aus einer Reihe von Befehlen besteht, die in dem ROM 12 in
der Kopfadresse 2000H und den nachfolgenden Adressen gespeichert
sind. Die Unterroutine C ist als Programm gespeichert, das aus einer
Reihe von Befehlen besteht, die in dem ROM 12 in der Kopfadresse 3000H
und den nachfolgenden Adressen gespeichert sind. Die Unterroutine
D ist als Programm gespeichert, das aus einer Reihe von Befehlen
besteht, die in dem ROM 12 in der Kopfadresse 4000H und den
nachfolgenden Adressen gespeichert sind. Die Unterroutine E ist
als Programm gespeichert, das aus einer Reihe von Befehlen besteht,
die in dem ROM 12 in der Kopfadresse 5000H und den nachfolgenden Adressen
gespeichert sind. Die Unterroutine F ist als Programm gespeichert,
das aus einer Reihe von Befehlen besteht, die in dem ROM 12 in
der Kopfadresse 6000H und den nachfolgenden Adressen besteht. Schließlich ist
die Unterroutine G als Programm gespeichert, das aus einer Reihe
von Befehlen besteht, die in dem ROM 21 in der Kopfadresse
7000H und den nachfolgenden Adressen gespeichert sind.
-
In
der Verarbeitungsroutine nach 28 wird
beispielsweise, falls in dem Programm der Unterroutine B Fehler
vorhanden sind, als vorstehend genanntes erstes Revisionsbeispiel
ein Revisionsprogramm oder korrektes Programm, welches das Programm
der Unterroutine B ersetzen soll, vorbereitet und in dem Programmspeicherbereich
des EEPROMs 18 gespeichert (Schritt 2704). Zu diesem Zeitpunkt
wird die erste 1-Byte-Adresse 9808H der 4-Byte-Adresse, in der der
Befehl zum Aufrufen der Unterroutine B gespeichert ist, als Vergleichsadressdatum
CA0[CA000, CA001,
... CA014, CA015]
in die Vergleichsadress-Speicherzone CAZ0 des EEPROMs 18 geschrieben.
Weiterhin wird eine Kopfadresse (z.B. 0600H) des korrekten Programms,
wenn sie aus dem EEPROM 18 ausgelesen und in dem RAM 14 gespeichert
wird, als Vektoradresse VA0[VA000, VA001, ... VA014, VA015] in die Vektoradress-Speicherzone VAZ0
geschrieben, die der Vergleichsadress-Speicherzone CAZ0 entspricht.
Weiterhin wird das den Adressdaten CA0 und VA0 entsprechende Flagdatum
FE0 auf 1 gesetzt.
-
In
der Verarbeitungsroutine nach 28 wird
beispielsweise, falls eine Zusatzroutine unmittelbar vor Ausführen der
Unterroutine D ausgeführt
werden soll, als vorstehend genanntes zweites Beispiel ein Zusatzprogramm
für die
Zusatzroutine vorbereitet und in dem Programmspeicherbereich des
EEPROMs 18 gespeichert (Schritt 2704). Zu diesem Zeitpunkt
wird die erste 1-Byte-Adresse 9818H der 4-Byte-Adresse, in der der Befehl zum
Aufrufen der Unterroutine D gespeichert ist, als Vergleichsadressdatum
CA1 [CA100, CA101,
... CA114, CA115]
in die Vergleichsadress-Speicherzone CAZ1 des EEPROMs 18 geschrieben.
Auch wird eine Kopfadresse (z.B. 0800H) des Zusatzprogramms, wenn
sie aus dem EEPROM 18 ausgelesen und in dem RAM 14 gespeichert
wird, als Vektoradresse VA1(VA100, VA101, ... VA114, VA115] in die Vektoradress-Speicherzone VAZ1
gespeichert, die der Vergleichsadress-Speicherzone CAZ1 entspricht.
Weiterhin wird das Flagdatum FE1, das den Adressdaten CA1 und VA1
entspricht, auf 1 gesetzt.
-
In
der Verarbeitungsroutine nach 28 wird
beispielsweise, falls die Unterroutine G unmittelbar vor Ausführen der
Unterroutine E ausgeführt
werden soll, als vorstehend genanntes drittes Beispiel ein Aufrufprogramm
zum Aufrufen der Unterroutine G vorbereitet und in dem Programmspeicherbereich des
EEPROMs 18 gespeichert (Schritt 2704). Zu diesem
Zeitpunkt wird die erste 1-Byte-Adresse 9820H der 4-Byte-Adresse,
in der der Befehl zum Aufrufen der Unterroutine E gespeichert ist,
als Vergleichsadressdatum CA2[CA200, CA201, ... CA214, CA215] in die Vergleichsadress-Speicherzone
CAZ2 des EEPROMs 18 geschrieben. Auch wird eine Kopfadresse (z.B.
0A00H) des Aufrufprogramms, wenn sie aus dem EEPROM 18 ausgelesen
und in dem RAM 14 gespeichert wird, als Vektoradresse VA2[VA200, VA201, ... VA214, VA215] in die
Vektoradress-Speicherzone VAZ2 geschrieben, die der Vergleichsadress-Speicherzone
CAZ2 entspricht. Weiterhin wird das Flagdatum FE2, das den Adressdaten
CA2 und VA2 entspricht, auf 1 gesetzt.
-
Wie
vorstehend erläutert,
werden während der
Systembetriebsroutine nach 27 das
korrekte Programm, das Zusatzprogramm und das Aufrufprogramm aus
dem Programmspeicherbereich des EEPROMs 18 ausgelesen und
in den Programmspeicherbereich des RAMs 14 geschrieben
(Schritt 2707). Jedes dieser Revisionsprogramme wird als Unterbrechungsroutine
in dem RAM 14 gespeichert, wie schematisch in 31 dargestellt
ist. Insbesondere ist das korrekte Programm in dem RAM 14 als Unterbrechungsroutine
J in einer Reihe von Adressen gespeichert, die die Kopfadresse 0600H
enthält, unter
der ein erster Befehl des korrekten Programms gespeichert ist. Das
Zusatzprogramm ist in dem RAM 14 als Unterbrechungsroutine
K in einer Reihe von Adressen gespeichert, die die Kopfadresse 0800H enthält, unter
der ein erster Befehl des Zusatzprogramms gespeichert ist. Schließlich ist
das Aufrufprogramm in dem RAM 14 als Unterbrechungsroutine
L in einer Reihe von Adressen gespeichert, die die Kopfadresse 0A00H
enthält,
unter der ein erster Befehl des Aufrufprogramms gespeichert ist.
-
Während der
Systembetriebsroutine nach 27 werden
die jeweiligen Vergleichsadressdaten CA0, CA1, ... CA6 und CA7 aus
den Vergleichsadress-Speicherzonen
CAZ0, CAZ1, ... CAZ6 und CAZ7 des EEPROMs 18 ausgelesen
und dann in die CARs 50 der Schaltungselemente 48 geschrieben, die
jeweiligen Vektoradressdaten VA0, VA1, ... VA6 und VA7 aus den Vektoradress-Speicherzonen VAZ0,
VAZ1, ... VAZ6 und VAZ7 des EEPROMs 18 ausgelesen und dann
in die VARs 70 der Schaltungselemente 48 geschrieben
sowie die jeweiligen Flagdaten FE0, FE1, ... FE6 und FE7 aus den
acht Flagdaten-Speicherzonen
des EEPROMs 18 ausgelesen und dann in die ACIARs 68 der
Schaltungselemente 48 geschrieben (Schritt 2708).
-
Selbstredend
entsprechen in diesem Fall die jeweiligen Vergleichsadressdaten
CA0, CA1 und CA2 den Adressen 9808H, 9818H und 9820H und die entsprechenden
Vektoradressdaten VA0, VA1 und VA2 den Adressen 0600H, 0800H und
0A00H, wobei lediglich die Flagdaten FE0, FE1 und FE2 auf 1 gesetzt
werden. Andererseits sind die Vergleichsadressdaten CA3, CA4, CA5,
CA6 und CA7 jeweils als bestimmte 16-Bit-Daten in einem CAR 50 eines
entsprechenden Schaltungselementes (483 , 484 , 485 , 486 , 487 )
und die Vektoradressdaten VA3, VA4, VA5, VA6 und VA7 jeweils als
bestimmte 16-Bit-Daten in einem VAR 70 eines entsprechenden
Schaltungselementes (483 , 484 , 485 , 486 , 487 )
gehalten, wobei die Flagdaten FE3, FE4, FE5, FE6 und FE7 jeweils
auf 0 gesetzt sind.
-
Der
auf dem ersten Revisionsbeispiel beruhende Betrieb der CPU 10 wird
unten erläutert.
-
Eine
Adresse wird sukzessive in dem Programmzähler 26 erneuert.
Erreicht eine erneuerte Adresse die erste 1-Byte-Adresse 9808H der 4-Byte-Adresse,
unter der der Befehl zum Aufrufen der Unterroutine B gespeichert
ist, d.h. stimmt die erneuerte Adresse 9808H mit dem in dem CAR 50 des Schaltungselementes 480 gespeicherten Vergleichsadressdatum
CAO überein,
so wird ein Adress-Koinzidenz-Signal
(AC) als Hochpegelsignal von dem Adressvergleicher 50 des
Schaltungselementes 480 ausgegeben,
wobei ein Adress-Koinzidenz-Unterbrechungsanforderungssignal (ACIR)
von dem Ausgangsanschluss Q des Flipflops 62 ausgegeben wird.
Auf diese Weise wird ein Adress-Koinzidenz-Unterbrechungssignal
von dem UND-Gatter 66 des Schaltungselementes 480 ausgegeben, da ein Adress-Koinzidenz-Unterbrechungsfreigabesignal (ACTA)
infolge des auf 1 gesetzten Flagdatums FE0 von dem ACIAR 68 an
das UND-Gatter 66 ausgegeben wird.
-
Wird
das von dem UND-Gatter 66 des Schaltungselementes 480 ausgegebene ACI-Signal der Unterbrechungssteuerung 40 zugeführt, so
wird die sequentielle Unterbrechungs-Übergangs-Verarbeitung (21)
von der CU 20 der CPU 10 ausgeführt, ohne
auf die 4-Byte-Adresse (9808H bis 980BH) zuzugreifen, unter der
der Befehl zum Aufrufen der Unterroutine B gespeichert ist. Die
Adresse 9808H des Programmzählers 26 ist
nämlich
in dem Stapelspeicherbereich des RAMs 14 (12)
temporär
als Rücksprungadresse
gespeichert, und die verschiedenen Flagdaten (z.B. das Übertragflag,
das Überlaufflag,
das Nullflag, das Vorzeichenflag etc.) des Statusregisters 38 sind
in dem Stapelspeicherbereich des RAMs 14 temporär gespeichert.
Weiterhin wird das in dem VAR 70 des Schaltungselementes 48 gehaltene
Vektoradressdatum VA0 (0600H) in dem Programmzähler 26 gesetzt. Auf
diese Weise erfolgt durch die CU 20 ein Zugriff auf die
Kopfadresse 0600H der Unterbrechungsroutine J, was zu einer Ausführung der
Unterbrechungsroutine J führt.
-
Wie
vorher erläutert,
wird in der Ausführung der
sequentiellen Unterbrechungs-Übergangs-Verarbeitung
(21) das in dem Statusregister 38 gehaltene
Unterberechungsfreigabeflag auf 0 gesetzt, womit alle Unterbrechungen
unterbunden sind, mit Ausnahme einer nichtmaskierbaren Unterbrechung (NMI)
und einer Softwareunterbrechung.
-
In
der Ausführung
der Unterbrechungsroutine J wird zunächst in Schritt J1 das in dem
ACICR 74 des Schaltungselementes 480 gehaltene
Flagdatum FC0 (13) auf 1 gesetzt, so daß ein Löschsignal CL
von dem ACICR 74 an die Rücksetzschaltung 72 ausgegeben
wird. Wird das Löschsignal
CL der Rücksetzschaltung 72 zugeführt, so
wird in vorstehend erläuterter
Weise (22 und 23) ein Rücksetzsignal
RE2 von der Rücksetzschaltung 72 an
den Rücksetzanschluss
R des Flipflops 63 ausgegeben, wobei das Flipflop 62 entsperrt
wird, so daß die
Ausgabe des ACIR-Signals aus dem Ausgangsanschluss Q des Flipflops 62 zum
Stillstand kommt. Nach Ausgabe des Rücksetzsignals RE2 gibt die Rücksetzschaltung 72 ein
Rücksetzsignal
RE3 an das ACICR 74 aus, wodurch das Flagdatum FC0 des ACICR 74 von
1 auf 0 zurückgeführt wird.
-
In
Schritt J2 wird eine Revisionsroutine gemäß dem korrekten Programm ausgeführt, das
die die Fehler enthaltende Unterroutine B ersetzt. Ist die Ausführung der
Revisionsroutine abgeschlossen, so fährt der Steuerablauf mit Schritt
J3 fort, in dem verschiedene Statusinformationselemente zurückgeführt werden.
So werden verschiedene Flagdaten, die temporär in dem Stapelspeicherbereich
des RAMs 14 gespeichert sind, zu dem Statusregister 38 zurückgeführt, und
das in dem Statusregister 38 gehaltene Unterbrechungsfreigabeflag
wird auf 1 gesetzt, womit wieder alle Unterbrechungen erlaubt sind.
Weiterhin wird in Schritt J3 die Rücksprungadresse, die temporär in dem
Stapelspeicherbereich des RAMs 14 gespeichert ist, weggeworfen,
ohne wieder dem Programmzähler 26 zugeführt zu werden.
-
In
Schritt J4 springt der Steuerablauf zu der ersten 1-Byte-Adresse
980CH der 4-Byte-Adresse, unter
der der Befehl zum Aufrufen der Unterroutine C gespeichert ist,
wobei die CU 20 auf die Adresse 980CH zugreift, was zur
Ausführung
der Unterroutine C führt.
Zu diesem Zeitpunkt ist selbstredend in dem Programmzähler 26 die
Adresse 980CH gesetzt.
-
Werden
also nach der Herstellung des Mikrocomputers (1)
Fehler in einem der ROM-gespeicherten Programme gefunden, so kann
eine virtuelle Revision des die Fehler enthaltenden Programms vorgenommen
werden, wodurch eine korrekte Funktion der ROM-gespeicherten Programme
insgesamt möglich
wird.
-
Im
folgenden wird ein auf dem zweiten Revisionsbeispiel basierender
Betrieb der CPU 10 erläutert.
-
Erreicht
eine Adresse, die in dem Programmzähler 26 sukzessive
erneuert wird, die erste 1-Byte-Adresse 9818H der 4-Byte-Adresse,
unter der der Befehl zum Aufrufen der Unterroutine D gespeichert
ist, d.h. stimmt die erneuerte Adresse 9818H mit dem in dem CAR 50 des
Schaltungselementes 48, gespeicherten Vergleichsadressdatum
CA1 überein,
so wird ein Adress-Koinzidenz-Signal (AC) als Hochpegelsignal von
dem Adressvergleicher 50 des Schaltungselementes 481 ausgegeben,
wodurch ein Adress-Koinzidenz-Unterbrechungsanforderungssignal (ACIR)
aus dem Ausgangsanschluss Q des Flipflops 62 ausgegeben
wird. Auf diese Weise wird ein Adress-Koinzidenz-Unterbrechungssignal
(ACI) von dem UND-Gatter 66 des Schaltungselementes 48, ausgegeben,
da das ACIAR 68 infolge des auf 1 eingestellten Flagdatums
FEI ein Adress-Koinzidenz-Unterbrechungsfreigabesignal
(ACTA) an das UND-Gatter 66 ausgibt.
-
Wird
das von dem UND-Gatter 66 des Schaltungselementes 48,
ausgegebene ACI-Signal der Unterbrechungssteuerung 40 zugeführt, so
führt die CU 20 der
CPU 10 eine sequentielle Unterbrechungs-Übergangs-Verarbeitung
(21) aus, ohne auf die 4-Byte-Adresse (9818H bis
981BH) zuzugreifen, unter der der Befehl zum Aufrufen der Unterroutine
D gespeichert ist. Die Adresse 9818H des Programmzählers 26 ist
nämlich
in dem Stapelspeicherbereich des RAMs 14 ( 12)
temporär
als Rücksprungadresse
gespeichert, und die verschiedenen Flagdaten, z.B. das Übertragflag,
das Überlaufflag, das
Nullflag, das Vorzeichenflag etc.) des Statusregisters 38 sind
temporär
in dem Stapelspeicherbereich des RAMs 14 gespeichert. Weiterhin
wird das in dem VAR 70 des Schaltungselementes 48,
gehaltene Vektoradressdatum VA1 (0800H) in dem Programmzähler 26 gesetzt.
So greift die CU 20 auf die Kopfadresse 0800H der Unterbrechungsroutine
K zu, was zur Ausführung
der Unterbrechungsroutine K führt.
-
Ähnlich wie
in dem ersten Revisionsbeispiel wird in der Ausführung der sequentiellen Unterbrechungs-Übergangs-Verarbeitung
(21) das in dem Statusregister 38 gehaltene
Unterbrechungsfreigabeflag auf 0 gesetzt, wodurch alle Unterbrechungen
mit Ausnahme einer nichtmaskierbaren Unterbrechung (NMI) und einer
Softwareunterbrechung unterbunden sind.
-
In
der Ausführung
der Unterbrechungsroutine K wird zunächst in Schritt K1 das in dem
ACICR 74 des Schaltungselementes 48, gespeicherte
Flagdatum FC1 ( 14) auf 1 gesetzt, so daß ein Löschsignal
CL von dem ACICR 74 an die Rücksetzschaltung 72 ausgegeben
wird. Wird das Löschsignal
CL der Rücksetzschaltung 72 zugeführt, so
wird in vorstehend erläuterter
Weise (22 und 23) ein Rücksetzsignal
RE2 von der Rücksetzschaltung 72 an
den Rücksetzanschluss
R des Flipflops 63 ausgegeben, wobei das Flipflop 62 entsperrt
wird, so daß die Ausgabe
des ACIR-Signals aus dem Ausgangsanschluss Q des Flipflops 62 zum
Stillstand kommt. Nach Ausgabe des Rücksetzsignals RE2 wird von der
Rücksetzschaltung 72 ein
Rücksetzsignal
RE3 an das ACICR 74 ausgegeben, wodurch das Flagdatum FEI
des ACICR 74 von 1 auf 0 zurückgeführt wird.
-
In
Schritt K2 wird eine Revisions- oder Zusatzroutine gemäß dem Zusatzprogramm
ausgeführt.
Ist die Ausführung
der Zusatzroutine abgeschlossen, so fährt der Steuerablauf mit Schritt
K3 fort, in dem das in dem ACIPR 58 des Schaltungselementes 48,
gehaltene Flagdatum FD1 auf 1 gesetzt wird.
-
Anschließend führt die
CU der CPU 10 die sequentielle Unterbrechungs-Rücksprung-Verarbeitung (24)
auf Grundlage eines Unterbrechungs-Rücksprung-Befehls
aus, der als letzter Befehl in das Zusatzprogramm geschrieben ist.
Die verschiedenen in dem Stapelspeicherbereich des RAMs 14 temporär gespeicherten
Flagdaten werden in das Statusregister 38 zurückgeführt, und
das in dem Statusregister 38 gehaltene Unterbrechungsfreigabeflag wird
auf 1 gesetzt, wodurch wieder alle Unterbrechungen erlaubt sind.
Die in dem Stapelspeicherbereich des RAMs 14 temporär gespeicherte
Rücksprungadresse
9818H wird in den Programmzähler 26 zurückgeführt und
zurückgesetzt,
was zu einer Ausführung
der Unterroutine D führt.
-
Wird
die Rücksprungadresse
9818H in den Programmzähler 26 zurückgeführt und
dort gesetzt, so wird ein Adress-Koinzidenz-Signal (AC) wieder von
dem Adressvergleicher 50 des Schaltungselementes 481 ausgegeben, da Übereinstimmung zwischen der
Rücksprungadresse
9818H und dem in dem CAR 50 des Schaltungselementes 48,
gehaltenen Vergleichsadressdatum CA1 besteht. Jedoch wird eine Ausgabe
eines Adress-Koinzidenz-Unterbrechungsanforderungssignals (ACIR)
aus dem Ausgangsanschluss Q des Flipflops 62 verhindert,
da das Flagdatum FD1 des ACIPR 58 auf 1 gesetzt ist (Schritt
K3). Auf diese Weise wird eine Ausgabe eines Adress-Koinzidenz-Unterbrechungssignals (ACI)
aus dem UND-Gatter 66 des Schaltungselementes 481 der Unterbrechungssteuerung 40 verboten.
-
Wird
die Rücksprungadresse
9818H in dem Programmzähler 26 durch
die Adresse 9819H erneuert, so kommt die Ausgabe des AC-Signals
aus dem Adressvergleicher 50 des Schaltungselementes 481 zum Stillstand, wodurch das Flagdatum
FD1 auf 0 zurückgesetzt
wird, wie aus der Erläuterung
unter Bezugnahme auf die 25 und 26 hervorgeht.
-
Im
folgenden wird ein auf dem dritten Revisionsbeispiel basierender
Betrieb der CPU 10 erläutert.
-
Erreicht
eine Adresse, die in dem Programmzähler 26 sukzessive
erneuert wird, die erste 1-Byte-Adresse 9820H der 4-Byte-Adresse,
unter der der Befehl zum Aufrufen der Unterroutine E gespeichert
ist, d.h. stimmt die erneuerte Adresse 9820H mit dem in dem CAR 50 des
Schaltungselementes 482 gehaltenen
Vergleichsadressdatum CA2 überein, so
wird ein Adress-Koinzidenz-Signal (AC) als Hochpegelsignal von dem
Adressvergleicher 50 des Schaltungselementes 482 ausgegeben, wodurch der Ausgangsanschluss
Q des Flipflops 62 ein Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) ausgibt. Auf diese Weise wird ein Adress-Koinzidenz-Unterbrechungssignal
(ACI) von dem UND-Gatter 66 des Schaltungselementes 482 ausgegeben, da das ACIAR 68 wegen
des auf 1 gesetzten Flagdatums FE2 ein Adress-Koinzidenz-Unterbrechungsfreigabesignal
(ACTA) an das UND-Gatter 66 ausgibt.
-
Wird
das von dem UND-Gatter 66 des Schaltungselementes 48,
ausgegebene ACI-Signal der Unterbrechungssteuerung 40 zugeführt, so
führt die CU 20 der
CPU 10 die sequentielle Unterbrechungs-Übergangs-Verarbeitung (21)
aus, ohne auf die 4-Byte-Adresse (9820H bis 9823H) zuzugreifen,
unter der der Befehl zum Aufrufen der Unterroutine E gespeichert
ist. Die Adresse 9820H des Programmzählers 26 ist nämlich in
dem Stapelspeicherbereich des RAMs 14 ( 12)
temporär
als Rücksprungadresse
gespeichert, und die verschiedenen Flagdaten (z.B. das Übertragflag,
das Überlaufflag, das
Nullflag, das Vorzeichenflag etc.) des Statusregisters 38 sind
temporär
in dem Stapelspeicherbereich des RAMs 14 gespeichert. Außerdem wird
das in dem VAR 70 des Schaltungselementes 482 gehaltene Vektoradressdatum (0A00H)
in dem Programmzähler 26 gesetzt.
Die CU 20 greift so auf die Kopfadresse 0A00H der Unterbrechungsroutine
L zu, was zu einer Ausführung
der Unterbrechungsroutine L führt.
-
Ähnlich wie
bei dem ersten Revisionsbeispiel wird in der Ausführung der
sequentiellen Unterbrechungs-Übergangs-Verarbeitung
(21) das in dem Statusregister 38 gehaltene
Unterbrechungsfreigabeflag auf 0 gesetzt, womit alle Unterbrechungen
unterbunden sind, mit Ausnahme einer nichtmaskierbaren Unterbrechung
(NMI) und einer Softwareunterbrechung.
-
In
der Ausführung
der Unterbrechungsroutine L wird zunächst in Schritt L1 das in dem
ACICR 74 des Schaltungselementes 482 gehaltene
Flagdatum FC2 (15) auf 1 gesetzt, so daß das ACICR 74 ein Löschsignal
CL an die Rücksetzschaltung 72 ausgibt.
Wird das Löschsignal
CL der Rücksetzschaltung 72 zugeführt, so
gibt in vorstehend erläuterter
Weise (22 und 23) die
Rücksetzschaltung 72 ein Rücksetzsignal
RE2 an den Rücksetzanschluss
R des Flipflops 63 aus, wodurch das Flipflop 62 entsperrt
wird, so daß die
Ausgabe des ACIR-Signals aus dem Ausgangsanschluss Q des Flipflops 62 zum Stillstand
kommt. Nach Ausgabe des Rücksetzsignals
RE2, gibt die Rücksetzschaltung 72 ein
Rücksetzsignal
RE3 an das ACICR 74 aus, wodurch das Flagdatum FC2 des
ACICR 74 von 1 auf 0 zurückgesetzt wird.
-
In
Schritt L2 wird die Unterroutine G mit ihrer Kopfadresse 7000H aufgerufen
und ausgeführt.
Ist die Ausführung
der Unterroutine G abgeschlossen, so fährt der Steuerablauf mit Schritt
L3 fort, in dem das in dem ACIPR 58 des Schaltungselementes 482 gehaltene Flagdatum FD2 auf 1 gesetzt
wird.
-
Anschließend führt die
CU 20 der CPU 10 die sequentielle Unterbrechungs-Rücksprung-Verarbeitung (24)
auf Grundlage eines Unterbrechungs-Rücksprung-Befehls
aus, der als letzter Befehl in das Aufrufprogramm geschrieben ist.
Die verschiedenen in dem Stapelspeicherbereich des RAMs 14 temporär gespeicherten
Flagdaten werden nämlich
in das Statusregister 38 zurückgeführt, und das in dem Statusregister 38 gehaltene
Unterbrechungsfreigabeflag wird auf 1 gesetzt, wodurch wieder alle Unterbrechungen
erlaubt sind. Weiterhin wird die in dem Stapelspeicherbereich des
RAMs 14 temporär gespeicherte
Rücksprungadresse
9820H in den Programmzähler 26 zurückgeführt und
dort gesetzt, was zu einer Ausführung
der Unterroutine E führt.
-
Wird
die Rücksprungadresse
9820H in den Programmzähler 26 zurückgeführt und
dort gesetzt, so wird ähnlich
dem zweiten Revisionsbeispiel wieder ein Adress-Koinzidenz-Signal
(AC) von dem Adressvergleicher 50 des Schaltungselementes 482 ausgegeben, da Übereinstimmung zwischen der Rücksprungadresse
9820H und dem in dem CAR 50 des Schaltungselementes 482 gehaltenen Vergleichsadressdatum besteht.
Eine Ausgabe eines Adress-Koinzidenz-Unterbrechungsanforderungssignals (ACIR)
aus dem Ausgangsanschluss Q des Flipflops 62 wird jedoch
verhindert, da das Flagdatum FD2 des ACIPR 58 (Schritt
L3) auf 1 gesetzt ist. Auf diese Weise ist die Ausgabe eines Adress-Koinzidenz-Unterbrechungssignals
aus dem UND-Gatter 66 des Schaltungselementes 482 an die Unterbrechungssteuerung 40 unterbunden.
-
Wird
die Rücksprungadresse
9820H in dem Programmzähler 26 durch
die Adresse 9821H erneuert, so kommt die Ausgabe des AC-Signals
aus dem Adressvergleicher 50 des Schaltungselementes 482 zum Stillstand, wodurch das Flagdatum
FD2 auf 0 zurückgesetzt
wird, wie aus der Erläuterung
unter Bezugnahme auf die 25 und 26 hervorgeht.
-
Obgleich
das ACIMR 64 nicht direkt an der Revision der ROM-gespeicherten
Programme teilnimmt, kann dieses Register (ACIMR) vorteilhaft eingesetzt
werden, um beispielsweise an den ROM-gespeicherten Programme eine
Fehlersuche/-korrektur vorzunehmen. Insbesondere werden, bevor an
den ROM-gespeicherten
Programmen die Fehlersuche/-korrektur ausgeführt wird, aus den Adressen
der ROM-gespeicherten Programme in geeigneter Weise acht Adressen
ausgewählt
und in die jeweiligen ACRs 50 der Schaltungselemente 48n ge schrieben. Während der Ausführung der
Fehlersuche/-korrektur der ROM-gespeicherten
Programme wird überwacht, ob
die in den acht ACIMRs 64 gehaltenen acht Flagdaten FM0,
FM1, ... FM6 und FM7 jeweils von 0 nach 1 geändert worden sind. Auf diese
Weise kann einfach und schnell bestätigt werden, ob die CU 20 der CPU 10 auf
jede der geeignet ausgewählten
Adressen zugegriffen hat, was zu einer Vereinfachung der Ausführung der
Fehlersuche/-korrektur der ROM-gespeicherten
Programme führt.
Während
der Ausführung
der Fehlersuche/-korrektur
der ROM-gespeicherten Programme werden selbstverständlich alle Flagdaten
FE0, FE1, ... FE6 und FE7 der ACIARs 68 auf 0 gesetzt,
wodurch die Ausgabe eines Adress-Koinzidenz-Unterbrechungssignals
(ACI) aus jedem der UND-Gatter 66 der Schaltungselemente 48 unterbunden
wird.
-
32 zeigt
eine Abwandlung des Schaltungselementes (48n ),
das in 2 stellvertretend dargestellt ist. In dieser Abwandlung
enthält
jedes der acht Schaltungselemente 48n eine
Adress-Latchschaltung 76, durch die der Adressvergleicher 52 mit einem
Adressbus verbunden ist, der sich zum Programmzähler 26 erstreckt.
Eine von dem Programmzähler 26 sukzessiv
erneuerte Adresse wird aus dem Adressbus durch die Adress-Latchschaltung 76 wiedergewonnen
und dann an den Adressvergleicher 52 ausgegeben. Abgesehen
davon, ist die Abwandlung nach 32 im
wesentlichen identisch mit dem in 2 gezeigten
Schaltungselement (48n ).
-
33 zeigt
stellvertretend eines von acht Schaltungselementen 80n , die in einem zweiten Ausführungsbeispiel
des erfindungsgemäßen Mikrocomputers
verwendet werden. Im zweiten Ausführungsbeispiel der Erfindung
enthält
nämlich
die in 1 gezeigte Adress-Koinzidenz-Unterbrechungs-Steuerung
(ACIC) 48 die Schaltungselemente 800 , 801 , ... 806 und 807 , die im wesentlichen identisch sind.
In 33 sind Merkmale, die denen der 2 entsprechen,
mit denselben Bezugszeichen versehen.
-
Ähnlich wie
bei dem ersten Ausführungsbeispiel
entspricht die Anzahl der Schaltungselemente 80n einer
Anzahl wahlfreier Stellen, an denen jeweils die ROM- gespeicherten Programme
revidiert werden sollen. In dem zweiten Ausführungsbeispiel ist es so möglich, die
ROM-gespeicherten Programme an acht wahlfreien Programmstellen zu
revidieren.
-
In
dem zweiten Ausführungsbeispiel
zeichnet sich die CPU 10 durch ein temporäres Vektoradress-Register
(VATR) 78 aus, das einen Teil der ACIC 48 bildet
und mit den Vektoradress-Registern (VAR) 70 der Schaltungselemente 80n verbunden ist. Das VATR 78 ist
als 16-Bit-Register ausgebildet, dessen Bitzahl gleich der einer
Adresse des ROMs 12 ist. Das VATR 78 ist in geeigneter
Weise über
einen Steuerbus, einen Adressbus und einen Datenbus an die Elemente
des Mikrocomputers angeschlossen, wie in 33 gezeigt
ist, und wird durch ein Rücksetzsignal
initialisiert, wenn die CPU 10 eingeschaltet wird.
-
In
dem zweiten Ausführungsbeispiel
können Revisionen
in den ROM-gespeicherten
Programmen im wesentlichen in gleicher Weise wie bei dem ersten Ausführungsbeispiel
vorgenommen werden, abgesehen davon, daß jedes Mal eine sequentielle
Unterbrechungs-Übergangs-Verarbeitung
gemäß einem
in 34 gezeigten Flußdiagramm ausgeführt wird, wenn
das UND-Gatter 66 ein Adress-Koinzidenz-Unterbrechungssignal
(ACI) an die Unterbrechungssteuerung 40 ausgibt. In dem
zweiten Ausführungsbeispiel
können
also die erste, die zweite und die dritte Revision, die vorstehend
unter Bezugnahme auf die 28 und 29 erläutert wurden,
in die ROM-gespeicherten Programme eingearbeitet werden, sofern
im Vorfeld eine Unterbrechungs-Verarbeitungsunterroutine M als Programm
gespeichert worden ist, das aus einer Reihe von Befehlen besteht,
die in dem ROM 12 unter einer Kopfadresse (z.B. 8000H)
und nachfolgenden Adressen gespeichert sind, wie in 35 gezeigt
ist.
-
Ein
auf dem ersten Revisionsbeispiel basierender Betrieb der CPU 10 gemäß dem zweiten
Ausführungsbeispiel
wird im folgenden erläutert.
-
Eine
Adresse wird sukzessive in dem Programmzähler 26 erneuert.
Erreicht die erneuerte Adresse die erste 1-Byte-Adresse 9808H der 4-Byte-Adresse,
unter der der Befehl zum Aufrufen der Unterroutine B gespeichert
ist, d.h. stimmt die erneuerte Adresse 9808H mit dem in dem CAR 50 des Schaltungselementes 800 gehaltenen Vergleichsadressdatum CA0 über, so
wird ein Adress-Koinzidenz-Unterbrechungssignal
(AC) als Hochpegelsignal von dem Adressvergleicher 50 des
Schaltungselementes 800 ausgegeben,
wodurch der Ausgangsanschluss Q des Flipflops 62 ein Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) ausgibt. Auf diese Weise wird von dem UND-Gatter 66 des
Schaltungselementes 800 ein Adress-Koinzidenz-Unterbrechungssignal
(ACI) ausgegeben, da das ACIAR 68 wegen des auf 1 gesetzten
Flagdatums FE0 ein Adress-Koinzidenz-Unterbrechungsfreigabesignal
(ACTA) an das UND-Gatter 66 ausgibt.
-
Wird
das von dem UND-Gatter 66 des Schaltungselementes 800 ausgegebene ACI-Signal der Unterbrechungssteuerung 40 zugeführt, so
führt die CU 20 der
CPU 10 die sequentielle Unterbrechungs-Übergangs-Verarbeitung (34)
aus, ohne auf die 4-Byte-Adresse (9808H bis 980BH) zuzugreifen,
unter der der Befehl zum Aufruf der Unterroutine B gespeichert ist.
-
Insbesondere
wird in Schritt 3401 eine Adresse des Programmzählers 26 und
deshalb die Adresse 9808H temporär
als Rücksprungadresse
in dem Stapelspeicherbereich des RAM 14 gespeichert. Dann
werden in Schritt 3402 die verschiedenen Flagdaten (wie
das Übertragflag,
das Überlaufflag,
das Nullflag, das Vorzeichenflag etc.) des Statusregisters 38 temporär in dem
Stapelspeicherbereich des RAM 14 gespeichert. In Schritt 3403 wird ferner
das in dem Statusregister 38 gehaltene Unterbrechungsfreigabefiag
auf 0 gesetzt, wodurch alle Unterbrechungen mit Ausnahme einer nichtmaskierbaren
Unterbrechung (NMI) und einer Softwareunterbrechung unterbunden
sind.
-
In
Schritt 3404 wird das in dem VAR 70 des Schaltungselementes 800 gehaltene Vektoradressdatum VA0 (0600H)
in dem VATR 78 gesetzt, da das ACI-Signal dem VAR 70 des
Schaltungselementes 800 von dem
UND-Gatter 66 zugeführt
wird. Dann wird in Schritt 3405 eine Vektoradresse, die
der betreffenden Adress-Koinzidenz-Unterbrechung
entspricht, aus einem in dem ROM 12 festgelegten Unterbrechungs-Vektorbereich
ausgewählt
und dann in dem Programmzähler 26 gesetzt.
Die Kopfadresse 8000H des Programms der Unterbrechungsverarbeitungs-Unterroutine
M (35) wird nämlich
als Vektoradresse in dem Programmzähler 26 gesetzt. In dem
Unterbrechungs-Vektorbereich des ROM 12 sind verschiedene
Vektoradressen gespeichert.
-
Ist
die Vektoradresse 8000H in dem Programmzähler 26 gesetzt, so
greift die CU 20 der CPU 10 auf die Vektoradresse
8000H zu (Schritt 3406), wodurch der Steuerablauf zur Vektoradresse
8000H springt, was zu einer Ausführung
der Unterbrechungsverarbeitungs-Unterroutine M führt.
-
Wie
in 35 gezeigt, wird in der Unterbrechungsverarbeitungs-Unterroutine
M ein Befehl ausgeführt,
der den Steuerablauf zu einer in dem temporären Vektoradress-Register (VATR) 80 gesetzten Vektoradresse
springen lässt,
wodurch die Adresse des Programmzählers durch die Vektoradresse
erneuert wird. In diesem ersten Revisionsbeispiel wird nämlich die
in dem VATR 80 gehaltene Vektoradresse VA0 (0600H) in dem
Programmzähler 26 gesetzt. Auf
diese Weise greift die CU 20 auf die Kopfadresse 0600H
der Unterbrechungsroutine J zu, was zu einer Ausführung der
Unterbrechungsroutine J führt.
Die Revisionsroutine wird also gemäß dem korrekten Programm ausgeführt (Schritt
J2), das die die Fehler enthaltende Unterroutine B ersetzt.
-
Nach
Abschluss der Unterbrechungsroutine J springt der Steuerablauf zu
der ersten 1-Byte-Adresse 980CH der 4-Byte-Adresse, unter der der
Befehl zum Aufruf der Unterroutine C gespeichert ist, wodurch die
CU 20 auf die Adresse 980CH zugreift, was zu einer Ausführung der
Unterroutine C führt.
Zu diesem Zeitpunkt ist in dem Programmzähler 26 selbstredend
auf die Adresse 980CH eingestellt.
-
Werden
also nach Herstellung des Mikrocomputers (1) in einem
der ROMgespeicherten Programme Fehler gefunden, so ist es ähnlich wie
in dem ersten Ausführungsbeispiel
möglich,
virtuelle eine Revision des die Fehler enthaltenden Programms vorzunehmen,
wodurch eine korrekte Funktion der ROMgespeicherten Programme insgesamt möglich wird.
-
Im
folgenden wird ein auf dem zweiten Revisionsbeispiel basierender
Betrieb der CPU 10 erläutert.
-
Erreicht
eine Adresse, die in dem Programmzähler 26 sukzessive
erneuert wird, die erste 1-Byte-Adresse 9818H der 4-Byte-Adresse,
unter der der Befehl zum Aufruf der Unterroutine D gespeichert ist,
d.h. stimmt die erneuerte Adresse 9818H mit dem in dem CAR 50 der
Schaltungselemente 80, gehaltenen Vergleichsadressdatum
CA1 überein,
so gibt der Adressvergleicher 50 des Schaltungselementes 801 ein Adress-Koinzidenz-Signal (AC)
aus, wodurch ein Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) aus dem Ausgangsanschluss Q des Flipflops 62 ausgegeben
wird. Das UND-Gatter 66 des Schaltungselementes 80,
gibt so ein Adress-Koinzidenz-Unterbrechungssignal (ACI) aus, da
das ACIAR wegen des auf 1 eingestellten Flagdatums FEI ein Adress-Koinzidenz-Unterbrechungsfreigabesignal
(ACTA) an das UND-Gatter 66 ausgibt.
-
Wird
das von dem UND-Gatter 66 des Schaltungselementes 801 ausgegebene ACI-Signal der Unterbrechungssteuerung 40 zugeführt, so
führt die CU 20 der
CPU 10 die sequentielle Unterbrechungs-Übergangs-Verarbeitung (34)
aus, ohne auf die 4-Byte-Adresse (9818H bis 981BH) zuzugreifen,
unter der der Befehl zum Aufruf der Unterroutine D gespeichert ist.
-
Ähnlich dem
vorstehend erläuterten
Fall wird in Schritt 3401 eine Adresse des Programmzählers 26 und
deshalb die Adresse 9818H in dem Stapelspeicherbereich des RM 14 temporär als Rücksprungadresse
gespeichert. Dann werden in Schritt 3402 die verschiedenen
Flagdaten (wie das Übertragflag, das Überlaufflag,
das Nullflag, das Vorzeichenflag etc.) des Statusregisters 38 temporär in dem
Stapelspeicherbereich des RAM 14 gespeichert. In Schritt 3403 wird
ferner das in dem Statusregister 38 gehaltene Unterbrechungsfreigabeflag
auf 0 gesetzt, wodurch alle Unterbrechungen mit Ausnahme einer nichtmaskierbaren
Unterbrechung (NMI) und einer Softwareunterbrechung unterbunden
sind.
-
In
Schritt 3404 wird das in dem VAR 70 des Schaltungselementes 801 gehaltene Vektoradressdatum VA1 (0800H)
in dem VATR gesetzt, da das Ad-Signal von dem UND-Gatter 66 an
das VAR 70 des Schaltungselementes 801 ausgegeben
wird. Dann wird in Schritt 3405 eine Vektoradresse, die
der betreffenden Adress-Koinzidenz-Unterbrechung
entspricht, aus dem in dem ROM 12 festgelegten Unterbrechungs-Vektorbereich
ausgewählt
und dann in dem Programmzähler 26 gesetzt.
Die Kopfadresse 8000H des Programms der Unterbrechungsverarbeitungs-Unterroutine
M (35) wird nämlich
als Vektoradresse in dem Programmzähler 26 gesetzt. In dem
Unterbrechungs-Vektorbereich des ROM 12 sind verschiedene
Vektoradressen gespeichert.
-
Wird
die Vektoradresse 8000H in dem Programmzähler 26 gesetzt, so
greift die CU 20 der CPU 10 auf die Vektoradresse
8000H zu (Schritt 3406), wodurch der Steuerablauf an die
Vektoradresse 8000H springt, was zu einer Ausführung der Unterbrechungsverarbeitungs-Unterroutine
M führt.
-
Wie
in 35 gezeigt, wird in der Unterbrechungsverarbeitungs-Unterroutine
M ein Befehl ausgeführt,
der den Steuerablauf an eine in dem temporären Vektoradress-Register (VATR) 80 gesetzte Vektoradresse
springen lässt,
wodurch die Adresse des Programmzählers 26 durch die
Vektoradresse ersetzt wird. In diesem zweiten Revisionsbeispiel wird
nämlich
die in dem VATR 80 gehaltene Vektoradresse VA1 (0800H)
in dem Programmzähler 26 gesetzt.
Die CU 20 greift so auf die Kopfadresse 0800H der Unterbrechungsroutine
K zu, was zu einer Ausführung
der Unterbrechungsroutine K führt.
-
Nach
Ausführen
der Unterbrechungsroutine K erfolgt die sequentielle Unterbrechungs-Rücksprung-Verarbeitung
(24) im wesentlichen in der Weise, wie es oben
erläutert
wurde. Die ROM-gespeicherten Programme werden also derart virtuell revidiert,
daß die
Revisions- oder Zusatzroutine (Schritt K2) gemäß dem Zusatzprogramm unmittelbar
vor Ausführung
der Unterroutine D ausgeführt wird.
-
Im
folgenden wird ein auf dem dritten Revisionsbeispiel basierender
Betrieb der CPU 10 gemäß dem zweiten
Ausführungsbeispiel
erläutert.
-
Erreicht
eine Adresse, die in dem Programmzähler 26 sukzessive
erneuert wird, die erste 1-Byte-Adresse 9820H der 4-Byte-Adresse,
unter der der Befehl zum Aufruf der Unterroutine E gespeichert ist,
d.h. stimmt die erneuerte Adresse 9820H mit dem in dem CAR 50 des
Schaltungselementes 802 gehaltenen
Vergleichsadressdatum CA2 überein,
so gibt der Adressvergleicher 50 des Schaltungselementes 802 ein Adress-Koinzidenz-Signal (AC)
als Hochpegelsignal aus, wodurch ein Adress-Koinzidenz-Unterbrechungsanforderungssignal
(ACIR) aus dem Ausgangsanschluss Q des Flipflops 62 ausgegeben wird.
Das UND-Gatter 66 des Schaltungselementes 802 gibt so ein Adress-Koinzidenz-Unterbrechungssignal
(ACI) aus, da das ACIAR 68 wegen des auf 1 gesetzten Flagdatums
FE2 ein Adress-Koinzidenz-Unterbrechungsfreigabesignal (ACTA) an
das UND-Gatter 66 ausgibt.
-
Wird
das von dem UND-Gatter 66 des Schaltungselementes 802 ausgegebene ACI-Signal der Unterbrechungssteuerung 40 zugeführt, so
führt die CU 20 der
CPU 10 die sequentielle Unterbrechungs-Übergangs-Verarbeitung (34)
aus, ohne auf die 4-Byte-Adresse (9820H bis 9823H) zuzugreifen,
unter der der Befehl zum Aufruf der Unterroutine E gespeichert ist.
-
Ähnlich dem
oben erläuterten
Fall wird in Schritt 3401 eine Adresse des Programmzählers 26 und
deshalb die Adresse 9820H in dem Stapelspeicherbereich des RAM 14 temporär als Rücksprungadresse
gespeichert. Dann werden in Schritt 3402 die verschiedenen
Flagdaten (wie das Übertragflag,
das Überlaufflag,
das Nullflag, das Vorzeichenflag etc.) des Statusregisters 38 temporär in dem
Stapelspeicherbereich des RAM 14 gespeichert. In Schritt 3403 wird
weiterhin das in dem Statusregister 38 gespeicherte Unterbrechungsfreigabeflag
auf 0 gesetzt, wodurch alle Unterbrechungen mit Ausnahme einer nichtmaskierbaren
Unterbrechung (NMI) und einer Softwareunterbrechung unterbunden sind.
-
In
Schritt 3404 wird das in dem VAR 70 des Schaltungselementes 802 gehaltene Vektoradressdatum VA2 (0A00H)
in dem VATR 78 gesetzt, da das UND-Gatter 66 das
ACI-Signal dem VAR 70 des Schaltungselementes 802 zuführt. Dann wird in Schritt 3405 eine
Vektoradresse, die der betreffenden Adress-Koinzidenz-Unterbrechung entspricht,
aus dem in dem ROM 12 festgelegten Unterbrechungs-Vektorbereich ausgewählt und
dann in dem Programmzähler 26 gesetzt.
Die Kopfadresse 8000H des Programms der Unterbrechungsverarbeitungs-Unterroutine M (35)
wird nämlich
als Vektoradresse in dem Programmzähler 26 gesetzt. In dem
Unterbrechungs-Vektorbereich des ROM 12 sind verschiedene
Vektoradressen gespeichert.
-
Wird
die Vektoradresse 8000H in dem Programmzähler 26 gesetzt, so
greift die CU 20 der CPU 10 auf die Vektoradresse
8000H zu (Schritt 3406), wodurch der Steuerablauf zur Vektoradresse
8000H springt, was zu einer Ausführung
der Unterbrechungsverarbeitungs-Unterroutine M führt.
-
Wie
in 35 gezeigt, wird in der Unterbrechungsverarbeitungs-Unterroutine
M ein Befehl ausgeführt,
der den Steuerablauf zu der in dem temporären Vektoradress-Register (VATR) 80 gesetzten
Vektoradresse springen lässt,
wodurch die Adresse des Programmzählers 26 durch die
Vektoradresse erneuert wird. In diesem dritten Revisionsbeispiel
wird nämlich
die in dem VATR 80 gesetzte Vektoradresse VA2 (0A00H) in
dem Programmzähler 26 gesetzt.
Die CU 20 greift so auf die Kopfadresse 0A00H der Unterbrechungsroutine
K zu, was zu einer Ausführung der
Unterbrechungsroutine L führt.
-
Nach
Ausführen
der Unterbrechungsroutine L erfolgt die sequentielle Unterbrechungs-Rücksprung-Verarbeitung
(24) im wesentlichen in gleicher Weise, wie dies
oben erläutert
wurde. Die ROM-gespeicherten Programme werden so in der Weise virtuell
revidiert, daß die
Unterroutine G (Schritt L2) unmittelbar vor Ausführen der Unterroutine E abgearbeitet
wird.
-
In
dem vorstehend genannten zweiten Ausführungsbeispiel kann die Unterbrechungsverarbeitungs-Unterroutine
M einen Schritt enthalten, in dem alle Flagdaten FC0, FC1, ... FC6
und FC7 der ACICRs der Schaltungselemente 80n auf
1 gesetzt werden. Ist dieser Schritt in der Unterbrechungsverarbeitungs-Unterroutine M enthalten,
so können
natürlich die
jeweiligen Schritte J1, K1 und L1 in den Unterbrechungsroutinen
J, K und L weggelassen werden.
-
36 zeigt
eine Abwandlung des Schaltungselementes (80n ),
das stellvertretend in 33 dargestellt ist. Ähnlich der
Anwandlung nach 32 enthält in der Abwandlung des zweiten
Ausführungsbeispiels
jedes der Schaltungselemente 80n eine Adress-Latchschaltung 76,
durch die der Adressvergleicher 52 an einen Adressbus angeschlossen
ist, der sich zu dem Programmzähler 26 erstreckt.
Eine Adresse, die von dem Programmzähler 26 sukzessive
erneuert wird, wird aus dem Adressbus durch die Adress-Latchschaltung 76 wiedergewonnen
und dann an den Adressvergleicher 52 ausgegeben. Abgesehen
davon ist die Abwandlung nach 36 im wesentlichen
identisch mit dem in 33 gezeigten Schaltungselement
(80n ).
-
Obgleich
vorstehend auf das erste, das zweite und das dritte Revisionsbeispiel
Bezug genommen wurde, kann auch eine andere Art von Revision in
die ROMgespeicherten Programme eingearbeitet werden. Beispielsweise
können
die ROM-gespeicherten Programme in der Weise revidiert werden, daß eines der
ROM-gespeicherten Programme an seiner Ausführung gehindert ist.
-
Wie
aus dem Vorstehenden hervorgeht, ist es in dem erfindungsgemäßen Mikrocomputer
möglich,
eine Revision an einer wahlfreien Stelle von Programmen vorzunehmen,
die in einem ROM des Mikrocomputers gespeichert sind. Dies ermöglicht nicht nur
große
Flexibilität
beim Entwurf eines Mikrocomputers, sondern senkt auch die Kosten
für die
Herstellung der Mikrocomputer beträchtlich.
-
Der
Fachmann erkennt, daß das
die vorstehende Beschreibung bevorzugte Ausführungsbeispiele angibt und
verschiedene, unter die Erfindung fallende Änderungen und Abwandlungen
möglich sind.