-
Die Beschreibung bildet Teil eines Satzes von sieben
Beschreibungen, deren jede sich auf eine andere Erfindung
bezieht, die aber ein gemeinsames Ausführungsbeispiel besitzen.
Um sich wiederholende Beschreibung zu sparen, beziehen sich alle
sieben Beschreibungen aufeinander, und es sind:
-
EP-A-0 279 225, betitelt "REKONFIGURIERBARE ZAHLER FÜR DAS
ADRESSIEREN IN SYSTEMEN FÜR GRAPHISCHE
DARSTELLUNGEN",
-
EP-A-0 279 229, betitelt "SYSTEM FÜR GRAPHISCHE DARSTELLUNGEN"
-
EP-A-0 279 231, betitelt "STEUERGERAT FÜR DIE GRAPHIKFUNKTION
EINES HOCHLEISTUNGSSYSTEMS ZUR
VIDEO-ANZEIGE".
-
EP-A-0 279 226, betitelt "ADAPTER FÜR EINE ANZEIGE MIT HOHER
AUFLÖSUNG"
-
EP-A-0 279 227, betitelt "VEKTORGENERATOR FÜR RASTER-
BILDSCHIRMANZEIGE".
-
EP-A-0 279 230, betitelt "VIDEO-ADAPTER MIT VERBESSERTER
DATENPFADBILDUNG".
-
EP-A-0 279 228, betitelt "RAHMENPUFFER IN EINER ODER FÜR EINE
VIDEO-ANZEIGE MIT ZEILENABTASTUNG".
-
Diese Beschreibung bezieht sich besonders auf Schaltungen zur
Steuerung von Bildelementdaten, die dem Rahmenpuffer des Video-
Adapters geliefert werden, und schließt eine steuerbare
Schreibmaske ein, die beim Speichern von Bildelementdaten in dem
zugehörigen Rahmenpuffer benutzt wird.
-
Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet
der Anzeige-Adapter für das Kommunizieren zwischen einem
Computer und einem angeschlossenen Video-Anzeigeschirm mit
Zeilenabtastung. Sie bezieht sich genauer auf solch einen
Adapter, der viele Funktionen bereitstellt, die vorher für
kleine Mikro- und Minisysteme in selbständigen Datenstationen
nicht verfügbar waren. Noch genauer bezieht sich die Erfindung
auf einen Vektorgenerator und seine zugehörige Steuerschaltung,
die für eine Verwendung in solch einem Anzeige-Adapter
außerordentlich geeignet sind.
-
Mit der Zunahme der Geschwindigkeit und der Dateikapazität von
Datenstationen in Personalcomputern nimmt auch die Forderung
nach intelligenten Anzeige-Adaptern mit hoher Auflösung zu.
Große Graphikanwendungen, die früher auf Hauptrechner beschränkt
waren, die Anschlüsse für graphische Datensichtgeräte besaßen,
können diese erhöhte Leistungsfähigkeit in den Adaptern
benutzen, um ihre Graphikanwendungen auf selbständige Systeme zu
verlagern. Die vorliegende Erfindung beschreibt Funktionen, die
in einem Adapter für Video-Anzeige eingegliedert werden können,
um in selbständigen Datenstationen die graphischen Funktionen
und die Leistung bereitzustellen, die von solchen komplexen
graphischen Anwendungen gefordert werden.
-
Solche Anzeige-Adapter mit erhöhter Leistungsfähigkeit werden
insbesondere für solche kleinen selbständigen Systeme benötigt,
wie den IBM PC/AT und den IBM RT-PC, die Adapterfunktionen mit
hoher Leistung und mäßigen Kosten bereitstellen, die ein sehr
breites Anwendungsspektrum abdecken.
-
Eine Hauptforderung für einen selbständigen Video-Adapter ist
die Fähigkeit, Vektoren mit einem Minimum an Intervention durch
das Hauptrechnersystem zu erzeugen. Das Zeichnen von Vektoren in
Rasterbildschirmen stellt gewöhnlich eine befriedigende Leistung
in nur einer Zeichenrichtung zur Verfügung, da die Architektur
des Rahmenpuffers gewöhnlich einen parallelen Zugriff auf
mehrere Bildelemente nur längs der horizontalen Achse erlaubt.
-
Vektoren mit einer Steigung werden in solchen
Bildschirmeinheiten üblicherweise bildelementweise gezeichnet.
Wenn ein Bild oder eine Anzeige eine große Anzahl von Vektoren
mit Steigung einschließt, was bei CAD/CAM-Computergraphik der
Fall ist, wird die Leistung des Gesamtsystems stark
verschlechtert.
-
Um die Leistung zu erhöhen, sind in der Vergangenheit
verschiedene andere Lösungen benutzt worden.
-
Der einfachste Weg besteht darin, einen parallelen Zugriff auf
den Rahmenpuffer in zwei Richtungen vorzusehen. Es ist ein
teures, aber wirksames Verfahren, wenn die Wahrscheinlichkeit
für die Benutzung von Vektoren mit Steigung klein ist im
Vergleich zu der Wahrscheinlichkeit der Benutzung horizontaler
und vertikaler Linien.
-
Als nächstes können Vektoren mit Steigung horizontale Segmente
mit vielen Bildelementen einschließen, besonders, wenn seine
Steigung gegenüber einer bevorzugten Achse klein ist. Basierend
auf dieser Tatsache, kann auf den Rahmenpuffer parallel oder
bildelementweise zugegriffen werden, abhängig davon, ob ein
Vektorsegment parallel zu einer bevorzugten Achse verläuft oder
nicht. Eine andere Lösung besteht darin, einen besonders kleinen
und schnellen Cache-Speicher zu benutzen, um Segmente zu
zeichnen und dann die Daten des Caches-Speichers in den
Rahmenpuffer im Seitenmodus zu kopieren.
-
Fortschritte im Entwurf der Hardware machen es jetzt möglich,
die Adressierung des Rahmenpuffers zu modifizieren, abhängig von
der Steigung des Vektors, um für einen parallelen Zugriff auf
Speicherzellen zu sorgen, die nicht längs der Achse angeordnet
sind.
-
Alle die Lösungen, auf die oben verwiesen wurde, besitzen
bedeutsame Nachteile. Die ersten beiden erhöhen die Leistung
nicht genügend, z. B. für CAD/CAM Systeme. Auch hängt die
Zeichenzeit von der Natur der Zeichnung selbst ab, was unbequem
ist im Fall geometrischer Bildtransformationen, besonders bei
Drehungen in Realzeit. Die letzten beiden Verfahren erfordern
sehr komplizierte Zusatzhardware.
-
Gegenwärtige Architekturen für Rasterbildschirme schließen
häufig eingebaute Hardware ein, um die Leistung anzuheben und
das Programmieren zu erleichtern. Insbesondere sind die häufig
benutzten drei allgemeinsten Merkmale:
-
eine-eingebaute Adreßsteuerung für die Übertragung eines
Bit-Blocks (Bit-BlÜ)
-
ein eingebauter Vektorgenerator und
-
ein an allen Punkten adressierbarer (APA) Rahmenpuffer mit
einem unabhängigen quadratischen Zugriff längs zweier Achsen.
-
Das erste Merkmal ist ganz bequem für das Kopieren oder die
Modifikation eines Bereiches, trägt aber zur Leistungsfähigkeit
beim Vektorzeichnen nicht viel bei.
-
Der eingebaute Vektorgenerator kann noch nicht für eine gleiche
Leistung unabhängig von der Steigung des Vektors sorgen,
obgleich er in einem gewissen Ausmaß durch teilweises
Eliminieren von Software-Codes nützlich ist.
-
Das Problem ist noch komplizierter, wenn bekannte APA-
Architekturen benutzt werden. Dies erfordert eine komplizierte
Hardware-Manipulation von Adressen und Daten, so daß die
zusätzliche Modifikation der Hardware zum Anheben der Leistung
für das Vektorzeichnen entweder zu kostspielig oder nicht
praktisch zu erreichen ist.
-
Die folgenden Patente, die bei einer Studie zum Stand der
Technik hinsichtlich der vorliegenden Erfindung gefunden wurden,
stellen den wichtigsten, den Erfindern bekannten, am nächsten
kommenden Stand der Technik zusätzlich zu den vorher
diskutierten Verweisen dar.
-
US Patent US-A-4 529 978, betitelt "Verfahren und Vorrichtung
zum Erzeugen von Graphik und Textbildern auf einer
Bildschirmeinheit mit Zeilenabtastung" betrifft das Zeichnen und
die Transformation von Zeichen (oder eine zweidimensionale
Matrix) in Bildschirmeinheiten mit Zeilenabtastung. Der
Hauptgedanke besteht darin, ein Zeichen als eine Kombination
kurzer Vektoren oder Striche ("äußere Vektoren" in den
Ausdrücken des Patentes) darzustellen. Dann beschreibt das
Patent für das Modifizieren einer Zeichenbreite, einer Steigung
usw. einen Weg zur Berechnung sogenannter "innerer Striche", die
die Position und die Form eines Zeichens im Rahmenpuffer
darstellen.
-
Das Patent befaßt sich nicht mit dem Zeichnen von Vektoren in
hoher Leistung in Bildschirmeinheiten mit Zeilenabtastung. In
der Tat werden die neuerlich berechneten "inneren Striche"
Bildelement für Bildelement in einen Rahmenpuffer geschrieben
(ausgenommen, wenn ein Strich horizontal verläuft). Diese Lösung
liefert keine gute Leistung für das Zeichnen von Vektoren,
obgleich sie eine ausreichende Verbesserung liefern kann, wenn
alles, was getan werden muß, das das Schreiben von Text auf
einem Schirm ist.
-
Im Gegensatz zu diesem Stand der Technik befaßt sich die
vorliegende Erfindung mit dem Zeichnen von Vektoren bei hoher
Leistung, nicht mit Zeichentransformationen. Grundsätzlich
bietet sie eine viel höhere Leistung beim Zeichnen von Vektoren
als die Anordnung nach dem Stand der Technik, da sie das
parallele Aktualisieren mehrerer Bildelemente unabhängig vom
Ursprung des Vektors und seiner Orientierung ermöglicht.
-
Die Erfindung zeigt auch einen Weg der Implementierung der
Strichtransformation, der von dem nach dem Stand der Technik
verschieden ist und auf einem parallelen Lösungsweg für
Matrixtransformation basiert, wie z. B. Vektorausrichtung,
Steigungs- und Richtungssteuerung. Im Gegensatz dazu liefert das
Patent die aufeinanderfolgende (bildelementweise) Transformation
von Matrixelementen, obgleich sie nur für Bildelemente
durchgeführt wird, die zu dem im Inneren der Matrix gelegenen
Vektor gehören.
-
Offensichtlich ist die dargestellte und hier beschriebene
Vektortransformation N mal schneller als die in dem Patent
beschriebene, wobei N die längste lineare Dimension einer Matrix
ist.
-
Das US Patent US-A-3 675 232 von Strout mit dem Titel "Video-
Generator für Bildschirmeinheit", und das US Patent
US-A-3 906 480 von Schwartz et al., mit dem Titel "Digitales
Fernsehanzeigesystem mit Benutzung kodierter Vektorgraphik",
beschreiben eine Bilderzeugung unter Benutzung einer Lösung mit
einem "Zeichengenerator". Im Gegensatz zu der vorliegenden
Erfindung befaßt sich keines der beiden Patente mit
bitabgebildeter Graphik. Der Rahmenpuffer speichert Codes von Vektoren
oder Zeichenformen. Ein Zeichengenerator erzeugt Formen von
Zeichen oder Vektoren synchron mit horizontaler Abtastung und
ist eine Funktion eines Zeichencodes und der Nummer einer Video-
Zeile.
-
Wesentlich ist, daß diese Lösung keinen großen Rahmenpuffer
erfordert, sondern statt dessen einen kleinen, aber schnellen
Speicher anstelle des Zeichengenerators benutzt. Daher sind der
Umfang und die Kompliziertheit der Objekte stark beschränkt.
Dies ist ein bedeutender Grund, warum die "Zeichengenerator"-
Lösung veraltet ist im Vergleich zu bitabgebildeter Graphik, mit
der die vorliegende Erfindung befaßt ist.
-
Das US Patent US-A-4 555 775 von Pike, betitelt "Dynamische
Erzeugung und Überlagerung von Graphikfenstern für
Speicherbereiche mit mehrfachen aktiven Programmen", beschreibt
das Benutzen einer elementaren Graphik mit Bit-BlÜ zum
Implementieren der Mehrfensterumgebung für einen
Rasterbildschirm. Es befaßt sich nicht mit dem Zeichnen von
Vektoren.
-
EP-A-0164 880 bezieht sich auf eine Schaltung zum Modifizieren
von Daten in einem Bildschirmspeicher, der in Matrizen
organisiert ist. Das Modifizieren des Inhaltes einer
Bildschirmeinheit entsprechend den Befehlen eines Prozessors
umfaßt das Erzeugen der Adreßsignale eines ausgewählten linearen
Musters in ungefähr der Zeit, die von dem zu modifizierenden
Datenblock benötigt wird, um aus dem Bildschirmspeicher gelesen
zu werden. Für Vektoren werden den Vektoren entsprechende
Adreßsignale durch einen Generator für ein lineares Muster in
etwa der Zeit erzeugt, die für das Wiederauffinden der
entsprechenden Mehrzahl von Datenblöcken des Bildschirmspeichers
erforderlich ist.
-
Gemäß der vorliegenden Erfindung wird bereitgestellt ein Video-
Adapter einschließlich eines Bildelement-Prozessors zum
Durchführen ausgewählter Operationen mit Video-Daten
entsprechend Daten und Befehlen, die von einem Hauptrechner
geliefert werden, und zum Liefern von Video-Daten an einen an
allen Punkten adressierbaren Rahmenpuffer, der auf eine an den
Bildelementen ausgerichtete quadratische M·M-Matrix von
Mehrbit-Bildelementen zugreifen kann, die auf einem
Anzeigemonitor mit Zeilenabtastung während eines einzigen
Speicherzyklus anzuzeigen sind, wobei der Bildelementprozessor
einen Vektorgenerator einschließt, der M Vektorbits pro
Taktzyklus des Rahmenpuffers erzeugt, und der Vektorgenerator
einen Vektor-Taktgenerator umfaßt, der eine Taktgeberrate
erzeugt, die M· die Taktgeberrate des Rahmenpuffers
beträgt. Solch ein Adapter ist in EP-A-0 164 880 offenbart. Gemäß
der Erfindung ist der Adapter gekennzeichnet durch einen
Liniengenerator, der ein binäres (vertikales) Zuwachssignal (SD)
bezüglich der Y-Achse erzeugt entsprechend jedem Impuls, den der
Vektor-Taktgenerator bis zu M-l· pro Taktzyklus des
Rahmenpuffers entsprechend den den Vektor definierenden
Parametern erzeugt, die zusammen mit einem Vektorlängen-Signal
dem Liniengenerator durch den Hauptrechner geliefert werden,
eine Vektormatrix zum Erzeugen und Speichern der Bits eines
Vektors, der in dem Rahmenpuffer zu speichern ist als eine
Funktion der Ausgangssignale des Liniengenerators für die Y-
Zuwachsbits und nachfolgender X-Zuwachssignale des Vektor-
Taktgebers, wobei die Vektormatrix Speicherelemente enthält
und durch den Rahmenpuffer in einem einzigen Speicherzyklus
zugreifbar ist, so daß jeder anzuzeigende Vektor durch einen
Vektor dargestellt werden kann, der in der Vektormatrix zusammen
mit Steigungs- und Richtungsdaten erzeugt wird, die eine von
vier möglichen Matrix-Transformationsoperationen angeben, wobei
(1) keine Änderung, (2) Vertauschung, (3) Spiegelung und
(4) Spiegelung plus Vertauschung darstellen, was einen Vektor
mit jeder möglichen Steigung und Richtung erzeugt, die in der
quadratischen M·M-Matrix darstellbar sind, und eine logische
Schaltung zur Vektororientierung zum Erzeugen einer wahren
Vektormaske, die als einen Satz von binären Eingangsignalen die
Ausgangssignale der Speicherelemente der Vektormatrix aufweist
und einen zweiten Satz von binären Eingangssignalen, die die
tatsächliche Steigung und Richtung des zu erzeugenden Vektors
darstellen, wodurch eine wahre binäre Darstellung des richtig
orientierten Vektors, wie er auf dem Bildschirm erscheinen
sollte, erzeugt wird als Ergebnis der Durchführung einer der
Matrix-Transformationsoperationen.
-
Die vorliegende Erfindung wird weiter als Beispiel beschrieben
unter Bezugnahme auf ein Ausführungsbeispiel dazu, wie es in den
beigefügten Zeichnungen dargestellt ist, in denen:
-
Fig. 1 ein Blockschaltbild eines Video-Adapters auf hoher
Ebene ist,
-
Fig. 2 ein Blockdiagramm einer Form eines Vektorgenerators
gemäß der vorliegenden Erfindung ist,
-
FIGN. 3A-3D die vier möglichen Ausrichtungen von Vektoren mit
Steigungen erläutern, die durch eine einzige
Erzeugung eines Vektors und eine Erzeugung einer
Translation erzeugt werden können,
-
Fig. 4 ein Blockschaltbild einer Form des
Schreibmaskengenerators ist,
-
Fig. 5 eine schematische Ansicht einer Form eines an allen
Punkten adressierbaren Rahmenpuffers ist, der eine
4·4-Matrix bereitstellt für den Bildelementzugriffin
im wesentlichen nur einem Speicherzugriffszyklus
-
Fig. 6 ein Diagramm des Maskierungsmechanismus des
Rahmenpuffers ist,
-
Fig. 7 ein Blockschaltbild der Gesamtorganisation der
Hardware-Steuerung des Rahmenpuffers ist, die
darstellt, wie die Bit-BlÜ-Steuerungen nach Fig. 10,
der Vektorgenerator nach Fig. 2 und der Maskengenerator
nach Fig. 4 innerhalb des Gesamtsystems organisiert
sind,
-
Fig. 8 ein genaueres Logikdiagramm der Schaltung zur
Vektorerzeugung ist,
-
Fig. 9 ein Blockschaltbild der Logik für die
Vektororientierung ist,
-
Fig. 10 ein Blockschaltbild der Bit-BlÜ-Adreßsteuerungen ist,
-
Fig. 11 ein Blockschaltbild der Steuerung der X-Adresse des
Bestimmungsortes ist,
-
Fig. 12 ein Blockschaltbild der Steuerung der X-Adresse der
Quelle ist und
-
Fig. 13 ein Satz von Zeitdiagrammen für eine typische Operation
zum Zeichnen eines Vektors ist.
-
Bevor mit einer genaueren Beschreibung des vorliegenden
Vektorgenerators und seiner zugehörigen Steuerschaltungen
fortgefahren wird, wird ein kurzer Überblick eines Video-
Adapters gegeben, in dem die vorliegende Erfindung eine
besondere Nützlichkeit aufweist. Es versteht sich natürlich, daß
der hier beschriebene Video-Adapter nur zur Erläuterung gedacht
ist und daß die vorliegende Erfindung bei anderen Architekturen
von Video-Adaptern mit Vorteil benutzt werden könnte, wie das
für die Fachleute offensichtlich ist.
-
Ein Gesamtblockschaltbild eines Adapters für einen Video-
Bildschirm, bei dem die vorliegende Erfindung besondere
Nützlichkeit aufweist, ist in Fig. 1 dargestellt.
-
Den Adapter der Video-Bildschirmeinheit stellt man sich vor als
einen Adapter mit hoher Auflösung und mittlerer Funktion für
graphische Darstellungen, der irgendeine einer Anzahl von
gegenwärtig verfügbaren Anzeige-Monitoreinheiten, wie z. B. die
IBM 5081, steuern könnte. In einer gegenwärtig realisierbaren
Form unterstützt er solch einen Monitor mit einer Auflösung von
1024·1024 Bildelementen und liefert Information durch Video-
Daten mit 8 Bits pro Bildelement, was für 256 Steuermerkmale
sorgt, die zwischen Farb- und/oder Grauskalendaten verteilt
werden können.
-
Das Folgende enthält eine kurze Beschreibung der Gesamtfunktion
des Adapters, wobei es sich versteht, daß für eine genauere
Beschreibung solch eines Adapters ein Verweis auf EP-A-0 279 226
gemacht werden sollte. Da das Hauptziel des Adapters für die
gesamte Video-Bildschirmeinheit darin besteht, fortschrittliche
Video-Anzeigefunktionen in einem vergleichsweise billigen
Adapter zu liefern, der seinerseits mit Prozessoren oder
Zentraleinheiten verbunden werden kann, die eine etwas begrenzte
Verarbeitungsfähigkeit besitzen, werden diejenigen Funktionen,
die sonst in einer komplizierteren Zentraleinheit durchführbar
wären, durch den vorliegenden Adapter bereitgestellt.
Darüberhinaus sind die Funktionen über einen relativ direkten
und einfachen Satz von Befehlen implementierbar.
-
Es wird auf Fig. 1 Bezug genommen. Der gesamte Adapter besteht
aus den folgenden Hauptkomponenten. Der digitale Signalprozessor
10 wird benutzt, um die Betriebsmittel des gesamten Adapters zu
verwalten, er transformiert Anzeigekoordinaten und führt eine
Anzahl anderer ziemlich komplizierter
Signalverarbeitungsaufgaben durch.
-
Der Befehls- und Datenspeicherblock 12 ist ein Befehlsspeicher
mit wahlfreiem Zugriff, der mit zusätzlichem Mikrocode für den
Signalprozessor geladen werden kann, wie einzusehen ist.
Block 12 dient als ein Datenspeicher mit wahlfreiem Zugriff und
stellt die Hauptschnittstelle zwischen dem Signalprozessor 10
und dem Systemprozessor zur Verfügung. Er führt außerdem die
Funktion eines Hauptspeichers für den Signalprozessor 10 aus.
-
Block 14, gekennzeichnet als Befehls-FIFO, dient als ein
Eingangspuffer für das Weiterleiten aufeinanderfolgender Befehle
zu dem digitalen Signalprozessor 10 über den E-/A-Bus 16 und
verbindet, wie offensichtlich ist, den Video-Bildschirmadapter
mit dem System oder Hauptrechner.
-
Der Bildelementprozessor 18 enthält Logik, die eine Reihe von
die Bildschirmeinheit unterstützenden Funktionen durchführt, wie
z. B. Adressenverarbeitung für das Zeichnen von Linien, was das
Verarbeiten begrenzter Bereiche des Anzeigeschirms erlaubt
(BIT-BlÜ). Eine Anzahl neuer Aspekte des vorliegenden
Bildschirmadapters sind in dem Bildelement-Prozessorblock
resident.
-
Der mit Rahmenpuffer gekennzeichnete Block 20 enthält den Video-
Speicher mit wahlfreiem Zugriff, der den Monitor durch eine
geeignete Schaltung zur Digital-Analog-Umsetzung speist. Wie
ersichtlich ist, besitzt die hier beschriebene Konfiguration
eine Auflösung von etwa 1K·1K Bildelementen, wobei jedes
Bildelement ein diskretes Element eines auf dem Monitor
anzuzeigenden Video-Datensignals darstellt, das so viel
Information enthalten kann, wie in den acht Ebenen des
Rahmenpuffers speicherbar ist, was, wie leicht einzusehen ist,
bedeutet, daß es acht Datenbits pro Bildelement gibt. Wie weiter
einzusehen ist, können diese acht Bits unter dem Rot, Grün und
Blau eines Farbmonitors verteilt sein oder nur die
Intensitätsinformation einer Grauskala eines Schwarz/Weiß-
Monitors sein.
-
Der Gegenstand der vorliegenden Erfindung ist in der Architektur
des Bildelementprozessors 18 resident und liefert eine Anzahl
von Funktionen bezüglich der Vektorerzeugung und erlaubt es, daß
der Betrieb des Video-Adapters wesentlich beschleunigt wird, wie
aus der nachfolgenden Beschreibung ersichtlich wird.
-
Die Gegenstände der vorliegenden Erfindung werden durch die hier
beschriebene Architektur des Vektorgenerators erreicht, der für
ein schnelles Zeichnen von Vektoren unabhängig von der Steigung
des Vektors und seiner Stelle auf dem Bildschirm sorgt. Die
Zeichenleistung ist bedeutend schneller im Vergleich zu
bekannten Verfahren.
-
Die vorliegende Architektur des Vektorgenerators modifiziert die
Bit-BlÜ-Steuerung leicht und fügt einen geringen Betrag an
zusätzlicher Hardware für die Verarbeitung der Datenmaske hinzu.
Sie liefert statistisch eine schnellere Gesamtleistung beim
Vektorzeichnen als früher erwähnte Lösungen unter gleichen
zeitlichen Bedingungen des Systems, wie z. B. die
Speicherzugriffs- und Zykluszeit. Sie sorgt auch für gleiche
Zeichengeschwindigkeit im gesamten Bildschirmbereich, unabhängig
von der Steigung des Vektors und den Endkoordinaten und benutzt
voll die moderne Hardware des Rasterbildschirmes ohne
Verschlechterung seiner Leistung.
-
Die Lösung ähnelt in einem Sinne aufeinanderfolgenden
Speicherzyklen in einem Modus Nur Schreiben bei Bit-BlÜ, sorgt
aber für Manipulationen mit der Datenmaske und den Bit-BlÜ-
Steuerparametern des Vektorzeichnens im Fluge.
-
Der Vektorgenerator (Fig. 2) führt eine Reihe von diskreten
Funktionen aus. Er berechnet Vektorsegmente gleicher Länge und
benutzt jedes berechnete Segment als eine Maske während des
Speicherzugriffs. Schließlich führt er die Berechnungen durch,
um die Bit-BlÜ-Steuerparameter zu modifizieren. Als Beispiel und
in dem bevorzugten Ausführungsbeispiel der Erfindung wird ein
Zugriff auf den Rahmenpuffer durch ein Quadrat von 4·4
Bildelementen benutzt.
-
Bevor mit der Beschreibung des Ausführungsbeispieles
fortgefahren wird, wird die folgende Liste von Definitionen,
Funktionen und in einigen Fällen das Format der bedeutenderen
Funktionseinheiten und Steuersignale als eine einheitliche
Quelle für Verweise dargestellt, was das Verständnis der
Erfindung erleichtert:
-
RIC Richtung; "0" = vom Ursprung aufwärts; "1" - vom
Ursprung abwärts
-
ST Steigung; "0", wenn gleich oder kleiner als 45
Grad, "1", wenn größer als 45 Grad,
-
EDV Ende des Vektors; "1" = letztes Bildelement wird
erzeugt
-
V TKT Vektortakt; viermal Taktrate des Rahmenpuffers
-
V Modus Ein einzelnes Bit, das einen "Vektor" anzeigt, wird
erzeugt, nicht irgendeine andere Bit-BlÜ-Operation
-
D VAR Entscheidungsvariable
-
V LÄNR Vektorlängenregister - zählt abwärts, wenn der Vektor
erzeugt wird,
-
eine "1" bedeutet, daß das Ende des Vektors erreicht
wurde
-
VOR Vektororientierungsregister
-
QSTR Quellen-Steuereinheit
-
SOPR Speicher-Operationsregister
-
SD Vorzeichen der Entscheidungsvariablen; "1"=
aufwärtsgehen, "0"= keine Änderung
-
VCC Eine Versorgungsspannung - liefert eine logische "1",
wenn nötig
-
P1-P3 Impulse des Taktzyklus des Vektorgenerators
-
LDB1 Signale, die Daten von dem Bus in die geeigneten
-
LDB2 Zähler (FIGN. 11, 12) vor dem Beginn einer
Vektorzeichenoperation laden
-
BSTR Steuereinheit für den Bestimmungsort
-
SH Ein Adressenerhöhungsimpuls, der in den X- und
Y-Adreßsteuerungen benutzt wird
-
Der Vektorgenerator (Fig. 2) schließt einen üblichen
Vektorgenerator, d. h. einen Bresenham-Vektorgenerator, eine
Vektormatrix, Vektororientierungslogik, ein
Vektororientierungsregister VOR und ein Flip-Flop VMODUS für den Vektormodus ein.
Ein geeigneter Bresenham-Vektorgenerator ist in dem Buch von
J.D. Foley und A. Van Dam beschrieben, "Fundamentals of
Interactive Computer Graphics", Addison-Wesley Publishing
Company, 1982.
-
Der Bresenham-Vektorgenerator berechnet X- und Y-Ablenkungen des
Vektors bildelementweise, und liefert zwei Ausgangssignale: EDV
und SD. Das Signal EDV zeigt die Zahl null im
Vektorlängenregister VLANR an, d. h. das Ende des Vektorzeichnens. Das Signal
SD ist das Vorzeichen einer Zahl Entscheidungsvariable, die
nacheinander für jedes Bildelement berechnet wird, beginnend mit
dem Anfang des Vektors und fortdauernd bis zu seinem Ende, und
die zeigt, ob die abhängige Koordinate erhöht werden sollte oder
nicht. Es gibt einen (nicht dargestellten) Addierer und zwei
weitere Register, die zwei konstante Parameter ERHÖ1R und ERHÖ2R
festhalten, die anfänglich berechnet werden und in den
Bresenham-Vektorgenerator durch Verfahren geladen werden, die in
dem Buch von Foley et al. beschrieben sind.
-
Der Bresenham-Vektorgenerator berechnet EDV und SD viermal
während eines Speicherzugriffs, da der Taktgeber RPTKT des
Rahmenpuffers, der den Speicherzugriffszyklus definiert, viermal
langsamer ist als der Taktgeber VTKT des Vektorgenerators, der
den Bresenham-Vektorgenerator bedient. So benötigt jeder
Speicherzyklus zum Aktualisieren vier VTKT-Perioden.
-
Die Entscheidungsvariable, die Vektorlänge und die beiden
zusätzlichen Parameter ERHÖ1 und ERHÖ2 werden durch den
Hauptrechner berechnet, als ob der Vektor in dem ersten Oktanten
gezeichnet worden wäre, und der Startpunkt hat eine
Startkoordinate Xst, die kleiner ist als die Endkoordinate Xend.
Das bedeutet, daß das Maximum der beiden absoluten
Subtraktionsergebnisse (Yend-Yst) und (Xend-Xst) in des VLÄNR-
Register geschrieben wird. Es veranlaßt auch, daß der
Zeichenprozeß stets in die gleiche horizontale Richtung geht.
Dann werden die berechneten Parameter in die entsprechenden
Register geladen. Ebenfalls werden die wirklichen Koordinaten
des Anfangspunkte s des Vektors in die Adreßregister des
Rahmenpuffers geladen.
-
Die beiden Steuerbits - Vektorsteigung ST und Richtung RIC -
definieren den wirklichen Oktanten, in dem der Vektor gezeichnet
wird, wenn die Anfangskoordinaten in den Startpunkt des Vektors
plaziert werden, d. h. den ersten, zweiten, siebten oder achten
Oktanten (andere Oktanten werden nicht benutzt, da jeder Vektor
angesehen werden kann als nur zu der Klasse der oben
beschriebenen Oktanten gehörig). Dies wird nachfolgend
vollständiger beschrieben. Diese Steuerbits werden durch den
Hauptrechner in das VOR-Register geladen und entsprechen den
möglichen Vektorpositionen, wie sie in den Fig. 3A-3D
dargestellt sind. Wenn die Richtung und Steigung (0,0) sind,
dann wird der Vektor in dem ersten Oktanten (vgl. Fig. 3A)
positioniert, wenn die Richtung und Steigung (0,1) sind, dann
wird der Vektor in den zweiten Oktanten positioniert usw., wenn
die Richtung und Steigung (1,0) sind, dann befindet sich der
Vektor in dem achten Oktanten und wenn die Richtung und Steigung
(1,1) sind, dann liegt der Vektor im siebten Oktanten.
-
Das Vektorzeichnen beginnt, nachdem das Flip-Flop VMODUS den
VTKT freigibt, der zu der Hardeware des
Bresenham-Vektorgenerators weitergeleitet wird, und der endet, nachdem das EDV-
Signal wahr wird.
-
Die in Fig. 8 gezeigte Vektormatrix ist ein
Zwischenspeicherregister, das jede Vektorform im ersten Oktanten
darstellen kann. Wie aus den FIGN. 3A-3D zu ersehen ist, sind
gerade 9 Flip-Flop-Register für diesen Zweck erforderlich. Die
kräftige Linie ist eine Umgrenzung aller möglichen Bildelemente,
die von einem Vektor im ersten Oktanten (A) benutzt werden
können. Die Bildelemente 4, 8, 9, 12, 13 und 14 können nie
gezeichnet werden, und das Bildelement 0 wird stets gezeichnet,
und man muß nicht besonders daran denken oder es speichern. Die
Vektormatrix besteht daher aus 3 getrennten Registern, einem
Zwei-Bit-Register, das die Bildelemente 1 und 5 darstellt, einem
Drei-Bit-Register, das die Bildelemente 2, 6 und 10 darstellt,
und einem Vier-Bit-Register, das die Bildelemente 3, 7, 11 und
15 speichert.
-
Das Zeichnen eines Vektorsegmentes aus vier Bildelementen
benutzt die drei VTKT-Zyklen ('P'subl, 'P'sub2, 'P'sub3).
-
Im ersten Zyklus wird eine logische "1" die die
Bildelementnummer 0 darstellt, in das Flip-Flop 1 oder 5
eingeschrieben, abhängig von dem SD-Signal. Wenn das SD-Signal
gleich "0" ist, d. h. die Entscheidungsvariable ist positiv und
die Y-Koordinate sollte nicht erhöht werden, wird das
Flip-Flop 1 gesetzt und das Flip-Flop 5 rückgesetzt. Wenn das
SD-Signal 1 ist, d. h. die Entscheidungsvariable ist negativ und
die Y-Koordinate sollte erhöht werden, nehmen die Flip-Flops 1
und 5 die entgegengesetzten Werte an.
-
Im zweiten Zyklus werden die Daten in den Flip-Flops 1 und 5
direkt zu den Flip-Flops 2 und 6 übertragen und Flip-Flop 10
wird rückgesetzt, wenn das SD-Signal gleich null ist, oder wenn
das SD-Signal gleich 1 ist, werden die Daten in den Flip-Flops 1
und 5 entsprechend zu den Flip-Flops 6 und 10 verschoben, und
das Flip-Flop 2 wird rückgesetzt. Mit anderen Worten, die Daten
in dem ersten Register werden in das zweite Register geladen mit
oder ohne eine Aufwärtsverschiebung, abhängig von dein SD-Signal.
-
Im dritten Zyklus werden die Daten in den Flip-Flops 2, 6 und 10
mit oder ohne Aufwärtsverschiebung in das dritte Register aus
den Flip-Flops 3, 7, 11 und 15 übertragen. Daher wird das
Vektorsegment am Ende des dritten VTKT-Zyklus durch die Flip-
Flops der Vektormatrix dargestellt, die in einen "1"-Zustand
gesetzt wurden.
-
Basierend auf dem Wert der ST- und RIC-Steuerbits führt die in
Fig. 9 dargestellte kombinatorische Logik zur Vektororientierung
eine Transformationsoperation mit der Vektorform im ersten
Oktanten durch, und liefert keine Transformation (Fig. 3A), eine
Transformation in den zweiten Oktanten unter Benutzung der
Operation der Transpostition T (Fig. 3B), eine
Spiegelungstransformation N (Fig. 3C) in den Oktanten 8 oder die
Kombination MT beider Operationen M und T (Fig. 3D), die den
Vektor in den Oktanten 7 transformiert. Die Eingangs- und
Ausgangscodes der Vektororientierungslogik sind die beiden
kleinen 4·4-Matrixdiagramme, die in Fig. 2 dargestellt sind
und einen Vektor darstellen, der durch eine MT-Transformation in
den Oktanten 8 positioniert wurde.
-
In den FIGN. 3A-3D sind in der Spalte, die bezeichnet ist mit
"Bitstellen vor und nach Transformationsoperationen", die
Bitstellen in der dargestellten quadratischen 4·4-Matrix
angegeben, um ihre Abbildung zu zeigen, wie sie die Logik zur
Vektororientierung verlassen würden. Wie zu verstehen ist,
stellen die Bits der Vektormatrix nach Fig. 2 (1, 5, 2, 6, 10,
3, 7, 11 und 15) die numerierten Bits der FIGN. 3A-3D dar, und
die Flip-Flops der Vektormatrix speichern die binäre
Vektordarstellung wie sie erzeugt wird, d. h. Bits 0, 1, 6 und 7
würden für das Beispiel nach Fig. 3A auf "1" gesetzt. Das 0 Bit
wird stets als auf "1" gesetzt betrachtet, und das wird durch
interne Verdrahtung innerhalb der Vektororientierungslogik
erreicht.
-
Wie zu verstehen ist, können alle möglichen Vektoren
einschließlich solcher unter 45 Grad, horizontaler und
vertikaler Vektoren in dieser Weise durch Beeinflussen der
geeigneten Bits in der Logik zur Vektororientierung gezeichnet
werden. Daher würden für einen Vektor mit einer positiven
Steigung von 45 Grad die Bits 0, 5, 10 und 15 auf "1" gesetzt
werden mit einem RIC- und ST-Wert von (0,0). Für eine negative
Steigung würden die gleichen Bits aktiviert, aber die RIC- und
ST-Bits würden (1,1) sein, z. B. für die in Fig. 2 dargestellte
Vektortransformation.
-
Jedoch kann das Ausgangssignal der Vektororientierungslogik
nicht als eine Maske zur Schreibfreigabe für den APA-
Rahmenpuffer benutzt werden, da es doppelt verschoben werden
muß, auf der X-und der Y-Achse gemäß den beiden niedrigsten Bits
der X- und Y-Adreßkoordinaten XAD (1 . . . 0) und YAD (1 . . 0). Diese
Operation wird durch einen Schreibmaskengenerator ausgeführt,
der in Fig. 4 dargestellt ist. Es ist natürlich offensichtlich,
daß, wenn die niederstelligen X-Y-Adreßkoorinaten 0 sind, keine
Verschiebung stattfindet, wie es der Fall ist, wenn der
Matrixzugriff in dem Rahmenpuffer genau längs einer Wortgrenze
erfolgt.
-
Die Schreibmaske für den APA-Rahmenpuffer schließt ein Register
ein, das als direktes Maskenregister (DMR) bezeichnet werden
kann, und eine APA-Datenausrichteinheit, wie sie in dem Artikel
von Sproull, R. F., Sutherland, I. E., Thompson, A., Gupta, S.,
und Minter C., "The 8·8 Display", Technical Report, Carnegie-
Mellon University, Computer Science Department, 1981 beschrieben
ist. Ein direktes Maskenregister für eine
APA-Rahmenpufferarchitektur ist auch in EP-A-0 279 228 dargestellt. Das direkte
Maskenregister erlaubt das Schreiben jedes Musters in den
Rahmenpuffer, z. B. Text. Die APA-Einheit zur Datenausrichtung
richtet Maskendaten aus und ist gemäß einem bekannten Verfahren
aus 8 Verschiebeeinrichtungen für 4-Bit-Mengen aufgebaut, wie
das in EP-A-0 279 228 gezeigt ist.
-
Die hier beschriebene Implementierung erfordert nur eine kleine
Modifikation dieser Struktur, das Hinzufügen eines
Vektormaskenregisters (VMR) und eines Multiplexers (MUX) zum
Schalten von VMR- und DMR-Daten, abhängig davon, ob das Zeichnen
eines Vektors oder eine übliche Bit-BlÜ-Operation durchgeführt
wird.
-
Das Ausgangssignal der Vektororientierungslogik VM (0 . . . 15) wird
am Ende der vierten (und letzten) Taktperiode in der VTKT-
Periode (Impuls P1) des speziellen Zyklus zum Aktualisieren des
Speichers in das Vektormaskenregister (VMR) geladen. Ein
Beispiel einer Verschiebung um zwei Positionen ist in Fig. 4
durch die beiden 4·4-Bildelementmatrizen gezeigt, die ein
Vektorsegment vor dem Ausrichten und nach zwei Bitverschiebungen
in horizontaler und vertikaler Richtung darstellen.
-
Um die Rahmenpufferadresse für den nächsten Speicherzyklus zu
aktualisieren, müssen die Daten des Bit-BlÜ-Adreßsteuerregisters
am Ende jedes Speicherzyklus geändert werden. Die SD-RIC- und
ST-Signale definieren die Modifikation der Bit-BlÜ-Steuerdaten.
-
Abhängig von der Vektorsteigung kann eine der X- oder Y-
Koordinaten die Rolle einer unabhängigen Koordinate spielen.
Dies bedeutet, daß die unabhängige Koordinate einer
quadratischen 4·4-Matrix, auf die während eines
Aktualisierungszyklus des Rahmenpuffers zugegriffen wurde, am
Ende jedes Speicherzyklus um vier erhöht werden sollte. Mit
anderen Worten, wenn das Signal ST=0, d. h. (Xend-Xst), dann ist
Y die unabhängige Variable.
-
Die Richtung definiert, ob die Y-Koordinate erhöht oder
erniedrigt werden sollte. Die X-Koordinate wird stets erhöht,
obgleich es eine Frage der Implementierung ist, wie das erfolgt.
Alternativ könnte sie stets vermindert werden, wie das für die
Fachleute offenkundig ist. Dies bedeutet, daß der Vektor nur von
links nach rechts gezeichnet werden kann. Dies ist kein
wirklicher Nachteil, da jeder Vektor noch gezeichnet werden
kann. Es ist oft notwendig, solch eine Zeichenmethode zu
benutzen, da, wenn ein Vektor zu löschen ist, er tatsächlich
erneut in der gleichen Richtung gezeichnet wird, aber unter
Benutzung der Hintergrundfarbe. Wenn ein Versuch gemacht würde,
einen Vektor in der entgegengesetzten Richtung zu löschen, gibt
es keine Garantie dafür, daß alle Punkte gelöscht würden (darauf
wird als der "Masern"-Effekt Bezug genommen).
-
Die Anzahl der Fälle, in denen ein Vorzeichen der
Entscheidungsvariablen SD während des Zeichnens eines
Vektorsegmentes negativ ist, zeigt an, wie die abhängige
Koordinate am Ende eines Aktualisierungszyklus für den
Rahmenpuffer geändert werden sollte.
-
Ein Drei-Bit-Zähler (VZHR in Fig. 12), der VTKT als Taktquelle
und das SD-Signal als ein Freigabesignal benutzt liefert solch
eine Zahl am Ende der vierten VTKT-Periode. Diese Zählerdaten
werden addiert zu oder subtrahiert von den Daten in den Bit-BlÜ-
Steuerregistern, wie sie in den FIGN. 10, 11 und 12 dargestellt
sind, die für die Modifikation der abhängigen Koordinate sorgen.
-
Unglücklicherweise läuft der erste Aktualisierungszyklus des
Speichers leer, da die Schreibmaske noch nicht fertig ist. Daher
muß, bevor das Vektorzeichnen beginnt, das VMR-Register gelöscht
werden, was das Aktualisieren des Rahmenpuffers ausschaltet.
-
Die X-Adresse wird während des ersten
Speicheraktualisierungszyklus noch nicht geändert. Die Y-Adresse muß um vier verringert
werden, wenn die Richtung des Zeichnens negativ ist, (da das
Vektorsegment unterhalb der Startkoordinate gezeichnet wird,)
und bleibt unverändert, wenn die Richtung positiv ist. Für das
Verhalten der Adreßregister während des ersten
Speicheraktualisierungszyklus wird von dem Hauptrechner gesorgt
durch das notwendige Laden der Bit-BlÜ-Steuerregister QX, BX und
QY, BY während der Einstellprozedur für das Vektorzeichnen.
-
Die Speicheraktualisierungszyklen dauern an, bis das Signal EDV
wahr wird, d. h. das Ende des Vektors erreicht ist. Es schaltet
den VTKT-Taktimpuls für den Bresenham-Vektorgenerator über das
in FIG: 2 dargestellte UND-Glied ab. Wenn das EDV-Signal in der
Mitte des Aktualisierungszyklus des Rahmenpuffers wahr wird,
werden die Vektormatrixregister, die normalerweise als nächste
aktualisiert würden, statt dessen gelöscht. Der letzte
Aktualisierungszyklus des Quadrates findet dann statt. Daher
zeichnet der Vektorgenerator vier Bildelemente eines
Vektorsegmentes in der gezeigten 4·4-Matrix, aber das Zeichnen
wird mit einer Genauigkeit von einem Bildelement beendet.
-
Die Leistung des hier beschriebenen Vektorgenerators kann in
zeitlicher Hinsicht beschrieben werden als der
Speicheraktualisierungszyklus des Rahmenpuffers, geteilt durch
die Dimension (Anzahl der Bildelemente auf einer Seite) der
quadratischen Zugriffsmatrix. Wenn z. B. der Speicherzyklus
200 ns beträgt und der Zugriff über ein 8·8 Quadrat erfolgt,
beträgt die Zeichenleistung 25 ns pro Bildelement in jeder
Richtung.
-
Es ist natürlich ein Aufwand mit dem Laden der Steuer- und
Adreßregister durch den Hauptrechner verbunden, aber der Aufwand
ist der gleiche, wenn die Vektoren bildelementweise gezeichnet
würden unter Benutzung eines üblichen Vektorgenerators. Der
erste leer laufende Speicherzyklus kann beim Berechnen der
Leistung vernachlässigt werden, insbesondere für längere
Vektoren.
-
Das Folgende beschreibt die Verwendung des hier beschriebenen
Vektorgenerators in einem gesamten Video-Adapter, der mit der
Architektur des Rahmenpuffers versehen ist, die in
EP-A-0 279 228 dargelegt und beschrieben wurde.
-
Die Kapazität des Rahmenpuffers ist nicht kritisch, jedoch würde
ein gutes praktisches Ausführungsbeispiel, um die vorliegende
Architektur des Vektorgenerators zu benutzen, einen Rahmenpuffer
mit einem Zugriff durch ein 4·4-Quadrat erfordern. Es sei
bemerkt, daß der einfachste Weg, für solch einen Matrixzugriff
mit einem Minimum an Speicherchips und praktischer Bildauflösung
zu sorgen, durch eine Rahmenpuffergröße von 1K·1K (Fig. 5)
garantiert wird. Die Figur stellt die Numerierung dar, die
benutzt wurde, um die 16 Bildelemente zu identifizieren, auf die
in einem Rahmenpufferzyklus zugegriffen wird. Jedes Bildelement
ist in einem anderen Chip lokalisiert, wie aus EP-A-0 279 228
ersichtlich ist.
-
Solch ein Rahmenpuffer erfordert 16 Speicherchips mit 64 K Bits
für eine Bitebene (Fig. 6) . Die Anzahl der Ebenen oder Bits pro
Bildelement ist nicht kritisch (8 Bits pro Bildelement oder 128
Chips sind dargestellt). Ebenso ist es nicht notwendig, daß alle
16 Bildelemente in einem Zyklus aktualisiert werden können (im
allgemeinen Fall ist die Vektorfarbe (oder Intensität)
konstant), Daten-E/-A kann zumindest in einer der Richtungen,
z. B. vertikal, verbunden werden.
-
Alle Chips besitzen gemeinsame Steuerungen. Das Aktualisieren
aller Ebenen des gleichen Bildelementes wird gesteuert durch 16
getrennte Schreibfreigabesignale (SF0 . . . SF15), die in Fig. 6
durch geneigte Vektoren dargestellt sind. Das Muster der
Schreibfreigabesignale wird durch ein "Schreibmasken"-Register
gesteuert und würde in der Steuerhardware des Rahmenpuffers
eingeschlossen sein.
-
Die Hardware, die das Aktualisieren des Rahmenpuffers steuert,
ist in Fig. 7 dargestellt und besteht aus einer Steuereinheit,
einem Speicheroperationsregister (SOPR), dem Bit-BlÜ-
Steuerblock, dem Vektorgenerator, dem Maskengenerator und dem
Generator für Markierimpulse des Rahmenpuffers.
-
Die Steuereinheit unterstützt den Hauptrechner beim Laden der
Adreß- und Steuerregister. Der Generator für die Markierung des
Rahmenpuffers liefert Synchronisierimpulse P, Markierimpulse für
die Zeilenadressen (ZAM) und Spaltenadressen (SAM) des
Rahmenpuffers und das Schreibfreigabesignal SF. Der
Maskengenerator liefert die Schreibmaske und legt sie an das SF-
Signal an, um die Schreibsignale S0 . . . SF15 des Rahmenpuffers zu
erzeugen. Die Bit-BlÜ-Steuereinheit liefert dem Rahmenpuffer die
Adressen, wobei eine oder beide der X- und Y-Adressen am Ende
jedes Speicherzyklus vermindert oder erhöht wird bzw. werden.
Der Vektorgenerator modifiziert die Schreibmaske und die Bit-
B1Ü-Steuerparameter, wie das erforderlich ist. Wenn das SOPR mit
einem geeigneten Operationscode für eine Speicheroperation
geladen ist (z. B. "schreibe", "lies" usw.), startet es
aufeinanderfolgende Speicherzyklen und gestattet den
Synchronisierimpulsen P, die notwendigen Operationen zu
aktivieren, wie das in der Technik gut bekannt ist.
-
Der Vektorgenerator, wie er in der vorausgehenden Beschreibung
des offenbarten Ausführungsbeispiels dargelegt wurde, schließt
drei Hauptteile ein: einen üblichen Bresenham-Vektorgenerator
(, der nicht weiter erörtert werden muß, da solche
Vektorgeneratoren in der Technik gut bekannt sind, wie das
vorher dargelegt wurde), eine Vektormatrixeinheit und die
Vektororientierungslogik.
-
Die in Fig. 8 dargestellte Vektormatrix wurde früher beschrieben
und schließt 9 Flip-Flops vom D-Typ und dazwischen angeordnete
NAND-, AND- und NOR-Glieder ein , die das gleichzeitige
Verschieben der Daten nach rechts und nach oben erlauben. Die
Signale SD und EDV steuern die Datenverschiebung in der
vertikalen Richtung. Abhängig von der Polarität des SD-Signals
wird eine von zwei Leitungen "HALTEN" oder "AUFWÄRTS" aktiviert.
Das EDV-Signal macht, wenn es aktiviert ist, beide Leitungen
inaktiv und schaltet das Aufwärtsverschieben ab. Die Impulse P1,
P2 und P3 stellen die erste, zweite und dritte Periode des VTKT
in einem Speicherzugriffszyklus des Pufferspeichers dar, und
steuern die horizontale Datenverschiebung. Eine logische "1" an
den Ausgängen Q1, Q5 usw. aktiviert entsprechende Bildelemente
für die Schreibaktualisierungsoperation.
-
Die Vektororientierungslogik (Fig. 9) besteht aus den
Multiplexern MUX1 . . . MUX4 mit je 16 Eingangs- und 4
Ausgangsleitungen. Die Eingänge dieser Multiplexer sind mit den
Ausgängen der Vektormatrixschaltung und einem Maßesignal in
solch einer Weise verbunden, daß die früher beschriebenen
Transformationen unter der Steuerung der RIC- und ST-Signale
durchgeführt werden. Die Ausgangssignale der Multiplexer stellen
die Vektormaske VM0 . . . VM15 dar. Wenn das EDV-Signal negiert ist,
negiert es auch VM0 oder VM12, da das Bildelement 0 (, wenn die
Richtung positiv ist,) oder das Bildelement 12 (,wenn die
Richtung negativ ist,) stets aktiviert ist und nicht durch ein
Flip-Flop in der Vektormatrix dargestellt ist, da eines der
Bildelemente stets als der Ursprung des Vektors vorhanden ist.
-
Die Bit-BlÜ-Adreßsteuerung (Fig. 10) schließt zwei identische
Adreßgeneratoren für den Rahmenpuffer ein: XADGEN für die
horizontale Adreßsteuerung und YADGEN für die vertikale
Adreßsteuerung. Jeder Adreßgenerator liefert eine 10-Bit-
Adresse, deren zwei niedrigste Bits (1,0) zur Maskenausrichtung
und deren 8 höherstellige Bits (9 . . . 2) für das Adressieren der
Speicherchips benutzt werden, nachdem sie des weiteren unter der
zeitlichen Steuerung der ZAM- und SAM-Markierimpulse zu einer
8-Bit-Adresse kombiniert wurden.
-
Die Bit-BlÜ-Operationen erfordern gewöhnlich ein Minimum an zwei
Paaren von Adreßregistern zum Adressieren der Quellen- und
Bestimmungsbereiche auf dem Bildschirm; Adreßregister QX und QY
der Quelle und Adreßregister BX und BY der Bestimmung. Jeder
Speicherzyklus benutzt einen und nur einen Satz dieser Register
(Q oder B), die durch die beiden Steuerbits Q/B
(Quelle/Bestimmung) ausgewählt werden, die von dem SOPR-Register
abgeleitet werden. Diese Bits steuern die Multiplexer XMUX und
YMUX und ermöglichen Änderungen des Inhaltes der benutzten
Adreßregister am Ende des Rahmenpufferzyklus (RPTKT-Periode).
-
Das Adreßregister kann erhöht oder erniedrigt werden oder kann
aufgrund der Daten in den entsprechenden Steuerblöcken QSTR X,
BSTR X, QSTR Y und BSTR Y beibehalten werden. Alle Adreß- und
Steuerregister in den Steuerblöcken können auch durch den
Hauptrechner geladen werden.
-
Für übliche Bit-BlÜ-Operationen (Löschen, Kopieren oder
Kombiniern) können die Steuerblöcke übliche sein. Für die
Architektur des Vektorgenerators der vorliegenden Erfindung
jedoch ist eine Modifizierung eines Paares von Steuerblöcken
erforderlich, z. B. der QSTR-Blöcke.
-
Die Implementierung der Bit-BlÜ-Adreßsteuerung, die durch die
vorliegende Erfindung gefordert wird, kann eine sein wie sie in
Fig. 11 dargestellt ist, wo die Steuerhardware der X-Adresse der
Bestimmung gezeigt ist. Sie schließt den Sieben-Bit-Aufwärts
/Abwärtszähler ZHR ein, ein Drei-Bit-Register R, eine
arithmetisch-logische Einheit ALE und ein
Vier-Bit-Steuerregister STR.
-
Die Zähler und Register umfassen zusammen das BX-Register nach
Fig. 10. Der Zähler liefert die 7 höchsten Bits (9 . . . 3) der
Bestimmungs-X-Adresse und das Register liefert die drei
niedrigsten Bits (2 . . . 0).
-
Die Daten des Hauptrechners können die Adresse der Bestimmung
von dem DATENBUS sowohl in den Zähler als auch in das Register
laden durch das Signal LDB1 "Lade Datenbus". Das STR-Register
kann auch von dem DATENBUS durch ein entsprechendes Ladesignal
LDB2 geladen werden.
-
Der Takt RPTKT sorgt für eine Inhaltsmodifikation sowohl in den
R- als auch in den ZHR-Geräten am Ende des Aktualisierungszyklus
des Rahmenpuffers. Er taktet den Zähler ZHR und lädt die
Ausgangssignale der ALE in das Register R. Das Signal D gibt das
Ende der Zyklusmodifikation frei. Das Übertragsbit der ALE
steuert das Schalten des ersten Bits des Zählers. Demgemäß wird
der Zähler, abhängig von der Polarität des Übertrags und der
Aufwärts-/Abwärtssignale um 1 erhöht oder erniedrigt.
-
Die ALE addiert (subtrahiert) eine Zahl, die durch die letzten
drei niedrigsten Bits des STR-Registers dargestellt wird, zu
(von) dem Inhalt des Registers R. Bit 3 der STR-Steuersignale
steuert die Eingabe des +/-Operationscodes (Addieren oder
Subtrahieren) der SUMME und der entsprechenden Zähleroperation
(Erhöhen oder Erniedrigen). Folglich kann der BX-Inhalt um jede
Zahl zwischen 0 und 7 erhöht werden (praktisch ist eine Grenze
von 4 ausreichend, aber das erfordert trotzdem eine Drei-Bit-
Darstellung in der STR).
-
Die Hardware zur Steuerung der Quellenadresse unterscheidet sich
von üblichen Bit-BlÜ-Steuerungen durch die Weise, in der sie für
das Vektorzeichnen bei einem Zugriff auf eine Matrix mit vielen
Bildelementen in einem APA-Rahmenpuffer sorgt, wie das in
Fig. 12 dargestellt ist. Sie schließt einen Zwei-zu-Eins-
Multiplexer M und einen Drei-Bit-Zähler VZHR ein.
-
In einem üblichen Bit-BlÜ-Modus ist die Steuerung der
Quellenadresse nicht von der Steuerung der Bestimmungsadresse
verschieden. Jedoch verbindet das Modussignal VMODUS während des
Vektorzeichnens mittels eines Multiplexers M das RIC-Bit des
Vektororientierungsregisters VOR (siehe Fig. 2) mit dem
Aufwärts-/Abwärts-Steuereingang des ZHR und mit dem Eingang für
den +/- Operationscode der ALE. Der STR-Inhalt wird in der Mitte
jedes Speicheraktualisierungszyklus erneut aus dem VZHR geladen
und bereitet die Änderung der QX-Daten zu Beginn des nächsten
folgenden Speicherzyklus vor.
-
Der VZHR benutzt das VTKT-Signal als Takt. Das Zählen von Daten
wird durch das SH-Signal freigegeben. Das SH-Signal kann
entweder stets aktiv sein (in dem Fall des vorliegenden QSTR-
Ausführungsbeispieles steuert es die unabhängige Koordinate)
oder kann von dem SD-Signal des Vektorgenerators abhängig sein
(siehe Fig. 2). Fig. 10 zeigt, daß das ST-Bit des VOR-Registers
durch Speisen eines von zwei Multiplexern M1 und M2 entweder das
SD-Signal mit dem SH-Eingang des QSTR X-Blockes und VCC
(unbedingtes Freigabesignal) mit der QSTR Y verbindet oder
umgekehrt.
-
Das Zeitdiagramm für das Vektorzeichnen (Fig. 13) zeigt alle die
erforderlichen Synchronisationssignale und die Inhalte der
Hauptregister für die X-Koordinate der Quelle während des
aufeinanderfolgenden Zeichnens von vier Segmenten des
Bildelementvektors.
-
Vier getrennte Impulse P1, P2, P3 und P4 werden von der VTKT-
Folge synchron mit dem RPTKT- und STRLD-Folgen abgeleitet. RPTKT
und STRLD sind verschiedene Phasen. Alle Aktionen werden durch
die ansteigenden Flanken der Impulse ausgeführt.
-
Bevor das Zeichnen beginnt, wird die Bildelementkoordinate AD1
für den Beginn des Vektors in das QX-Adreßregister geladen. Die
VZHR, STR, Vektormatrix und VMR werden alle rückgesetzt.
-
Während des ersten Aktualisierungszyklus des Rahmenpuffers
(FB-Zyklus 0) beginnt der APA-Vektorgenerator das Zeichnen des
ersten Segmentes des Vektors, wobei er eine Vektormaske M1
vorbereitet. VZHR behält das Ändern zu einer Zahl C2 bei, die
eine Erhöhung der X-Koordinate für den RP-Zyklus 2 darstellt.
Speichermarkierimpulse ZAM und SAM verursachen, obgleich sie
aktiv sind, keine Aktualisierung des Rahmenpuffers, denn der
VMR-Inhalt ist null.
-
Zu Beginn des RP-Zyklus 2 behält das QX-Register noch die AD1-
Daten, da die STR-Daten in dem RP-Zyklus 0 bei der RPTKT-
Anstiegsflanke null waren. Der ZHRLD-Impuls lädt C2-Daten von
dem VZHR in die STR und die Daten der Vektormatrix M1 in das
VMR-Register. Demgemäß veranlassen die Markierimpulse ZAS und
SAS das erste wirkliche Aktualisieren des Rahmenpuffers an der
Adresse AD1 unter Benutzung der Schreibmaske Ml. Und am Ende des
Zyklus ersetzt die Adresse AD2 die in dem QX-Register
befindliche AD1 unter Steuerung der C2-Daten in dem
STR-Register.
-
Die restlichen Rahmenpufferzyklen sind identisch, bis ein Signal
Ende des Vektors (EDV-Signal) erzeugt wird. Wenn ein
Wiederauffrischen des Rahmenpuffers oder ein Video-
Wiederauffrischen durchgeführt wird, wird es auf der Basis eines
Zyklusstehlens gemacht (Wiederauffrischzyklen sind in Fig. 13
nicht dargestellt).
-
Die Y-Koordinate der Quelle wird in einer identischen Weise
gesteuert. Der einzige Unterschied besteht darin, daß, wenn die
Zeichenrichtung negativ ist, die Einstelldaten in den drei
niedrigsten Bits des STR Y-Registers 4 sein müssen, nicht 0.