-
Die vorliegende Erfindung betrifft eine Steuerung für einen Emulator nach dem Oberbegriff des Patentanspruchs 1.
-
Systeme, die zur Planung und zur Entwicklung von Mikroprozessor-Produkten dienen, enthalten oftmals sog. Emulatoren oder Emulator-Untersysteme, welche mindestens die gleichen Funktionen erfüllen, wie der Mikroprozessor, der voraussichtlich in einem Prototypen des Produktes verwendet werden soll. Emulatoren ermöglichen eine gleichzeitige Entwicklung der Konstruktion und der Programme des Prototypen mit großer Flexibilität und ermöglichen Änderungen der Entwürfe und Beseitigung von Fehlerquellen bevor die Entwürfe permanent vollendet sind. Der Emulator besteht aus einem Emulatorprozessor und aus einer Emulatorsteuerung, wobei diese beiden Komponenten an eine Sammelschiene des Systems angeschlossen sind und gemeinsam mit einem Prozessor des Systems betrieben werden.
-
Eine Steuerung der gattungsgemäßen Art ist aus "Computer", juni 1975, Seiten 56-77, bekannt. Es handelt sich dabei um eine mikroprogrammierte Systemlösung bei der generell, beispielsweise aus " Microprocessor Interface Techniken" von A. Lesea und R. Zaks, Micro-Chop-Bodensee 1979, Seiten 360-372 bekannten Möglichkeit des Ersatzes eines Mikroprozessors durch eine Nachbildung für Test- und Entwicklungszwecken. Dabei erfolgt jedoch die Steuerung nur über das in einem Speicher abgespeicherte, die Steuerworte darstellende Mikropgrogramm, ohne daß auch Informationen über das Verhalten des Emulatorprozessors in die Steuerworte eingehen.
-
Es wäre wünschenswert, wenn ein Emulator zur Erzeugung einer Folge von Steuersignalen in passiver Weise den Emulatordatenbus überwachen würde und dem Instruktionsstrom des Datenbusses Informationen entnehmen würde, aus denen das Verhalten des Emulatorprozessors vorhersagbar wäre und es wäre ferner wünschenswert, den Emulator mit einer Folge vorgegebener Steuersignale in Abhängigkeit von den entnommenen Informationen zu steuern. Es wäre außerdem wünschenswert, wenn ein derartiger Emulator zur Erzeugung einer Folge von Steuersignalen derart universell wäre, daß er für eine Anzahl verschiedener Emulatorprozessoren verwendbar wäre.
-
Der Erfindung liegt die Aufgabe zugrunde, einen Emulator nach dem Oberbegriff des Patentanspruchs 1 zur Erzeugung einer Folge von Steuersignalen anzugeben, der aus dem Instruktionsstrom eines Emulatordatenbusses gewisse Informationen - die das zukünftige Verhalten des Emulators kennzeichnen - entnehmen und danach handeln kann.
-
Die der Erfindung zugrunde liegende Aufgabe wird durch die Merkmale im Kennzeichen des Patentanspruches 1 gelöst.
-
Ein Vorteil der Erfindung ist, daß die Emulatorsteuerung während einer passiven Überwachung des Datenbusses synchron mit dem Holzyklus des Emulatormikroprozessors arbeitet und Signale erzeugt, welche ein gewisses internes Verhalten des Prozessors anzeigen. Gemäß einer weiteren Ausgestaltung der vorliegenden Erfindung soll der Emulator zur Erzeugung einer Folge von Steuersignalen eine programmierbare Zustandsmaschine sein. Gemäß einer weiteren Ausgestaltung soll der Emulator zur Erzeugung der Folge von Steuersignalen in der Lage sein, den nächsten Betriebscodeholvorgang vorherzusagen, in dem er sowohl andere Instruktionen des Instruktionsstromes als auch den gegenwärtigen Betriebscode decodiert. Diese weiteren Ausgestaltungen werden durch die Merkmale im Kennzeichen der Unteransprüche realisiert.
-
Im folgenden werden Ausführungsbeispiele der Erfindung anhand der Fig. 1,2A und 2B erläutert. Es zeigt
-
Fig. 1 ein Blockdiagramm eines Ausführungsbeispieles eines Emulators zur Erzeugung einer Folge von Steuerimpulsen gemäß der vorliegenden Erfindung,
-
Fig. 2A ein Wortformat für Steuerausgänge und zur Adressengeneratorsteuerung und
-
Fig. 2B ein Wortformat für einen Holbefehl und zur Zweigsteuerung.
-
Das in Fig. 1 dargestellte Blockdiagramm zeigt den Emulatordatenbus 10 - dargestellt durch gestrichelte Linien - über den dem Decodierer 12 Eingangsdaten D 1 zugeführt werden. Tatsächlich verbindet der Datenbus 10 einen nicht dargestellten Systemmikroprozessor und einen nicht dargestellten Emulatorprozessor eines Mikroprozessor-Entwicklungs-Laborsystems und der Decodierer 12 überwacht passiv den Instruktionsstrom, der über den Bus geleitet wird. Ein Puffer kann eingeschaltet werden, zwischen dem Datenbus 10 und dem Eingang des Decodierers 12, um die Eingangsdaten während einer ganzen Taktperiode zu speichern. Der Decodierer 12 kann ein Speicher mit wahlfreiem Zugriff (RAM) sein, der mit den Daten D 2 eines Systemmikroprozessors programmiert werden kann. Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung besteht der Decodierer 12 aus vier kommerziell erhältlichen Bauteilen der Type 2148 4-K, organisiert in Kombination als 2048 Worte mit 8 Bits zur Decodierung eines Bytes (8-Bits) von Daten in 4-Bitinstruktionen als Betriebscodeholbefehle, und/oder 4-Bit oder 6-Bit Verzweigungsadressen für einen Adressengenerator. Ein Instruktions-Puffer 14 - welcher in passender Weise ein Register der 74 S 1734-Bit D-Type sein kann - erhält am Eingang die 4-Bit Instruktionen D 3 vom Decoder 12. Bei vorliegendem Freigabesignal E wird der Puffer 14 getaktet mit dem Emulatormikroprozessortaktsignal T 1, das geringfügig verzögert ist, um die Übertragungsverzögerungen im Datenpfad zu kompensieren. Tatsächlich wird der Puffer 14 nur getaktet nach Betriebscodeholvorgängen oder wenn ein gewisser Ausgang des Ausgangsdecodierers 22 aktiv ist. Ferner wird der Puffer 14 gelöscht nach Empfang eines Betriebscode-Hohl-Taktsignals T 2. Die Ausgangssignale D 4 des Puffers 14 zeigen an die Gegenwart eines augenblicklich vorhandenen Betriebscodes und werden verwendet als "Seiten"-Adressen für einen Mikroinstruktionsspeicher 16 und werden außerdem rückgekoppelt, um als Eingangssignale für den Datenbusdecodierer 12 verwendet zu werden. Auf diese Weise kann das Auftreten des nächsten Betriebscode-Holvorgangs vorausgesagt werden, durch Decodierung anderer Informationen des Datenbusses 10, die für den Emulator verwendet werden.
-
Der Speicher 16, ein mit mehreren Anzapfungen versehenes Register 18 und der Adressengenerator 20 bilden eine Zustandsmaschine, die eine Menge von Instruktionen ausführt die im Speicher 16 gespeichert sind. Der Speicher 16 umfaßt vier statische Bauteile der Type 21484-K organisiert als 1024 Worte mitje 16 Bits und wird mit den Daten D 5 des Systemmikroprozessors programmiert. Gewisse Ausgangssignale des Speichers 16 werden mit dem Decodierer 22 decodiert, um die erwünschten Steuersignale 1 beispielsweise Holbefehle, Sperrbefehle und andere. Gewisse andere Ausgangssignale werden im Register 18 gespeichert, um die Steuersignale S 2, S 3 und S 4 zur Verfügung zu haben. Das Steuersignal S 2 dient zur Steuerung des nächsten Zyklusses des Adressengenerators 20. Das Steuersignal S 3 dient zur Adressenauswahl für den Multiplexer 24 und das Steuersignal S 4 dient als Mikroinstruktionsverzweigungsadresse und wird ebenfalls dem Multiplexer MUX24 zugeführt. Der Multiplexer 24 kann auch Verzweigungsadressen S 5 des Decodierers 12 auswählen. Bei dem gebauten und geprüften Ausführungsbeispiel besteht der Multiplexer 24 aus einem Paar von Multiplexern mit je zwei Eingängen der Type 74 S 157. Das Register l 8besteht aus einem Paar von 74 S 174 D-Flip- Flops in welchen die Information über die D-Eingänge zur Speicherung übertragen wird, wenn eine positive Flanke des Taktsignals T 1 auftritt. Mit diesem Taktsignal T 1 wird somit der Puffer 14, der Speicher 16, das Register 18 und der Adressengenerator 20 getaktet. Der Adressengenerator 20 gibt die Daten D 6 an den Speicher 16 ab, die eine Mikroprozessorinstruktionsadresse darstellen.
-
Die Fig. 2A und 2B zeigen ein Wortformat für die Ausgangssignale des Speichers 16. Die Steuersignale S 1 können folgende Bedeutung haben:
-
Der Adressengenerator 20 besteht aus zwei kommerziell erhältlichen Bauteilen der Type Am 2911, welche in Kaskade geschaltet sind, um 8-Bit Eingänge und Ausgänge zu ermöglichen. Diese speziellen Vorrichtungen enthalten jede ein internes Adressenregister, ein Stapelregister mit 4 Worten zu 4-Bit mit einem Stapelzeiger und einer Steuerung zur Ermöglichung von Unterprogrammen, einen in Kaskade schaltbaren 4-Bit Mikroprogramm-Zähler und interne Steuerschaltungen wie einen Multiplexer zur Adressenquellenauswahl und eine Inkrementierstufe. Aufgrund der Steuerdaten S 2, S 3, S 4 vom Register 18 und aufgrund der Adressensignale vom Multiplexer 24 erzeugt der Adressengenerator 20 Adressen D 6 für den Speicher 16.
-
Der Decodierer 22 kann ein kommerziell erhältlicher Baustein sein, der Type 74 S 138 eines 1 aus 8 Decodierer/Demultiplexer. Alle Ausgangssignale schließen sich gegenseitig aus, weshalb eine Vielzahl von Steuerfunktionen bewirkt werden kann. Die Steuereingangssignale S 6 des Decoders 22 können von verschiedenen Statusleitungen des Emulatormikroprozessors zugeführt werden, beispielsweise aufgerufene Speicheradressen, Lese/Schreibsignale, Ausführungsbefehle, Unterbrechungserkennung und verschiedene Holfunktionen. Auf diese Weise kann der Decodierer 22 freigegeben oder gesperrt werden in Abhängigkeit vom Zustand des Emulatormikroprozessors.
-
Der im Prinzip nach Fig. 1 dargestellte Emulator kann somit gänzlich aus kommerziell erhältlichen Bauteilen zusammengestellt werden. Die erwähnten Bauteile sind verträglich mit Mikroprozessorbauteilen der Type 6800. Es sollte betont werden, daß alle Speicher des Emulators einen wahlfreien Zugriff haben und insbesondere vom Systemprozessor her beeinflußbar sind.
-
Die gegebene Beschreibung sollte zeigen, daß der Emulator passiv den Datenbus eines Emulatormikroprozessors überwacht und gewisse Informationen aus dem Instruktionsstrom des Datenbusses übernimmt, Informationen die geeignet sind, das Verhalten des Prozessors vorherzusagen. Die Information, welche in gewünschter Weise entnommen weden soll, ist programmiert im Speicher mit wahlfreiem Zugriff innerhalb des Emulators mit Hilfe des Systemmikroprozessors. Infolgedessen ist der hier beschriebene Emulator zur Erzeugung einer Folge von Steuersignalen universell und kann auf eine Anzahl verschiedener Prozessoren eingestellt werden, von denen jeder die notwendigen Programme bereitstellt, um die gewünschten Signalerzeugungsfunktionen auszuführen.
-
Zusammenfassend dargestellt handelt es sich um einen universellen Emulator zur Erzeugung einer Folge von Steuersignalen, welche in Synchronismus mit dem Holzyklus eines Emulatormikroprozessors arbeitet. Dies wird erreicht durch passive Uberwachung des Emulatordatenbusses 10 und spezieller Statusleitungen. Der Emulator erzeugt Signale, welche Betriebscodeholvorgänge vorhersagen, Buszyklen mit gewissen nicht relevanten Informationen unterdrücken, erkennt Holvorgänge von unzulässigen Betriebscodes und erzeugt verschiedene Steuer- und Statussignale für den Emulator.
-
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung decodiert der Decodierer 12 jedes Bytes von Instruktionen des Busses 10 in Instruktionen D 3 für Betriebscodeholvorgänge und Verzweigungsadressen für den Adressengenerator 20. Die Daten D 3 werden im Puffer 14 zwischengespeichert und als " Seiten"-Adressen verwendet für den Speicher 16. Der Speicher 16, das Register 18 und der Adressengenerator 20 bilden eine Statusmaschine, welche mehrere Instruktionen ausführt, die in dem Speicher 16 gespeichert sind. Die Adressen, welche der Adressengenerator 20 ausgeben soll, können von mehreren Quellen ausgewählt werden, beispielsweise vom Speicher 16 in Abhängigkeit von gewissen Steuresignalen S 2, S 3 und S 4, welche über das Register 18 vom Speicher 16 abgegeben werden. Die Ausgangssignale des Speichers 16 werden decodiert, um die erwähnten Steuersignale S 2, S 3 und S 4zu erzeugen. Bei diesem Ausführungsbeispiel sind der Decodierer 12 und der Speicher 16 als Speicher mit wahlfreiem Zugriff völlig programmierbar. Infolgedessen kann nicht nur das spezielle Verhalten eines Prozessors vorhergesagt werden, in Abhängigkeit von programmierten Instruktionen, sondern der vorliegende Emulator zur Erzeugung einer Folge von Steuersignalen kann universell dazu verwendet werden, um eine Anzahl von verschiedenen Emulatormikroprozessoren zu bedienen.