ZÄHLER MIT VERÄNDERBARER VERSCHALTUNG ZUR
ADRESSIERUNG IN GRAPHISCHEN ANZEIGESYSTEMEN
-
Diese Spezifikation gehört zu einer Gruppe von sieben
Spezifikationen, die jeweils eine andere Erfindung betreffen,
jedoch ein gemeinsames exemplarisches Ausführungsbeispiel
haben. Um Beschreibungen nicht unnötig zu wiederholen,
verweisen alle sieben Spezifikationen aufeinander. Es handelt
sich dabei um:
-
EP-A-0 279 225, Titel: "ZÄHLER MIT VERÄNDERBARER
VERSCHALTUNG ZUR ADRESSIERUNG IN
GRAPHISCHEN ANZEIGESYSTEMEN"
-
EP-A-0 279 229, Titel: "GRAPHISCHES ANZEIGESYSTEM"
-
EP-A-0 279 231, Titel: "STEUERUNGSEINHEIT FÜR
GRAPHIKFUNKTIONEN FÜR EIN
HOCHLEISTUNGS-
BILDSCHIRMANZEIGESYSTEM"
-
EP-A-0 279 226, Titel: "HOCHAUFLÖSENDER ANZEIGEADAPTER"
-
EP-A-0 279 227, Titel: "VEKTORGENERATOR FÜR RASTERANZEIGE"
-
EP-A-0 279 230, Titel: "VIDEOADAPTER MIT VERBESSERTER
DATENWEGSTEUERUNG"
-
EP-A-0 279 228, Titel: "RAHMENPUFFER IN EINER ODER FÜR EINE
VIDEOANZEIGE MIT RASTERFÖRMIGER
ABTASTUNG"
-
Die vorliegende Erfindung betrifft Zähler mit veränderbarer
Verschaltung, die sich zur Adreßerzeugung in graphischen
Anzeigesystemen eignen.
-
Die Entwicklung der Computer-Technologie hat zur Bildung
eines komplexen Fachgebietes geführt, das sich mit der
Darstellung graphischer Informationen befaßt, die von
Computern erzeugt werden. Dieses Fachgebiet wird als
Computergraphik bezeichnet. Ein Verfahren, das häufig
verwendet wird, um ein Bild zu erzeugen, besteht darin, eine
Gruppe von Punkten zu erzeugen und diese Punkte mit geraden
Linien zu verbinden. Die dabei entstehende Kombination von
Punkten und geraden Linien wird auf der Anzeige des
Computergraphik-Endgeräts angezeigt, die im Normalfall eine
Kathodenstrahlröhre (CRT, Cathode Ray Tube) umfaßt. Die
Kathodenstrahlröhre umfaßt eine Anordnung von Bildelementen.
Das graphische Bild entsteht, indem ausgewählte Bildelemente
der Anordnung beleuchtet werden. Diese Anordnung der
Bildelemente in einer Anzeige entspricht den Speicherstellen
in einem Bildspeicher. Dieser Bildspeicher wird oft als
Bitmap-Speicher bezeichnet. Die entsprechende CRT-Anzeige
wird auch als Bitmap-Anzeige bezeichnet.
-
Eine sehr nützliche Funktion für Bitmap-Anzeigen ist die
Möglichkeit, einen rechteckigen Block beleuchteter
Bildelemente (Pixel) von einer Stelle des Bitmaps (oder der
Anzeige) an eine andere Stelle zu verschieben und die beiden
Untergruppen der Bildanordnung logisch zu verbinden, um eine
dritte Bildanordnung zu erzeugen. Eine weitere nützliche
Funktion besteht darin, Linien zwischen zwei Punkten zu
zeichnen. Das Verfahren, das zum Zeichnen dieser Linien oft
verwendet wird, ist in einem Text mit dem Titel Fundamentals
of Interactive Computer Graphics von James D. Foley und
Andries Van Dam beschrieben, der 1982 bei der Addison Wesley
Publishing Company erschien.
-
Beschreibungen graphischer Funktionen sind in mehreren IBM
Technical Disclosure Bulletins enthalten:
-
IBM Technical Disclosure Bulletin, Bd. 28, Nr. 6,
November 1985, mit dem Titel "Graphic Bit-Blt Copy Under
Mask" beschreibt ein System zur Durchführung von
Bitgrenzblockübertragungen beliebiger Form innerhalb
eines Rahmenpuffers.
-
IBM Technical Disclosure Bulletin, Bd. 27, Nr. 8, 1985,
mit dem Titel "Raster Graphics Drawing Hardware"
beschreibt die Anwendung programmierbarer Logik-
Anordnungen auf die Gestaltung von Hardware-Schaltungen,
die Graphik-Zeichenalgorithmen implementieren.
-
IBM Technical Disclosure Bulletin, Bd. 28, Nr. 5,
Oktober 1985, mit dem Titel "Circuit for Updating Bit
Map-Memory of A Display Adapter" beschreibt einen
Schaltkreis, der Flexibilität bei der Bit-Manipulation
bietet, um Bildelementdaten zu steuern, die in einem
Anzeigespeicher gespeichert sind, bei dem alle Punkte
adressierbar sind.
-
Es ist ein Ziel der vorliegenden Erfindung, einen Mechanismus
bereitzustellen, der verwendet werden kann, um schnell ein
Bild einer Linie zu erzeugen, die zwischen zwei Punkten
gezeichnet wird, und um schnell ein Bild zu erzeugen, das
eine Übertragung von Bitblock-Bildelementinformationen
erfordert.
-
Gemäß der Erfindung wird graphisches Anzeigesystem mit einem
Prozessor zur Ausführung eines Linienzeichenalgorithmus oder
eines Bitblockübertragungsalgorithmus bereitgestellt, wobei
der Prozessor einen Adressierschaltkreis umfaßt,
gekennzeichnet durch ein Steuerungsmittel, das auf ein
Algorithmus-Auswahlsignal zur Bildung von
Zählersteuerungssignalen reagiert, ein erstes Zählermittel
zum Zählen von einem ersten Ausgangszustand zu einem ersten
vorbestimmten Wert und ein zweites Zählermittel, das unter
der Steuerung der Zählersteuerungssignale betrieben werden
kann, um entweder eine erste Operation zur Lieferung von
Adressen zur Durchführung einer Bitblockübertragung
vorzunehmen, wozu das zweite Zählermittel ein Mittel zur
Zählung von einem zweiten Ausgangswert zu einem zweiten
vorbestimmten Wert als Reaktion darauf umfaßt, daß das erste
Zählermittel zum ersten vorbestimmten Wert zählt, oder eine
zweite Operation zur Lieferung von Adressen zur Durchführung
des Zeichnens einer Linie vorzunehmen, wozu das zweite
Zählermittel ein Mittel zur Berechnung eines Parameterwertes
beim Auftreten eines Zählerstandes des ersten Zählermittels
umfaßt und je nach dem berechneten Wert bedingt von einem
zweiten Ausgangswert zu einem zweiten vorbestimmten Wert
zählt.
-
In einem Ausführungsbeispiel der Erfindung, das im Anschluß
exemplarisch beschrieben wird, dekrementiert der zweite
Zählerschaltkreis bedingt den Zähler als Reaktion auf den
berechneten Wert des Parameters im zweiten Zähler. In diesem
Ausführungsbeispiel dient die Zählerschaltung dazu, Adressen
entweder für einen Linienzeichenalgorithmus oder einen
Bitblock-Übertragungsalgorithmus für die Verarbeitung der
Anzeige zu liefern. Um den Bitblock-Übertragungsalgorithmus
zu implementieren, werden der erste Zähler und der zweite
Zähler effektiv kombiniert, um eine Innenschleifen- und eine
Außenschleifen-Zählsequenz durchzuführen, wobei der erste
Zähler von seinem ersten Ausgangszustand zu seinem ersten
vorbestimmten Wert zählt (die Innenschleife) und der zweite
Zähler von seinem zweiten Ausgangswert zu seinem zweiten
vorbestimmten Wert zählt (die Außenschleife). Der
Zählerschaltkreis führt auch eine
Linienzeichenalgorithmusfunktion aus, wobei der Algorithmus
eine bedingte Inkrementierung eines Zählerstandes als
Reaktion auf den Zustand eines Fehlerterms erfordert, der
nach einem Zählerstand des ersten Zählers berechnet wird. Die
zweite Zählerschaltung umfaßt die Möglichkeit, den Zustand
dieses vorbestimmten Fehlerterms zu bestimmen, um
festzustellen, ob der zweite Zählerstand entsprechend
dekrementiert wird.
-
Die vorliegende Erfindung wird weiter exemplarisch unter
Verweis auf ein Ausführungsbeispiel beschrieben, das in den
beigefügten Zeichnungen dargestellt ist. Dabei gilt:
-
Fig. 1 ist ein Blockdiagramm, das einen Anzeigeadapter-
Schaltkreis darstellt, der an einen Prozessor und einen
Monitor angeschlossen ist.
-
Fig. 2 ist ein Diagramm, das die Organisation des Bitmap-
Speichers 22 darstellt.
-
Fig. 3 ist ein Zeitablaufdiagramm, das die
Zeitsteuerungssignale darstellt, die dem Bitmap-Speicher 22
von dem Pixelprozessor 18 geliefert werden.
-
Fig. 4 ist eine Darstellung eines Teils eines
Anzeigebildschirms, die die Anzeige einer 4-x-4-Pixel-Matrix
auf einer Rasteranzeige darstellt.
-
Fig. 5 stellt die Adreßkonvention für eine 4-x-4-Pixel-Matrix
dar.
-
Fig. 6 ist ein Blockdiagramm des Pixelprozessors 18.
-
Fig. 7A stellt eine Bitblock-Übertragungsfunktion dar.
-
Fig. 7B stellt eine Linienzeichenfunktion dar.
-
Fig. 8A ist ein Ablaufdiagramm für die Aufgabe der
Bitblockübertragung.
-
Fig. 8B ist ein Ablaufdiagramm für die Aufgabe des
Linienzeichnens.
-
Fig. 9 ist ein Blockdiagramm des
Speicheradressierungsschaltkreises des Pixelprozessors 18.
-
Fig. 10 ist ein Ablaufdiagramm, das den Betrieb der
Steuerungsschaltung des Pixelprozessors 18 zur Durchführung
entweder einer Bitblock-Übertragungsoperation oder einer
Linienzeichenoperation darstellt.
-
Die vorliegende Erfindung betrifft einen Zählerschaltkreis
für ein Datenverarbeitungssystem. Der Zählerschaltkreis
befindet sich in einem Bildelementprozessor, der einer
hochauflösenden graphischen Anzeige Graphikdaten liefert.
-
Die Erfindung befindet sich in einer Anzeigeadapterschaltung
eines Computer-Endgeräts. Diese Adapterschaltung ist ein
hochauflösender Graphik-Anzeigeadapter, der in dem
beschriebenen Ausführungsbeispiel eine Anzeigemonitoreinheit
IBM 5081 steuert. Dieser Schaltkreis liefert eine Auflösung
von 1024 · 1024 Bildelementen mit 256 simultanen Farben aus
einer Palette von 4096 möglichen Farben. Nachstehend folgt
eine allgemeine Beschreibung dieses
Anzeigeadapterschaltkreises.
Anzeigeadapter - Allgmeine Beschreibung
-
Fig. 1 ist ein Blockdiagramm das den zum Betrieb
angeschlossenen Anzeigeadapterschaltkreis 17 darstellt. Im
einzelnen ist der Anzeigeadapterschaltkreis 17 durch einen
System-I/O-Bus 11 an einen Systemprozessor 10 angeschlossen.
Zusätzlich ist der Adapterschaltkreis 17 durch einen
Ausgabebus 28 an einen RGB-Monitor 30 angeschlossen. Der
Anzeigeadapterschaltkreis 17 umfaßt zwei Speicher 12A und
12B, die an einen Digitalsignalprozessor angeschlossen sind,
der für das Ressourcen-Management des Schaltkreises verwendet
wird und ferner der Umformung der Koordinaten dient. In dem
beschriebenen Ausführungsbeispiel weist der
Digitalsignalprozessor eine Harvard-Architektur auf, die
getrennte Speicher für Daten und Befehle erfordert. Der
Speicher 12A ist ein Befehls-RAM, das mit Mikrocode geladen
wird, um dem Signalprozessor 14 Befehle zu liefern. Der
Speicher 12B ist ein Daten-RAM, das eine primäre
Schnittstelle zwischen dem Signalprozessor 14 und dem
Systemprozessor 10 darstellt und auch den Hauptdatenspeicher
für den Signalprozessor 14 bildet. In dem beschriebenen
Ausführungsbeispiel werden für den Speicher 12B 256 kByte
Speicherplatz bereitgestellt. In diesem Ausführungsbeispiel
hat jedoch der Digitalsignalprozessor nur einen Adreßraum von
128 kByte. Daher wird ein Bankauswahlmechanismus
bereitgestellt. Außerdem kann in diesem beschriebenen
Ausführungsbeispiel ein Speicher, der sich außerhalb des
Adapterschaltkreises 17 befindet, in den Adreßraum des
Digitalsignalprozessors 14 abgebildet werden.
-
Ein FIFO-Puffer 13 (first-in, first out, zuerst Abgelegtes
wird zuerst bearbeitet) wird bereitgestellt, um sequentielle
Anzeigebefehle von dem Datenspeicher 12B zu dem
Digitalsignalprozessor 14 weiterzuleiten. Ferner ist über den
Bus 16 ein Befehls-ROM 15 angeschlossen, um für den
Digitalsignalprozessor 14 die Einschalt- und
Selbsttest-Befehlsmikrocodeprogramme zu liefern.
-
Ein Pixelprozessor (Bildelementprozessor) 18 ist ebenfalls an
den Bus 16 angeschlossen. Die Funktion des Pixelprozessors 18
besteht darin, Linien zu zeichnen, die Manipulation von
Datenbereichen auf dem Anzeigebildschirm zu ermöglichen und
für die Steuerung des Bitmap-Speichers zu sorgen. Diese
Manipulation von Bereichen auf dem Anzeigebildschirm wird als
Bitblockübertragung oder BITBLT bezeichnet. Der
Pixelprozessor 18 umfaßt auch Steuerungs- und Statusregister,
die es neben anderen Funktionen dem Systemprozessor 10
ermöglichen, den Signalprozessor 14 zu unterbrechen, zu
deaktivieren oder zurückzusetzen, und es dem Signalprozessor
14 ermöglichen, den Systemprozessor 10 zu unterbrechen.
-
Der Pixelprozessor 18 ist über den Bus 20 an einen Bitmap-
Speicher 22 angeschlossen. Der Bitmap-Speicher 22 ist in der
Form 1024 · 1024 · 8 Bit organisiert. Der Bitmap-Speicher 22
bietet ferner die Möglichkeit, eine Überlagerungsebene
bereitzustellen, die dazu verwendet werden kann, die Daten
auf der Anzeige blinken zu lassen oder hervorzuheben.
-
An den Bitmap-Speicher 22 ist über den Bus 24 eine Videostufe
26 angeschlossen, die die Daten im Bitmap-Speicher 22 in ein
Videosignal für den Videomonitor 30 umwandelt. Diese
Videostufe 26 vollzieht diese Umwandlung über einen Digital-
Analog-Schaltkreis. In der Videostufe 26 befindet sich auch
ein Farbpalettenschaltkreis, der 256 gleichzeitig
darstellbare Farben aus einer größeren Palette von Farben
bietet. Dies wird durch Video-Verweistabellen erreicht, die
den Wert im Bitmap in einen Wert mit mehr Bits übersetzen, so
daß eine größere Auswahl von Farben zur Verfügung steht. Mit
dieser größeren Auswahl von Werten, die von der Farbpalette
zur Verfügung gestellt werden, stehen mehr Farben zur
Verfügung, als bei Verwendung der Bits im Bitmap-Speicher 22
allein zur Verfügung stünden.
-
An die Videostufe 26 ist über den Bus 24 ein Hardware-Cursor
21 angeschlossen, der ein Vollbild-Fadenkreuz und/oder einen
bitprogrammierbaren Cursor bereitstellt. Das Vollbild-
Fadenkreuz kann auf eine von mehreren Breiten programmiert
werden. Außerdem kann dieses Fadenkreuz auch gekappt
(verkleinert) werden, so daß sich verschiedene kleinere
Größen ergeben.
-
In dem beschriebenen Ausführungsbeispiel verwendet der
Anzeigeadapterschaltkreis 17 den Digitalsignalprozessor 14
als primäre Schnittstelle zu dem Systemprozessor 10. In
diesem Ausführungsbeispiel handelt es sich bei dem
Digitalsignalprozessor um einen Digitalsignalprozessor vom
Typ Texas Instruments TMS 32020, der 5 Millionen Befehle pro
Sekunde verarbeitet. Daher eignet er sich gut zur Ausführung
von Aufgaben wie Matrixmultiplikationen, die zum Übersetzen,
Skalieren und Rotieren von Vektoren auf dem Bildschirm
dienen. Dieser Digitalsignalprozessor kann einen Datenbereich
von 64 kByte mit 16-Bit-Wörtern und einen ebenso großen
Befehlsbereich adressieren. Wie bereits erwähnt, kann sich
ein Teil des Datenbereichs innerhalb des Adapterschaltkreises
17 oder entfernt von dem Adapterschaltkreis 17 befinden. Der
Digitalsignalprozessor kann durch den Signalprozessor 10 oder
durch den Pixelprozessor 18 unterbrochen werden. Der
Pixelprozessor 18 erzeugt beim Auftreten einer
Aufgabeabgeschlossen-Bedingung
oder der Bedingung, bei der ein
vertikaler Rücksprung begonnen wurde, Unterbrechungen des
Digitalsignalprozessors 14 oder des Systemprozessors 10.
Außerdem umfaßt der Digitalsignalprozessor 14 auch einen
Zeitgeber, der dazu verwendet werden kann, die Zeit zwischen
Anzeigeaktualisierungen zu steuern.
-
Das ROM 15 enthält die Einschalt-Befehlssequenz für den
Digitalsignalprozessor 14. In dem beschriebenen
Ausführungsbeispiel enthält das ROM 15 16 kByte Informationen
und beherbergt ein Einschalt-Selbsttestprogramm sowie ein
Graphikanzeigeadapter-Emulationsprogramm. Das Einschalt-
Selbsttestprogramm liefert eine Meldung, daß der
Adapterschaltkreis 17 unmittelbar nach einer
Einschaltbedingung oder einer Reset-Bedingung ordnungsgemäß
funktioniert.
-
Das Daten-RAM 12B bietet 256 kByte RAM im Adapterschaltkreis
17, die der Signalprozessor 14 als Speicher benutzen kann.
1 kByte des Datenbereichs von 256 kByte wird durch die
internen Register des Signalprozessors 14 überlagert. Der
Datenspeicher 12B besteht aus dynamischem RAM, das durch eine
Logik innerhalb des Anzeigeadapterschaltkreises 17
aufgefrischt wird. Dieser Speicher wird in einem Seitenmodus
betrieben, so daß Zugriffe auf zwei Wörter, die auf dieselbe
Seite (d. h. in dem beschriebenen Ausführungsbeispiel in die
acht höherwertigen Adreßbits) geladen sind, für den
Digitalsignalprozessor 14 keinen Wartezustand erfordern.
Zugriffe auf Wörter auf einer neuen Seite führen zu einem
einzelnen Wartezustand. Daher steigert das häufige Suchen
nach referenzierten Daten in internen Registern oder nach auf
einer einzigen RAM-Seite zusammengruppierten Daten die
Leistung, da keine Wartezustände anfallen. Zwar ist die
Datenadressierungskapazität des Digitalsignalprozessors 14
auf 64 kWörter beschränkt ist, doch wird ein
Bankauswahlmechanismus bereitgestellt, der seinen Adreßraum
erweitert. Dieses Schema ermöglicht den vollen Zugriff auf
den Datenspeicher 12B. Zur Zeit sind vier Bänke implementiert
(64 kByte pro Bank ergibt 256 kByte). Die Adreßlogik in der
Architektur ermöglicht in diesem beschriebenen
Ausführungsbeispiel jedoch bis zu 16 Bänke. In diesem
Ausführungsbeispiel ist das RAM mit zwei Ports versehen, so
daß der Systemprozessor 10 und der Signalprozessor 14
gleichzeitig Zugriff auf ihn haben. Da beide Prozessoren 10
und 14 leichten Zugriff auf diesen Speicher haben, stellt er
einen günstigen Kommunikationskanal zwischen den beiden
Prozessoren 10 und 14 dar. In diesem Ausführungsbeispiel kann
der Signalprozessor 14 auch einen Speicher adressieren, der
sich als Erweiterung dieses Daten-RAMs 12B entfernt von dem
Anzeigeadapterschaltkreis 17 befindet, indem er zuerst als
Erstpartei-Bushauptkontrolle auf Bus 11 wirkt. Auf den
Speicher auf dem I/O-Bus 11 wie auch auf den Speicher im
Hauptspeicher des Systemprozessors 10 kann auf diese Weise
zugegriffen werden. Der Signalprozessor 14 kann eine volle
24-Bit-Adresse auf den Bus 11 geben und hat daher die
Möglichkeit, 16 MByte Speicher zu adressieren. Die Zuordnung
des Datenbereichs, der sich entfernt vom Adapterschaltkreis
17 befindet, wird durch ein Bank-/Erweiterungsadreßregister
innerhalb des Signalprozessors 14 gesteuert. Der 16-Bit-Adreßbus
des Signalprozessors 14 wird mit diesem Register auf
24 Bit erweitert. Der Zugriff kann im Stoßbetrieb, im
gepufferten Betrieb und einzeln erfolgen. Die Länge des
Stoßes im Stoßbetrieb kann über die Software gesteuert
werden. Vier bis sechzehn Wartezustände sind für den Zugriff
auf den entfernten Speicher erforderlich.
-
Der Befehlsspeicher 12A stellt in diesem Ausführungsbeispiel
128 kByte Speicher zur Verfügung, die der
Digitalsignalprozessor 14 als Befehlsbereich verwenden kann.
Dies kommt zusätzlich zu dem Befehlsbereich hinzu, der durch
das ROM 15 bereitgestellt wird. Wenn jedoch das ROM 15 einem
Befehlsbereich zugeordnet wird, überlagert es eine
entsprechende Menge des Befehls-RAMs 12A. Dies geschieht,
weil der Digitalsignalprozessor nur einen
Gesamtbefehlsbereich von 128 kByte adressieren kann. Der
Befehlsspeicher 12A besteht aus dynamischem RAM, das durch
eine Logik auf dem Adapterschaltkreis 17 aufgefrischt wird.
Der Befehlsspeicher 12A wird in einem Seitenmodus betrieben,
so daß der Zugriff auf Wörter, die sich auf derselben Seite
(d. h. auf denselben acht höherwertigen Adreßbits) befinden,
für den Digitalsignalprozessor 14 keinen Wartezustand
erfordert. Zugriffe auf eine neue Seite führen zu einem
einzelnen Wartezustand. Daher läßt sich eine maximale
Ausführungsgeschwindigkeit erzielen, indem häufig ausgeführte
Codeschleifen auf derselben Seite innerhalb des
Befehlsspeichers 12A oder innerhalb des internen
Befehlsspeichers des Signalprozessors 14 abgelegt werden.
Dieser Befehlsspeicher 12A ist ebenfalls mit zwei Ports
versehen, so daß der Systemprozessor 10 und der
Signalprozessor 14 gleichzeitig Zugriff auf ihn haben.
-
Der FIFO-Puffer 13 hat eine Länge von 1 kWort. Wenn im Puffer
13 Platz ist, kann der Systemprozessor 10 Befehle und/oder
Daten in diesen Puffer laden und dadurch den Zugriff darauf
dem Digitalsignalprozessor 14 ermöglichen, der auf diese
Informationen dann sequentiell zugreifen kann. In diesem
Ausführungsbeispiel werden Anzeigeinformationen von dem
Systemprozessor 10 bereitgestellt. Der Puffer 13 umfaßt drei
Flags (Leer-Flag, Halbvoll-Flag und Voll-Flag), die von dem
Systemprozessor 10 gelesen werden können, um festzustellen,
ob in dem Puffer 13 noch Platz zum Schreiben weiterer
Informationen ist. Zusätzlich gehören zu dem Puffer 13 neben
den Flags drei Unterbrechungen: eine Halbvoll-Unterbrechung,
eine Halbleer-Unterbrechung und eine Pufferüberlauf-
Unterbrechung. Die beiden ersten können verwendet werden, um
Schreiboperationen in den Puffer 13 zu dosieren, ohne die
Flags abzurufen, während das letzte im Normalfall als
Fehlerbedingung gelten würde. Der Digitalsignalprozessor 14
hat ebenfalls Zugriff auf die Flags, um festzustellen, ob
weitere Informationen aus dem Puffer 13 gelesen werden
können.
-
Der Pixelprozessor 18 unterstützt den Signalprozessor bei der
raschen Aktualisierung des Bitmap-Speichers 22. Der
Pixelprozessor 18 kann entweder Linien in den Bitmap-Speicher
22 zeichnen oder rechteckige Datenbitblöcke im Bitmap-
Speicher 22 manipulieren (BITBLT). Beim Linienzeichnen erhält
der Pixelprozessor 18 entweder die Endpunkte der Linie mit
den Bresenham-Parametern, die von dem Pixelprozessor 18
berechnet wurden, oder die Endpunkte gemeinsam mit den
Parametern, die Bresenhams inkrementaler
Linienzeichenalgorithmus benötigt. Das letztere Konzept
ermöglicht eine bessere Kontrolle über die Vektor-Raster-
Übersetzung und kann für Sonderfälle wie breite Linien
nützlich sein. Zusätzlich werden die Linienattribute Farbe
und Muster direkt von dem Pixelprozessor 18 unterstützt. Die
Unterstützung des Attributes Linienbreite erfordert ein
gewisses Eingreifen des Signalprozessors 14. Linien können im
Ersetzen-Modus, im Exklusiv-ODER-Modus oder im Linie-auf-
Linie-Modus gezeichnet werden.
-
Bitblockübertragungen werden ebenfalls durch den
Pixelprozessor 18 durchgeführt. Einige Bitblockübertragungen
arbeiten mit minimalen Prozessoreingriffen, während andere
stärkere Eingriffe erfordern. Die Bitblockübertragung umfaßt
den Betrieb einer Innenschleife und einer Außenschleife, und
in diesem Ausführungsbeispiel ermöglicht es die
Implementierung, daß die Innenschleife mit horizontaler oder
vertikaler Orientierung erfolgen kann. Diese Option ist
besonders nützlich, wenn Bilder von Zeichenketten in den
Bitmap-Speicher 22 übertragen werden. Darüber hinaus verfügt
der Pixelprozessor 18 über die Möglichkeit,
Bitblockübertragungen ohne Farberweiterung vorzunehmen. Die
Farberweiterung ist definiert als das Nehmen von Daten, bei
dem jedes aktive Bit für ein Pixel von bekannter Farbe und
eine Null für Transparenz steht (d. h. der Rahmenpuffer wird
für diese Pixelposition nicht geändert). Dieser Modus bietet
einen Leistungsvorteil, da jedes Datenwort nicht 2 sondern 16
Pixel des Bildschirmspeichers darstellt.
-
Bei der Verwendung der Farberweiterung ermöglicht es ein
besonderes Merkmal, das zu der Direktschreibmaske, einer
Möglichkeit des Pixelprozessors 18, gehört, daß das Objekt,
das gerade übertragen wird, in eine beliebige der vier
möglichen 90-Grad-Orientierungen rotiert wird.
-
Der Digitalsignalprozessor 14 oder der Systemprozessor 10
können eine aktive Region des Bitmap-Speichers 22 definieren,
in der gezeichnet wird. Für Linienzeichen- und
Blockübertragungsoperationen werden nur Pixel in den
Bitmap-Speicher 22 geschrieben, die in diesen aktiven Bereich
gezeichnet werden sollen. Linienzeichen- und
Blockübertragungsoperationen, bei denen außerhalb dieses
Bereichs gezeichnet wird, werden zwar ausgeführt, doch die
sich ergebenden Pixelangaben werden nicht in den
Bitmap-Speicher 22 geschrieben. Die Verwendung dieses aktiven
Zeichenbereichs wird als Kappen bezeichnet.
-
Ein weiteres Merkmal des Pixelprozessors 18 ist das
Wahlfenster. Dieses Fenster kann gegenüber dem Pixelprozessor
18
definiert werden, und wenn es aktiviert ist, verursacht
jeder Zugriff auf den Rahmenpuffer innerhalb dieses Fensters
bei dem Signalprozessor 14 eine Unterbrechung. Dies kann beim
Zeichnen von Objekten verwendet werden, um einen beliebigen
Teil des Objekts zu bestimmen, der in das angegebene Fenster
fällt.
-
Der Pixelprozessor wird im Normalfall durch den
Signalprozessor 14 gesteuert. Allerdings kann der
Systemprozessor 10 den Signalprozessor deaktivieren und den
Pixelprozessor direkt steuern. Der Pixelprozessor 18 wird
unten noch näher beschrieben.
-
Der Bitmap-Speicher 22 besteht aus einem Video-RAM von
1 MByte Größe. Der Bitmap-Speicher 22 wird auf dem Bildschirm
als ein 1024 · 1024 Pixel großes Bild mit acht Bit pro Pixel
dargestellt. Der Pixelprozessor 18 wirkt als Schnittstelle
zwischen dem Systemprozessor 10 oder dem Signalprozessor 14
und dem Bitmap-Speicher 22. Je nachdem, wie einige der Bits
innerhalb des Pixelprozessors 18 gesetzt sind, wird der
Bitmap-Speicher 22 entweder als zwei horizontal benachbarte
Pixel oder als vier horizontal benachbarte Halbpixel gelesen
(wobei ein Halbpixel definiert ist als entweder die ersten
vier oder die letzten vier Bit eines ganzen Pixels). In allen
Adressiermodi ist der Bitmap-Speicher 22 pixeladressierbar.
Das heißt, daß das gerade adressierte Pixel mit Hilfe von
X- und Y-Adreßregistern im Pixelprozessor bezeichnet wird. Die
vorliegende Erfindung berechnet die Adressen für diese
Register inkremental.
-
Die Organisation des Bitmap-Speichers 22 ist in Fig. 2
dargestellt. Die Pixel sind in Quadraten im Format 4 · 4
angeordnet. Jedes Pixel ist acht Bit tief. Die acht Bit
stellen acht Ebenen 400 bis 407 dar. Pixelspeichermodule in
derselben Reihe haben eine gemeinsame
Reihenadressierungsimpuls-Leitung (RAS-Leitung, RAS = row
address strobe). Diejenigen in derselben Spalte haben eine
gemeinsame Spaltenadressierungsimpuls-Leitung (CAS-Leitung,
CAS = column address strobe). Alle Pixelspeichermodule teilen
sich dieselben Adreßleitungen. Sowohl die seriellen
Datenleitungen, die zum Auffrischen des Bildschirms verwendet
werden, als auch die parallelen Datenleitungen, die zum Lesen
und Schreiben des Bitmaps verwendet werden, sind in Spalten
verbunden. So können Daten aus einer von vier Schichten
gelesen und in Akkumulatoren geladen werden. Jedes der 16
Pixelspeichermodule in der 4-x-4-Anordnung hat eine eigene
Schreibfreigabe, die von dem Direktmaskenregister und den
Bresenham-Linienzeichenschaltkreisen im Pixelprozessor 18
gesteuert wird.
-
Die RAS-Leitungen 410, 412, 414 und 416 sowie die
CAS-Leitungen 418, 420, 422 und 424 werden verwendet, um Impulse
für verschiedene Adressen in die Pixel zu schicken. Dadurch
wird es möglich, daß der "Zugriff" eines quadratischen Wortes
im Format 4 · 4, das durch die X- und Y-Pixeladreßregister
adressiert wird, gegenüber den angezeigten Wörtern, die auf
den Bildschirm getastet werden, versetzt ist. Fig. 3 zeigt
die Wellenformen für die RAS-Leitungen 410, 412, 414 und 416
sowie die CAS-Leitungen 418, 420, 422 und 424, die verwendet
werden, um Impulse für die Adressen in den Pixelspeicher 22
zu schicken und das Zugriffswort gegenüber den angezeigten
Wörtern auszurichten. Zu beachten ist, daß diese
Pixelausrichtung von 4-x-4-Wörtern es ermöglicht, daß eine
Ecke des Quadrats an den Anfang einer zu zeichnenden Linie
gesetzt werden kann, und weil jedes Pixelspeichermodul eine
unabhängige Schreibfreigabe aufweist, können 4 Pixel der
Linie gleichzeitig gezeichnet werden, wie in Fig. 4
dargestellt. Fig. 5 stellt die Numerierung der Pixel in der
4-x-4-Anordnung dar.
-
Eine Überlagerungsebene, konkret Ebene 7 (407 in Fig. 2),
des Bitmap-Speichers 22 kann in Verbindung mit der
Farbpalettenfunktion der Videostufe 26 dazu verwendet werden,
eine Hervorhebung oder ein Blinken mit programmierbarer
Geschwindigkeit hervorzurufen. Bei aktiviertem Blinken blinkt
jedes Pixel, das eine 1 in dieser Ebene aufweist, mit der
programmierten Blinkgeschwindigkeit. Bei aktivierter
Hervorhebung hat eine 1 in der Überlagerungsebene Vorrang vor
dem normalen Farbpalettenprozeß in der Videostufe 26 und
setzt eine Farbe aus einer Überlagerungs-Farbpalette mit drei
Einträgen ein. Zu beachten ist, daß die Verwendung der
Überlagerungsebene die verfügbaren Farben für die
Farbpalettenfunktion in der Videostufe 26 effektiv reduziert.
-
Die Videostufe 26 umfaßt, um noch einmal auf Fig. 1
zurückzukommen, eine Farbpalettenfunktion. Die Farbpalette
übersetzt die im Bitmap-Speicher 22 gespeicherten Acht-Bit-
Werte in eine von 4096 Farben. Die Ausgabe dieser
Farbpalettenfunktion liefert an drei Digital-Analog-Wandler
je vier Bit. Die Digital-Analog-Wandler wiederum steuern die
rote, die grüne und die blaue Farbkanone des Monitors 30.
Jeder Vier-Bit-Abschnitt der Verweistabelle ordnet die 8
Eingabebits aus dem Bitmap einem von sechzehn
Analogausgabepegeln zu. Die Farbpalettenfunktion kann durch
den Signalprozessor 14 oder, wenn der Signalprozessor 14
deaktiviert ist, durch den Systemprozessor 10 geladen werden.
-
Der Hardware-Cursor bietet ein Vollbild-Fadenkreuz und/oder
einen benutzerprogrammierbaren Cursor im Format 64 · 64. Das
Vollbild-Fadenkreuz kann auf eine von mehreren Breiten
programmiert und gekappt werden. Die Ausgabe des Hardware-Cursors
wird in die Farbpalettenfunktion der Videostufe 26
eingespeist.
-
In Fig. 1 liefert der Systemprozessor 10 dem Signalprozessor
14 Graphikanweisungen einer höheren Ebene. Status- und andere
Informationen werden von dem Signalprozessor 14 an den
Systemprozessor 10 weitergeleitet. Der Signalprozessor 14
spaltet die Graphikanweisungen einer höheren Ebene von dem
Systemprozessor 10 in eine Reihe von Graphikbefehlen einer
niederen Ebene auf, die dann über den Eingabebus 16 an den
Pixelprozessor 18 weitergeleitet werden. Dieser Eingabebus 16
umfaßt Adreß-, Daten- und Steuerungsinformationen. Wenn der
Signalprozessor 14 deaktiviert wurde, kann der
Systemprozessor 10 Befehle einer niederen Ebene übertragen
und mit Hilfe des Eingabebusses 16 Daten direkt von dem
Pixelprozessor 18 abrufen. Der Zugriff auf den Bitmap-
Speicher 22 wird durch den Pixelprozessor 18 gesteuert. Die
Zugriffe auf den Bitmap-Speicher 22 erfolgen über den Bus 20,
der Adreßdaten und Steuerungsinformationen liefert.
Pixelprozessor - Beschreibung
-
Ein Blockdiagramm des Pixelprozessors 18 ist in Fig. 6
dargestellt. Die Steuerung des Bitmap-Speichers 22 bei der
Ausführung von Graphikbefehlen einer niederen Ebene wird
erreicht, indem Steuerungsparameter entweder vom
Systemprozessor 10 oder vom Signalprozessor 14 über den
Eingabebus 16 in die Steuerungslogik 44 des Pixelprozessors
geschrieben werden. Diese Parameter werden innerhalb des
dynamischen Steuerungsmechanismus 45 decodiert, wobei
Steuerungs- und Zeitsignale für die anderen Teile der
Pixelprozessorschaltung erzeugt werden, die über die Leitung
60 bereitgestellt werden. Die Endpunktadreßinformation für
eine Anweisung einer niederen Ebene wird dem Pixelprozessor
18
durch den Pixelprozessor-Eingabebus 16 mitgeteilt und in
der Eingabewarteschlange gespeichert, die sich in der
Endpunktlogik 40 befindet. Je nachdem, was für eine Anweisung
(Linienzeichnen oder Bitblockübertragung) gerade verarbeitet
wird, werden verschiedene Operationen ausgeführt. Wenn eine
Linienzeichenanweisung ausgeführt wird, werden die
Endpunktdaten zur Berechnung der Parameter verwendet, die bei
der Ausführung des Bresenham-Linienzeichenalgorithmus in der
Adressenzähl-Logikschaltung 50 eingesetzt werden. Bei
Blockübertragungsoperationen reiht die Endpunktlogik 40 die
Eingabedaten einfach in eine Warteschlange ein, bis diese
Daten zu der Adressenzähllogik 50 übertragen werden können.
Die Übermittlung der Endpunkt- und Linienzeichenparameter von
der Endpunktlogik 40 zu der Adressenzähllogik 50 erfolgt über
den Adreß-/Parameterbus 46. Wenn diese Parameter in die
Adressenzähllogik 50 geladen sind, ist die Endpunktlogik 40
frei, um neue Endpunktdaten für die nächste Graphikanweisung
anzunehmen. Die Adressenzähllogik 50 umfaßt einen Teil der
vorliegenden Erfindung und verwendet die Parameter zur
Erzeugung der Bitmap-Adressen, die zur Beendigung der zur
Zeit ausgeführten Anweisung benötigt werden, und verwendet
außerdem einige Parameter, um die Aufgabe in eine
sequentielle Reihenfolge zu bringen und festzustellen, wann
die Aufgabe beendet ist.
-
Die Adressenzähllogik 50 manipuliert Koordinaten in 10
Bitfeldern. Die oberen acht Bit des Feldes bilden die Bitmap-
Speicheradressen 20. Die unteren zwei Bit der X- und der
Y-Koordinate werden über den Pixelbus 56 zu der
RAM-Steuerungseinheit 52 weitergeleitet, wo sie auf Leitung 20 in
Bitmap-Steuerungssignale decodiert werden. Über den Pixelbus
56 werden sie auch zu der Datenweg-Mischlogik 54
weitergeleitet, wo sie zur Steuerung von Daten dienen, die
gerade im Bitmap-Speicher 22 gespeichert oder aus diesem
abgerufen werden. Die Datenweg-Mischlogik 54 dient als Brücke
zwischen dem System- und dem Anzeigeprozessorbus und dem
Datenbus 20 des Bitmap-Speichers. Die Daten des
Systemprozessors 10 können mit Hilfe der Mischlogik 54
zwischen Bitmap-Daten übertragen oder mit ihnen kombiniert
werden. Daten, die zum und vom Systemprozessor 10 übertragen
werden, werden von der Datenweg-Synchronisierungsschaltung 42
gesteuert und über den Mischbus 48 weitergeleitet.
-
Nachstehend folgt eine genauere Erläuterung der beiden
wichtigsten Graphikaufgaben, die von dem Pixelprozessor 18
ausgeführt werden. Die beiden Aufgaben sind in den Fig. 7A
und 7B dargestellt. Die Bitblockübertragungsaufgabe (Fig.
7A) besteht aus dem Verschieben rechteckiger Datenblöcke von
einem Ausgangsbereich des Bitmap-Speichers 22 zu einem
Zielbereich des Bitmap-Speichers 22. Diese Aufgabe wird
häufig verwendet, um Informationen über den Bildschirm
"rollen" zu lassen oder ein Aufklappmenü anzuzeigen. Das
Linienzeichnen (Fig. 7B), das aus dem Verbinden von zwei
Punkten im Bitmap-Speicher 22 durch eine gerade Linie
besteht, ist ebenfalls eine häufig benutzte Funktion. Diese
beiden Aufgaben bilden die Grundlage von Graphikoperationen
einer höheren Ebene, wie etwa Bitblockübertragungen mit
mehreren Ausgangspositionen, Musterlinien, Polygonzeichnungen
usw. Aus diesem Grunde ist es wichtig, diese Grundfunktionen
möglichst effektiv auszuführen.
-
In Fig. 7A soll ein Datenblock von Position 128 nach
Position 136 verschoben werden. Um eine Bitblockübertragung
von der Ausgangsposition 128 zur Zielposition 136
durchzuführen, muß innerhalb des Pixelprozessors 18 folgende
Ereignissequenz ablaufen. Sobald die Steuerungslogik 44 des
Pixelprozessors 18 mit Steuerungsparametern geladen ist, um
eine Bitblockübertragungsoperation durchzuführen, werden die
Endpunktdaten für P1 (130) und P2 (138) gemeinsam mit dem
Höhenparameter (134) und dem Breitenparameter (132) in die
Endpunktlogik 40 (Fig. 6) geladen. Bei der Ausführung einer
Bitblockübertragungsoperation dient die Endpunktlogik als
Speicherungszwischenebene, die die Parameter zu der
Adressenzähllogik 50 (Fig. 6) weiterleitet, wenn die Aufgabe
begonnen wird. Das Laden des Y-Adreßwerts von P2 (138) ist
für den Pixelprozessor 18 das Signal, mit der Ausführung der
Aufgabe zu beginnen. An diesem Punkt beginnen die Adressen- und
Parameterzähler innerhalb der Adressenzähllogik, auf die
Bitmap-Speicherpositionen gemeinsam mit der Breitenabmessung
der Bitblockübertragung zuzugreifen, wobei abwechselnd auf
die Ausgangs- und die Zieladressen zugegriffen wird. Wenn
eine Kette von Zugriffen entlang der Breitenabmessung
abgeschlossen ist, werden die Adressenzähler automatisch
gezählt und neu geladen, um mit der nächsten Zeile zu
beginnen. Dieser Prozeß setzt sich fort, bis das untere Ende
der Bitblockübertragung erreicht ist. Die Adressenzähler
erzeugen eine zehn Bit lange Pixeladresse, und die oberen
acht Bit dienen als Bitmap-Speicheradresse 20, während die
unteren zwei Bit 56 als Pixeldecodierer in der RAM-Steuerungslogik
52 (Fig. 6) und der Mischlogik 54 dienen.
Die Mischlogik 54 nimmt die aus der Ausgangsposition
eingelesenen Daten, richtet sie aus und gibt sie aus, damit
sie an den Zielpositionen gespeichert werden.
-
Fig. 7B stellt eine Linienzeichenaufgabe dar. Um eine
Linienzeichenanweisung auszuführen, werden die Endpunkte der
Linie, P1 (150) und P2 (152), in die Endpunktlogik 40 (Fig.
6) geladen. Das Laden des Y-Adreßwerts von P2 (152) ist für
den Pixelprozessor 18 das Signal, mit der Ausführung zu
beginnen. An diesem Punkt beginnt die Endpunktlogik mit der
Berechnung der verschiedenen Bresenham-Parameter, die zu der
Linie gehören, die gezeichnet werden soll. Sobald dieser
Berechnungsprozeß abgeschlossen ist, werden die Parameter an
die Adressenzähllogik 50 weitergeleitet. Um diese
Linienzeichenaufgabe auszuführen, beginnt die
Adressenzähllogik, Pixeladressen für jedes Pixel der Linie zu
erzeugen. Die oberen acht Bit der Adresse dienen wie vorher
als Bitmap-Adresse 20. Die unteren zwei Bit 56 der
Pixeladresse werden zu der RAM-Steuerungslogik 52
weitergeleitet, wo sie dazu verwendet werden, die
entsprechenden Schreibfreigaben zum Zeichnen der Linie in das
Bitmap zu erzeugen.
-
Fig. 8A ist ein Software-Ablaufdiagramm, das die
Bitblockübertragungsfunktion darstellt. Der Pixelprozessor 18
befindet sich im Leerlaufzustand 160, bis er die Endpunkte
der Bitblockübertragung erhält, wie in Schritt 162
dargestellt. Wenn die Endpunkte noch nicht eingegangen sind,
bleibt der Pixelprozessor 18 im Leerlaufzustand 160 und sucht
nach den Endpunkten. Wenn die Endpunkte eingegangen sind,
fährt der Pixelprozessor 18 mit Schritt 164 fort, um die
Innen- und Außenschleifenwerte zu berechnen. In Schritt 166
beginnt das Erhöhen der Innenschleife mit der X-Pixeladresse,
die zur Zeit erhöht wird. In Schritt 168 wird eine
Entscheidung darüber getroffen, ob die Innenschleife
abgeschlossen ist. Wenn die Innenschleife noch nicht
abgeschlossen ist, kehrt der Prozessor zu Schritt 166 zurück.
Wenn die Innenschleife abgeschlossen ist, fährt der Prozessor
18 mit Schritt 170 fort, um die Außenschleife fortzuschalten,
das Y-Pixel zu setzen und den Innenschleifenzähler neu zu
laden. In Schritt 172 wird eine Entscheidung darüber
getroffen, ob die Außenschleife abgeschlossen ist. Wenn die
Außenschleife noch nicht abgeschlossen ist, kehrt der
Pixelprozessor 18 zu Schritt 166 zurück. Wenn doch, kehrt der
Pixelprozessor 18 in den Leerlaufzustand 160 zurück.
-
Fig. 8B stellt ein Ablaufdiagramm für den Bresenham-
Linienzeichenalgorithmus dar. Der Bresenham-Algorithmus ist
auf Seite 433-435 des Textes Fundamentals of Interactive
Computer Graphics von James D. Foley und Andries Van Dam
beschrieben, der 1982 bei der Addison Wesley Publishing
Company erschien. Einer grob vereinfachten Erläuterung
zufolge bestimmt der Bresenham-Algorithmus, welche
Bildelemente in einer Anordnung von Bildelementen beleuchtet
sein müssen, um in dieser Anordnung von Bildelementen eine
Annäherung an eine gerade Linie darzustellen. Im Grunde
ermittelt der Algorithmus anhand der Steigung zwischen den
beiden Endpunkten eine Gruppe von Parametern, mit deren Hilfe
festgestellt wird, welche Pixel aktiviert werden müssen. In
Fig. 8B durchläuft der Pixelprozessor 18 anfänglich eine
Schleife zwischen einem Leerlaufzustand 174 und einem
Entscheidungszustand 176, bis die Linienendpunkte eingegangen
sind. Wenn die Linienendpunkte eingegangen sind, fährt der
Prozessor 18 mit Schritt 178 fort, um einen anfänglichen
Fehlerterm, I1, I2 und die Linienlänge zu berechnen. Der
Prozessor 18 fährt dann mit Schritt 180 fort, um
festzustellen, ob der Fehlerterm kleiner als 0 ist. Wenn
nicht, fährt der Pixelprozessor mit Schritt 184 fort, wo der
Fehlerterm zu I2 addiert wird und die Y-Pixeladresse erhöht
wird. Der Pixelprozessor fährt mit Schritt 186 fort, um das
X-Pixel zu erhöhen. In Schritt 188 wird festgestellt, ob alle
Pixel verarbeitet sind. Wenn nicht, kehrt der Prozessor 18 zu
Schritt 180 zurück, um den Fehlerterm zu prüfen. Wenn der
Fehlerterm kleiner als 0 ist, fährt der Prozessor 18 mit
Schritt 182 fort, um die Konstante I1 zu dem Fehlerterm zu
addieren. Der Pixelprozessor 18 fährt dann wie bereits zuvor
mit Schritt 186 fort. Wenn festgestellt wird, daß alle Pixel
verarbeitet sind (Schritt 188), kehrt der Prozessor 18 in den
Leerlaufzustand 174 zurück. Als bekannt wird dabei
vorausgesetzt, daß die Steigung der Linie, die gezeichnet
werden soll, sowie ihre Richtung bestimmen, welcher
Adressenzähler bedingt gezählt wird.
-
Ein Blockdiagramm für einen Doppelzweck-
Linienzeichen-/Bitblockübertragungsschaltkreis ist in Fig. 9
dargestellt. Im einzelnen umfaßt diese Schaltung zwei Zähler,
die Teile des Linienzeichenalgorithmus oder Teile des
Bitblockübertragungsalgorithmus implementieren. Der erste
Zähler umfaßt einen Multiplexerschaltkreis 224, der an ein
Register 226 und an einen Dekrementierschaltkreis 228
angeschlossen ist. Der Dekrementierer 228 ist über eine
Leitung 229 an einen Nullvergleichsschaltkreis 230 und an den
Multiplexerschaltkreis 224 angeschlossen. Die Ausgabe des
Nullvergleichsschaltkreises wird als Innenschleifen-
Zählerstand der Steuerungsschaltung 222 übergeben. In Betrieb
enthält das Register 226 bei einer Linienzeichenfunktion den
Linienlängenparameter und bei einer
Bitblockübertragungsfunktion einen Innenschleifen-
Zählerstand. Der Dekrementierschaltkreis 228 dekrementiert
während einer Zähleroperation entweder den Linienzählerstand
oder den Innenschleifen-Zählerstand. Die Zähloperation wird
nach dem Auftreten eines Taktzyklus durchgeführt, der dem
Register 226 von der Leitung 60B übergeben wird. Das Register
226 wird von dem Multiplexer 224 initialisiert, der von der
Leitung 60D gesteuert wird, um die Adresse auf dem Adreßbus
46B an das Register 226 zu übergeben oder die Ergebnisse in
eine Schleife von dem Dekrementierschaltkreis 228 zum
Register 226 zu schicken. Wenn die Ausgabe des
Dekrementierschaltkreises 0 erreicht, liefert der
Nullvergleichsschaltkreis 230 dem Steuerungsschaltkreis 222
ein Signal.
-
Ein zweiter Zähler wird bereitgestellt, der aus dem
Multiplexer 200, dem Register 214 und dem Schaltkreis 218
besteht, der bei der Durchführung des
Linienzeichenalgorithmus als Addierer und bei der
Durchführung des Bitblockübertragungsalgorithmus als
Dekrementierschaltkreis wirkt. Der Schaltkreis 218 liefert
dem Multiplexer 200 über die Leitung 217 und dem
Nullvergleichsschaltkreis 220 eine Ausgabe. Bei der
Durchführung einer Bitblockübertragung wirken die Multiplexer
200, 210 und 218 als einfacher Zähler, der jedes Mal um einen
Zählerstand dekrementiert, wenn der erste Zähler, der aus den
Schaltkreisen 224, 226 und 228 besteht, 0 erreicht. Der
Zähler wird von dem Adreßbus 46A initialisiert, der an den
Multiplexer 200 angeschlossen ist, der diese Adresse auf
Adreßbus 46A in das Register 214 lädt. Register 214 empfängt
auf Leitung 60A ein Taktsignal, das die zweite
Zählerkonfiguration taktet. Bei der Ausführung des
Linienzeichenalgorithmus werden die Bresenham-Parameter in
die Register 210 und 212 eingegeben. Der anfängliche
"Fehlerterm" des Bresenham-Algorithmus wird durch den
Multiplexschaltkreis 200 von dem Adreßbus 46B in das Register
214 geladen. Der Adreßbus 46C lädt den X-Adressenzähler 124
und den Y-Adressenzähler 126. Der X-Adressenzähler 124 und
der Y-Adressenzähler 126 enthalten die X- und Y-Startadressen
für die auszuführende Funktion. Sobald der anfängliche
Ladeprozeß beendet ist, taktet die Steuerungsschaltung 222
die Register 214, 226, 124 und 126, bis die Aufgabe
abgeschlossen ist.
-
Fig. 10 stellt ein Ablaufdiagramm der Operationen der
Steuerungsschaltung 222 dar. Im Normalfall befindet sich die
Steuerungsschaltung 222 entweder im Zustand 240 oder im
Zustand 242, wo sie entscheidet, ob eine Aufgabe begonnen
werden muß. Wenn keine Aufgabe begonnen werden muß,
durchläuft die Steuerungsschaltung 222 weiterhin diese
Schleife. Wenn ein Signal auf Leitung 60D (Fig. 9) eingeht,
verläßt die Steuerungsschaltung 222 den Zustand 242 und
begibt sich zu Schritt 246, der entscheidet, welcher
Algorithmus (Bitblockübertragung oder Linienzeichnen)
ausgeführt werden soll. Diese Entscheidung wird als Ergebnis
des Signals auf Leitung 60C getroffen. Bei der Durchführung
einer Bitblockübertragung zählt die Steuerungsschaltung 222
den Innenschleifenteil in Schritt 248 mit dem
Entscheidungsschritt 250, bis das Ende der Innenschleife
gezählt ist. Wenn-die Innenschleife gezählt ist, begibt sich
die Steuerungsschaltung zu Schritt 252, um die Außenschleife
zu zählen. Der Entscheidungsschritt 254 stellt fest, ob die
Außenschleife abgeschlossen ist. Wenn nicht, beginnt die
Steuerungsschaltung in Schritt 248 wieder mit der nächsten
Innenschleifenzählung. Wenn die Zählung der Innenschleife und
der Außenschleife abgeschlossen ist, begibt sich die
Steuerungsschaltung 222 wieder in den Leerlauf zustand 240.
-
Bei der Durchführung einer Linienzeichenfunktion erfolgt
Schritt 256. In Schritt 256 setzt sich die
Innenschleifenzählung (die in Register 226 von Fig. 8 zählt)
wie bei einer Bitblockübertragungsfunktion fort. Allerdings
wird als Ergebnis des Bresenham-Algorithmus der Zählerstand
in Register 214 geliefert. Schritt 258 stellt fest, wann die
Zählung in den Registern 226 und 214 abgeschlossen ist. Wenn
sie nicht abgeschlossen ist, durchläuft die
Steuerungsschaltung 222 die Schleife zurück zu Schritt 256.
Wenn die Funktion nach der Feststellung in Schritt 258
abgeschlossen ist, begibt sich die Steuerungsschaltung 222
wieder in den Leerlauf zustand 240.
-
Diese Erfindung wurde zwar unter Bezugnahme auf dieses
spezifische Ausführungsbeispiel beschrieben, doch ist diese
Beschreibung nicht in einem einschränkenden Sinne auszulegen.
-
Verschiedene Modifikationen des beschriebenen
Ausführungsbeispiels werden für den Fachmann deutlich sein.