DE4302902A1 - Mikroprozessor mit boolscher Verknüpfungslogik - Google Patents
Mikroprozessor mit boolscher VerknüpfungslogikInfo
- Publication number
- DE4302902A1 DE4302902A1 DE19934302902 DE4302902A DE4302902A1 DE 4302902 A1 DE4302902 A1 DE 4302902A1 DE 19934302902 DE19934302902 DE 19934302902 DE 4302902 A DE4302902 A DE 4302902A DE 4302902 A1 DE4302902 A1 DE 4302902A1
- Authority
- DE
- Germany
- Prior art keywords
- register
- data
- interrupt
- logic
- microprocessor according
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 230000015654 memory Effects 0.000 claims abstract description 90
- 238000012360 testing method Methods 0.000 claims abstract description 82
- 239000013598 vector Substances 0.000 claims description 62
- 230000005540 biological transmission Effects 0.000 claims description 23
- 238000012546 transfer Methods 0.000 claims description 20
- 238000000034 method Methods 0.000 claims description 8
- 230000004913 activation Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 7
- 230000003936 working memory Effects 0.000 claims description 6
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 230000001174 ascending effect Effects 0.000 claims description 3
- 238000007726 management method Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims description 2
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 claims 1
- 238000012217 deletion Methods 0.000 claims 1
- 230000037430 deletion Effects 0.000 claims 1
- 230000003252 repetitive effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 101000918983 Homo sapiens Neutrophil defensin 1 Proteins 0.000 description 4
- 102100029494 Neutrophil defensin 1 Human genes 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 102100023046 Band 4.1-like protein 3 Human genes 0.000 description 1
- 101150034590 DAR1 gene Proteins 0.000 description 1
- 101150010867 DEFA gene Proteins 0.000 description 1
- 108700001191 DEFICIENS Proteins 0.000 description 1
- 101001049975 Homo sapiens Band 4.1-like protein 3 Proteins 0.000 description 1
- 101000830386 Homo sapiens Neutrophil defensin 3 Proteins 0.000 description 1
- 102100024761 Neutrophil defensin 3 Human genes 0.000 description 1
- 101100393304 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GPD1 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microcomputers (AREA)
Description
Die Erfindung betrifft einen Mikroprozessor mit boolscher Verknüpfungslogik.
Es ist bekannt, daß Mikroprozessoren mit einer internen Datenbusbreite von
vier oder mehr Bits verwendet werden. Sie bilden aufgrund ihrer hohen
Leistung oft in Verbindung mit Kontroll- und Speicherbausteinen ein System,
aber lassen sich nur schwer vernetzen oder nur über komplizierte
Schnittsteilen mit der Außenwelt in Kontakt bringen. Außerdem sind sie nur
eingeschränkt in der Lage, logische Operationen durchzuführen.
Der Erfindung liegt die Aufgabe zugrunde, einen Mikroprozessor
herkömmlicher Bauart, dessen interne Struktur auf die Breite von einem Bit
reduziert ist, soweit zu verbessern und weiterzuentwickeln, daß daraus ein
flexibles, leistungsfähiges und universell einsetzbares System entsteht. Diese
Aufgabe wird dadurch gelöst, daß der Mikroprozessor nur über Register
verfügt, die ein Bit breit sind und durch die Rechenwerke nach den
Rechengesetzen der boolschen Algebra verknüpft werden. Dadurch ist es
leichter möglich, den Mikroprozessor z. B. für die Simulation logischer
Schaltungen oder für Steuerungsaufgaben zu verwenden. Der Mikroprozessor
verfügt schon über sehr flexible Schnittstellen, die als Eingang oder Ausgang
programmierbar sind und deshalb seine Verwendung für Steuerungsaufgaben
erleichtern. Es ist aber auch möglich, mehrere Mikroprozessoren über diese
Schnittstellen zu vernetzen, um dann beispielsweise neuronale Netze
aufzubauen. Um auch größere Datenmengen verarbeiten zu können, ist der
Mikroprozessor mit einer Datenübertragungslogik ausgestattet, die es ihm
erlaubt, seine Register parallel zum aktuellen Befehl mit Daten aus einem
externen Datenspeicher zu laden. Durch die hochgradige Homogenität der
Verknüpfungsmöglichkeiten und die ist es leichter möglich, die Software für
diesen Mikroprozessor mit Hilfe objektorientierter Computersprachen zu
erstellen.
Dieser Mikroprozessor beansprucht aufgrund seiner geringen Komplexität eine
relativ geringe Siliziumfläche, so daß er einzeln sehr billig hergestellt werden
kann und leicht mehrere vernetzte Mikroprozessoren auf einem Chip Platz
finden.
Die Erfindung wird nachfolgend beispielsweise anhand der Zeichnungen
erläutert. Darin zeigt:
Fig. 1 den schematischen Aufbau des Mikroprozessors.
Fig. 2 die Struktur der Befehle.
Fig. 3 die Wahrheitstabelle für die Verknüpfungen zweier Register.
Fig. 4 den Schaltplan des Rechenwerks (12).
Fig. 5 das Schaltzeichen des Rechenwerks (12) nach der IEC-Norm.
Fig. 6 die Wahrheitstabelle des Rechenwerks (12).
Fig. 7 die Organisation des Arbeitsspeichers (1) (grob).
Fig. 8 den Aufbau eines Portregisters (13) nach Anspruch 5.
Fig. 9 den Aufbau eines Portregisters (13) nach Anspruch 8.
Fig. 10 die Wahrheitstabelle eines Portregisters (13) nach Fig. 10.
Fig. 11 die Wahrheitstabelle der Interruptlogik (6).
Fig. 12 den schematischen Aufbau der Testlogik (15).
Fig. 13 den schematischen Aufbau der Datenübertragungslogik (10).
Fig. 14 das Schaltzeichen eines 2-zu-4-Dekoders nach IEC-Norm.
Fig. 15 den Schaltplan eines 2-zu-4-Dekoders.
Fig. 16 die äußere Verschaltung des Mikroprozessor in Beispiel 3.
Fig. 17 die Verschaltung der Speicherverwaltungseinheit (52) im Mikroprozessor.
In Fig. 1 ist das Blockdiagramm des Mikroprozessors gezeigt. Mit dem
Adreßzähler (4) greift der Mikroprozessor auf seinen vorzugsweise externen
Befehlsspeicher (7) zu. Die Befehle werden vom Befehlsdekoder (3) dekodiert,
der den gesamten Ablauf im Mikroprozessor zentral steuert. Die Rechenlogik
(2) verknüpft mit Hilfe ihrer Rechenwerke (12) mehrere Register miteinander
und schreibt in jedes dieser Register ein Ergebnis zurück. Um welche Register
es sich dabei handelt und wie sie verknüpft werden, wird im Befehlswort
kodiert. Die Gesamtheit der Register bildet den Arbeitsspeicher (1) des
Mikroprozessors. Dieser ist grob in drei Bereiche unterteilt: der erste Teil
ohne Außenleitungen (8), von denen viele Register Spezialfunktionen zur
Steuerung des Mikroprozessors übernehmen, ein zweiter Teil mit
Außenleitungen (8), nämlich die Portregister (13) und ein dritter Teil mit
Interrupteingängen (9), nämlich die Interrupteingangsregister (14). Alle
Register sind ein Bit breit und einzeln adressierbar.
Der Mikroprozessor beinhaltet ferner eine Sprungmarkentabelle (5), auf die
der Befehlsdekoder (3), die Interruptlogik (6) und die Testlogik (13) zugreifen.
In der Sprungmarkentabelle (5) sind unter jeder Sprungmarkennummer eine
Sprungadresse eingetragen, die bei einem Sprung an den Adreßzähler (4)
weitergegeben wird. Der Befehlsdekoder (3) kontrolliert ebenfalls die
Datenübertragungslogik (10), die den Datenaustausch zwischen dem
vorzugsweise externen Datenspeicher (11) und Arbeitsspeicher (1) steuert.
Der Befehlsspeicher (7) hat in diesem Beispiel eine Busbreite von 32 Bit. Der
Arbeitsspeicher (1) umfaßt 256 Register mit einem Bit Breite. Der
Befehlsspeicher (7) ist abweichend von den meisten Mikroprozessoren
physikalisch vom Arbeitsspeicher (1) getrennt.
Damit der Mikroprozessor nicht zwei getrennte Daten- (11) und Befehlsspeicher
(7) adressieren muß, kann im Mikroprozessor eine Speicherverwaltungseinheit
(52) vorgesehen werden (siehe Anspruch 44). Wie in Fig. 17 gezeigt wird,
wird sie zwischen Adreßzähler (4), Datenzähler (30) und Hauptspeicher (53)
geschaltet und hat die Aufgabe, die Zugriffe des Adreß- (4) und des
Datenzählers (30) auf den Hauptspeicher (53) zu regeln. Sie spielt dem
Adreßzähler (4) dann vor, daß er nur auf den Befehlsspeicher (7), und
dem Datenzähler (30), daß er nur auf den Datenspeicher (11) zugreift.
Fig. 2 zeigt das Befehlsformat des Mikroprozessors. Die erste Zeile der
Tabelle beinhaltet die hexadezimale Numerierung der einzelnen Bits jedes
Befehlwortes. Die Numerierung geht von rechts (00H) nach links (1FH). Wie
aus Fig. 2 ersichtlich ist, läßt sich jeder Befehl in die Bestandteile MODUS,
ADRESSE, MARKE, VB, VA, RB und RA zerlegen, die jeweils die Bits 00H bis
04H, 05H bis 19H, 1AH bis 1FH, 02H bis 05H, 06H bis 09H, 0AH bis 11H und
12H bis 19H in Anspruch nehmen.
Mit MODUS wird im Befehl angegeben, welche Operationen der Mikroprozessor
auszuführen hat. Es sind folgende Modi zu unterscheiden:
- - Mode NULL:
Die beiden letzten Bit von MODUS sind 00B. Register RA und RB werden den
Verknüpfungen VA bzw. VB unterzogen. Wenn das Ergebnis in RA nach der
Verknüpfung 0 ist, springt der Mikroprozessor zur Sprungmarke, die im
Befehlsteil MARKE angegeben ist.
- - Mode EINS:
Die beiden letzten Bit von MODUS sind 01B. Register RA und RB werden den
Verknüpfungen VA bzw. VB unterzogen. Wenn das Ergebnis in RA nach der
Verknüpfung 1 ist, springt der Mikroprozessor zur Sprungmarke, die im
Befehlsteil MARKE angegeben ist.
- - Mode S: Adresse(MARKE) = Adreßzähler.
Die beiden letzten Bit von MODUS sind 10B. Register RA und RB werden den
Verknüpfungen VA bzw. VB unterzogen. Die Sprungmarke, die im Befehlsteil
MARKE angegeben ist, wird mit dem aktuellen Adressenstand geladen.
- - Mode DEF:
Die beiden letzten Bit von MODUS sind 11B. Dadurch erkennt der
Befehlsdekoder (3) im Mikroprozessor, daß er die oberen 3 Bit im Befehlsteil
MODUS auch berücksichtigen muß, und daß die Bits 05H bis 19H vom
Befehlsteil ADRESSE belegt sind. Es werden keine Register miteinander
verknüpft, sondern entweder die Sprungmarkentabelle (5) oder der Datenzähler
(30) mit neuen Werten geladen. Dabei werden folgende sechs Modi
unterschieden:
- - Mode DEFA0: Adresse(MARKE) ADRESSE
Die oberen drei Bit von MODUS sind 000B. Die Sprungmarke, die im
Befehlsteil MARKE angegeben ist, wird mit der unter ADRESSE angegebenen
absoluten Adresse geladen.
- - Mode DEFA1: Adresse(MARKE) = Adreßzähler + ADRESSE
Die oberen drei Bit von MODUS sind 001B. Die Sprungmarke, die im
Befehlsteil MARKE angegeben ist, wird mit dem Wert des Adreßzählers (4)
plus der im Zweierkomplementformat unter ADRESSE angegebenen relativen
Adresse geladen.
- - Mode DEFA2: Adresse(MARKE) Adresse(MARKE) + ADRESSE
Die oberen drei Bit von MODUS sind 010H. Die Sprungmarke, die im
Befehlsteil MARKE angegeben ist, wird mit dem Wert, der unter dieser
Sprungmarke gespeichert ist, plus der im Zweierkomplementformat unter
ADRESSE angegebenen relativen Adresse geladen.
- - Mode DEFA3: Adresse(MARKE) = ADRESSE; Sprung
Die oberen drei Bit von MODUS sind 011B. Die Sprungmarke, die im
Befehlsteil MARKE angegeben ist, wird mit der unter ADRESSE angegebenen
absoluten Adresse geladen. Außerdem wird ein Sprung zu dieser Adresse
ausgeführt.
- - Mode DEFD0: Datenzähler = ADRESSE
Die oberen drei Bit von MODUS sind 100H. Der Datenzähler (30) wird mit der
unter ADRESSE angegebenen absoluten Adresse geladen.
- - Mode DEFD1: Datenzähler = Adreßzähler + ADRESSE
Die oberen drei Bit von MODUS sind 101B. Der Datenzähler (30) wird mit dem
Wert des Adreßzählers (4) plus der im Zweierkomplementformat unter
ADRESSE angegebenen relativen Adresse geladen.
- - Mode DEFD2: Datenzähler = Datenzähler + ADRESSE
Die oberen drei Bit von MODUS sind 010B. Dem Datenzähler (30) wird die im
Zweierkomplementformat unter ADRESSE angegebene relative Adresse
aufaddiert.
Die beiden Befehlsteile RA und RB geben an, welche der 256 möglichen
Register des Arbeitsspeichers (1) miteinander verknüpft werden sollen. Dafür
haben sie jeweils eine Länge von 8 Bit. Die Befehlsteile VA und VB mit je 4
Bit Breite geben den zwei Rechenwerken (12) an, welche der 16 möglichen
Verknüpfungen jeweils in das Register RA und RB zurückgeschrieben werden
sollen. Welche 16 Verknüpfungsmöglichkeiten bestehen, zeigt Fig. 3.
Da es bei zwei Registern RA und RB insgesamt 22 = 4 mögliche Zustände
gibt, existieren für die zwei Register 24 = 16 Verknüpfungsmöglichkeiten, die
in Fig. 3 von 0 bis 15 numeriert sind (siehe Anspruch 1). Es wurden
(nachträglich) die Bezeichnungen der logischen Verknüpfungen in die oberste
Zeile der Tabelle eingetragen. So bedeutet zum Beispiel die Zahl 3 im
Befehlsteil VA, das das erste Rechenwerk (12) ansteuert, daß beide Register
RA und RB der Verknüpfung Nr. 3 unterzogen werden (siehe unterste Zeile in
Fig. 3), was im Klartext heißt, daß der Inhalt in RA unverändert bleibt. Im
Befehlsteil VB, das das zweite Rechenwerk (12) ansteuert, würde eine 3
bedeuten, daß das Register RB den Inhalt von Register RA annimmt. Dadurch
lassen sich also auch Kopier- und Verschiebeoperationen verwirklichen.
Ein Rechenwerk (12) hat dabei einen sehr einfachen Aufbau. Fig. 4 zeigt den
Schaltplan eines Rechenwerkes (12). Auf der linken Seite sind die
Eingangsleitungen A, B, S0, S1, S2 und S3 angeordnet. An die Leitungen A
und B sind die zwei Register RA und RB angeschlossen, die im Befehlsteil RA
und RB ausgewählt wurden. S0 bis S3 sind die vier Leitungen, die die
Verknüpfung kodieren. Sie entsprechen im Rechenwerk (12) für das Register RA
dem Befehlsteil VA und im Rechenwerk für das Register RB dem Befehlsteil
VB. Im Ausgang Z erscheint das Ergebnis der Verknüpfung, das in das
Register RA oder RB zurückgeschrieben wird. Diese Schaltung entspricht
genau einem 4-zu-1-Multiplexer, dessen IEC-Symbol in Fig. 5 gezeigt wird
(siehe Anspruch 2).
Fig. 6 zeigt die Wahrheitstabelle des Rechenwerks (12). In der Tabelle
eingetragen sind 0 und 1 als logische Zustände sowie X als Kennzeichen
dafür, daß es egal ist, ob eine 0 oder eine 1 eingetragen wird. Mit Hilfe
dieser Wahrheitstabelle wurde die Wahrheitstabelle für die Verknüpfung
zweier Register (Fig. 3) erzeugt.
Es können im Programm 26 = 64 Sprungmarken gesetzt werden. In der
Sprungmarkentabelle (5), auf die bei Sprungbefehlen zugegriffen wird, sind die
Adressen eingetragen, die jeder Sprungmarke zugeordnet sind (siehe Anspruch
3). Die Sprungmarken sind hier auf Assembler-Ebene genauso zu handhaben
wie die Labels der Hochsprachen und ersetzen die Sprungbefehle und
Unterprogrammaufrufe anderer Mikroprozessoren.
Sprungmarken können auf zwei Arten in die Sprungmarkentabelle (5)
eingetragen werden: Erstens durch Setzen im Mode S, d. h. der aktuelle Stand
des Adreßzählers (4) wird während der Verknüpfung der Register RA und RB
bei der im Befehl unter MARKE angegebenen Sprungmarke eingetragen. Die
zweite Möglichkeit ist die Definition der genauen Adresse unter Mode DEFA0,
DEFA1 oder DEFA2. Dabei kann keine Verknüpfung der Register RA und RB
erfolgen, da sich die Befehlsteile RA, RB, VA und VB mit dem Befehlsteil
ADRESSE und MODUS überschneiden.
Mit Mode NULL und EINS können bedingte Sprünge erzeugt werden. Dabei
wird mit MARKE die (Ziel-) Sprungmarke angegeben. Unter Mode NULL
erfolgt der Sprung, wenn Register RA nach Verknüpfung 0 ist, unter Mode
EINS, wenn Register RA nach Verknüpfung 1 ist. Unbedingte Sprünge können
dadurch erzeugt werden, daß der Inhalt des Registers RA für den Sprung im
Mode NULL 0 oder für den Sprung im Mode EINS 1 gesetzt wird.
Sinnvoll ist es, einer bestimmten Sprungmarke eine besondere Stellung
einzuräumen. Damit ein Rücksprung von einem Interrupt oder einem Test ins
Programm möglich ist, wird diese Sprungmarke (Rücksprungmarke) im
normalen Programm, soweit es möglich ist, ständig mit der aktuellen Adresse
aufgefrischt (außer während der Abarbeitung eines Interrupts). Das
Interruptprogramm wird dann mit einem Sprung zur Rücksprungmarke
beendet. Da es aber zum Beispiel während eines normalen Sprunges nicht
möglich ist, die Rücksprungmarke mit der aktuellen Adresse aufzufrischen,
sorgt die Interruptlogik (6) im Mikroprozessor dafür, daß dies automatisch
geschieht, solange kein Interrupt eintritt. Tritt ein Interrupt ein, so wird dies
erkannt und die Interruptlogik (6) stoppt die automatische Speicherung der
aktuellen Adresse in der Rücksprungmarke. Sie fährt erst damit fort, wenn
ein Sprung zur Rücksprungmarke erfolgt, weil sie dies dann als Rücksprung
aus dem Interrupt interpretiert.
Damit Interrupts geschachtelt werden können, wird anstelle eines einfachen
Speicherregisters in der Sprungmarkentabelle (5) ein LIFO-Speicher
(Kellerspeicher) (Hardware-Stack) für die Rücksprungmarke verwendet.
(vorzugsweise bei Sprungmarke 0) (siehe Anspruch 17). Tritt ein Interrupt auf,
so wird der Wert des Adreßzählers (4) in den LIFO-Speicher übertragen. Tritt
jetzt noch ein (höherwertiger) Interrupt während der Abarbeitung dieses
Interruptprogrammes auf, so wird das aktuelle Interruptprogramm verlassen
und der Adreßzähler (4) automatisch in den LIFO-Speicher gerettet. Ist das
zweite Interruptprogramm beendet, gelangt man durch einen Sprung zur
Rücksprungmarke ins erste Interruptprogramm, das wiederum auch durch
einen Sprung zur Rücksprungmarke beendet wird. Einen Sprung zur
Rücksprungmarke kann man daher in der Wirkung einem "Return from
Interrupt"-Befehl herkömmlicher Mikroprozessoren gleichsetzen.
Die Vorteile dieser Methode, Sprungmarken zu verwenden, sind vielfältig. Die
Unterscheidung von absoluter und relativer Adressierung und von Sprüngen
und Unterprogrammaufrufen ist nicht mehr nötig. Es kann somit viel flexibler
programmiert werden und es werden Programmstrukturen möglich, die
konventionellen Mikroprozessoren verschlossen bleiben. Dabei muß darauf
geachtet werden, daß die Gefahren, die durch unsaubere Programmierung
von Schleifen und Sprüngen entstehen, durch spezielle, auf diesen
Mikroprozessor zugeschnittene Compiler vermieden werden.
Nun soll die Schnittstelle des Mikroprozessors zur Außenwelt erläutert
werden. Sie besteht im wesentlichen aus Registern, aus denen Außenleitungen
(8) nach außen geführt sind. Sie werden Portregister (13) genannt (siehe
Anspruch 4). In diesem Beispiel sind es 32 der 256 Register. Fig. 7 zeigt die
Organisation der Register des Arbeitsspeichers (1), von denen die Register 0
bis 3 von der Interruptlogik (6) als Interrupteingangsregister (9) gebraucht
werden und Register 4 bis 35 eine Außenleitung (8) haben und somit als
Schnittstelle benutzt werden können. Die Interrupteingangsregister (9) können
nur gelesen werden.
Eine Außenleitung (8) kann im einfachsten Falle an ein Portregister (13) so
angeschlossen sein, daß sie nur als Eingang oder nur als Ausgang dient, so
daß das Portregister (13) nur als Eingangs- oder Ausgangspuffer dient.
Um einen Informationsfluß in beide Richtungen zu ermöglichen, werden, wie
es in Fig. 8 gezeigt wird, die Außenleitungen (8) als Open-Drain-Ausgang
des Flip-Flops (27) (optional mit internem, sonst mit externem Pull-Up-
Widerstand) aus dem Portregister (13) geführt. Dabei hat eine 0 immer
Vorrang, ob sie von der Software in das Flip-Flop (27) geschrieben wird (die
Außenleitung (8) geht dann auf Low), oder ob die Außenleitung (8) von außen
auf Low gehalten wird. Damit auch dies vom Mikroprozessor erkannt wird,
wird bei Lesezugriffen auf das Portregister (13) die Außenleitung (8) über die
Registerleseleitung (21) abgefragt und nicht der Zustand des Flip-Flops (27)
(siehe Anspruch 5).
Das bedeutet, daß jedes Portregister (13) mehrere Funktionen gleichzeitig
wahrnehmen kann. Es kann als reines Speicher-Register genutzt werden; in
diesem Fall muß man die Außenleitung (8) von außen unbeschaltet lassen.
Andererseits kann jedes Portregister (13) auch als Eingang, Ausgang und
kombinierter Ein- und Ausgang benutzt werden. Will man ihn als Eingang
verwenden, so muß natürlich per Programm eine 1 ins Portregister (13) und
somit in das Flip-Flop (27) eingetragen werden, damit die Außenleitung (8)
für Signale von außen frei wird.
Ein solcher Aufbau schafft die Voraussetzung für eine flexible Schnittstelle,
die einen Informationsfluß in beide Richtungen erlaubt. Ist es aber erwünscht,
daß die Schnittstelle per Software wahlweise als Eingang, als Ausgang, als
Ein- und Ausgang oder inaktiv geschaltet wird, so sind nur geringfügige
Änderungen nötig.
Fig. 9 zeigt schematisch den Aufbau einer solchen Schnittstelle. Fig. 10
zeigt in Tabellenform die verschiedenen Betriebsmodi dieser Schnittstelle.
Dabei bedeutet X, daß der Zustand beliebig ist (Low oder High), Z, daß der
Zustand der Außenleitung (8) hochohmig ist, Z0, daß die Außenleitung (8)
hochohmig, doch von außen auf Low gehalten ist, und Z1, daß die
Außenleitung (8) hochohmig, doch von außen auf High gehalten ist.
Das Speicherelement des Registers ist das Flip-Flop (27), das mit der
Taktleitung (25) getaktet wird, und dessen D-Eingang mit der Registerschreib
leitung (26) verbunden ist. Ist das Portausgangsregister (16) und somit auch
die daran angeschlossene Portausgangsleitung (23) High, so kommt das Signal
am Ausgang des Flip-Flops (27) unverändert durch das OR-Gatter mit
Open-Drain-Ausgang (28) und die Außenleitung (8) wird je nach Zustand des
Flip-Flops (27) Low oder hochohmig. Wird das Portausgangsregister (16)
dagegen Low, so wird die Außenleitung (8) unabhängig vom Zustand des
Flip-Flops (27) hochohmig und kann somit nur noch als Eingang benutzt
werden (siehe Anspruch 7).
Dem Portleseregister (17), und somit auch der daran angeschlossenen
Portleseleitung (24) kommt eine andere Aufgabe zu: ihr ist ein Multiplexer in
Form von zwei AND-Gattern (18 und 19) und einem OR-Gatter (20)
nachgeschaltet, an dessen Ausgang die Registerleseleitung (21) des
Portregisters (13) angeschlossen ist. Durch den Multiplexer kann man
auswählen, ob bei einem Lesezugriff auf das Portregister (13) das Flip-Flop
(2) (das Portleseregister (17) ist High) oder die Außenleitung (8) (das
Portleseregister (17) ist Low) durch die Registerleseleitung (21) abgefragt wird
(siehe Anspruch 6).
Durch das Portausgangsregister (16) und das Portleseregister (17) sind für ein
Portregister (13) vier Betriebszustände möglich. Die Wahrheitstabelle in Fig.
10 soll darüber Auskunft geben.
Im Mode 1 (Portausgangs- (16) und Portleseregister (17) Low) dient die
Außenleitung (8) als reiner Eingang, weil sie hochohmig geschaltet ist und bei
einem Lesezugriff abgefragt wird. Man kann zwar ins Flip-Flop (27) schreiben,
kann aber seinen Inhalt nicht auslesen.
Im Mode 2 (Portausgangsregister (16) Low und Portleseregister (17) High) ist
die Außenleitung (8) vom Portregister (13) vollkommen abgekoppelt; sie ist
hochohmig und dient weder als Ein- noch als Ausgang und das Portregister (13)
unterscheidet sich nicht mehr von den anderen Registern des Arbeitsspeichers
(1) im Mikroprozessor, die keine Außenleitung (8) haben.
Im Mode 3 (Portausgangsregister (16) High und Portleseregister (17) Low) wird
die Außenleitung (8) zum kombinierten Ein- und Ausgang, da der Ausgang
aktiv ist und bei einem Lesezugriff auf die Außenleitung (8) zugegriffen wird.
Im Mode 4 (Portausgangs- (16) und Portleseregister (17) High) wird die
Außenleitung (8) nur als Ausgang benutzt, da der Ausgang aktiv ist, und beim
Lesezugriff der Inhalt des Flip-Flops (27) unabhängig vom Zustand der
Außenleitung (8) abgefragt wird. Man kann nun, da die Außenleitung (8) ein
reiner Ausgang ist, für diesen Betriebszustand vorsehen, daß sie nicht
hochohmig, sondern High ist, wenn eine 1 im Flip-Flop (27) gespeichert ist;
dafür muß noch ein Transistor (29) zwischen Außenleitung (8) und der
positiven Versorgungsspannung geschaltet werden. Eine Steuerlogik in Form
eines AND-Gatters (22) sorgt dann dafür, daß er nur dann durchschaltet,
wenn das Portausgangsregister (16) High ist UND das Portleseregister (17)
High ist UND das Flip-Flop (27) High ist (siehe Anspruch 8).
Es ist zweckmäßig, mit einem Portausgangsregister (16) und einem
Portleseregister (17) mehrere Portregister (13) anzusteuern, die dann zu einem
Port zusammengefaßt sind.
Zwischen den Betriebszuständen beliebig umschalten zu können hat auch den
Vorteil, daß bei Außenleitungen (8), die als Eingänge dienen, auf
Zwischenspeicher verzichtet werden kann. Gäbe es nicht die vier Modi, so
müßte unter Umständen der Inhalt eines Portregisters (13) erst in ein anderes
Register kopiert werden, damit man es weiter verarbeiten kann. So kann man
aber die Außenleitung (8) in Mode 1 abfragen und das Ergebnis der
Verknüpfung ins Flip-Flop (27) des Portregisters (13) zurückschreiben, ohne
daß die Außenleitung (8) dadurch beeinflußt wird. Ist die erste
Verknüpfungsstufe durchgearbeitet, so kann anschließend per Programm in
Mode 2 umgeschaltet werden, um das Ergebnis, das im Flip-Flop (27) des
Portregisters (13) steht, auszulesen und weiterzuverarbeiten. Erläutert wird
diese Möglichkeit später anhand des Programmierbeispiels 1.
Um schnell auf Ereignisse reagieren zu können, muß im Mikroprozessor eine
spezielle Interruptstruktur geschaffen werden, sofern man sich nicht auf das
sehr langsame Interrupt-Polling beschränken will. Als Interrupteingänge (9)
werden Interrupteingangsregister (14) verwendet (siehe Anspruch 9). Das sind
Register mit Außenleitung (8), die aber als reine Eingänge verwendet werden
und folglich nicht beschrieben werden können.
Die Interrupts werden gehandhabt, wie es auch in Fig. 11 dargestellt ist:
Durch das Interruptflankenregister wird festgelegt, ob der betreffende Interrupt bei einer Flanke oder einem Pegel eintritt (siehe Anspruch 10). Ob die Flanke positiv oder negativ ist, bzw. ob der Pegel High oder Low ist, wird durch das Interruptpegelregister festgelegt (siehe Anspruch 11). Mit dem Interruptfreigaberegister kann ein Interrupt gesperrt, bzw. freigegeben werden (siehe Anspruch 12).
Durch das Interruptflankenregister wird festgelegt, ob der betreffende Interrupt bei einer Flanke oder einem Pegel eintritt (siehe Anspruch 10). Ob die Flanke positiv oder negativ ist, bzw. ob der Pegel High oder Low ist, wird durch das Interruptpegelregister festgelegt (siehe Anspruch 11). Mit dem Interruptfreigaberegister kann ein Interrupt gesperrt, bzw. freigegeben werden (siehe Anspruch 12).
Wird nun ein Interrupt erkannt, so wird das zum Interrupt gehörige
Interruptregister gesetzt (siehe Anspruch 13). Der Organisation der Interrupt
pegelregister, -flankenregister und -freigaberegister sind keine festen Grenzen
gesetzt, da eines dieser Register mehrere Interrupteingänge (9) und somit
Interrupteingangsregister (14) und Interruptregister kontrollieren kann. Damit
bei zeitkritischen oder besonders wichtigen Programmteilen, wie z. B. auch
Interruptroutinen, alle Interrupts gesperrt werden können, gibt es das
Interruptgesamtfreigaberegister, das die Auslösung aller Interrupts unabhängig
von ihren jeweiligen Interruptfreigaberegistern sperren kann.
Der Interruptsprungvektor, der auf das Interruptprogramm im Befehlsspeicher
(7) zeigt, kann auf zwei Weisen erzeugt werden, nämlich indem die
Interruptlogik (6) die Interruptregister miteinander so verknüpft, daß sie:
- - die Nummer einer Sprungmarke (Interruptmarkenvektor) (siehe Anspruch 14)
oder - - die Vektoradresse (Interruptadreßvektor) (siehe Anspruch 15) erzeugen.
Das Interruptvektorregister (siehe Anspruch 16 und Fig. 11) trifft die Wahl,
ob der Interruptsprungvektor von der Interruptlogik (6) als ein Interrupt
markenvektor oder als ein Interruptadreßvektor interpretiert wird. Ist der
Interruptsprungvektor ein Interruptmarkenvektor, so veranlaßt die
Interruptlogik (6) mit Hilfe der Sprungmarkentabelle (5) einen Sprung zu der
betreffenden Sprungmarke, ist er dagegen ein Interruptadreßvektor, so
veranlaßt die Interruptlogik (6) einen Sprung zur (absoluten) Adresse.
Dabei gibt es wiederum mehrere Möglichkeiten, bei gleichzeitig eintretenden
Interrupts vorzugehen:
- - Nur der Interrupt mit der höchsten Priorität wird berücksichtigt. Die Interruptlogik (6) formt die Nummer des Interrupts mit der höchsten Priorität zum Interruptsprungvektor.
- - Die Interruptlogik (6) formt alle Interruptregister zum Interruptsprungvektor. Zum Beispiel soll es vier Interrupteingänge (9) geben. Am Interrupteingang (9) 0 und 2 wurde gleichzeitig ein Interrupt erkannt: Interruptregister 0 und 2 sind deshalb High. Die Interruptlogik (6) formt das Bitmuster, das die Interruptregister bilden (0101B; 0 = kein Interrupt; 1 = Interrupt; entspricht der Zahl 5D) in den Befehl um, zu einer Marke oder zu einer Adresse zu springen, die der Interruptzahl 5 entspricht. Das Interruptvektorregister entscheidet darüber, ob zur Sprungmarke 5 oder zur Adresse 5 gesprungen wird.
Gestalterischer Freiraum bleibt bei der Zuordnung der Prioritäten unter den
Interrupts. Von besonderem Vorteil ist es, wenn alle Interrupts
gleichberechtigt sind und auch gleichzeitig bearbeitet werden können. Dies
geschieht dadurch, daß für jede denkbare Kombination gleichzeitig eintretender
Interrupts ein eigenes Interruptprogramm geschaffen wird.
Oft besteht auch das Problem, mehrere Register gleichzeitig auf bestimmte
Werte hin zu testen und entsprechend im Programm mehrfach zu verzweigen.
Für diesen Fall steht die Testlogik (10) bereit, die aus dem Inhalt von
Registern des Arbeitsspeichers (1) einen Sprungvektor (Testsprungvektor)
formt, wenn sie durch das Testregister (43) aktiviert wird, indem z. B. eine 1
in dieses Register geschrieben wird. Nach dem Sprung wird dieser Wert
wieder gelöscht.
Der Testsprungvektor dient entweder als Angabe, zu welcher Sprungmarke
(Testmarkenvektor) (Anspruch 19) oder zu welcher absoluten Adresse
(Testadreßvektor) (Anspruch 20) gesprungen wird. Bei den Testmarkenvektoren
handelt es sich genauso wie bei den Interruptsprungvektoren um eine
definierte Anzahl von Sprungmarken der Sprungmarkentabelle (5), und bei den
Testadreßvektoren um einen definierten Adreßraum im Befehlsspeicher (7). Um
auszuwählen, ob der Testsprungvektor nun ein Testmarken- oder ein
Testadreßvektor ist, gibt es das Testvektorregister (44) (Anspruch 21).
Mit dem Testauswahlregister (45), das vorzugsweise so breit ist, daß es den
gesamten Arbeitsspeicher (1) adressieren kann, wird ein Register des
Arbeitsspeichers (1) ausgewählt (Anspruch 22). Mit dem Testlängenregister (46)
wird festgelegt, wieviel Speicherstellen (z. B. in aufsteigender Reihenfolge) ab
dem Register, das durch das Testauswahlregister (45) ausgewählt wurde, für
die Bildung des Testsprungvektors berücksichtigt werden (Anspruch 23).
Das Teststatusregister (47) legt zum Zeitpunkt des Tests, d. h. zu dem
Zeitpunkt, an dem die Testlogik (15) aktiviert wird, fest, ob der Test eine
normale Programmverzweigung ist, oder aber den Status eines
Softwareinterrupts bekommt (Anspruch 24). Im zweiten Fall muß bei jedem
Test die aktuelle Adresse in der Interruptrücksprungmarke gespeichert
werden, so daß nach Abarbeitung der Testroutine wie nach einem
Interruptaufruf durch einen Sprung zur Rücksprungmarke ins Programm
zurückgekehrt werden kann.
Der Interruptsprungvektor wird im Gegensatz zum Testsprungvektor nur aus
den Interruptregistern gebildet, während beim Testsprungvektor durch das
Testauswahl- (45) und das Testlängenregister (46) die Wahl offensteht. Damit
keine Kollision von Testsprungvektoren mit Interruptsprungvektoren möglich
ist, z. B. wenn während eines Tests ein Interrupt auftritt, hat ein Interrupt
gegenüber einem Test Vorrang. Und um eine Überschneidung von einem Test
und einem normalen Sprung unmöglich zu machen, wird ist ein Test nur im
Mode S (Setzen der Sprungmarke) erlaubt.
Um Daten einlesen oder abspeichern zu können, kann der Mikroprozessor über
die Datenübertragungslogik (10) auf den Datenspeicher (11) zugreifen (siehe
Anspruch 25. Die Datenübertragung ist dabei nicht auf ein Bit beschränkt, da
die Datenübertragungslogik (10) imstande ist, je nach erforderlicher
Datenbreite mehrere Register des Arbeitsspeichers (1) anzusprechen (siehe
Anspruch 26). Dafür verfügt die Datenübertragungslogik (10) über einen
Datenzähler (30), der in den Befehlsmodi DEFD0, DEFD1 und DEFD2 geladen
werden kann.
Fig. 13 zeigt den schematischen Aufbau der Datenübertragungslogik (10).
Durch das Datenrichtungsregister (34) wird festgelegt, ob der Datenzähler (30)
Daten aus dem Arbeitsspeicher (1) in den Datenspeicher (11) schreibt, oder ob
die Daten aus dem Datenspeicher (11) in den Arbeitsspeicher (1) eingelesen
werden sollen (siehe Anspruch 27). Wird ein bestimmter Wert (Low oder
High) ins Datenzähleraktivierungsregister (32) geschrieben, so erfolgt im
Anschluß darauf eine einmalige Datenübertragung zwischen Datenspeicher (11)
und Dateneingabe- (35), bzw. Datenausgaberegister (39) (siehe Anspruch 28).
Dieses Datenzähleraktivierungsregister (32) wird anschließend automatisch
nach dem Zugriff wieder gelöscht. Wünscht man dagegen eine dauernde
Übermittlung der Daten, so muß das Datenzählerdaueraktivierungsregister (33)
gesetzt werden. Dann überträgt die Datenübertragungslogik (10) Daten
zwischen Datenspeicher (11) und Dateneingabe- (35), bzw. Datenausgaberegister
(39), bis das Datenzählerdaueraktivierungsregister (33) per Software gelöscht
wird (siehe Anspruch 29).
Durch das Datenzählersteuerregister (31) kann man festlegen, ob mit jedem
Zugriff auf den Datenspeicher (11) der Datenzähler (30) inkrementiert,
dekrementiert oder gleichbleiben soll (siehe Anspruch 27).
Die Datenübertragungslogik (10) steuert den Arbeitsspeicher (1)
folgendermaßen an: Bei einem Lesezugriff auf den Datenspeicher (11) schreibt
sie die Daten in das Dateneingaberegister (35) (siehe Anspruch 31), bei einem
Schreibzugriff auf den Datenspeicher (11) liest sie die Daten aus dem
Datenausgaberegister (39) (siehe Anspruch 32). Dabei kann natürlich das
Dateneingaberegister (35) und das Datenausgaberegister (39) physikalisch das
selbe sein und auch mehrere Bit breit sein, d. h. mehrere Register des
Arbeitsspeichers (1) umfassen (siehe auch Anspruch 26), da die Daten
übertragungslogik (10) Daten mit einer Breite von mehreren Bit verarbeiten
kann.
Eine flexiblere Alternative ist die Verwendung eines Dateneingabeauswahl
registers (36) sowie eines Datenausgabeauswahlregisters (40). Durch das
Dateneingabeauswahlregister (36) kann per Programm das Dateneingaberegister
(35) aus dem Arbeitsspeicher (1) ausgewählt werden (siehe Anspruch 33).
Durch das Datenausgabeauswahlregister (40) kann per Programm das
Datenausgaberegister (39) aus dem Arbeitsspeichers (1) ausgewählt werden
(siehe Anspruch 34).
Durch das Dateneingaberichtungsregister (37) wird festgelegt, ob der Inhalt
des Dateneingabeauswahlregisters (36) bei jeder Datenübertragung um einen
bestimmten Betrag erhöht, verringert oder nicht verändert wird (siehe
Anspruch 35). Durch das Datenausgaberichtungsregister (41) wird festgelegt,
ob der Inhalt des Datenausgabeauswahlregisters (40) bei jeder
Datenübertragung um einen bestimmten Betrag erhöht, verringert oder nicht
verändert wird (siehe Anspruch 36).
Das Dateneingabelängenregister (38) bestimmt durch seinen Inhalt die Breite
des zu übertragenden Wortes aus dem Datenspeicher (11) in das
Dateneingaberegister (35) und gibt somit auch die Schrittweite des
Datenzählers (30) und des Dateneingabeauswahlregisters (36) vor (siehe
Anspruch 37).
Das Datenausgabelängenregister (42) bestimmt durch seinen Inhalt die Breite
des zu übertragenden Wortes aus dem Datenausgaberegister (39) in den
Datenspeicher (11) und gibt somit auch die Schrittweite des Datenzählers (30)
und des Datenausgabeauswahlregisters (40) vor (siehe Anspruch 38).
Um den Mikroprozessor vielseitig programmieren zu können, kann auf die
einzelnen Bits des Adreßzählers (4) und jedes Datenzählers (30) zugegriffen
werden wie auf ein normales Register des Arbeitsspeichers (1) (siehe
Ansprüche 39 und 40). Auf den Adreßzähler (4) kann man jedoch nur lesend
zugreifen.
Damit nicht, wie in diesem Beispiel nur zwei einzelne Bits miteinander
verknüpft werden, kann man vorsehen, daß mit jedem Befehlswort nicht nur
zwei, sondern 3 oder mehr Register miteinander verknüpft werden. In diesem
Fall steigt die Anzahl der benötigten Rechenwerke (12) linear, die Breite des
Befehlswortes jedoch exponentiell nach der Funktion , wobei n die Anzahl
der Register ist, die verknüpft werden sollen.
Eine Alternative besteht darin, daß in jedem Befehlswort mehrere
Registergruppen (vorzugsweise Paare, wie in diesem Beispiel) angegeben
werden, die jeweils unabhängig voneinander einer eigenen Verknüpfung
unterzogen werden.
Für den Fall, daß der Mikroprozessor als Slave-Prozessor in einem System
von Mikroprozessoren eingesetzt wird, hat er eine Vorrichtung, die es ihm
ermöglicht, seinen internen oder externen Befehlsspeicher (7) aus einem
anderen externen Speicher (selbst) zu übertragen oder übertragen zu lassen
(Down-Loading). Ebenso kann mit dieser Vorrichtung sein Befehlsspeicher (7)
ausgelesen werden (siehe Anspruch 41).
Eine ähnliche Vorrichtung ermöglicht es dem Mikroprozessor, Daten aus
seinem internen oder externen Datenspeicher (11) in einen, bzw. aus einem
anderen externen Speicher zu übertragen oder übertragen zu lassen
(Down-Loading) (siehe Anspruch 42).
Da der Mikroprozessor einen sehr einfachen inneren Aufbau hat und ohne
Mikrocode-Steuerung auskommt, ist es leicht möglich, für den Ablauf
prozessorinterner Operationen auf eine Synchronisierung durch ein von außen
eingespeistes Taktsignal zu verzichten, um die maximal erreichbare Rechen
geschwindigkeit auszuschöpfen (siehe Anspruch 43).
Der Mikroprozessor ist dafür gedacht, die Aufgaben eines Mikrocontrollers zu
übernehmen oder in großen Netzwerken eingesetzt zu werden. In letzterem
Fall ist es günstig, ihn von einem Mikroprozessor herkömmlicher Bauart
kontrollieren zu lassen, so daß das Netzwerk von Mikroprozessoren nur
bestimmte Rechenaufgaben übernimmt und das Ergebnis an den Mikroprozessor
herkömmlicher Bauart weiterleitet.
Anhand der nachfolgenden Beispiele soll gezeigt werden, wie der
Mikroprozessor trotz seines einfachen Aufbaus für Steuerungsaufgaben
geeignet ist. Mehrere ausführliche und kommentierte Programmbeispiele
werden die Funktionsweise des Mikroprozessors noch verdeutlichen. Zunächst
jedoch müssen seine genauen Spezifikationen festgelegt werden.
Der Mikroprozessor hat einen wie in Fig. 2 gezeigten 32 Bit breiten
Befehlsbus und dekodiert die Befehle wie es weiter oben beschrieben wurde.
Sein Arbeitsspeicher besteht aus 256 Register, deren Organisation in der
folgenden Tabelle aufgeschlüsselt ist:
Nach Anlegen der Betriebsspannung an den Chip und nach einem Reset sind
alle Register Low. Interruptrücksprungmarke ist die Sprungmarke 0,
Sprungmarken 1 bis 15 sowie Adresse 1 bis 15 sind für die Interruptvektoren
reserviert. Die Sprungvektoren werden direkt aus der binären Zahl generiert,
die die vier Interruptregister IR0 bis IR3 bilden; es gibt also 15 Sprungvektoren,
von 1 bis 15 numeriert. Der Interruptsprungvektor 0 tritt nicht auf, da er
bedeuten würde, daß kein Interrupt vorliegt. Die Sprungmarken 16 bis 31 sind
für die Testmarkenvektoren, Adresse 16 bis 31 für die Testadreßvektoren
reserviert. Sprungmarke 16 und Adresse 16 entsprechen dem Testwert 0,
Sprungmarke 17 und Adresse 17 dem Testwert 1, etc.
Die Interruptfreigaberegister IF0 bis IF3 sperren die Interrupterkennung und
somit auch die Interruptauslösung der einzelnen Interrupts, während das
Interruptgesamtfreigaberegister IGF nur die Interruptauslösung aller Interrupts
sperrt. Wird ein Interrupt erkannt, während das Interruptgesamtfreigaberegister
IGF Low ist, so wird der Interrupt gespeichert und erst dann ausgelöst, wenn
das Interruptgesamtfreigaberegister IGF wieder High und bis dahin das
zugehörige Interruptfreigaberegister noch High ist.
Durch das Dateneingabelängen- (38), das Datenausgabelängen- (42) und das
Testlängenregister (46) werden jeweils zusätzlich zu dem im Dateneingabe
auswahl- (36), Datenausgabeauswahl- (40) und Testauswahlregister (45)
ausgewählten Registern die darauffolgenden Register in aufsteigender
Reihenfolge adressiert.
Wenn in einem Befehl die Sprungmarke 0 (also die Rücksprungmarke) unter
Mode S gesetzt wird, so hat dies keine Auswirkungen auf die Sprungmarke,
da diese Sprungmarke ausschließlich von der Interruptlogik (6) und der
Testlogik (15) kontrolliert wird. Es bedeutet nur, daß an dieser
Programmstelle eigentlich keine Sprungmarke gesetzt werden muß.
Der Aufbau des hier verwendeten Assemblers ist sehr einfach, da er sich sehr
stark an die Befehlsstruktur (siehe Fig. 2) anlehnt. Als erstes kommt
(optional), mit einem M markiert, die Nummer der Sprungmarke, die im
Mode S in diesem Befehl gesetzt wird oder im Mode DEFA in einem vorigen
Befehl definiert wurde. Danach wird die Adresse angegeben.
Anschließend kommen, jeweils durch ein Komma getrennt, die zwei Register
RA und RB, dann die Verknüpfungen VA und VB (durch ein V markiert) (siehe
auch Fig. 3), die Sprungmarkennummer (durch ein M markiert) und
schließlich die Angabe, welcher Mode gewählt ist. Ist der Mode DEF gewählt
(Sprungmarke oder Datenzähler definieren), so wird die Adresse davor mit
einem A markiert angegeben. Hinter dem Strichpunkt steht ein Kommentar.
Mit Hilfe der EQU-Anweisung kann man den Registern des Mikroprozessors
Namen geben. Hierzu ein Beispiel:
Hier wird bei Adresse 05 die Sprungmarke 2 im Mode S auf Adresse 05
gesetzt, die Register P0.0 und R129 werden jeweils der Verknüpfung 5 und 3
unterzogen, was praktisch bedeutet, daß ihre Inhalte vertauscht werden. Auf
Adresse 06 wird die Sprungmarke 3 im Mode DEFA0 auf Adresse 01235 gesetzt.
Im ersten Programmbeispiel simuliert der Mikroprozessor einen 2-zu-4-
Dekoder. Fig. 14 zeigt das Schaltzeichen und Fig. 15 den Schaltplan des
Dekoders. Hierfür dienen Port P0 als Eingang und Port P1 als Ausgang. Es
sind A0 = P0.0, A1 = P0.1, = P0.2, = P1.0, = P1.1, = P1.2, = P1.3.
Programm Dekoder 1:
A0 EQU P0.0
A1 EQU P0.1
E EQU P0.2
Y0 EQU P1.0
Y1 EQU P1.1
Y2 EQU P1.2
Y3 EQU P1.3
A0 EQU P0.0
A1 EQU P0.1
E EQU P0.2
Y0 EQU P1.0
Y1 EQU P1.1
Y2 EQU P1.2
Y3 EQU P1.3
Der Einfachheit halber wurde hier bei der Benennung der Anschlüsse des
Dekoders auf die Negationsstriche verzichtet. Als erstes muß zu einer Adresse
gesprungen werden, die außerhalb des Bereiches liegt, der von Interrupt- und
Testsprungvektoren beansprucht wird.
Anschließend werden Port P0 als Eingang und Port P1 als Ausgang definiert
und die Ausgänge des Dekoders alle High (= inaktiv) gesetzt:
Am einfachsten ist es nun, den Schaltplan in Fig. 15 und die dazugehörigen
boolschen Gleichungen für jeden Ausgang zu betrachten:
Um die Reihenfolge zu verdeutlichen, mit der der Mikroprozessor in diesem
Programmbeispiel die Verknüpfungen vornimmt, wurden die Klammern gesetzt.
Hier wird das Ergebnis der Verknüpfung von A0 und A1, in die Flip-Flops (27)
der Register P0.0 und P0.1 geschrieben, ohne daß es einen Einfluß auf die
Außenleitungen (8) der Portregister (13) hätte. Sie wurden als Eingänge
definiert, da Portausgangsregister (16) PA0 High ist und sind somit hochohmig
(siehe dazu auch Fig. 10). Um den Inhalt der Flip-Flops (27) dieser beiden
Portregister (13) nun auszulesen, muß das Portleseregister (17) PL0 von der
Außenleitung (8) auf das Flip-Flop (27) der Portregister (13) (also von Low
auf High) umgeschaltet werden. Dies geschieht in der nächsten Programmzeile:
Jetzt können die Ergebnisse der ersten Verknüpfung von A0 und A1 mit E
verknüpft werden:
Nun werden die zwei ersten Ergebnisse in die Portregister (13) Y0 und Y1
übertragen. Wenn eines der beiden Ergebnisse Y0 oder Y1 Low ist, wird
gleichzeitig ein Sprung nach M32 veranlaßt, da bei diesem Dekoder nur ein
Ausgang aktiv (Low) sein kann. Damit ist dann die Schleife geschlossen.
Nun müssen die Ergebnisse Y2 und Y3 errechnet werden. Dies erfolgt analog:
Im nächsten Programmierbeispiel wird versucht, das Problem des 2-zu-4-
Dekoders mit einem Test zu lösen. Die Ausgänge des Dekoders werden in
Funktion der drei Eingangswerte gesetzt.
Programm Dekoder 2:
In der Initialisierungsroutine wird PA1 High (Ausgang) gesetzt. Dann wird das
Testauswahlregister (45) so gesetzt, daß es auf P0.0 (= R4) zeigt, das
Teststatusregister TS (47) High gesetzt (Softwareinterrupt) und das
Testlängenregister (46) mit dem Wert 3 geladen, weil 3 Eingänge getestet
werden.
Das Testvektorregister TV ist Low und somit sind die Testsprungvektoren
Sprungmarken. Als nächstes werden die Testsprungmarken definiert.
Da nun die Initialisierung abgeschlossen ist, wird eine Endlosschleife
programmiert und das Testregister T (43) aktiviert.
Jetzt werden die acht Testprogramme beschrieben. In diesen Testprogrammen
werden die Ausgangsleitungen (8) Y0 bis Y3 des Dekoders gesetzt und dann
mit einem Sprung zur Rücksprungmarke 0 das Testprogramm verlassen und in
die Endlosschleife zurückgesprungen.
Am nächsten Programmierbeispiel soll gezeigt werden, wie die Interrupts und
die Datenübertragungslogik (10) funktionieren. Dafür wird der Mikroprozessor
wie in Fig. 16 verschaltet und als Datenlogger programmiert, der in einem
bestimmten Zeitabstand Daten (48) und (49) an den Ports P0 und P1 einliest
und sie im Datenspeicher (11) abspeichert. Bei jeder steigenden Flanke des
Taktgenerators (50) am Takteingang IE0 müssen sie vom Mikroprozessor (51)
eingelesen werden.
Während der Initialisierung werden die Datenzählersteuerregister DS0 und DS1
(31) auf Inkrementieren, die Datenausgabelängenregister DAL0 und DAL1 (42)
auf 8 Bit gestellt, das Datenrichtungsregister (34) auf Ausgabe geschaltet,
und das Datenausgabeauswahlregister (40) auf P0.0 eingestellt. Ferner werden
die Datenausgaberichtungsregister DAR0 und DAR1 (41) auf Inkrementieren
gestellt und der Interruptmarkenvektor M1 definiert.
Jetzt kann Interrupt 0 freigegeben und eine Endlosschleife programmiert
werden.
Im Interruptprogramm wird der Interrupt gesperrt und zweimal das
Datenzähleraktivierungsregister (32) geladen, damit P0 und P1 nacheinander in
den Datenspeicher (11) übertragen werden. Dann wird das Datenausgabeauswahl
register (40), das nach der ersten und zweiten Übertragung je um acht
inkrementiert wurde, erneut so geladen, daß es auf P0.0 zeigt und das
Interruptprogramm mit einem Rücksprung in die oben programmierte
Endlosschleife beendet.
Claims (44)
1. Mikroprozessor, dadurch gekennzeichnet, daß er mindestens ein Rechenwerk
(12) enthält, das mehrere bitweise ansprechbare Register aus dem
Arbeitsspeicher (1) des Mikroprozessors mit allen möglichen Kombinationen
nach den Rechenregeln der booleschen Algebra verknüpfen kann.
2. Mikroprozessor nach Anspruch 1 dadurch gekennzeichnet, daß das
Rechenwerk (12) nach Anspruch 1 im Kern aus einem Multiplexer besteht, an
dessen Selektionseingängen die Registerleseleitungen (21) angeschlossen
werden, an dessen Dateneingängen die binär kodierte Verknüpfungsnummer
eingespeist wird, und an dessen Ausgang das Ergebnis der Verknüpfung
bereitsteht.
3. Mikroprozessor nach Ansprüchen 1 oder 2 dadurch gekennzeichnet, daß er
eine Sprungmarkentabelle (5) enthält, bei der unter bestimmten Sprungmarken
nummern Adressen eingetragen und ausgelesen werden können, so daß es bei
Sprüngen ausreicht, als Ziel die Sprungmarkennummer anzugeben, da
aufgrund der Sprungmarkentabelle (5) die Sprungadresse ermittelt werden kann.
4. Mikroprozessor nach einem der Ansprüche 1 bis 3 dadurch gekennzeichnet,
daß mindestens ein Register (Portregister (13)) des Mikroprozessors mit einer
Außenleitung (8) so verknüpft ist, daß es als Eingang, als Ausgang oder als
kombinierter Ein- und Ausgang dienen kann.
5. Mikroprozessor nach Anspruch 4 dadurch gekennzeichnet, daß mindestens
ein Portregister (13) einen Open-Collector- oder Open-Drain-Ausgangstreiber
hat, und daß bei einem Lesezugriff auf das Portregisters (13) die
Registerleseleitung (21) nicht auf das Flip-Flop des Portregisters (13), sondern
auf seine Außenleitung (8) zugreift.
6. Mikroprozessor nach Ansprüchen 4 oder 5 dadurch gekennzeichnet, daß
mindestens ein Portregister (13) mit Open-Collector-, Open-Drain- oder
Tri-State-Ausgangstreiber von einem Portleseregister (17) so gesteuert wird,
daß durch das Portleseregister (17) festgelegt wird, ob bei einem Lesezugriff
auf das Portregister (13) die Registerleseleitung (21) die Außenleitung (8) oder
das Flip-Flop (27) des Portregisters (13) abfragt, wobei mehreren Portregistern
(13) mit Open-Collector-, Open-Drain- oder Tri-State-Ausgangstreibern das
selbe Portieseregister (17) zugeordnet werden kann.
7. Mikroprozessor nach einem der Ansprüche 4 bis 6 dadurch gekennzeichnet,
daß mindestens ein Portlegister (13) mit Open-Collector-, Open-Drain- oder
Tri-State-Ausgangstreiber von einem Portausgangsregister (16) so gesteuert
wird, daß durch das Portausgangsregister (16) festgelegt wird, ob beim
Portregister (13) die Außenleitung (8) als Ausgang aktiv oder hochohmig ist,
wobei mehreren Portregistern (13) mit Open-Collector-, Open-Drain-, oder
Tri-State-Ausgangstreibern dasselbe Portausgangsregister (16) zugeordnet
werden kann.
8. Mikroprozessor nach einem der Ansprüche 4 bis 7 dadurch gekennzeichnet,
daß bei einem Portregister (13) mit Open-Collector- oder Open-Drain-
Ausgangstreiber für den Fall, daß das ihm zugeordnete Portleseregister (17)
für die Registerleseleitung (21) bei einem Lesezugriff auf das Portregister (13)
das Flip-Flop (27) selektiert und das ihm zugeordnete Portausgangsregister (16)
die Außenleitung (8) aktiv schaltet und das Flip-Flop (27) High ist, ein
zusätzlicher Transistor (29) zwischen der Außenleitung (8) und der positiven
Betriebsspannung durchschaltet und so die Außenleitung (8) in den High-
Zustand versetzt.
9 Mikroprozessor nach einem der Ansprüche 1 bis 8 dadurch gekennzeichnet,
daß er mindestens einen Interrupteingang (9) besitzt, der auch als Register
(Interrupteingangsregister) (14) des Arbeitspeichers (1) adressiert und auf
seinen Zustand hin abgefragt werden können.
10. Mikroprozessor nach einem der Ansprüche 1 bis 9 dadurch gekennzeichnet,
daß er eine Interruptlogik (6) besitzt, die von mindestens einem
Interruptflankenregister so gesteuert wird, daß sie je nach Inhalt des
Interruptflankenregisters einen Interrupt nur beim ersten Mal oder immer
auslöst, wenn der dem Interruptflankenregister zugeordnete Interrupteingang
(9) einen bestimmten Zustand (Low oder High) annimmt.
11. Mikroprozessor nach einem der Ansprüche 1 bis 10 dadurch gekennzeichnet,
daß er eine Interruptlogik (6) besitzt, die von mindestens einem
Interruptpegelregister so gesteuert wird, daß dieses mit seinem Inhalt
festlegt, bei welchem Zustand (Low oder High) des ihm zugeordneten
Interrupteingangs (9) von der Interruptlogik (6) ein Interrupt ausgelöst wird.
12. Mikroprozessor nach einem der Ansprüche 1 bis 11 dadurch gekennzeichnet,
daß er mindestens eine Interruptlogik (6) besitzt, die durch ein oder mehrere
miteinander verknüpfte Interruptfreigaberegister so gesteuert wird, daß diese
je nach Inhalt festlegen, ob die Interruptlogik (6) bei den ihnen zugeordneten
Interrupteingängen (9) die Interrupterkennung oder die Interruptauslösung
freigibt oder sperrt.
13. Mikroprozessor nach einem der Ansprüche 1 bis 12 dadurch gekennzeichnet,
daß die Interruptlogik (6) bei einem Interrupt ein zum Interrupteingang
gehöriges Interruptregister setzt.
14. Mikroprozessor nach Ansprüchen 3 und 13 dadurch gekennzeichnet, daß die
Interruptlogik (6) mindestens eines der Interruptregister zu einem
Interruptsprungvektor weiterverarbeitet, der als Sprungmarkennummer für die
Sprungmarkentabelle (5) verwendet wird (Interruptmarkenvektor).
15. Mikroprozessor nach einem der Ansprüche 13 oder 14 dadurch
gekennzeichnet, daß die Interruptlogik (6) mindestens ein Interruptregister zu
einem Interruptsprungvektor weiterverarbeitet, der vom Adreßzähler (4) als
Sprungadresse verwendet wird (Interruptadreßvektor).
16. Mikroprozessor nach Ansprüchen 14 und 15 dadurch gekennzeichnet, daß
die Interruptlogik (6) von mindestens einem Interruptvektorregister so
gesteuert wird, daß dieses festlegt, ob die Interruptlogik (6) den
Interruptsprungvektor als Interruptmarkenvektor oder als Interruptadreßvektor
verwendet.
17. Mikroprozessor nach einem der Ansprüche 3 bis 16 dadurch gekennzeichnet,
daß die Sprungmarkentabelle (5) unter einer bestimmten Sprungmarkennummer
(Rücksprungmarke) mehrere Speicherstellen enthält, die von der Interruptlogik
(6) als LIFO-Speicher (Last In First Out oder Kellerspeicher) so angesteuert
werden, daß bei einem eintretenden Interrupt der aktuelle Adreßwert in den
LIFO-Speicher gerettet wird, so daß eine Interruptroutine mit einem Sprung
auf die Rücksprungmarke abgeschlossen werden kann.
18. Mikroprozessor nach einem der Ansprüche 1 bis 17 dadurch gekennzeichnet,
daß er mindestens eine Testlogik (15) beinhaltet, die von einem
Testregister (43) vorzugsweise einmalig aktiviert wird und dann direkt aus
Registern des Mikroprozessors, vorzugsweise aus Portregistern (13), einen
Testsprungvektor formt und einen Sprung zu diesem Vektor ausführt.
19. Mikroprozessor nach einem der Ansprüche 3 bis 18 dadurch gekennzeichnet,
daß er mindestens eine Testlogik (15) besitzt, die einen Testsprungvektor als
Sprungmarkennummer für eine Sprungadresse an die Sprungmarkentabelle (5)
weiterleitet (Testmarkenvektor).
20. Mikroprozessor nach einem der Ansprüche 1 bis 19 dadurch gekennzeichnet,
daß er mindestens eine Testlogik (15) besitzt, die einen Testsprungvektor als
Sprungadresse an den Adreßzähler (4) weiterleitet (Testadreßvektor).
21. Mikroprozessor nach Ansprüchen 19 und 20 dadurch gekennzeichnet, daß er
mindestens eine Testlogik (15) besitzt, die mit einem Testvektorregister (44)
so verknüpft ist, daß dieses festlegt, ob die Testlogik (15) den
Testsprungvektor als Testmarkenvektor oder als Testadreßvektor verwendet.
22. Mikroprozessor nach einem der Ansprüche 1 bis 21 dadurch gekennzeichnet,
daß er mindestens eine Testlogik (15) besitzt, die mit einem
Testauswahlregister (43) so verknüpft ist, daß dieses festlegt, welche Register
des Mikroprozessors von der Testlogik (15) zu einem Testsprungvektor
geformt werden und vorzugsweise so breit ist, daß es alle Register im
Arbeitsspeicher (1) des Mikroprozessors adressieren kann.
23. Mikroprozessor nach Anspruch 22 dadurch gekennzeichnet, daß er
mindestens eine Testlogik (15) besitzt, die mit einem Testlängenregister (46)
so verknüpft ist, daß dieses festlegt, wieviel Register im Arbeitsspeicher (1)
des Mikroprozessors in aufsteigender oder absteigender Reihenfolge von dem
Register aus, das durch das Testauswahlregister (43) selektiert wurde, von der
Testlogik (15) zu einem Testvektor geformt werden.
24. Mikroprozessor nach einem der Ansprüche 1 bis 23 dadurch gekennzeichnet,
daß er mindestens eine Testlogik (15) besitzt, die mit einem Teststatusregister
(47) so verknüpft ist, daß dieses festlegt, ob ein Sprung zum Testsprungvektor
den Status einer normalen Programmverzweigung oder eines Softwareinterrupts
hat.
25. Mikroprozessor nach einem der Ansprüche 1 bis 24 dadurch gekennzeichnet,
daß er mindestens eine Datenübertragungslogik (10) einem Datenzähler (30)
enthält, der einen internen oder externen Datenspeicher (11) adressiert und
dem Mikroprozessor erlaubt, Daten aus dem Datenspeicher (11) in seinen
Arbeitsspeicher (1) oder Daten aus seinem Arbeitsspeicher (1) in den
Datenspeicher (11) zu übertragen, der sich vorzugsweise automatisch
inkrementieren oder dekrementieren läßt und vorzugsweise den Schreib- oder
Lesezugriff auf den Datenspeicher (11) automatisch wiederholen kann.
26. Mikroprozessor nach Anspruch 25 dadurch gekennzeichnet, daß durch die
Datenübertragungslogik (10) nicht nur ein einziges Register des
Arbeitsspeichers (1) für die Datenübertragung angesprochen wird, sondern
mehrere vorzugsweise aufeinanderfolgende Register angesprochen werden, so
daß der Datenfluß zwischen Arbeits- (1) und Datenspeicher (11) mit mehr als
nur einem Bit erfolgen kann.
27. Mikroprozessor nach Anspruch 25 oder 26 dadurch gekennzeichnet, daß die
Datenübertragungslogik (10) von einem Datenrichtungsregister (34) angesteuert
wird, durch das festgelegt werden kann, ob die Datenübertragungslogik (10)
Daten aus dem Datenspeicher (11) in den Arbeitsspeicher (1) oder Daten aus
dem Arbeitsspeicher (1) in den Datenspeicher (11) übertragen soll.
28. Mikroprozessor nach einem der Ansprüche 25 bis 27 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) durch ein Datenzähleraktivierungsregister
(32) vorzugsweise einmalig aktiviert wird und dann eine vorzugsweise einmalige
Datenübertragung steuert.
29. Mikroprozessor nach einem der Ansprüche 25 bis 28 dadurch
gekennzeichnet, daß die Datenübertragungslogik (10) von einem
Datenzählerdaueraktivierungsregister (33) so angesteuert wird, daß sie bei
gesetztem Datenzählerdaueraktivierungsregister (33) eine repetitive
Datenübertragung steuert, die nur durch das Löschen dieses Registers wieder
gestoppt werden kann.
30. Mikroprozessor nach einem der Ansprüche 25 bis 29 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) von einem Datenzählersteuerregister (31)
angesteuert wird, durch das festgelegt werden kann, ob der Wert im
Datenzähler (30) mit jedem Zugriff auf den Datenspeicher (11) gleich bleibt,
inkrementiert oder dekrementiert wird.
31. Mikroprozessor nach einem der Ansprüche 25 bis 30 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) die aus dem Datenspeicher (11)
ausgelesenen Werte in mindestens ein ein Dateneingaberegister (35) schreibt,
du mehrere Register des Arbeitsspeichers (1) umfaßt.
32. Mikroprozessor nach einem der Ansprüche 25 bis 31 dadurch gekennzeichnet,
daß die Datenübertragungslogik die in den Datenspeicher (11) einzutragenden
Werte aus mindestens einem Datenausgaberegister (39) ausliest, das mehrere
Register des Arbeitsspeichers (1) umfaßt und dabei mit dem
Dateneingaberegister (35) identisch sein kann.
33. Mikroprozessor nach einem der Ansprüche 25 bis 32 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) durch ein Dateneingabeauswahlregister (36)
so angesteuert wird, daß sie je nach Inhalt des Dateneingabeauswahlregisters
(36) ein anderes Register, bzw. bei einer Datenübertragungsbreite von
mehreren Bit mehrere andere Register des Arbeitsspeichers (1) als
Dateneingaberegister (35) nach Anspruch 31 auswählt.
34. Mikroprozessor nach einem der Ansprüche 25 bis 33 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) durch ein mindestens ein
Datenausgabeauswahlregister (40) so angesteuert wird, daß sie je nach Inhalt
des Datenausgabeauswahlregisters (40) ein anderes Register, bzw. bei einer
Datenübertragungsbreite von mehreren Bit mehrere andere Register des
Arbeitsspeichers (1) als Datenausgaberegister (39) auswählt.
35. Mikroprozessor nach einem der Ansprüche 25 bis 34 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) von einem Dateneingaberichtungsregister
(37) so angesteuert wird, daß je nach Inhalt dieses Registers nach jedem
Lesezugriff des Datenzählers (30) auf den Datenspeicher (11) der Inhalt des
Dateneingabeauswahlregisters (36) um einen bestimmten Betrag erhöht oder
verringert wird oder gleich bleibt.
36. Mikroprozessor nach einem der Ansprüche 25 bis 35 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) von einem Datenausgaberichtungsregister
(41) so angesteuert wird, daß je nach Inhalt dieses Registers nach jedem
Schreibzugriff des Datenzählers (30) auf den Datenspeicher (11) der Inhalt des
Datenausgabeauswahlregisters (40) um einen bestimmten Betrag erhöht oder
verringert wird oder gleich bleibt, und daß das Datenausgaberichtungsregister
(41) mit dem Dateneingaberichtungsregister (37) identisch sein kann.
37. Mikroprozessor nach einem der Ansprüche 25 bis 36 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) von einem Dateneingabelängenregister (38)
so angesteuert wird, daß durch den Wert in diesem Register die zu
übertragende Datenbreite variiert werden kann und daß das
Dateneingabelängenregister (38) ebenfalls die Schrittweite des Datenzählers (30)
und des Dateneingabeauswahlregisters (36) vorgibt.
38. Mikroprozessor nach einem der Ansprüche 25 bis 37 dadurch gekennzeichnet,
daß die Datenübertragungslogik (10) von einem Datenausgabelängenregister (42)
so angesteuert wird, daß durch den Wert in diesem Register die zu
übertragende Datenbreite variiert werden kann, daß das Datenausgabelängen
register (42) ebenfalls die Schrittweite des Datenzählers (30) und des
Datenausgabeauswahlregisters (40) vorgibt, und daß es mit dem
Dateneingabelängenregister (38) identisch sein kann.
39. Mikroprozessor nach einem der Ansprüche 1 bis 38 dadurch gekennzeichnet,
daß auf mindestens ein Bit seines Adreßzählers (4) lesend zugegriffen werden
kann wie auf normale Register des Arbeitsspeichers (1).
40. Mikroprozessor nach einem der Ansprüche 25 bis 39 dadurch gekennzeichnet,
daß auf mindestens ein Bit mindestens eines Datenzählers (30) zugegriffen
werden kann wie auf normale Register des Arbeitsspeichers (1).
41. Mikroprozessor nach einem der Ansprüche 1 bis 40 dadurch gekennzeichnet,
daß er eine Vorrichtung besitzt, die es ihm ermöglicht, seinen internen oder
externen Befehlsspeicher (7) aus einem, bzw. in einen anderen externen
Speicher selbständig zu übertragen oder übertragen zu lassen (Down-Loading).
42. Mikroprozessor nach einem der Ansprüche 1 bis 41 dadurch gekennzeichnet,
daß er eine Vorrichtung besitzt, die es ihm ermöglicht, seinen internen oder
externen Datenspeicher (11) aus einem, bzw. in einen anderen externen Speicher
selbständig zu übertragen oder übertragen zu lassen (Down-Loading).
43. Mikroprozessor nach einem der Ansprüche 1 bis 42 dadurch gekennzeichnet,
daß sein interner Aufbau aus nicht getakteter Logik besteht und daß Monoflops
oder andere Zeitglieder verwendet werden, um nach außen hin ein bestimmtes
Zeitprotokoll einhalten zu können, vorzugsweise bei externen Speicherzugriffen.
44. Mikroprozessor nach einem der Ansprüche 1 bis 43 dadurch gekennzeichnet,
daß er eine Speicherverwaltungseinheit (52) besitzt, die es ermöglicht, daß der
Adreßzähler (4) und der Datenzähler (30) auf den selben Hauptspeicher (53)
zugreifen, und die Speicherzugriffe auf den Hauptspeicher (53) steuert.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19934302902 DE4302902A1 (de) | 1993-02-02 | 1993-02-02 | Mikroprozessor mit boolscher Verknüpfungslogik |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19934302902 DE4302902A1 (de) | 1993-02-02 | 1993-02-02 | Mikroprozessor mit boolscher Verknüpfungslogik |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4302902A1 true DE4302902A1 (de) | 1994-08-04 |
Family
ID=6479451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19934302902 Withdrawn DE4302902A1 (de) | 1993-02-02 | 1993-02-02 | Mikroprozessor mit boolscher Verknüpfungslogik |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE4302902A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0762280A1 (de) * | 1995-08-30 | 1997-03-12 | Motorola, Inc. | Datenprozessor mit eingebauter Emulationsschaltung |
-
1993
- 1993-02-02 DE DE19934302902 patent/DE4302902A1/de not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0762280A1 (de) * | 1995-08-30 | 1997-03-12 | Motorola, Inc. | Datenprozessor mit eingebauter Emulationsschaltung |
US6026501A (en) * | 1995-08-30 | 2000-02-15 | Motorola Inc. | Data processing system for controlling execution of a debug function and method thereof |
US6035422A (en) * | 1995-08-30 | 2000-03-07 | Motorola, Inc. | Data processing system for controlling execution of a debug function and method therefor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2648229C2 (de) | ||
DE2856483C2 (de) | ||
DE3610433C2 (de) | Verfahren zum Steuern einer Maschine mit einer speicherprogrammierbaren Steuerung mit Funktionsplaninterpreter | |
EP0948842B1 (de) | VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.) | |
DE3751297T2 (de) | Schaltung zur Programmsteuerung. | |
DE2714805C2 (de) | ||
DE69632634T2 (de) | Arbitrierungseinheit zum Multiprozessorsystembuszugriff mit Wiederholungsfähigkeit | |
DE4222043C1 (de) | ||
DE2023354C2 (de) | Datenverarbeitungsanlage mit einem Mikrobefehlsspeicher | |
CH620779A5 (de) | ||
CH623947A5 (de) | ||
DE2907181A1 (de) | Befehlssatz-modifizierregister fuer einen datenprozessor | |
DE3606211A1 (de) | Multiprozessor-computersystem | |
DE2019444A1 (de) | Datenverarbeitungsanlage | |
DE2164793A1 (de) | Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit | |
DE2054830B2 (de) | Informationsverarbeitungsanlage mit mitteln zum zugriff zu speicher-datenfeldern variabler laenge | |
DE2758829A1 (de) | Multiprozessor-datenverarbeitungssystem | |
DE3114921A1 (de) | Datenverarbeitungssystem | |
DE2935101C2 (de) | ||
DE3809831A1 (de) | Digitalrechner mit befehlsmodusumwandlung | |
DE2433436A1 (de) | Verfahren und anordnung zum mehrfachverzweigen des programms in einem digitalen computer | |
DE4226536A1 (de) | Programmierbare steuerung mit einer benutzernachrichtenfunktion | |
DE69908772T2 (de) | Geraet mit kontextumschaltungsfaehigkeit | |
DE4429764C2 (de) | Zeitgebereinrichtung für einen Mikrocomputer | |
DE3410497A1 (de) | Rechneranordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8122 | Nonbinding interest in granting licenses declared | ||
8139 | Disposal/non-payment of the annual fee |