DE4302902A1 - Mikroprozessor mit boolscher Verknüpfungslogik - Google Patents

Mikroprozessor mit boolscher Verknüpfungslogik

Info

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
Application number
DE19934302902
Other languages
English (en)
Inventor
Frederic Dedek
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to DE19934302902 priority Critical patent/DE4302902A1/de
Publication of DE4302902A1 publication Critical patent/DE4302902A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction 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.
Organisation des Mikroprozessors
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.
Befehlsformat
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.
Rechenwerk
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.
Sprungmarken
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.
Portregister
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.
Interruptlogik
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).
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.
Testlogik
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.
Datenübertragungslogik
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).
Beispiele
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.
Spezifikationen
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ß.
Assembler
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.
Beispiel 1: Programm Dekoder 1
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
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:
Beispiel 2: Programm Dekoder 2
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.
Beispiel 3: Programm Logger
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.
DE19934302902 1993-02-02 1993-02-02 Mikroprozessor mit boolscher Verknüpfungslogik Withdrawn DE4302902A1 (de)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0762280A1 (de) * 1995-08-30 1997-03-12 Motorola, Inc. Datenprozessor mit eingebauter Emulationsschaltung

Cited By (3)

* Cited by examiner, † Cited by third party
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