HINTERGRUND DER ERFINDUNG
-
Die vorliegende Erfindung betrifft einen Mikroprozessor, und insbesondere einen
Mikroprozessor, der mit einer Steuerung für einen direkten Speicherzugriff (DMA)
ausgestattet ist.
-
Zum Erfüllen von Anforderungen bezüglich einer hohen Leistungsfähigkeit und
einer hohen Geschwindigkeit sind neueste Mikrocomputer mit verschiedenen
peripheren Einheiten ausgestattet worden, wie beispielsweise einer
Unterbrechungssteuerung, einem Zeitgeber, einem Zähler und einer Einheit zur seriellen
Datenkommunikation. In einem derartigen Mikrocomputer wird dann, wenn eine
Datenübertragung zwischen einer peripheren Einheit und einem Speicher durch eine
zentrale Verarbeitungseinheit (CPU) unter Beteiligung von Software (Programm)
durchgeführt wird, die Datenverarbeitungseffizienz erniedrigt, wie es auf dem
technischen Gebiet wohlbekannt ist. Daher wird die Datenübertragung zwischen
der peripheren Einheit und dem Speicher allgemein durch eine DMA-Steuerung
statt durch eine CPU durchgeführt.
-
Die DMA-Steuerung enthält ein Adressenregister zum Speichern von
Adresseninformation eines Speichers, auf den zuzugreifen wird, ein Terminal-Zählerregister
zum Speichern der Anzahl von zu übertragenden Daten und ein Steuerregister
zum Speichern von Steuerinformation, wie beispielsweise einer
Datenübertragungsrichtung und einer Adressenerneuerungsrichtung. Diese Register werden
anfangs durch die CPU mit nötigen Daten oder Informationen eingestellt. Wenn die
DMA-Steuerung eine Datenübertragungsanfrage von der peripheren Einheit
empfängt, erhält sie ein Bussteuerrecht von der CPU, um dadurch die
Datenübertragung zwischen der peripheren Einheit und dem Speicher durchzuführen. Nach
einer Datenfibertragung gibt die DMA-Steuerung das Bussteuerrecht zur CPU zurück
und begibt sich dann in einen Zustand eines Wartens auf eine nachfolgende
Datenübertragungsanfrage. Wenn die Anzahl von Daten, die so übertragen werden,
die im Terminal-Zählerregister eingestellte Anzahl erreicht, wird die DMA-
Steuerung in einen Datenübertragungs-Sperrzustand gebracht, wobei eine
Unterbrechungsanfrage zur CPU ausgegeben wird. In Antwort darauf führt die CPU ein
Unterbrechungsverarbeitungsprogramm aus, um wieder nötige Information in den
jeweiligen Registern einzustellen. Die DMA-Steuerung wird dadurch wieder in
einen Zustand zum Zulassen einer Datenübertragung gebracht.
-
Während des Datenübertragungs-Sperrzustands der DMA-Steuerung erzeugt die
periphere Einheit oft eine Datenübertragungsanfrage. In diesem Fall wird diese
Anfrage natürlich nicht angenommen, sondern zurückgestellt. Während eine
Zeitperiode, während welcher die DMA im Datenübertragungs-Sperrzustand ist, von
der Prioritätsreihenfolge zu der Unterbrechungsanfrage von der DMA-Steuerung
und/oder der Anzahl von durch die Steuerung unterstützten Übertragungskanälen
abhängt, kann die periphere Einheit dann, wenn der Datenübertragungs-
Sperrzustand verlängert wird, einen derartigen Zustand annehmen, daß sie eine
nächste Datenübertragungsanfrage erzeugt, bevor die vorherige
Datenübertragungsanfrage angenommen ist. Beispielsweise erzeugt eine Einheit zum
Empfangen serieller Daten als periphere Einheit eine Datenübertragungsanfrage jedesmal
dann, wenn sie eine vorbestimmte Anzahl von Bit-Daten empfängt, so daß der
Empfang nächster Daten beendet sein kann, bevor die vorherigen Daten zum
Speicher übertragen werden. In einem solchen Fall werden die vorherigen Daten
zerstört, was im Auftreten eines Empfangs-Überlauffehlers resultiert. In einer
Einheit zum Senden von seriellen Daten als weiteres Beispiel der peripheren Einheit
werden ihr als nächstes zu sendende Daten nicht zugeführt, obwohl ein Senden
der vorherigen Daten beendet ist, so daß ein Sende-Unterlauffehler auftritt. Solche
Fehler treten leicht auf, je schneller die Übertragungsgeschwindigkeit an einer
seriellen Schaltung wird. Selbst wenn eine Empfangs-/Sendedaten-Pufferstufe
anzahlmäßig erhöht wird, tritt der Fehler dann auch auf, wenn die
Datenübertragungsanfragen anzahlmäßig häufiger als für die erhöhte Anzahl zurückgestellt
werden. Darüber hinaus vergrößert das Erhöhen der Anzahl der Datenpuffer zum
Ausgleichen einer seriellen Schaltung mit hoher Geschwindigkeit die Hardware
eines Mikrocomputers.
-
JP-A-6329868, Patent Abstracts of Japan, Bd. 12, Nr.238, offenbart einen
Mikroprozessor, der die Information eines Speicherblocks, zu welchem Daten zu
übertragen sind, in einem ersten Speicheradressenregister und einem ersten
Übertragungsfrequenzregister setzt, und ein DMA-Anfragezulassungs-Flag einstellt, um
den Speicherblock-DMA-Übertragungs-Freigabezustand herzustellen. Zur Zeit
einer Eingabe eines DMA-Anfragesignals wird eine Zeitsteuerschaltung in Betrieb
genommen, eine DMA-Übertragung wird gestartet, und eine Speicheradresse und
ein Steuersignal werden nach außen ausgegeben. Zur Zeit eines Startens der
DMA-Übertragung wird ein Schreibzulassungs-Fiag gesetzt, und ein Schreiben in
ein zweites Speicheradressenregister und ein zweites
Übertragungsfrequenzregister wird zugelassen. Folglich kann die DMA-Übertragung während der Eingabe
des DMA-Signals kontinuierlich ausgeführt werden. Jedoch läßt diese Vorrichtung
nicht zu, einen Datensatz von Statusinformationen über die DMA-Übertragung zu
halten.
ZUSAMMENFASSUNG DER ERFINDUNG
-
Daher ist es eine Aufgabe der vorliegenden Erfindung, einen Mikroprozessor zu
schaffen, der mit einer DMA-Steuerung ausgestattet ist, in welcher eine Zeitperiode
eines Datenübertragungs-Sperrzustands merklich verkürzt werden kann.
Es ist eine weitere Aufgabe der vorliegenden Erfindung, einen Mikroprozessor mit
einer DMA-Steuerung zu schaffen, die ein Auftreten eines Fehlers in einer
peripheren Einheit aufgrund eines Zurückstellens von Datenübertragungsanfragen
verhindem kann.
-
Es ist eine weitere Aufgabe der vorliegenden Erfindung, einen Mikroprozessor zu
schaffen, der mit einer DMA-Steuerung ausgestattet ist, um eine Einheit zur
Kommunikation mit seriellen Daten für eine serielle Schaltung mit hoher
Geschwindigkeit zu unterstützen.
-
Ein Mikroprozessor gemäß der vorliegenden Erfindung ist im Anspruch 1 offenbart.
Die Ansprüche 2 und 3 offenbaren bestimmte Ausführungsbeispiele der
vorliegenden Erfindung.
-
Somit wird dann, wenn die aktuelle Datenübertragungsoperation aufgrund dessen
beendet wird, daß die Anzahl übertragener Daten eine vorbestimmte Zahl erreicht,
die Ausführungseinrichtung unter Verwendung der zweiten Information sofort in
einen Datenübertragungs-Zulassungszustand gebracht. Die Datenübertragung
zwischen der peripheren Einheit und dem Speicher kann dadurch sequentiell
durchgeführt werden, ohne daß die Datenübertragungsanfrage zurückgestellt wird.
-
Andererseits schiebt die CPU eine Programmausführung in Antwort auf die
Unterbrechungsanfrage von der DMA-Steuerung auf und versorgt dann die DMA-
Steuerung mit dritter Information, die für eine weitere nächste
Datenübertragungsoperation
nötig ist, die nach einem Beenden der nächsten
Datenübertragungsoperation zu initiieren ist. Demgemäß wird die DMA-Steuerung dann, wenn die nächste
Datenübertragungsoperation beendet ist, unter Verwendung der dritten Information
auch sofort in den Datenübertragungs-Zulassungszustand gebracht.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die obigen und weitere Aufgaben, Vorteile und Merkmale der vorliegenden
Erfindung werden aus der folgenden Beschreibung in Zusammenhang mit den
beigefügten Zeichnungen klarer, wobei:
-
Fig. 1 ein Blockdiagramm ist, das ein System darstellt, das einen
Mikrocomputer gemäß einem ersten Ausführungsbeispiel der vorliegenden
Erfindung verwendet;
-
Fig. 2 ein Flußdiagramm ist, das einen Betrieb einer in Fig. 1 gezeigten
DMA-Steuerung darstellt;
-
Fig. 3 ein Flußdiagramm ist, das ein Beispiel eines
Unterbrechungsverarbeitungsprogramms darstellt, das durch die in Fig. 1 gezeigte CPU
ausgeführt wird;
-
Fig. 4 ein Systemblockdiagramm ist, das ein zweites Ausführungsbeispiel
gemäß der vorliegenden Erfindung darstellt;
-
Fig. 5 ein Blockdiagramm ist, das die CPU eines Mikrocomputers gemäß
einem dritten Ausführungsbeispiel der vorliegenden Erfindung
darstellt; und
-
Fig. 6 ein Flußdiagramm ist, das ein Makrodienst-Mikroprogramm darstellt,
das durch die in Fig. 5 gezeigte CPU ausgeführt wird.
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
Nimmt man nun Bezug auf Fig. 1, enthält ein Mikrocomputersystem einen
Mikrocomputer 100 gemäß einem ersten Ausführungsbeispiel der vorliegenden
Erfindung, einen Programmspeicher 110 und einen Datenspeicher 120, die miteinander
über einen Systembus 130 verbunden sind. Der Mikrocomputer 100 enthält eine
CPU 10 und, als periphere Einheiten, eine DMA-Steuerung (DMAC) 20, eine
Unterbrechungssteuerung (INTC) 30, eine Einheit zum Empfangen serieller Daten 40
und eine weitere Einheit 50, wie beispielsweise einen Zeitgeber und einen Zähler.
Diese Einheiten sind auf einem einzelnen Halbleiterchip hergestellt und über einen
internen Bus 60 miteinander verbunden. Der Programmspeicher 110 speichert eine
Kette von Befehlen für ein Programm.
-
Die CPU 10 holt jeden Befehl vom Programmspeicher 110 und führt ihn aus, um
Operandendaten zu verarbeiten. Die zu verarbeitenden Operandendaten und die
verarbeiteten Daten werden im Datenspeicher 120 gespeichert.
-
Die INTC 30 empfängt eine Vielzahl von Unterbrechungsanfragesignalen, die ein
Signal 23 von der DMAC 20 und ein Signal 51 von der peripheren Einheit 50
enthalten. Wenn zwei oder mehrere Unterbrechungsanfragen gleichzeitig erzeugt
werden, wählt die INTC 30 eine von ihnen gemäß einer vorbestimmten
Prioritätsreihenfolge aus und führt dann ein Unterbrechungsverarbeitungsanfragesignal 31
zusammen mit einer Unterbrechungsvektorzahl 32 zur CPU 10 zu. In Reaktion
darauf schiebt die CPU 10 eine Programmausführung auf und schaltet dann, nach
Speichern der Inhalte eines Programmzählers, eines Programmstatuswortes und
einer Gruppe von allgemeinen Registern (die alle nicht gezeigt sind), zur
Ausführung eines Unterbrechungsverarbeitungsprogramms um.
-
Die Einheit 40 zum Empfangen serieller Daten empfängt Daten, die durch eine
serielle Schaltung 150 seriell zugeführt werden. Die seriellen Daten werden in einem
Schieberegister 405 der Reihe nach geholt. Wenn vorbestimmte Bits von Daten,
wie beispielsweise 8 Bits, empfangen werden, werden jene Daten vom
Schieberegister 405 parallel zu einem Pufferregister 404 geführt. Das Schieberegister 405
empfängt dann nächste serielle Daten. Wenn die Daten zum Pufferregister 404
geführt werden, ändert eine Empfangssteuereinheit 401 ein DMA-
Datenübertragungsanfragesignal 42 zu einem aktiven Pegel, um die DMAC 20
nach einer Datenübertragung zu fragen. In dem Fall, in dem die Daten im
Pufferregister 404 ein EOF-(Ende eines Frames = End Of Frame)-Code sind, der ein
Beenden einer Frame-Datenübertragung anzeigt, wird ein Blockschaltsignal 41 aktiv
gemacht, um die DMAC 20 nach einer Änderung im Speicherblock zu fragen.
Demgemäß wird eines der Signale 41 und 42 erzeugt und der DMAC 20 zugeführt,
und zwar jedesmal dann, wenn vorbestimmte Bits serieller Daten empfangen
werden.
Der Empfang des EOF-Codes und des Auftretens eines Fehlers in den
empfangenen Daten wird in einem Statusregister 402 aufgezeichnet. Die Ausgabe des
Pufferregisters 404 wird auf den internen Bus 60 durch die Steuereinheit 401
synchron zu einem Datenausgabe-Befehlssignal 25 von der DMAC 20 ausgegeben.
Weiterhin wird ein Statusspeicher-Befehlssignal 24 von der DMAC 20 zugeführt. In
Antwort auf dieses Signal 24 wird der Inhalt des Statusregisters 402 in ein
Statusspeicherregister 403 gespeichert.
-
Die DMAC 20 enthält eine Übertragungssteuereinheit 201, die eine
Datenübertragung zwischen der Empfangseinheit 40 und dem Datenspeicher 120 basierend auf
einer Steuerinformation durchführt, die in einem aktuellen Registerblock 202
gespeichert ist. Die im Registerblock 202 gespeicherte Information enthält
Übertragungszeitinformation, die die Anzahl von Malen darstellt, für welche eine
Datenübertragung durchzuführen ist, eine Speicheradresseninformation, die eine
Zugriffsadresse zum Speicher 120 darstellt, und Steuer-/Statusinformation, wie es in
der Zeichnung gezeigt ist. Die Steuer-/Statusinformation enthält
Übertragungsrichtungsinformation, die eine Richtung einer Datenübertragung von einem Speicher
zu einer peripheren Einheit oder von einer peripheren Einheit zu einem Speicher
anzeigt (wobei beim vorliegenden Ausführungsbeispiel die Richtung von der
Einheit 40 zum Speicher 120 gezeigt ist), Adressenerneuerungssteuerinformation, die
eine Erneuerungsrichtung der Speicheradresse anzeigt, und Übertragungs-
Freigabeinformation, die darstellt, ob die Datenübertragungsanfrage angenommen
ist oder nicht. Weiterhin ist in der Steuer-/Statusinformation kontinuierliche
Übertragungs-Freigabe-/-Sperrinformation enthalten, die darstellt, ob eine
kontinuierliche Datenübertragung zu einem weiteren Speicherblock freigegeben oder gesperrt
ist. Die DMAC 20 enthält gemäß der vorliegenden Erfindung weiterhin einen
nächsten Registerblock 203 und einen Speicherregisterblock 204. Der nächste
Registerblock 203 speichert Information, die für eine nächste
Datenübertragungsoperation nötig ist, die nach einem Beenden einer aktuellen Datenübertragungsoperation
durchzuführen ist, d.h. eine nächste Übertragungszeitinformation, eine nächste
Speicheradresseninformation und eine nächste Steuer-/Statusinformation, wie es
in der Zeichnung gezeigt ist. Der Speicherregisterblock 204 speichert die
Übertragungszeitinformation und die Steuer-/Statusinformation des aktuellen
Registerblocks 202. Die Übertragungssteuereinheit 201 führt ein Halteanfrage-(HLDRQ)-
Signal 21 zur CPU 10 zu, um ein Benutzungsrecht für die Busse 60 und 130 von
der CPU 10 zu bekommen. In Antwort darauf gibt die CPU 10 ein
Haltebestätigungs-(HLDACK)-Signal 22 zurück, um das Busbenutzungsrecht zu geben.
Dadurch wird die Datenübertragung von der Einheit 40 zum Speicher 120
durchgeführt. Jedesmal dann, wenn die Datenübertragung durchgeführt wird, wird die
Anzahl von Übertragungen, die im aktuellen Registerblock 202 gespeichert ist, um
Eins dekrementiert, und die Speicheradresse wird erneuert. Wenn die Anzahl von
Übertragungen Null wird, d.h. wenn die Anzahl von übertragenen Daten die Anzahl
von Daten erreicht, die bei der aktuellen Datenübertragungsoperation bestimmt ist,
werden die Übertragungszeitinformation und die Steuer-/Statusinformation des
aktuellen Registerblocks 202 zum Speicherregisterblock 204 gespeichert. Diese
Speicheroperation wird auch ausgeführt, wenn das Blockumschaltsignal 41 durch
die Einheit 40 erzeugt wird. Wenn die gespeicherte Steuer-/Statusinformation die
kontinuierliche Übertragungs-Freigabeinformation enthält, werden die Inhalte des
nächsten Registerblocks 203 in den aktuellen Registerblock 202 kopiert. Das
Unterbrechungsanfragesignal 23 und das Statusspeicher-Befehlssignal 24 werden
danach erzeugt. Andererseits, nämlich in dem Fall, daß die gespeicherte
Steuer-/Statusinformation die kontinuierliche Übertragungssperrinformation enthält,
werden die Signale 23 und 24 erzeugt, ohne daß die Inhalte des Registerblocks 23
in den Registerblock 24 kopiert werden.
-
Im Datenspeicher 120 werden 1-te bis N-te Blöcke 122,124,..., 126 als
Speicherbereich vorbereitet, der mit Daten von der Einheit 40 zum Empfangen serieller
Daten zu übertragen ist. Der Datenspeicher 120 enthält weiterhin 1-te bis N-te
Blocksteuerdatenbereiche 123,125,..., 127, die entsprechend den Blöcken 122,124,...,
126 vorgesehen sind. Jeder der Blocksteuerdatenbereiche speichert
Übertragungszeitdaten, die die Größe des entsprechenden Blocks anzeigen (d.h. die
Anzahl von durchzuführenden Übertragungen), Speicheradressendaten, die die
führende Adresse des entsprechenden Blocks anzeigen, DMA-Steuer-/Statusdaten für
die Datenübertragung zwischen dem entsprechenden Block und der Einheit 40,
Daten zum Speichern eines peripheren Status, die mit dem Inhalt des
Statusspeicherregisters 403 beschrieben sind, und nächste Adressendaten, die die führende
Adresse eines weiteren Blocksteuerdatenbereichs anzeigen, wie es in der
Zeichnung gezeigt ist. Weiterhin ist im Datenspeicher 120 ein Bereich 121 zum
Speichern einer Steuerdatenbereichsadresse vorgesehen.
-
Als nächstes wird ein Betrieb unter Bezugnahme auf die Fig. 1 bis 3 detailliert
beschrieben.
-
Die CPU 10 führt vor einem Aktivieren der DMAC 20 eine Initialisierungsoperation
durch. Genauer gesagt werden 1-te bis N-te Blöcke 122,124, ..., 126 zugeordnet,
und die oben angegebenen Daten werden in die jeweiligen
Blocksteuerdatenbereiche 123,125,..., 127 geschrieben. In dieser Beschreibung enthalten alle DMA-
Steuer-/Statusdaten des 1-ten bis (N-1)-ten Blocksteuerdatenbereichs die
kontinuierliche Übertragungs-Freigabeinformation, wohingegen jene des N-ten
Blocksteuerdatenbereichs die kontinuierliche Übertragungssperrinformation enthalten.
Darüber hinaus zeigen die nächsten Adressendaten des 1-ten (1 = 1, 2,..., N-1)
Blocksteuerdatenbereichs die führende Adresse des (1+1)-ten Blocksteuerdatenbereichs
an. Der Steuerdatenbereich 121 wird auf die führende Adresse des 1-ten
Blocksteuerdatenbereichs 123 gesetzt. Die CPU 40 setzt die Einheit 40 zum Empfangen
serieller Daten weiterhin auf eine Empfangssteuerinformation, wie beispielsweise
eine Geschwindigkeitsinformation der seriellen Schaltung 150, um eine serielle
Empfangsoperation zu initiieren. Weiterhin werden die
Übertragungsanzahlinformation, die Speicheradresseninformation und die DMA-Steuer/Status-Information,
die im 2-ten Blocksteuerdatenbereich 125 gespeichert sind, in den nächsten
Registerblock 203 der DMAC 20 geladen, und die Übertragungsanzahlinformation, die
Speicheradresseninformation und die DMA-Steuer-/Statusinformation, die im 1-ten
Blocksteuerdatenbereich 123 gespeichert ist, werden in den aktuellen
Registerblock 202 geladen. Somit wird die DMAC 20 aktiviert. Die CPU 10 macht damit
weiter, nachfolgende Befehle vom Programmspeicher 110 zu holen und
auszuführen.
-
Andererseits arbeitet die so aktivierte DMAC 20 gemäß einem Ablaufdiagramm,
das in Fig. 2 gezeigt ist. Genauer gesagt wird beurteilt, ob das
Blockumschaltanfragesignal 41 aktiv ist oder nicht (251), und ob das
Datenübertragungsanfragesignal 42 aktiv ist oder nicht (252).
-
Die Einheit 40 zum Empfangen serieller Daten ist auch im aktivierten Zustand und
empfängt somit die seriellen Daten von der seriellen Schaltung 150. Wenn die
vorbestimmten Bits der seriellen Daten empfangen werden, wird beurteilt, ob jene
Daten einen EOF-Code bilden oder normale Daten sind, um das Signal 41 oder 42
zu erzeugen.
-
Unter der Annahme, daß die Empfangseinheit 40 das Datenübertragungsanfrage-
Signal 42 erzeugt, ändert die Übertragungssteuereinheit 201 das HLDRQ-Signal 21
zum aktiven Pegel, um das Bussteuerrecht von der CPU 10 anzufragen (253). In
Antwort darauf schiebt die CPU 10 die Programmausführung auf und sendet dann
das HLDACK-Signal 22 zurück, wobei die interne Schaltung davon in einen
Haltezustand gebracht wird. Wenn die Übertragungssteuereinheit 201 den aktiven Pegel
des HLDACK-Signals 22 erfaßt (254), führt sie die im aktuellen Registerblock 202
gespeicherte Speicheradresse über die Busse 60 und 130 zum Datenspeicher 120
und erzeugt weiterhin das Datenausgabe-Befehlssignal 25, um die Einheit 40 zu
veranlassen, die empfangenen Daten auf die Busse 60 und 130 auszugeben.
Somit werden die empfangenen Daten zur Stelle der führenden Adresse des 1-ten
Blocks 122 im Speicher 120 übertragen (255). Nach der Datenübertragung wird
das HLDRQ-Signal 21 zurückgezogen, um das Bussteuerrecht zur CPU 10
zurückzubringen (256). Somit nimmt die CPU 10 die aufgeschobene
Programmausführung wieder auf. Danach erneuert die Übertragungssteuereinheit 201 die
Speicheradresse und speichert dann die erneuerte Speicheradresse zurück in den
aktuellen Registerblock 202. Weiterhin wird die Anzahl von Übertragungszeiten, die
durch die Übertragungsanzahlinformation angezeigt wird, um Eins dekrementiert,
wobei die dekrementierte Zahl wiederum in den aktuellen Registerblock 202
zurückgespeichert wird (257). Wenn es erwünscht ist, kann die Speicheradresse vor
der Datenübertragung erneuert werden, und die erneuerte Speicheradresse kann
für die Datenübertragung verwendet werden. Die Übertragungssteuereinheit 201
beurteilt, ob die dekrementierte Zahl Null ist oder nicht (258), und wenn sie es nicht
ist, springt sie zurück zum Schritt 251. Die obige Operation wird jedesmal
ausgeführt, wenn das Datenübertragungsanfragesignal 42 aktiv wird.
-
Wenn das Blockumschaltanfragesignal 41 erzeugt wird, oder wenn der Inhalt der
Übertragungsanzahlinformation Null wird, um anzuzeigen, daß der 1-te Block 122
mit den übertragenen Daten gefüllt ist, schaltet die Operation der DMAC 20 in den
Schritt 259 um, in welchem die Übertragungsanzahlinformation und die
Steuer4statusinformation im aktuellen Registerblock 202 in den Speicherregisterblock
204 gespeichert werden. Die Übertragungssteuereinheit 201 beurteilt dann, ob die
gespeicherte Steuer-/Statusinformation die Information zum Freigeben einer
kontinuierlichen Übertragung enthält (260). In der vorliegenden Beschreibung wird der
Schritt 261, da die Information zum Freigeben einer kontinuierlichen Übertragung
enthalten ist, derart durchgeführt, daß die Inhalte des nächsten Registerblocks 203
in den aktuellen Registerblock 202 kopiert werden. Somit wird die DMAC 20 sofort
in einen Übertragungszulassungszustand zum Durchführen einer
Datenübertragung zwischen der Einheit 40 zum Empfangen serieller Daten und einem 2-ten
Block 124 des Speichers 120 gebracht, ohne auf die Dateneinstelloperation durch
die CPU 10 zu warten. Die Übertragungssteuereinheit 201 erzeugt danach das
periphere Speicherbefehlssignal 24 und das Unterbrechungsanfragesignal 23 und
schaltet dann die Operation davon zum Schritt 251 um. Demgemäß werden dann,
wenn die Einheit 40 zum Empfangen serieller Daten danach die
Datenübertragungsanfrage 24 erzeugt, die empfangenen Daten zum 2-ten Block 124
übertragen.
-
Andererseits speichert die Empfangssteuereinheit 401 in Antwort auf das periphere
Speicherbefehlssignal 24 den Inhalt des Statusregisters 402 in das
Statusspeicherregister 403.
-
Die INTC 30 antwortet auf das Unterbrechungsanfragesignal 23 von der DMAC 20,
um eine Unterbrechungsverarbeitungsanfrage zur CPU 10 zu erzeugen. In Antwort
darauf schient die CPU 10 die Programmausführung auf, speichert danach
Information, die zum Wiederaufnehmen der aufgeschobenen Programmausführung
nötig ist, in einen Stapelbereich (nicht gezeigt) im Datenspeicher 120, und führt dann
ein in Fig. 3 gezeigtes Unterbrechungsverarbeitungsprogramm aus.
-
In diesem Unterbrechungsverarbeitungsprogramm liest die CPU 10 zuerst die
gespeicherte Statusinformation aus dem Statusspeicherregister 132 der
Empfangseinheit 40 aus, um zu prüfen, ob ein Fehler in den empfangenen Daten und/oder
dem Empfangszustand aufgetreten ist oder nicht (302). Wenn ein Fehler erfaßt
wird, führt die CPU 10 eine Fehlerverarbeitungsoperation 303 aus, um die
Operationen der DMAC 20 und der Empfangseinheit 40 anzuhalten und eine Vorrichtung
zum Senden serieller Daten (nicht gezeigt) anzufragen, wiederum serielle Daten zu
senden, und zwar mit einer Neuinitialisierung der DMAC 20 und der Einheit 40.
Wenn kein Fehler erfaßt wird, lädt die CPU 10 den Inhalt des
Statusspeicherregisters 403 in einen 1-ten Blocksteuer-Datenbereich 123 als periphere
Statusspeicherdaten und die Inhalte des Speicherregisterblocks 204 in denselben Bereich
123 als die Übertragungsanzahldaten und DMA-Steuer-/Statusdaten (304). Für
diese Verarbeitungsoperation werden die jeweiligen Adressen des 1-ten
Blocksteuer-Datenbereichs 123 aus der führenden Adresse des Bereichs 123 erhalten,
die im Steuerdatenadressenbereich 121 gespeichert ist, und vorbestimmte
Versatzwerte, die den jeweiligen Stellen im Blocksteuer-Datenbereich zugeordnet sind.
Die Adressen der jeweiligen Register im DMAC 20 und der Empfangseinheit 40
werden zuvor als 110-Adressen bestimmt. Danach wird der Inhalt der nächsten
Adressendaten im 1-ten Blocksteuer-Datenbereich 123, d.h. die führende Adresse
des 2-ten Blocksteuer-Datenbereichs 125, in den Steuerdatenadressenbereich 121
geladen. Dann beurteilt die CPU 10, ob die gespeicherte DMA-
Steuer-/Statusinformation im Bereich 123 die Information zum Freigeben einer
kontinuierlichen Übertragung enthält oder nicht (305). In der vorliegenden
Beschreibung werden, da jene Information enthalten ist, die
Übertragungsanzahlinformation, die Speicheradresseninformation und die DMA-Steuer-/Statusdaten im
3-ten Blocksteuer-Datenbereich (nicht gezeigt) unter Verwendung des Inhalts der
Steuerdaten-Bereichsadresse 121 und der nächsten Adressendaten im 2-ten
Blocksteuer-Datenbereich 125 in den nächsten Registerblock 203 der DMAC 20
geladen (306).
-
Wendet man sich wieder der Fig. 2 zu, erzeugt dann, wenn die gespeicherte
Steuer4statusinformation im Schritt 260 die Information zum Sperren einer
kontinuierlichen Übertragung enthält, die Übertragungssteuereinheit 201 die Signale 23 und
24, ohne die Inhalte des nächsten Registerblocks 203 in den aktuellen
Registerblock 202 zu kopieren. Die DMAC 20 wird dadurch in einen Datenübertragungs-
Sperrzustand gebracht und wartet auf die Dateneinstelloperation durch die CPU
10. Im Unterbrechungsverarbeitungsprogramm der CPU 10, das in Fig. 3 gezeigt
ist, wird daher der Schritt 307 nach dem Schritt 305 zu den gewünschten Daten
ausgeführt, die im 2-ten und 3-ten Blocksteuer-Datenbereich gespeichert werden
und jeweils in den aktuellen und den nächsten Registerblock 202 und 203 geladen
werden. Die DMAC 20 wird dadurch wieder aktiviert.
-
Nach dem Schritt 306 oder 307 führt die CPU 10 eine Verarbeitungsoperation an
den Daten durch, die im 1-ten Block 122 gespeichert sind. Danach wird die
Information, die im Datenspeicher 120 gespeichert ist, zur CPU 10 zurückgebracht, so
daß die aufgeschobene Programmausführung wieder aufgenommen wird.
-
Da die gespeicherte Übertragungsanzahlinformation im Speicherregisterblock 204
selbst dann zum entsprechenden Blocksteuer-Datenbereich geladen ist, wenn die
oben angegebene Blockumschaltoperation in Antwort auf das Anfragesignal 41
ausgeführt wird, das aufgrund des Empfangs eines EOF-Codes erzeugt wird, kann
es erfaßt werden, wie viele gültigen Daten im entsprechenden Block gespeichert
sind.
-
Wie es oben beschrieben ist, wird durch Einstellen der Information zum Freigeben
einer kontinuierlichen Übertragung in der DMA-Steuer-/Statusinformation die
DMAC 20 für einen nächsten Block sofort in den Datenübertragungs-
Zulassungszustand gebracht, so daß die Einheit 40 zum Empfangen serieller
Daten frei vom Empfangs-Überlauffehler ist.
-
Der Mikrocomputer 100 kann mit einer Einheit zum Senden serieller Daten
ausgestattet sein. In diesem Fall ist weiterhin eine Gruppe aus einem aktuellen
Registerblock, einem nächsten Registerblock und einem Speicherregisterblock in der
DMAC 20 vorgesehen, und die Datenübertragungsoperationen für die
Empfangsund die Sendeeinheit werden auf eine Zeitmultiplex-Art durchgeführt. Sowohl der
Empfangs-Überlauffehler als auch der Sende-Unterlauffehler werden vom
Auftreten abgehalten.
-
Wendet man sich nun der Fig. 4 zu, ist dort ein Mikrocomputer 101 gemäß einem
zweiten Ausführungsbeispiel der vorliegenden Erfindung gezeigt, wobei dieselben
Bestandteile wie jene, die in Fig. 1 gezeigt sind, mit denselben Bezugszeichen
bezeichnet sind, um eine weitere Beschreibung davon wegzulassen. Dieser
Mikrocomputer 101 enthält die DMAC 20 zum Durchführen einer Datenübertragung
zwischen der Einheit 40 zum Empfangen serieller Daten und einem lokalen Speicher
400. Die DMAC 20, die Empfangseinheit 40 und der lokale Speicher 400 sind über
einen lokalen Bus 450 miteinander verbunden. Wenn die Empfangseinheit 40 eine
Datenübertragungsanfrage ausgibt, erhält die Übertragungssteuereinheit 201 das
Bussteuerrecht des lokalen Busses 450 von einem Prozessor (nicht gezeigt), der
den Bus 450 durch Verwenden des HLDRQ-Signals 21 und des HLDACK-Signals
22 managt. Die Daten werden dadurch von der Empfangseinheit 40 zum lokalen
Speicher 400 übertragen.
-
Gemäß diesem Ausführungsbeispiel wird die Haupt- und die
Unterbrechungsprogrammroutine, die durch die CPU 10 ausgeführt werden, nicht aufgeschoben, und
daher wird die Programmausführungseffizienz erhöht. Der lokale Bus 450 kann nur
als ein DMA-Übertragungsbus verwendet werden, und in jenem Fall können die
Signale 21 und 22 weggelassen werden.
-
Bei den obigen Ausführungsbeispielen wird die Unterbrechungsprogrammroutine,
die in Fig. 3 gezeigt ist, durch einen Anwender hergestellt und kann somit geändert
werden. Beispielsweise können der Fehlerprüfschritt 302 und/oder die
Datenverarbeitungsoperation 308 ausgeführt werden, nachdem alle Blöcke 123,124,..., 126
mit empfangenen Daten übertragen sind.
-
Wie es hierin zuvor beschrieben ist, muß die CPU 10 die internen
Ausführungszustände davon in den Datenspeicher 120 speichern, um die
Unterbrechungsprogrammroutine zu initiieren, die in Fig. 3 gezeigt ist, und sie muß nach einer
Ausführung der Unterbrechungsprogrammroutine die gespeicherten Zustände
zurücksenden, um die aufgeschobene Programmausführung wiederaufzunehmen. Dieses
Speichern und Zurückbringen einer Operation wird "Zusatz" genannt. Wenn ein
solcher Zusatz entfernt werden könnte und wenn die CPU hardwaremäßig reguläre
Operationen durchführen könnte, die auf die Unterbrechungsanfrage von der
DMAC 20 antworten, ohne Befehle zu verwenden, die im Programmspeicher 10
gespeichert sind, würde die Programmausführungseffizienz der CPU weiter erhöht
werden, und der Aufwand zum Herstellen eines Programms durch einen Anwender
würde reduziert werden.
-
Ein Aufbau dafür ist in Fig. 5 als drittes Ausführungsbeispiel der vorliegenden
Erfindung gezeigt. Es ist zu beachten, daß nur die CPU 15 und die INTC 30 in der
Zeichnung gezeigt sind, da der andere Aufbau derselbe wie jener ist, der in Fig. 1
gezeigt ist. Diese CPU 15 arbeitet auf eine Mikroprogrammsteuerweise. Das
bedeutet, daß die durch jeden Befehl bestimmte Funktion, der im Programmspeicher
10 gespeichert ist, durch Ausführen einer Kette von Mikrobefehlen (d.h. eines
Mikroprogramms) erreicht wird, die ihm entsprechen. Da das Mikroprogramm
maskiert ist und ein Anwender somit nicht darauf zugreifen kann, wird es als Teil der
Hardware des Mikrocomputers angesehen.
-
Der Inhalt eines Programmzählers (PC) 151 wird auf die Busse 60 und 130 über
einen Adressenbus 601 und einen Adressentreiber 153 übertragen, um auf den
Programmspeicher 110 zuzugreifen. Der aus dem Programmspeicher 110
ausgelesene Befehl wird durch einen Datenpuffer 154 und einen Datenbus 602 temporär
in einem Befehlsregister (IR) 155 gespeichert. Der Befehl vom IR 155 wird durch
einen Befehlsdecodierer 156 decodiert, um decodierte Information zu erzeugen,
die wiederum zu einer Ausführungseinheit 158 zugeführt wird. Die
Ausführungseinheit 158 enthält einen Mikroprogrammspeicher 1585 und einen
Mikroprogrammzeiger 1584 zum Zugreifen auf den Speicher 1585. Der Mikroprogrammzeiger 1584
wird mit einer Mikroadresse gesetzt, die im decodierten Befehl enthalten ist, so daß
eine Kette von Mikrobefehlen entsprechend dem Befehl im IR 155 aus dem
Mikroprogrammspeicher 1585 ausgelesen und dann ausgeführt wird. Die
Ausführungseinheit 158 enthält weiterhin eine Arithmetik- und Logikeinheit (ALU) 1581, ein
Programmstatuswort (PSW) 1582 zum temporären Speichern eines
Ausführungszustandes der ALU 1581 und eine Gruppe von Temporärregistern 1583. Die Kette
von Mikrobefehlen wird mittels der ALU 1581, des PSW 1582, der Register 1583
und einer Gruppe allgemeiner Register 157 ausgeführt, um die Funktion zu
erreichen, die durch den Befehl im IR 155 bestimmt ist. Im Laufe der Ausführung der
Mikrobefehle erzeugt die Ausführungseinheit 158 eine Gruppe von
Ablauffolgesteuersignalen 159.
-
Der Mikroprogrammspeicher 1585 speichert ein Makrodienst-Mikroprogramm 1586
gemäß dem vorliegenden Ausführungsbeispiel, das später detailliert beschrieben
wird. Das Makrodienst-Mikroprogramm 1586 wird initiiert, wenn die
Unterbrechungsverarbeitungsanfrage von der INTC 30 eine Makrodienstanfrage bestimmt.
-
Insbesondere enthält die INTC 30 ein Flag 33 zum Bestimmen der
Unterbrechungsanfrage von der DMAC 20, die als Makrodienst oder als normale
Vektorunterbrechung zu behandeln ist. Der gesetzte Zustand des Flags 33 bestimmt den
Makrodienst, wohingegen der rückgesetzte Zustand davon die
Vektorunterbrechung bestimmt. Wenn die INTC 30 die Unterbrechungsanfrage empfängt, erzeugt
sie die Unterbrechungsverarbeitungsanfrage 31 zur Ausführungseinheit 158-1
zusammen mit einem Einstellen einer Unterbrechungsmodeninformation 32-1 in das
IR 55. Der Inhalt der Information 32-1 hängt vom Zustand des Flags 33 ab. Die
INTC 30 führt weiterhin eine Vektoranzahlinformation 32-2 zur Ausführungseinheit
158 zu. Die Unterbrechungsmodeninformation 32-1 wird decodiert, um zu erfassen,
welcher Mode bestimmt ist. Wenn die Information 32-1 die Vektorunterbrechung
bestimmt, speichert die Ausführungseinheit 158 die Inhalte des PC 151, des PSW
1582 und des allgemeinen Registers 157 und erhält dann die führende Adresse
einer Unterbrechungsprogrammroutine von der Vektoranzahlinformation 32-2,
wobei die führende Adresse wiederum zum PC 151 geladen wird. Die
Unterbrechungsprogrammroutine wird dadurch initiiert. Andererseits wird dann, wenn die
Unterbrechungsmodeninformation 32-1 den Makrodienst bestimmt, die führende
Adresse des Makrodienst-Mikroprogramms 1582 von der Vektoranzahlinformation
32-2 abgeleitet und dann in den Zeiger 1584 eingestellt. Das Makrodienst-
Mikroprogramm wird dadurch initiiert. Zu dieser Zeit werden die Inhalte des PC
151, des PSW 1582 und der Register 157 nicht gespeichert, sondern darin
gehalten wie sie sind. Darüber hinaus wird verhindert, daß jene Inhalte erneuert oder
geändert werden.
-
Bei einer Operation führt eine CPU 15 ähnlich wie die CPU 10, die in Fig. 1 gezeigt
ist, ein im Programmspeicher 110 gespeichertes Initialisierungsprogramm aus, um
nötige Daten und Informationen in den Datenspeicher 120, die Einheit 40 zum
Empfangen serieller Daten und die DMAC 20 zu setzen. Bei diesem
Ausführungsbeispiel enthält die DMA-Steuer-/Statusinformation jedoch weiterhin eine
Vektorunterbrechungs-Freigabe4-Sperrinformation, die anzeigt, ob die CPU 15 direkt nach
einem Beenden der Makrodienstoperation in die Vektorunterbrechungs-
Verarbeitungsoperation umgeschaltet ist oder nicht. Bei der vorliegenden
Beschreibung enthält jede der DMA-Steuer-/Statusinformationen im 1-ten bis (N-1)-
ten Blocksteuer-Datenbereich die Information zum Freigeben einer kontinuierlichen
Übertragung und die Vektorunterbrechungs-Sperrinformation, wohingegen jene im
N-ten Blocksteuer-Datenbereich die Information zum Sperren einer kontinuierlichen
Übertragung und die Vektorunterbrechungs-Freigabeinformation enthält. Zusätzlich
wird das Flag 33 in der INTC 30 im Initialisierungsprogramm in den gesetzten
Zustand gebracht. Danach fährt die CPU 15 damit fort, ein im Programmspeicher 110
gespeichertes Programm auszuführen.
-
Andererseits arbeitet die DMAC 20 gemäß dem in Fig. 2 gezeigten Flußdiagramm,
so daß alle empfangenen Daten, die aus vorbestimmten Bits von Daten bestehen,
von der Einheit 40 zum 1-ten Block 122 des Speichers 120 übertragen werden.
Wenn der Inhalt der Übertragungszeitinformation im aktuellen Registerblock 202
Null wird, oder wenn der EOF-Code empfangen wird, werden die
Übertragungszeitinformation und die Steuer-/Statusinformation im aktuellen Registerblock 202 in
den Speicherregisterblock 204 gespeichert, und die Inhalte des nächsten
Registerblocks 203 werden dann in den aktuellen Registerblock 202 kopiert (siehe
Schritte 259 bis 261 in Fig. 2). Das periphere Speicherbefehlssignal 24 und das
Unterbrechungsanfragesignal 23 werden danach erzeugt.
-
Da das Flag 33 im gesetzten Zustand ist, führt die INTC 30 die Makrodienst-
Modeninformation 32-1 zum IR 55. Somit wird das in Fig. 6 gezeigte Makrodienst-
Mikroprogramm initiiert, ohne die Inhalte von PC 151, PSW 1582 und der Register
157 zu speichern, und mit einem Halten von ihnen wie sie sind. Bei der
Makrodienstoperation werden die Inhalte des Statusspeicherregisters 403 und des
Speicherregisterblocks 204 in die entsprechenden Stellen des 1-ten Blocksteuer-
Datenbereichs 123 durch Verwenden der Adresse geladen, die im Steuerdaten-
Adressenbereich 121 gespeichert ist (601). Danach wird beurteilt, ob die
gespeicherten DMA-Steuer-/Statusdaten die Information zum Freigeben einer
kontinuierlichen
Übertragung enthalten oder nicht (602). In der vorliegenden Beschreibung
werden, da die Information zum Freigeben einer kontinuierlichen Übertragung
enthalten ist, die nächsten Adressendaten im 1-ten Blocksteuer-Datenbereich 123 als
Bereichsadresse 121 gesetzt (603), und die Übertragungszeitinformation, die
Speicheradresseninformation und die DMA-Steuer-/Statusinformation, die im 3-ten
Blocksteuer-Datenbereich gespeichert sind, werden in den nächsten Registerblock
203 der DMAC 20 durch Verwenden der neuen Bereichsadresse 121 und der
nächsten Adressendaten im 2-ten Blocksteuer-Datenbereich 125 geladen (604).
Nachfolgend wird beurteilt, ob die gespeicherte DMA-Steuer-/Statusinformation, die
im 1-ten Bereich 123 geladen ist, die Vektorunterbrechungs-Freigabeinformation
enthält oder nicht (604). In dieser Beschreibung wird deshalb, weil die
Vektorunterbrechungs-Sperrinformation enthalten ist, die Makrodienstoperation beendet.
-
In Antwort auf ein Beenden der Makrodienstoperation wird zugelassen, daß der PC
151, das PSW 1582 und die Register 157 ihre Inhalte ändern, so daß die
aufgeschobene Programmausführung wieder aufgenommen wird. Da die CPU 15 keine
Zusatzoperation benötigt, wird die Ausführungseffizienz der CPU 15 erhöht.
-
Bei der Makrodienstoperation, die auf die Unterbrechungsanfrage antwortet, die
durch das Beenden einer Datenübertragung zwischen der Empfangseinheit 40 und
dem N-ten Block 126 des Speichers 120 erzeugt wird, schaltet die Operation der
CPU 15 vom Schritt 602 zum Schritt 604 um, weil die Information zum Sperren
einer kontinuierlichen fibertragung enthalten ist. Im Schritt 605 wird deshalb, weil die
Vektorunterbrechungs-Freigabeinformation enthalten ist, das Flag 33 in den
rückgesetzten Zustand gelöscht (606). Die Makrodienstoperation wird dann beendet.
-
In Antwort auf das Löschen des Flags 33 setzt die INTC 30 die
Vektorunterbrechungsmodeninformation 32-1 in das IR 155, so daß eine
Unterbrechungsprogrammroutine, die im Programmspeicher 110 gespeichert und durch einen
Anwender geschrieben ist, initiiert wird. In dieser Unterbrechungsroutine werden die
Fehlerprüfoperation und die Verarbeitungsoperation an den empfangenen Daten
durchgeführt.
-
Wie es oben beschrieben ist, wird deshalb, weil die Operation zum Laden der
erwünschten Daten zwischen dem Datenspeicher 120 und der DMAC 20 durch das
Makrodienst-Mikroprogramm als Teil der Hardware des Mikrocomputers
durchgeführt
wird, die Datenverarbeitungseffizienz weiter erhöht, und ein Aufwand für den
Anwender für ein Herstellen eines Programms wird reduziert.
-
Ebenso kann die DMAC 20 beim vorliegenden Ausführungsbeispiel eine
Datenübertragung zwischen der Einheit 40 und einem lokalen Speicher durchführen, und
zwar auf ähnliche Weise wie in Fig. 4.
-
Es ist klar, daß die vorliegende Erfindung nicht auf die obigen
Ausführungsbeispiele beschränkt ist, sondern abgeändert und modifiziert werden kann, ohne vom
Schutzumfang der Erfindung abzuweichen. Beispielsweise kann die
Übertragungssteuereinheit 201 statt einem Kopieren der Inhalte des nächsten
Registerblocks 203 in den aktuellen Registerblock 202 einen Registerblock, auf den
zwischen den Registerblöcken 202 und 203 Bezug zu nehmen ist, mittels eines
Multiplexers ändern.