-
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, (AT 986 070)
Titel: "ZÄHLER MIT VERÄNDERBARER
VERSCHALTUNG ZUR ADRESSIERUNG IN
GRAPHISCHEN ANZEIGESYSTEMEN"
-
EP-A-0 279 229, (AT 986 072)
Titel: "GRAPHISCHES ANZEIGESYSTEM"
-
EP-A-0 279 231, (AT 986 073)
Titel: "STEUERUNGSEINHEIT FÜR
GRAPHIKFUNKTIONEN FÜR EIN
HOCHLEISTUNGSBILDSCHIRMANZEIGESYSTEM"
-
EP-A-0 279 226, (KI 986 029)
Titel: "HOCHAUFLÖSENDER ANZEIGEADAPTER"
-
EP-A-0 279 227, (YO 986 051)
Titel: "VEKTORGENERATOR FÜR RASTERANZEIGE"
-
EP-A-0 279 230, (YO 986 104)
Titel: "VIDEOADAPTER MIT VERBESSERTER
DATENWEGSTEUERUNG"
-
EP-A-0 279 228, (YO 986 105)
Titel: "RAHMENPUFFER IN EINER ODER FÜR EINE
VIDEOANZEIGE MIT RASTERFÖRMIGER
ABTASTUNG"
-
Die vorliegende Erfindung betrifft ein Grafik-Anzeigesystem.
-
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.
-
In der US-Patentschrift Nr. 4.561.572 wird ein Speichersystem
für eine Graphikanzeige beschrieben, das die Geschwindigkeit
der Verarbeitung von Graphikdaten verbessert, indem es eine
Matrix von N mal M Bits im Speicher in einem Speicherzyklus
adressiert.
-
Es ist ein Ziel der vorliegenden Erfindung, ein
Graphikanzeigesystem bereitzustellen, das eine schnelle
Übertragung von Bildinformationen in einen Bildspeicher
erlaubt, insbesondere in Verbindung mit häufigen
Graphikoperationen wie Bitblockübertragung und
Linienzeichnen.
-
Bereitgestellt werden gemäß der Erfindung ein
Graphikanzeigesystem zur Verarbeitung anzuzeigender
Graphikinformationen, ein Bitmapspeicher zur Speicherung
verarbeiteter Graphikinformationen für die Anzeige auf einem
Anzeigegerät mit rasterförmiger Abtastung, das mit dem
Speicher verbunden ist, wobei jede Bitposition in diesem
Speicher zu einem Bildelement auf dem Anzeigegerät gehört,
ein Adressierungsmittel, das zum Zugriff auf eine Matrix von
N mal M Bitpositionen in diesem Speicher angepaßt ist, wobei
N und M ganze Zahlen größer als 1 sind, und zwar während
einer einzigen Speicherzykluszeit, so daß auf eine N-mal-M-
Matrix von Bildelementen zur Aktivierung innerhalb eines
einzigen Speicherzyklus zugegriffen werden kann,
gekennzeichnet durch ein Schreibsteuerungsmittel, das zum
Empfang von Graphikinformationen aus dem Verarbeitungsmittel
angeschlossen ist, und einen Decodierer umfassend, der auf
Steuerungssignale aus dem Verarbeitungsmittel reagiert, die
festlegen, ob als Graphikoperation entweder eine
Bitblockübertragung oder das Zeichnen einer Linie
durchgeführt werden soll, um diese Informationen gemäß den
von einer Adreßlogik erzeugten Adressen an Bitpositionen in
dem Speicher zu leiten, wobei diese Bitpositionen jeweils zu
bestimmten ausgewählten Bildelementen gehören, die einen
Block bilden, der innerhalb einer adressierten N-mal-M-Matrix
zu aktivieren ist, oder zu bestimmten ausgewählten
Bildelementen, die entlang einem Segment einer zu zeichnenden
Linie zu aktivieren sind und in die adressierte N-mal-M-
Matrix fallen.
-
Die vorliegende Erfindung wird weiter exemplarisch unter
Verweis auf ein Ausführungsbeispiel beschrieben, das in den
beigefügten Zeichnungen dargestellt ist. Dabei gilt:
-
Figur 1 ist ein Blockdiagramm, das einen Anzeigeadapter-
Schaltkreis darstellt, der an einen Prozessor und einen
Monitor angeschlossen ist.
-
Figur 2 ist ein Diagramm, das die Organisation des Bitmap-
Speichers 22 darstellt.
-
Figur 3 ist ein Zeitablaufdiagramm, das die
Zeitsteuerungssignale darstellt, die dem Bitmap-Speicher 22
von dem Pixelprozessor 18 geliefert werden.
-
Figur 4 ist eine Darstellung eines Teils eines
Anzeigebildschirms, die die Anzeige einer 4-x-4-Pixel-Matrix
auf einer Rasteranzeige darstellt.
-
Figur 5 stellt die Adreßkonvention für eine 4-x-4-Pixel-
Matrix dar.
-
Figur 6 ist ein Blockdiagramm des Pixelprozessors 18.
-
Figur 7A stellt eine Bitblock-Übertragungsfunktion dar.
-
Figur 7B stellt eine Linienzeichenfunktion dar.
-
Figur 8A ist ein Ablaufdiagramm für die Aufgabe der
Bitblockübertragung.
-
Figur 8B ist ein Ablaufdiagramm für die Aufgabe des
Linienzeichnens.
-
Figur 9 ist ein Blockdiagramm, das die Schreibfreigabemasken-
Schaltung des Pixelprozessors 18 darstellt.
-
Figur 10 ist ein Ablaufdiagramm, das den Betrieb der
Steuerungsschaltung für den Pixelprozessor 18 mit der
Schreibfreigabemasken-Schaltung darstellt.
-
Figur 11 ist ein Zeitablaufdiagramm, das den Steuerungsablauf
des Pixelprozessors 18 für einen Einrichtungszyklus zeigt.
-
Figur 12 ist ein Zeitablaufdiagramm, das die Durchführung
einer Speicherzyklus-Speicheroperation durch die
Steuerungsschaltkreise des Pixelprozessors 18 zeigt.
-
Figur 13 ist eine Darstellung einer 4-x-4-Pixel-Matrix für
eine Bitblockübertragungsoperation.
-
Figur 14 ist eine Darstellung einer vierteiligen Matrix eines
Anzeigebildschirms, die die internen Pixeladressen enthält.
-
Figur 15 ist eine Darstellung einer Musterlinie.
-
Figur 16 ist eine Darstellung zweier sich schneidender
Linien, wobei das Muster der einen Linie auf der anderen
fortgesetzt wird.
-
Figur 17 ist eine Darstellung von zwei Linien, von denen
Teile aus einem aktiven Anzeigebereich herausragen.
-
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 x 1024
Bildelementen mit 256 simultanen Farben aus einer Palette von
4096 möglichen Farben. Nachstehend folgt eine allgemeine
Beschreibung dieses Anzeigeadapterschaltkreises.
Anzeigeadapter - Allgmeine Beschreibung
-
Figur 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 x 1024 x 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 Aufgabe-
abgeschlossen-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 x 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 Organisation des Bitmap-Speichers 22 ist in Figur 2
dargestellt. Die Pixel sind in Quadraten im Format 4 x 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 x 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. Figur 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 Figur 4
dargestellt. Figur 5 stellt die Numerierung der Pixel in der
4-x-4-Anordnung dar.
-
Eine Überlagerungsebene, konkret Ebene 7 (407 in Figur 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 Figur 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 x 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 Figur 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 Figur 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 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 Figuren 7A
und 7B dargestellt. Die Bitblockübertragungsaufgabe (Figur
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 (Figur 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 Figur 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 (Figur 6) geladen. Bei der Ausführung einer
Bitblockübertragungsoperation dient die Endpunktlogik als
Speicherungszwischenebene, die die Parameter zu der
Adressenzahllogik 50 (Figur 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 (Figur 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.
-
Figur 7B stellt eine Linienzeichenaufgabe dar. Um eine
Linienzeichenanweisung auszuführen, werden die Endpunkte der
Linie, P1 (150) und P2 (152), in die Endpunktlogik 40 (Figur
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.
-
Figur 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.
-
Figur 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 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 12 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.
-
Bezug nehmend auf Fig. 6 werden die Steuerungssignale für den
Speicher 22 von der Schaltung 52 bereitgestellt, die
Informationen über den Systembus 16 sowie Adressiersignale
von den Leitungen 56 vom Zähler- und Linienzeichenschaltkreis
50 empfängt. Zusätzlich werden Steuerungssignale auf den
Leitungen 60 von der Steuerungslogik 44 bereitgestellt. Die
Schaltung 52 liefert die Reihen- und
Spaltenadressierungsimpulssignale an den Speicher 22. Darüber hinaus werden die
Schreibfreigabe-Steuerungssignale bereitgestellt.
Traditionell dient das Schreibfreigabe-Steuerungssignal dazu,
einen Zeitraum zu bestimmen, in dem die tatsächlichen Daten
in die Speicherzellen geschrieben oder daraus gelesen werden.
Die vorliegende Erfindung nutzt die Schreibfreigabe, um
tatsächlich zu steuern, welche Daten in die Speicherzellen
eingegeben werden. Das Schreibfreigabesignal dient mit
anderen Worten dazu, Daten zu maskieren, die in den Speicher
geschrieben werden. Normalerweise werden diejenigen, die
maskiert werden sollen, in ein Register geladen und durch ein
Maskenregister gespeichert. Dies wird dadurch erreicht, daß
ein zweites Register verwendet wird, das die Maske enthält,
und das erste Register mit einem zweiten Register kombiniert
wird, um die Maskenausgabe zu liefern. Diese Maskenausgabe
wird dann an den Speicher geleitet. In dem vorliegenden
Ausführungsbeispiel wird diese Maskierung erreicht, indem
selektiv die Schreibfreigabesignale für die Daten erzeugt
werden, die während einer Speicher-Schreiboperation in den
Speicher geschrieben werden sollen.
-
Figur 9 zeigt den Teil der Speichersteuerungsschaltung 52,
der das Schreibfreigabesignal erzeugt. Die in Fig. 9
dargestellte Schaltung stellt die Maskierungsfunktion für
eine Bitblockübertragungs- wie auch für eine
Linienzeichenoperation bereit. Bei der Linienzeichenoperation
wird eine Musterfähigkeit bereitgestellt, durch die ein
bestimmtes Muster (eine Anzahl eingeschalteter und eine
Anzahl ausgeschalteter Bits) zum Zeichnen von Linien
verwendet werden kann. Außerdem können für
Bitblockübertragungsoperationen Muster für Matrizen mit 4 x 4
Pixeln bereitgestellt werden.
-
Die Schaltung 52 empfängt mehrere Steuerungssignale vom
Steuerungsschaltkreis 44 des Pixelprozessors (Fig. 6). Figur
10 zeigt den Steuerungsablauf für den Betrieb der
Schreibmaskenschaltung von Fig. 9. Zuerst befindet sich die
Steuerungslogik in einem Leerlaufzustand 730, bis
festgestellt wird, daß sie einen Einrichtungszyklus beginnen
soll. Dies wird in Schritt 732 festgestellt. Die Erzeugung
des Einrichtungszyklus und des Speicherzyklus ist in EP-A-0
279 231 (AT 986 073) genau beschrieben. Beim Auftreten des
Einrichtungszyklus setzt die Steuerungsschaltung in Schritt
734 alle Flipflops 80 von Fig. 9 zurück. Dies wird erreicht,
indem die Steuerungsschaltung 44 auf der Leitung 60C ein
Signal an die Schreibfreigabe-Decodierlogik 98 liefert (Fig.
9). In einem in Fig. 11 gezeigten Zeitablaufdiagramm ist
dieses Signal die Linie 350. Zurückkehrend zu Fig. 10 fährt
die Steuerungslogik 44 dann mit Schritt 740 fort, in dem
entschieden wird, ob es sich bei der durchzuführenden
Operation um das Zeichnen einer Linie oder um eine
Bitblockübertragung (BITBLT) handelt. Handelt es sich um eine
BITBLT-operation, fährt die Steuerungsschaltung mit Schritt
742 fort, um der Schreibfreigabe-Erzeugungslogik 52 ein
Signal zu geben, die Schreibmaske vom System mit Hilfe von
Daten zu setzen, die im Schreibregister 92 als Maske
gespeichert sind. Unter Bezugnahme auf Fig. 9 wird dies durch
die Übertragung eines Signals auf Leitung 60D erreicht, des
ersten der Zeitsteuerungsimpulse auf der Linie 354 (Fig. 11).
Dieses Signal wird zu der Schreibfreigabe-Decodierlogik 98 in
Fig. 9 geleitet, die wiederum selektiv Signale auf den
Leitungen 91A-P an die 16 Flipflops 80 leitet, um diese
Flipflops 80 selektiv zu setzen. Das Register 82 wird dann
durch die Leitung 60E getaktet, so daß es die ausgegebenen 16
Maskenbits an ein UND-Gatter 84 liefert. Das Register 82 wird
durch ein Signal auf der Line 353 getaktet (Fig. 11). Das
UND-Gatter 84 empfängt auch eine Eingabe auf der Leitung 60B,
bei der es sich um die Linie 370 in Fig. 12 handelt. Figur 12
ist ein Zeitablaufdiagramm der Ausgabe der Steuerungslogik 44
während eines Speicherzyklus. Die Linie 370 umfaßt die
Zeiträume 371 und 372. Der Zeitraum 371 liefert das Aktiv-
Signal an das UND-Gatter 84. Der Zeitraum 372 ist der aktive
Zeitraum der Schreibfreigabensteuerung für den Speicher 22.
In diesem Ausführungsbeispiel umfaßt der Speicher 22 ferner
einen Signalspeicher, der die Schreibfreigabesignale auf den
Bus 20 gibt. Der Zeitraum 372, der dem Speicher 22
bereitgestellt wird, wird von dem Speicher 22 intern genutzt,
damit die Schreibfreigabe-Steuerungssignale an die jeweiligen
Speicherzellen den Zugang zu den Speicherzellen gewähren
können.
-
Die tatsächliche Durchführung einer Bitblockübertragung durch
die Schreibfreigabeschaltung in Fig. 9 umfaßt das Laden der
16 Bits aus dem Systembus 16 in das Register 92. Das Register
92 wirkt je nach der Funktion, die von der
Schreibfreigabemasken-Schaltung 52 durchgeführt wird, als
Fest- oder als Schieberegister. Bei der Durchführung einer
Bitblockübertragung wirkt das Register 92 als Festregister
(statisches Register). Die Ausgabe des Registers 92 wird
durch einen Tonnenschieber in Y-Richtung 94 und einen
Tonnenschieber in X-Richtung 96 geleitet. Diese beiden
Tonnenschieber richten das 16-Bit-Muster (4 x 4 Pixel)
effektiv aus, um die entsprechenden Adressen relativ zu der
Bildschirmrasteradresse zu liefern (siehe Fig. 4). Dies ist
wichtig, weil es dadurch möglich wird, daß das 4-x-4-Pixel-
Modul auf jede Pixelgrenze auf dem Bildschirm geschrieben
werden kann. Nachdem das 16-Pixel-Muster aus dem Register 92
durch den Tonnenschieber in Y-Richtung 94 und den
Tonnenschieber in X-Richtung 96 an der X- und Y-Adresse
ausgerichtet wurde, werden die 16 Bits in die
Schreibfreigabe-Decodierlogik 98 eingegeben, die zu gegebener
Zeit über die Leitungen 91A-91P die Fipflops 80 setzt oder
nicht setzt. Die Ausgaben werden dann bereitgestellt wie
zuvor erörtert.
-
Figur 13 zeigt ein Beispiel für ein Muster, das in einer
Bitblockübertragungsoperation ausgegeben würde. Im Normalfall
kommt eine solche Fähigkeit zum Einsatz, wenn Zeichen auf den
Bildschirm geschrieben werden. In einer
Bitblockübertragungsoperation umfaßt eine 4-x-4-Pixel-Matrix normalerweise nur
einen Teil dieses Zeichens. In Fig. 13 ist eine 4-x-4-Matrix
501 gezeigt, die mehrere aktive Pixelregionen wie etwa das
Quadrat 502 umfaßt. Zu beachten ist, daß die 4-x-4-Matrix 501
ihre absoluten Quadratadressen enthält, die von 0 in der
oberen rechten Ecke bis 15 in der unteren linken Ecke
ansteigen. Dies sind die Referenzadressen für die Quadrate in
der Matrix, wie zuvor in Fig. 5 dargestellt. Zu beachten ist,
daß die aktiven Pixel in der Matrix 501 die absoluten
Adressen 5, 8, 9, 10 und 15 haben.
-
Figur 14 zeigt einen vierteiligen Ausschnitt des Bildschirms,
der die 16-Pixel-Matrix 501 darstellen soll. Jedes der vier
Quadrate S0 bis S3 enthält 16 einzelne Pixel, die nach der
Konvention aus Fig. 5 numeriert sind. Da jeder Bereich
ausschließlich des Quadrats oder der Quadrate, in denen sich
die 4-x-4-Pixel-Matrix befindet, adressiert werden kann, muß
ein Mittel bereitgestellt werden, um die zu schreibende 4-x-
4-Pixel-Matrix an den tatsächlich bereitgestellten
Bildschirm-Rasterquadratadressen auszurichten. Dies ist die
Funktion des Tonnenschiebers in Y-Richtung 94 und des
Tonnenschiebers in X-Richtung 96. Diese beiden Tonnenschieber
94 und 96 empfangen Y Adreßbits auf Leitung 56A und X
Adreßbits auf Leitung 56B von der Speicheradreßschaltung 50
des Pixelprozessors 18. Die Adreßschaltung wird in EP-A-0 279
225 (AT 986 070) beschrieben, die die Funktion der Ausgabe
der Adressierungsschaltung 50 für eine Bitblockübertragung
wie auch für das Zeichnen einer Linie genau beschreibt. Der
Pixelprozessor 18 empfängt von dem Systemprozessor 10 oder
dem Signalprozessor 14 eine Pixelposition, die angibt, wohin
die 4-x-4-Pixel-Matrix (z.B. 501) geschrieben werden soll.
-
In diesem in Fig. 14 dargestellten Beispiel wird das Bit oben
links vom Systemprozessor spezifiziert, wobei die X-Richtung
als positiv und die Y-Richtung als negativ angegeben ist.
Pixel 12 von Quadrat 1 (S1) ist mit anderen Worten angegeben
als die Position der oberen linken Ecke der 4-x-4-Matrix 501.
Die Tonnenschieber 94 und 96 übersetzen die absoluten
Adressen der 4-x-4-Matrix 501 (dargestellt als die
eingekreisten Nummern in der oberen linken Ecke der einzelnen
Pixelquadrate) in absolute Adressen für die Pixelpositionen
in den Quadraten (in Fig. 14 dargestellt als als die Nummern
oben rechts in den Pixelquadraten). Indem der Pixelprozessor
18 der Schreibfreigabemaskenschaltung diese
Adreßübersetzungsfähigkeit bereitstellt, kann er jede 4-x-4-
Pixel-Matrix auf jede Pixelgrenze schreiben.
-
Eine Schreibfreigabe-Erzeugungsschaltung 52 aus Fig. 9 stellt
auch eine Fähigkeit bereit, wenn eine Linienzeichenfunktion
durchgeführt wird. Diese Fähigkeit für die
Linienzeichenfunktion ermöglicht die Erzeugung eines Musters für die
Linie, die zur Zeit gezogen wird. Wenn eine Linie auf dem
Bildschirm gezeichnet wird, kann sie mit anderen Worten als
ein Muster gezeichnet werden, bei dem bestimmte Pixel
eingeschaltet und bestimmte Pixel ausgeschaltet sind. Dies
ist beim Zeichnen sehr nützlich, um eine Linie von einer
anderen zu unterscheiden. Bei der Bereitstellung der
Musterfunktion für die Aufgabe des Linienzeichnens wird die
Schreibfreigabemasken-Erzeugungsschaltung 52 von einem
Systembus 16 mit der Musterskala in das Register 86 geladen.
Das Musterskalenregister 86 enthält die Nummer, die die
Anzahl der zu musternden Pixel bezeichnet, d.h. die Anzahl
der Pixel, die abwechselnd ein- und ausgeschaltet werden
sollen. Das Skalenregister 86 wird dann durch den Multiplexer
88 in den Zähler 90 geladen, der abwärts bis zu der
Skalennummer zählt, um dem Register 92 ein Taktsignal zu
geben. Das Register 92 für die Linienzeichenfunktion wirkt
als Schieberegister und verschiebt sich, wenn von dem Zähler
90 ein Taktsignal empfangen wird. Das Register 92 enthält
eine zweite Musterebene, die vom Systembus 16 bereitgestellt
wird. Ein einfaches Beispiel für die Funktionsweise der
Skalennummer in Register 86 relativ zu der Musternummer, die
im Schieberegister 92 steht, ist ein Beispiel, bei dem auf
acht eingeschaltete Bits vier ausgeschaltete Bits folgen. In
diesem Beispiel wäre die Skalennummer die kleinste Auflösung
des Musters, vier Bits. Das Muster wird durch die
Musternummer in Register 92 bezeichnet, d.h. 110110.... Diese
Nummer in Register 92 bedeutet, daß die ersten acht Bits
eingeschaltet und die nächsten vier Bits ausgeschaltet werden
sollen, wie gewünscht. Das Signal, das angibt, welche Pixel
eingeschaltet und ausgeschaltet werden sollen, wird der
Schreibfreigabe-Decodierlogik 98 über die Leitung 95
zugeleitet. Die Tonnenschieber 94 und 96 sind mit anderen
Worten nicht an der Linienzeichenoperation beteiligt. Die
Linienzeichenschaltung 50, auch in EP-A-0 279 225 (AT 986
070) beschrieben, liefert die Adressen der Pixel auf den
Leitungen 56. Es handelt sich dabei um dieselben Adressen,
die auf den zuvor beschriebenen Leitungen 56A und 56B
geliefert werden. Daher empfängt die Schreibfreigabe-
Decodierlogik 98 für jedes Pixel, das auf den Leitungen 56
adressiert wird, ein Ein- oder Aus-Signal auf der Leitung 95.
Nach dem Empfang von Informationen, die den Zustand der 16
Pixel bezeichnen, liefert die Schreibfreigabe-Decodierlogik
98 dann ein Gesetzt-Signal auf den Leitungen 91A-P an die
Flipflops 80, wie bereits beschrieben.
-
Figur 15 stellt eine einfache Musterlinie auf einem
Bildschirm 510 dar. Die Linie enthält einen aktiven Teil 512
und einen inaktiven Teil 514, so daß sich eine gestrichelte
Linie ergibt. Die Schaltung in Fig. 9 kann auch eine weitere
Fähigkeit bereitstellen, mit der zwei Linien so gezeichnet
werden können, daß sie sich schneiden, aber das Muster
zwischen den beiden Linien dennoch fortlaufend ist. Dies ist
in Fig. 16 dargestellt. In Fig. 16 enthält die Linie auf dem
Bildschirm 520 eine Reihe aktiver Pixel 522 und eine Reihe
inaktiver Pixel 524. Der Teil 526 stellt eine Ecke dar und
enthält gemäß der Funktionsweise dieses Schaltkreises in Fig.
9 dieselbe Anzahl aktiver Pixel wie die in Teil 522. Möglich
ist dies durch die Ausgabe des Zählers 90, die dem Systembus
16 zugeleitet wird. Diese Zahl aus dem Register 90 wird vom
Systemprozessor 10 oder vom Signalprozessor 14 gespeichert,
bis die zweite der sich schneidenden Linien gezogen wird.
Wenn dies geschieht, wird das Register 90 mit der
verbleibenden Zählung von der vorherigen Linie aus dem Bus 16
über den Multiplexer 88 neu geladen, so daß die neue Linie so
gezeichnet werden kann, daß das Muster dort wiederaufgenommen
werden kann, wo es bei der vorherigen Linie aufgehört hat.
-
Eine weitere Fähigkeit der Schaltung in Fig. 9 ist in Fig. 17
dargestellt. Figur 17 zeigt einen aktiven Zeichenbereich 530.
Dieser aktive Bereich umfaßt eine Linie mit den
Musterabschnitten 532 und 534. In der tatsächlichen
Berechnung umfaßt die Linie in diesem Fall einen Abschnitt,
der aus dem aktiven Bereich 530 herausragt, wie durch 536
bezeichnet. Wenn der Abschnitt 536 dem Benutzer nicht gezeigt
wird, wird dies als Kappen bezeichnet. Die vorliegende
Erfindung ermöglicht jedoch die Fortsetzung der Berechnung
der Linie und ihres Musters auf eine Weise, bei der ein
Abschnitt, der im aktiven Zeichenbereich 530 wieder
auftaucht, (z.B. 538) das richtig berechnete Muster enthält,
als ob das gesamte Liniensegment im aktiven Zeichenbereich
530 enthalten wäre. Möglich wird dies durch ein Signal auf
der Leitung 60D, das die Schreibfreigabe-
Decodierlogikschaltung 98 von der Linienzeichenschaltung 50
empfängt. In der Linienzeichenschaltung 50, die die Adressen
berechnet, stehen ein X-Komparator und ein Y-
Komparatorregister bereit, um festzustellen, wann die zur
Zeit berechneten Adressen außerhalb des aktiven
Betrachtungsbereichs liegen. Wenn die Adressen außerhalb des
aktiven Betrachtungsbereichs liegen, wird auf der Leitung 60D
ein Signal an die Schreibfreigabe-Decodierlogik 98 geleitet,
die wiederum auf der Leitung 93 ein Reset-Signal an alle
Flipflops 80 leitet. Dies verhindert, daß die
Schreibfreigabeschaltung 52 Schreibfreigaben bereitstellt,
und so wird außerhalb dieses aktiven Bereichs nicht
gezeichnet. Dabei wird als bekannt vorausgesetzt, daß dieser
aktive Bereich eine Teilmenge des tatsächlich angezeigten
Bildschirms sein kann. Daher erlaubt diese Fähigkeit zum
Kappen dennoch die Fortsetzung der Berechnung der Adressen
gemeinsam mit der Berechnung des Musters für Linien außerhalb
dieses aktiven Bereichs und ermöglicht zugleich die richtige
Linienmusterung, wenn die Linienberechnung wieder in den
aktiven Anzeigebereich zurückkehrt.
-
Die obige Fähigkeit ist wichtig, weil die so gezogenen Linien
dann gespeichert und neu angeordnet werden können, so daß sie
später im aktiven Anzeigebereich angezeigt werden können,
ohne daß ihr Muster neu berechnet werden muß.