DE3587461T2 - Schaltung zum Modifizieren von Daten in einem Anzeigespeicher. - Google Patents

Schaltung zum Modifizieren von Daten in einem Anzeigespeicher.

Info

Publication number
DE3587461T2
DE3587461T2 DE85303187T DE3587461T DE3587461T2 DE 3587461 T2 DE3587461 T2 DE 3587461T2 DE 85303187 T DE85303187 T DE 85303187T DE 3587461 T DE3587461 T DE 3587461T DE 3587461 T2 DE3587461 T2 DE 3587461T2
Authority
DE
Germany
Prior art keywords
data
pattern
display
display memory
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE85303187T
Other languages
English (en)
Other versions
DE3587461D1 (de
Inventor
Andrew David Daniel
Steven Dines
Adrian Sfarti
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE3587461D1 publication Critical patent/DE3587461D1/de
Publication of DE3587461T2 publication Critical patent/DE3587461T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/20Function-generator circuits, e.g. circle generators line or curve smoothing circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Digital Computer Display Output (AREA)
  • Circuits Of Receivers In General (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Image Generation (AREA)

Description

  • Die vorliegende Erfindung betrifft elektronische Anzeigesysteme und insbesondere ein System zum schnellen Modifizieren von Daten in einem Anzeigespeicher, der in Arrays organisiert ist.
  • Eine herkömmliche Ausgestaltung bei Anzeigesystemen ist in Fig. 1 dargestellt. Die Informationen zur Erzeugung einer Anzeige 12 sind in einem Anzeigespeicher 11 gespeichert. Der Anzeigespeicher enthält üblicherweise Tausende von Speicherzellen, von denen jede ein einziges Informationsbit enthält. Jedes Bit (oder jede Gruppe von Bits bei farbigen oder schattierten Anzeigen) der Information entspricht einem kleinen Bereich oder Pixel in der Anzeige 12. Jeder Speicherplatz wird zur Speicherung der Intensität des Pixels verwendet. Ein Bit stellt einen Teil der Anzeige dar oder "bildet sie ab". Die Anzeige 12 ist üblicherweise eine Kathodenstrahlröhreneinheit, in der der Speicherinhalt oder ein Teil desselben durch Abtasten des Speichers auf dem Bildschirm erscheint.
  • Anzeigespeicher sind üblicherweise entlang einer Abtastzeile in Folgen von Pixels oder Wörtern organisiert. Eine weitere Art zur Organisation des Anzeigespeichers besteht in der Organisation in Arrays oder Blöcken. Bei einer Organisation in Arrays sind die Pixels in n mal n Pixels organisiert, so daß vertikal oder senkrecht zu den Abtastzeilen verlaufende Bilder auch modifiziert werden können. Eine Erläuterung der Array-Organisation in einem System zur Aktualisierung dieser Arrays findet sich in einem Artikel "A VLSI Architecture For Updating Raster Scan Displays" von Satish Gupta und Robert Sproull in Computer Graphics, Band 15, Nr. 3, August 81, Seiten 71-79. Um den Inhalt einer Anzeige zu verändern, ungeachtet der Art der Anordnung in dem Anzeigespeicher, empfängt ein Anzeigesteuerer 10 (siehe Fig. 1) einen Teil oder die Gesamtheit der Daten in dem Anzeigespeicher oder "liest" die Information aus dem Speicher 11, modifiziert die Daten und gibt die Daten zurück in den Anzeigespeicher 11 oder "schreibt" sie dort ein. Der Anzeigesteuerer 10 führt die Modifizierung auf die Befehle von einem Prozessor 13 durch. Die Übertragung der Daten aus dem Anzeigespeicher, die Modifizierung der Daten und die Datenübertragung zurück in den Anzeigespeicher kostet wertvolle Zeit. Eine Anforderung an viele Anzeigesysteme besteht darin, die Bilder auf der Anzeige 12 schnell zu aktualisieren. Dies trifft insbesondere auf interaktive Anzeigeeinrichtungen zu, bei denen der die Anzeige 12 betrachtende Benutzer die Bilder bei Erscheinen auf dem Bildschirm modifiziert.
  • Die Europäische Patentveröffentlichung Nr. 0 095 618 offenbart eine ähnliche Schaltung zur Modifizierung von Daten in einem Anzeigespeicher, der in Daten-Arrays für eine bitorientierte graphische Darstellung organisiert ist. Dieser Stand der Technik, der im Oberbegriff von Anspruch 1 gewürdigt ist, weist pro Datenkanal nur eine einzige Anzeigespeichereinrichtung und eine einzige Musterspeichereinrichtung auf, und diese Speichereinrichtungen zusammen mit der dazugehörigen Logikeinrichtung operieren in einer fortlaufenden, nicht zeitlich überlappenden Weise, so daß der Betrieb insgesamt bei dieser Schaltung relativ langsam ist.
  • Die vorliegende Erfindung ist insbesondere für in Arrays organisierte Anzeigespeicher ausgebildet, um eine schnellere Modifizierung der Daten in dem Anzeigespeicher zuzulassen.
  • Dementsprechend schafft die vorliegende Erfindung eine Schaltung zum Modifizieren von Bildschirmdaten in einem in Daten-Arrays für die bitorientierte Darstellung organisierten Anzeigespeicher entsprechend einem ausgewählten Muster, mit:
  • einer ersten Anzeigespeichereinrichtung zum Empfangen und Halten eines ersten Bildschirmdatenblocks von dem Anzeigespeicher;
  • einem auf die Eingangssignale reagierenden Mustergenerator zum Erzeugen von Musterdaten entsprechend einem ersten Teil des ausgewählten Musters, das auf den ersten Block der Bildschirmdaten aufgebracht werden soll;
  • einer ersten Musterspeichereinrichtung zum Empfangen und Halten des ersten Teils der Musterdaten von dem Mustergenerator; und
  • einer Logikeinrichtung zum Kombinieren des ersten Bildschirmdatenblocks mit dem ersten Teil der Musterdaten zu einem modifizierten Bildschirmdatenblock und zum Zurückführen des ersten modifizierten Bildschirmdatenblocks zu dem Anzeigespeicher;
  • gekennzeichnet durch
  • eine zweite Anzeigespeichereinrichtung zum Empfangen und Halten eines zweiten Bildschirmdatenblocks von dem Anzeigespeicher; und
  • eine zweite Musterspeichereinrichtung zum Empfangen und Halten eines zweiten Teils der Musterdaten von dem Mustergenerator;
  • wobei die Anordnung derart ist, daß der erste Bildschirmdatenblock in der Logikeinrichtung mit dem ersten Teil der Musterdaten kombiniert wird, während der zweite Bildschirmdatenblock und der zweite Teil der Musterdaten von der zweiten Anzeigespeichereinrichtung bzw. von der zweiten Musterspeichereinrichtung empfangen werden, und daß der zweite Bildschirmdatenblock in der Logikeinrichtung mit dem zweiten Teil der Musterdaten kombiniert wird, während ein weiterer Bildschirmdatenblock und ein weiterer Musterdatenblock von der ersten Anzeigespeichereinrichtung bzw. der ersten Musterspeichereinrichtung empfangen werden, und sukzessive so weiter.
  • Zur Erzeugung von Adreßsignalen entsprechend einem linearen Muster verwendet der Mustergenerator eine modifizierte Form des Breshenham-Algorithmus. Für Vektoren erzeugt der Mustergenerator Signale entsprechend dem ausgewählten Vektor in ungefähr der gleichen Zeit, wie sie zur Übertragung des entsprechenden Datenblocks von dem Anzeigespeicher erforderlich ist. Für Vektoren und einfache Kurven führt die letzte Adresse eines Satzes von Punkten, der dem Muster in einem Datenblock von dem Anzeigespeicher entspricht, zu der ersten Adresse des Satzes von Punkten, der dem Muster in dem nächsten Datenblock von dem Anzeigespeicher entspricht. Ferner bestimmen die letzte Adresse und die Richtung der Zeile den nächsten, aus dem Anzeigespeicher auszulesenden Datenblock.
  • Auf die oben beschriebene Weise gewährleistet die vorliegende Erfindung eine Hochgeschwindigkeitsoperation in einem Anzeigesteuerer. Andere und ausführlichere Aspekte der Erfindung werden im folgenden erläutert.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 stellt die generelle Konfiguration eines bekannten Anzeigesystems dar;
  • Fig. 2 zeigt eine Kathodenstrahlröhrenanzeige mit einem darauf dargestellten linearen Muster V;
  • Fig. 3 stellt ein Ausführungsbeispiel der vorliegenden Erfindung in Blockdiagrammform dar;
  • Fig. 4 ist ein Zeitdiagramm des Betriebs des vorliegenden Ausführungsbeispiels der Erfindung;
  • Fig. 5 ist ein Flußdiagramm der Interpolationsoperation des Vektorgenerators in Fig. 3;
  • Fig. 6 zeigt die üblicherweise verwendete Oktantenanordnung, die bei der Operation des Ausführungsbeispiels von Fig. 3 Anwendung findet;
  • Fig. 7 ist eine Tabelle der Charakteristiken der Vektoren in jedem gerichteten Oktanten;
  • Fig. 8 ist eine schematische Darstellung des Vektor/Kurven-Generators von Fig. 3;
  • Fig. 9 ist eine Darstellung eines -ROM und von Steuerleitungen zur Steuerung des Betriebs des Vektor-/Kurven- Generators von Fig. 8;
  • Fig. 10 ist eine scheinatische Darstellung des Umsetzers von Fig. 3; und
  • Fig. 11 ist ein Diagramm, das die Zeitsteuerung des Umsetzers von Fig. 10 darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Das vorliegende System ist insbesondere für die Hochgeschwindigkeitsverarbeitung von Geraden (Vektoren) ausgebildet, so daß die nachfolgende Beschreibung sich hauptsächlich auf Vektoren bezieht. Wo gekrümmte Linien (Kurven) verarbeitet werden, ist dies angemerkt.
  • Fig. 2 ist eine Darstellung einer Geraden, Vektor genannt, wie sie auf einer Anzeigevorrichtung, wie beispielsweise einer Kathodenstrahlröhreneinrichtung, auftreten kann. Die durchgezogenen vertikalen und horizontalen Linien, die über dem Vektor V ein Raster bilden, stellen die Grenzen der Organisation des Anzeigespeichers 11 dar, der nach Art einer Array organisiert ist. Jede von den durchgezogenen Rasterlinien eingerahmte Fläche entspricht einer Daten-Array. Jedes Pixel bzw. jeder Datenpunkt der Array, die hier als eine 8·8-Array abgebildet ist, wird in einem anderen Halbleiter-RAM (Random Access Memory) gespeichert. (Dies trifft auf einfarbige Anzeigen zu. Bei schattierten oder farbigen Anzeigen wird jedes Pixel der Array in einer Gruppe von RAM gespeichert.) Auf diese Weise wird einer von 64 RAM sowohl einem speziellen Punkt in einer Array angepaßt als auch ähnlich angeordneten Punkten in anderen ähnlich justierten Arrays. Wenn alle 64 RAM simultan adressiert werden, treten 64 Datenbits als Ausgangssignale für eine 8·8-Array auf. Dieselben 64 RAM, auf die simultan bei einer anderen Adresse zugegriffen wird, bilden die Daten- Array für eine andere 8·8-Array. Die RAM in dieser Beschreibung, die eine Kapazität von 64 Kilobyte aufweisen, gestatten eine Array-Anzeige, jeweils 8·8, von 256 Arrays in horizontaler Richtung und 256 Arrays in vertikaler Richtung für eine vollständige Anzeige auf einer Vorrichtung. Selbstverständlich beschränkt sich diese Erfindung nicht auf die spezielle Kapazität der RAMs, die den Anzeigespeicher 11 bilden.
  • Ein Linearmuster, wie beispielsweise ein Vektor V, kann auf der Anzeige gemäß Fig. 2 überall angeordnet werden. Um den Vektor V in den Anzeigespeicher einzuschreiben oder ihn von dort zu entfernen, liest die vorliegende Erfindung Daten-Arrays, die durch die gestrichelten Linien angedeutet sind. Diese Arrays sind so ausgewählt, daß das sich ändernde Linearmuster am besten erfaßt wird. Aus Gründen der Klarheit werden diese Daten-Arrays im folgenden als "Blocks" bezeichnet, um sie von der Datenorganisation des Anzeigespeichers zu unterscheiden. Abhängig von der Position eines Linearmusters, wie beispielsweise dem Vektor V, können die aus dem Anzeigespeicher 11 wiedergewonnenen Blöcke mit irgendeiner der Arrays in dem Speicher 11 kongruent sein oder nicht.
  • In Fig. 2 beginnt der Vektor V in der oberen linken Ecke der Anzeige mit den Anzeigekoordinaten (XS, YS) = (5, 13) und verläuft nach rechts unten, wo er an den Anzeigekoordinaten (XT, YT) = (26, 29) endet.
  • Wie später im einzelnen erklärt wird, liest das vorliegende System aus dem Anzeigespeicher 11 einen Block 12A aus, der durch horizontale und vertikale gestrichelte Linien abgegrenzt ist. Nachdem der Teil des Vektors V, der in dem Block 12A enthalten ist, in die Daten eingesetzt worden ist, wird der Block 12A in den Anzeigespeicher 11 zurückgeführt und der nächste Block 12B wird aus dem Anzeigespeicher 11 zur Modifizierung ausgelesen, um das Einschreiben des Vektors V fortzusetzen. Schließlich wird der Block 12C aus dem Anzeigespeicher 11 ausgelesen und der letzte Teil des Vektors V, einschließlich des Endpunkts (XT, YT) wird in die Daten eingeschrieben und zurück in den Anzeigespeicher 11 geführt.
  • Das vorliegende System 20, das einen Teil des Anzeigesteuerers 10 von Fig. 1 bildet, ist in Fig. 3 dargestellt. Das System weist einen X-Y-Umsetzer 21 auf, der über Übertragungsleitungen mit dem Anzeigespeicher 11 in Verbindung steht. Der Umsetzer 21 erzeugt die notwendigen Adressen zu dem Anzeigespeicher 11, so daß die Daten, die aus dem Anzeigespeicher 11 wiedergewonnen oder in diesen hineingeschrieben werden, von der korrekten Position kommen oder für diese bestimmt sind. Beispielsweise erzeugt der X-Y-Umsetzer 21 in Fig. 2 die korrekten Signale für den Anzeigespeicher 11, so daß der Block 12A aus dem Anzeigespeicher 11 wiedergewonnen wird. Der Block 12A befindet sich jedoch nicht in einer einzigen Array, mittels derer der Anzeigespeicher organisiert ist. Der Block 12A besetzt vielmehr, wie es häufig vorkommt, Teile von vier Arrays. Der X-Y-Umsetzer 21 führt die Adressierfunktion an den Anzeigespeicher 11 aus, so daß die Teile der vier Arrays korrekt wiedergewonnen werden.
  • Daten zu dem Anzeigespeicher 11 hin und davon weg werden durch einen Datenbus 32 geleitet, der zur Aufnahme der Daten eines 8·8-Blockes 64 Leitungen breit ist. Aufgrund der Art eines in einer Array angeordneten Anzeigespeichers müssen die Daten zu dem Anzeigespeicher 11 hin und davon weg eine zweidimensionale Barrelverschiebeeinrichtung 22 passieren, um die zweidimensionale Rotation auszugleichen, die auftritt, wenn Daten in einen in Arrays organisierten Anzeigespeicher 11 eingeschrieben oder aus diesem ausgelesen werden. Siehe hierzu Fig. 4 des oben erwähnten Dokumentes von Gupta und Sproull, nämlich eine Darstellung der zweidimensionalen Rotation bei Daten in Speichern, die in Arrays organisiert sind. Auf diese Weise werden Daten aus dem Anzeigespeicher 11 in die Puffer-Array 23 oder 24 geladen, nachdem sie die Barrelverschiebeeinrichtung 22 über den Bus 32 passiert haben. In ähnlicher Weise passieren die Daten von einer der Puffer-Arrays 23,24 die Barrelverschiebeeinrichtung 22, bevor sie in den Anzeigespeicher 11 eingeschrieben werden.
  • Ein Vektor-/Kurven-Generator 28 empfängt Eingangssignale von dem Prozessor 13 von Fig. 1 über Eingangsleitungen 36. Diese Signale teilen dem Generator 28 mit, welche Linearmusterfunktion durchzuführen ist und an welcher Stelle diese Funktion in dem Anzeigespeicher 11 durchzuführen ist. Dann sendet der Generator 28 die Adresse des Linearmusters an den X-Y-Umsetzer 21. Diese Anzeigekoordinaten sind als X und Y eingeschrieben und als Adressen des Pixels in der oberen linken Ecke jedes zu modifizierenden Datenblocks. Diese Adreßsignale werden über einen 24-Bit breiten Datenweg 81 zu dem X-Y-Umsetzer 21 gesandt, der seinerseits die korrekten Adreßsignale und die korrekte Zeitsteuerung für den Anzeigespeicher 11 erzeugt, um die Datenblöcke aus den Arrays in dem Speicher 11 zu bilden. Wenn die Anzeigespeicherdaten durch die Barrelverschiebeeinrichtung 22 und in eine der Puffer-Arrays 23, 24 eingelesen werden, erzeugt der Vektor-/Kurven-Generator 28 die Speicherstellen des Vektors in dem Datenblock in einer der Puffer-Arrays 23, 24. Diese Blockadressen sind mit x und y bezeichnet. Die Adreßsignale werden entlang eines sechs-Bit breiten Datenweges 82 zu einem der zwei Zwischenspeicher- (scratch pad)-Arrays 25, 26 geleitet. Diese Zwischenspeicher-Arrays 25, 26 sind jeweils 64 in einer 8·8- Konfiguration entsprechend der Organisation der Puffer- Arrays 23, 24 angeordnete Flip-Flops. Auf die durch die Signale an den Leitungen 82 bezeichnete Adresse hin wird der Flip-Flop bei dieser Adresse in einer Zwischenspeicher-Array gesetzt.
  • Eine Logikeinheit 27 ist mit jeder der Puffer-Arrays 23, 24 über einen B-Bus 34 und mit jeder der Zwischenspeicher-Arrays 25, 26 über einen A-Bus 33 verbunden. Jeder dieser Busse 33, 34 ist 64 Leitungen breit. Die Logikeinheit 27 kombiniert logisch jede der in einer der Puffer-Arrays 23, 24 gespeicherten Dateneinheiten mit dem in einer der Zwischenspeicher-Arrays 25,26 gespeicherten entsprechenden Datum zur parallelen Verarbeitung. Die Logikeinheit 27 reagiert auf die Steuersignale an den Steuerleitungen 85, die bestimmen, ob die Logikeinrichtung 27 eine logische UND-, ODER-, EXKLUSIV-ODER, UMKEHR-und-UND-Funktion durchführen soll, die bei der Farbumwandlung nützlich ist, oder eine andere Funktion mit den A- und B-Eingängen zu der Logikeinheit 27. Das kombinierte Ergebnis wird dann auf einem Rückkehrbus 35 zu einer der Puffer-Arrays 23,24 zurückgeführt. Der R- Bus 35 ist, wie die vorerwähnten Busse, 64 Leitungen breit, so daß alle kombinierten Daten sich parallel bewegen.
  • Die unterschiedlichen Logikfunktionen von der Logikeinheit 27 ermöglichen, daß ein Vektor oder eine Kurve in den Datenblock eingeschrieben wird, der zurück in den Anzeigespeicher 11 übertragen wird. Die ODER-Funktion gestattet das Einschreiben des von dem Generator 28 erzeugten Musters in den Datenblock. Andererseits gestattet eine EXKLUSIV-ODER- (exklusives ODER) Funktion bei der Logikeinheit 27 das Entfernen eines bereits in dem Anzeigespeicher 11 gespeicherten Musters, indem der Generator 28 zur Erzeugung des gleichen Musters veranlaßt wird. Die UND-Funktion gestattet es dem vorliegenden System, eine andere Verarbeitung mit dem von der Einheit 28 erzeugten Vektor oder der Kurve durchzuführen.
  • Da die Anzeigespeicherdaten parallel bewegt und modifiziert werden, ist eine Hochgeschwindigkeitsoperation gegeben. Das vorliegende System veranlaßt den Generator 28 ferner, seine Adreßsignale (x,y) auf die Eingangssignale an der Leitung 36 hin zu erzeugen, während die Daten von dem Anzeigespeicher 11 zu den Puffer-Arrays 23,24 übertragen werden.
  • Fig. 4 stellt die Operation des vorliegenden Systems dar, die bei Geraden oder Vektoren mit besonders hoher Geschwindigkeit erfolgt. Das vorliegende System operiert in einem 50-Nanosekunden-Taktzyklus. Das Kombinieren einer Geraden in einen Datenblock n aus dem Speicher 11 dauert nur 800 Nanosekunden. Dies wird erreicht, indem acht Datenpunktadressen des Teils des Vektors in dem Datenblock n erzeugt werden, wenn der Block n in eine Puffer-Array 23 geladen wird, die in Fig. 4 mit Puffer 1 bezeichnet und "präsenter" Puffer genannt wird. Die andere Puffer-Array 24 ist dann der "Alternierungs-" Puffer. Die Adressen der Datenpunkte werden zu der Zwischenspeicher-Array 25 übertragen, die mit Zwischenspeicher-Array 1 bezeichnet und "präsente" Zwischenspeicher- Array genannt wird. Die andere Zwischenspeicher-Array 26 ist die "Alternierungs-Array".
  • Es dauert ungefähr 800 Nanosekunden, den Block n in die Puffer-Array 1 zu verschieben, und der Generator 28 erzeugt jede Adresse innerhalb 100 Nanosekunden. Auf diese Weise werden der Inhalt der Puffer-Array 1 und der Zwischenspeicher-Array 1 logisch kombiniert und nach 800 Nanosekunden in die Puffer-Array 1 geladen.
  • Gleichzeitig setzen andere Operationen ein oder COBEGIN- nen. Der nächste Block n+1 in dem Anzeigespeicher 11 wird in die Puffer-Array 24 geladen und in Fig. 4 als Puffer 2 bezeichnet. An diesem Punkt werden die Rollen der Puffer-Arrays 23,24 vertauscht, so daß die Puffer- Array 24 zum präsenten Puffer wird und die Puffer-Array 23 zum Alternierungspuffer. In ähnlicher Weise werden auch die Rollen der Zwischenspeicher-Arrays 25,26 vertauscht. Entsprechend erzeugt der Generator 28 die Adressen für die nächsten acht Datenpunkte und setzt die Punkte in die Zwischenspeicher-Array 2.
  • An der 1200-Nanosekunden-Markierung wird der Inhalt der Puffer-Array 1, die zu diesem Zeitpunkt den Alternierungspuffer bildet, zu dem Anzeigespeicher 11 zurückgesandt.
  • Nach 1600 Nanosekunden werden die Rollen der Puffer- Arrays 23,24 wieder zusammen mit den Rollen der Zwischenspeicher-Arrays 25,26 vertauscht. Der dritte Datenblock n+2 von dem Anzeigespeicher wird in die präsente Puffer-Array 1 übertragen, während die Adressen für den Vektor, die dem Datenblock entsprechen, von dem Generator 28 erzeugt werden. Gleichzeitig wird der Inhalt der Puffer-Array 2, der zweite Datenblock n+1, logisch mit dem Inhalt der Alternierungs-Zwischenspeicher-Array 2 kombiniert und in der Alternierungs-Puffer-Array 2 angeordnet. Dieser Alternierungszyklus wird fortgesetzt, bis der vollständige Vektor mit dem Inhalt des Anzeigespeichers kombiniert ist. Wie in Fig. 4 zu erkennen ist, wird jeder Datenblock aus dem Anzeigespeicher 11 in 800 Nanosekunden verarbeitet.
  • Fig. 5 stellt die ausführlichen Schritte dar, in denen der Vektor-/Kurven-Generator 28 die Block-(x,y)-Adressen für eine an die Zwischenspeicher-Arrays 25,26 gemäß einer Modifikation des Breshenham-Algorithmus zu übermittelnde Gerade erzeugt. Bei diesem Algorithmus werden für einen 8·8-Block nur acht Punkte erzeugt, wodurch die Interpolationsgeschwindigkeit beibehalten wird. Ferner werden Fehler nicht akkumuliert, wodurch Genauigkeit gewährleistet wird. Der Generator 28 erzeugt ferner die Anzeige-(X,Y)-Adressen und die Vektorrichtungs- oder Oktantensignale für den Umsetzer 25, um zur Bildung des erforderlichen Datenblocks die Teile der in dem Anzeigespeicher 11 gespeicherten Arrays abzurufen.
  • Zu Beginn des Erzeugungsprozesses empfängt der Generator 28 die Endpunktkoordinaten (XS,YS) und (XT,YT). Von diesen Endpunktkoordinaten aus wird die Richtung der Geraden oder des Vektors vom Anfangs- bis zum Endpunkt berechnet. Dies erfolgt dadurch, daß zunächst die absolute Differenz zwischen den X-Koordinaten (DX) und die absolute Differenz zwischen den Y-Koordinaten (DY) errechnet wird. Das Vorzeichen der Differenz zwischen DX und DY sowie die Vorzeichen der anderen beiden Differenzen geben den speziellen Oktanten für den zu berechnenden Vektor an. Fig. 6 zeigt die räumliche Orientierung dieser Oktanten zur Angabe der Vektorrichtung. Es sei ferner darauf hingewiesen, daß bei der Durchführung dieser Berechnungen eine positive X-Richtung nach rechts verläuft, während eine positive Y-Richtung nach unten verläuft.
  • Die Koordinatenachse, auf der der Vektor die längste Erstreckung aufweist, ist die "Haupt-" Achse. Die andere Achse ist die Nebenachse. Daher ist die Hauptachse X und die Nebenachse Y, wenn DX> DY. Wenn DY> DX, ist die Hauptachse Y und die Nebenachse X. Wenn DX=DY, funktionieren beide der oben genannten Zuweisungen.
  • Die in Fig. 5 dargestellten Interpolationsschritte folgen, abhängig davon, welche die Hauptachse ist, getrennten Wegen. Da der Vektor in höherem Maße der Hauptachse als der Nebenachse folgt, wird ein "gewisser" Offset OFF1 zu der Koordinate der Hauptachse hinzuaddiert und ein "möglicher" Offset OFF2 kann zu der Koordinate der Nebenachse hinzuaddiert werden, und zwar bei der Berechnung der Koordinaten des nächsten Datenpunkts nach dem aktuellen Punkt. Abhängig von der Richtung des Vektors oder dem für einen gegebenen Vektor festgelegten Oktanten betragen die Offsetwerte jeweils ±1. Die Interpolation wird iterativ durchgeführt. Bei jeder Iteration werden, wenn X die Hauptachse ist, OFF1 mit Sicherheit und OFF2 möglicherweise zu X bzw. Y (den Anzeigeadressen) und zu x bzw. y (den Daten-Array-Adressen) addiert. Die Offsetwerte sind für X und x und für Y und y identisch. Wenn Y die Hauptachse darstellt, werden OFF1 mit Sicherheit und OFF2 möglicherweise zu Y bzw. X (den Anzeigeadressen) und zu y bzw. x (den Daten-Array-Adressen) hinzuaddiert.
  • Ein Beispiel veranschaulicht die Berechnung der (X-,Y-) Adressen und der (x-,y-) Adressen. In bezug auf Vektor V und Fig. 2 betragen die Endpunktkoordinaten (XS,YS) (5,13) und der Endpunkt (XT,YT) beträgt (26,29). DX beträgt 21 und DY 16. Die Berechnung der Differenz von DX und DY impliziert, daß die Linie vom Anfangspunkt (XS,YS) sich im Oktanten 7 befindet. Dies stimmt mit dem in Fig. 6 gezeigten Diagramm überein. Unter Bezugnahme auf Fig. 7 ist zu erkennen, daß der gewisse Offset +1 ist und der mögliche Offset (Offset 2) ebenfalls +1. Dies ist sinnvoll, da die Hauptachse für eine Linie in Oktant 7 die X-Achse ist, d. h. die Linie verläuft nach rechts und eher in Richtung auf die X-Achse als die Y-Achse entlang. Somit ist OFF1 a+1, was in diesem Fall stets zu X und x hinzuaddiert wird. Da der Vektor V in Fig. 2 ebenfalls nach unten gerichtet ist, beträgt auch der mögliche Offset a+1, was in diesem Fall möglicherweise zu Y und y hinzuaddiert wird. Es sei darauf hingewiesen, daß die Abwärtsrichtung entlang der Y-Achse positiv ist.
  • Wie aus Fig. 5 hervorgeht, impliziert die Bestimmung, daß der Vektor V sich in Oktant 7 befindet oder daß das Vorzeichen von (DX - DY) positiv ist, daß der Vorgang des Erzeugens der Adressen sich im linken Zweig des Flußdiagramms vollzieht. Die Register für X und Y werden mit den Anfangswerten XS und YS abzüglich der Anfangseckwerte in der Tabelle in Fig. 7, in diesem Fall (0,0), geladen. Diese Werte geben die Adresse des Pixels in der oberen linken Ecke des Datenblocks an und werden zu dem x-Y-Umsetzer 21 gesandt. Selbstverständlich werden die Register für x und y auf der Basis der Tabelle von Fig. 7, in diesem Fall auf (0,0), initialisiert.
  • Die Werte für Fehler E, E1 und E2 werden berechnet. Der Vorgang schreitet fort zum Testen des Wertes von E, wobei er die Tests für die I- und J-Zähler außer acht läßt. Da E gleich 2DY - DX oder 32 - 21 = 11 ist, ist E größer als 0. Die Koordinaten für x,y werden in die präsenten Zwischenspeicher-Arrays geschrieben. Die Koordinaten X,Y und x,y werden aktualisiert. Da E größer als 0 war, schreitet die nächste Koordinatenadresse mit einem Winkel von 45º von der ersten Koordinate fort. Sowohl X (und x) als auch Y (und y) werden um 1 inkrementiert. E wird durch Hinzuaddieren von E1 neu berechnet und der Vorgang kehrt zu einem weiteren Test der I- und J-Zähler zurück. Unter erneutem Übergehen dieser Tests wird der Test für den E-Wert durchgeführt. Da der Wert von E gleich 1 ist, was größer als 0 ist, werden beide X-Koordinaten um den Offset 1 inkrementiert. X ist gleich 7, x ist gleich 2. Die Y-Nebenachse wird gleichermaßen um den Offset 2 inkrementiert. Y ist gleich 15; y gleich 2. Eine erneute Berechnung (E = E + E1) ergibt -9. Somit wird bei dem nächsten Berechnungszyklus nur die X-Hauptachse inkrementiert und die Y-Achse bleibt unverändert. X ist gleich 8; x gleich 3. Y ist gleich 15; y gleich 2. Die Koordinaten X,Y und x,y werden bei der vorliegenden Erfindung auf diese iterative Weise erzeugt.
  • Anhand der zuletzt berechneten Koordinaten in einem Block und Oktanten des Vektors können die ersten Koordinaten des ersten Punkts des Vektors in dem nächsten Datenblock ohne Unterbrechung des Interpolationsvorgangs bestimmt werden. Die X-,Y-Werte des ersten Punkts setzen sich von dem ersten Datenblock an fort, während die x-, y-Werte wieder auf einen Eckpunkt des zweiten Datenblocks initialisiert werden. Bei dem Beispiel von Vektor V in Fig. 2 weist der Vektor V die durch den Oktanten 7 angegebene Richtung auf. Somit sind die Anfangs-x-,y- Koordinaten jedes Blocks des Vektors V 0,0, an der oberen linken Ecke des Blocks, wie in Fig. 7 angezeigt.
  • Da die Anfangsecke und ihre Position bekannt sind, ist auch die Position des zweiten Datenblocks aus dem Anzeigespeicher bekannt.
  • Die I- und J-Zähler verzeichnen die Anzahl der Zyklen, die zur Durchführung der Koordinatenerzeugung durch den Generator 28 notwendig sind. Der I-Zähler wird bei der Initialisierungsstufe auf die Anzahl von Punkten eingestellt, die die Anfangs- und Endpunkte entlang der Hauptachse trennen. Dies gibt die Anzahl der Zyklen an, die zur Erzeugung des Vektors erforderlich sind. Bei dem obigen Beispiel ist bekannt, daß, weil DX größer als DY ist, 22 Zyklen (DX+1) zur Erzeugung der Koordinaten des Vektors V erforderlich sind. Somit wird der Wert 21 in den I-Zähler geladen. Bei Durchführung eines jeden Zyklus wird der Zähler um 1 dekrementiert, bis I gleich 0 ist, wobei der Interpolationsvorgang dann an diesem Punkt endet. Der I-Zähler-Test auf Vollständigkeit wird durchgeführt, nachdem (x,y) in ein Zwischenspeicherregister 25 oder 26 eingeschrieben sind, wodurch gewährleistet wird, daß der Endpunkt des Vektors (der 22ste Punkt in dem Beispiel von Fig. 2) registriert ist.
  • Der J-Zähler zählt zwischen 0 und 8. Bei dem Initialisierungsschritt wird J auf 0 gesetzt und bei jedem Arbeitsgang durch den Zyklus um 1 inkrementiert. Der J- Zähler wird zum Starten der COBEGIN-Operationen verwendet. Wenn J gleich 4 ist oder die Hälfte des vollen 800- Nanosekunden-Zyklus durchlaufen hat, lädt die vorliegende Erfindung den Inhalt der Alternierungs-Puffer-Array in den Anzeigespeicher 11. Die COBEGIN-Operationsnummer 3 bei der 1200-Nanosekunden-Markierung in Fig. 4 stellt diese Operation dar. An diesem Punkt lädt die Puffer- Array 1, die den Inhalt des Blocks n aufweist, den Inhalt in den Anzeigespeicher 11. Wenn der J-Zähler gleich 8 ist, ist ein 800-Nanosekunden-Zyklus vollständig, alle 8 Punkte für einen Datenblock, der in eine der zwei Puffer-Arrays 23,24 geladen worden ist, sind erzeugt worden und eine erneute Erzeugung von Datenpunkten setzt für den nächsten Datenblock ein. Bei Erreichen des Wertes 8 wird J auf 0 rückgesetzt.
  • Wie in dem Flußdiagramm von Fig. 5 zu erkennen, werden die Funktionen der Puffer- und Zwischenspeicher-Arrays an dem Punkt gewechselt, an dem das J-Register auf 0 rückgesetzt wird. Die präsente Puffer-Array wird zum Alternierungs-Puffer, während der Alternierungs-Puffer zur präsenten Puffer-Array wird. Eine ähnliche Operation findet bei den Zwischenspeicher-Arrays statt. Gleichzeitig werden die Dateninhalte des aktuellen Alternierungs- Puffers und der Zwischenspeicher-Array von der Logikeinheit 27 kombiniert und in dem Alternierungs-Puffer gespeichert. Dieser Schritt ist beispielsweise in der dritten Zeile der in Fig. 4 gezeigten Operationen dargestellt. Außerdem wird dem aktuellen präsenten Puffer der Inhalt eines Blocks aus dem Anzeigespeicher 11 geladen. Schließlich werden die Werte von x und y auf die Eckwerte von der Tabelle in Fig. 7 zum Start dieses neuen Blocks zurückinitialisiert.
  • Dieser Vorgang dauert an, bis I gleich oder weniger als o ist; dann ist der Vektorbefehl vollständig ausgeführt worden. Dann wird noch der gerade interpolierte Block zusammengefaßt und als Ausgangssignal übertragen.
  • Dieses Verfahren zur Berechnung der X-,Y-Adressen für den Umsetzer 25 und der x-,y-Adressen für die Zwischenspeicher-Array 25,26 ist eine Verbesserung des Breshenham-Algorithmus, der Vektoren unter jedem Winkel interpoliert. Bei dieser Verbesserung werden Linien in zwei allgemeinen Fällen interpoliert - ob die X- oder die Y- Achse die Hauptachse und die andere die Nebenachse ist, um eine schnellere Berechnung der X-,x-,Y- und y-Koordinaten zu ermöglichen.
  • Fig. 8 zeigt den Vektor-/Kurven-Generator 28 im einzelnen. Wegen der Art der oben beschriebenen Operation sind lediglich einfache Recheneinheiten, wie beispielsweise Addierer, erforderlich. Der Generator 28 empfängt Befehle von dem Prozessor 13 über Eingangsleitungen 36 zu einem Befehl-First-In-First-Out-(FIFO-)Register 40. Zur Erzeugung eines Vektors, wie beispielsweise des Vektors V in Fig. 2, enthalten die Befehlssignale einen Befehl zum Zeichnen eines Vektors und der vier XS-, YS-,XT- und YT-Endpunktkoordinaten des Vektors. Von dem Befehls-FIFO 40 passieren die Signale zu einem Befehlsregister 41, das die Signale für die Verarbeitungsteile des Generators 28 hält. Die Befehlssignale gehen auch zu einem uROM, der die Operation des Generators 28 steuert. Diese Verarbeitungsteile sind in fünf Einheiten unterteilt, die jeweils den E-Wert berechnen und die Berechnung der X-,x-,Y- und y-Koordinatenwerte durchführen. Diese Einheiten operieren generell parallel, damit eine Hochgeschwindigkeitsoperation möglich ist. Die E-Einheit weist einen Multiplexer 45 auf, der mit dem Befehlsregister 41 durch eine Leitung 42 gekoppelt ist. Der Ausgang des Multiplexers 45 ist mit einer Registerdatei 46 verbunden. Die Registerdatei 46 weist zwei Ausgänge auf, A und B, die jeweils mit den A- und B-Eingängen eines Addierers 47 verbunden sind. Das Ausgangssignal des Addierers 47 wird in einen Haltespeicher 48 eingespeist, dessen Ausgangssignal über einen Pfad 49 zurück in den Multiplexer 45 eingespeist wird.
  • Der Multiplexer 45, die Datei 46 und der Addierer 47 werden alle von Steuerleitungen gesteuert, die hier mit dem Bezugszeichen 43 versehen sind. Das Bezugszeichen 43 wird zur Bezeichnung von einer oder mehreren Steuerleitungen verwendet. Die E-Datei 46 enthält Speicherstellen für die Werte von XS,XT,YS,YT,DX,DY,E,E1,E2 und den Wert des Oktanten, der für den speziellen verarbeiteten Vektor berechnet wird. Die Werte von DX,DY,E1,E2 und dem Oktanten werden von der E-Einheit berechnet. Somit berechnet die E-Einheit die E-Werte für den oben beschriebenen modifizierten Breshenham-Algorithmus-Vorgang. Die Registerdateien 51,56,61,66 für X,x,Y und y haben eine geringere Anzahl an Speicherstellen in ihren jeweiligen Dateien. Die X-Datei 51 beispielsweise enthält den Wert für X, den Offset OFF1 und den Offset OFF2. Die x-Datei 56 weist Speicherstellen für den Wert von x, OFF1 und OFF2 auf. Die Y-Datei 61 und die y-Datei 66 weisen ähnliche Speicherstellen für die OFF1- und OFF2-Werte und für Y bzw. y auf.
  • Die Multiplexer 50,60 der X-Einheit und der Y-Einheit sind ebenfalls über die Leitung 42 mit dem Befehlsregister 41 verbunden. Dies trifft bei den x- und y-Einheiten nicht zu. Statt dessen sind die Multiplexer 56,65 dieser Einheiten mit Spannungsanschlüssen Vcc und Masse verbunden. Dies ist möglich, weil die Anfangswerte von x und y binär entweder 0 oder 7 sind, die von den Anschlüssen in die Dateien für die x- und y-Einheiten geleitet werden können. Diese Anschlüsse reichen auch zur Zuführung der Offsetwerte für den Offset 1 und 2 aus, die auf 11 beschränkt sind. Ähnliche Spannungsanschlüsse für die X-Datei 51 und die Y-Datei 61 sind dargestellt. Diese Anschlüsse werden auch zum Setzen der Offsetwerte und zum anfänglichen Berechnen von XS minus XEcke dem Blockanfangseckwert in Fig. 7, (und YS minus YEcke) verwendet.
  • Die I-, J-Zählerlogikeinheit 44 verzeichnet die I- und J-Werte bei Betrieb des Generators 28. Die Logikeinheit 44 steht über Steuerleitungen 72,73 mit einem SteueruROM in Verbindung.
  • Auch unter der Steuerung des -ROM 75 wird der Generator 28 zur Erzeugung der Werte für die X-,x-,Y- und y-Koordinaten für einen Datenblock betrieben. Ein derartiger uROM 75 und einige seiner Steuerleitungen sind für beispielhafte Zwecke gekennzeichnet. Ferner sind einige zu dem uROM 75 hinführende Steuerleitungen dargestellt, darunter die Befehlsleitung 42, eine E-Leitung 71 von der Datei 46 zur Information des uROM 75 über die Polarität des Wertes des Fehlers E, eine von dem E-Einheit- Haltespeicher 48 herkommende Leitung 74 und die Oktantenleitung 70.
  • An dieser Stelle sei angemerkt, daß der dargestellte uROM außer einem ROM weitere Einheiten aufweist, wie beispielsweise einen Programmzähler, Steuerbausteine und andere üblicherweise in einer Steuereinheit vorhandene Elemente.
  • Der Umsetzer 21 ist in Fig. 10 dargestellt. Die X- und Y-Werte gelangen über Leitungen 31 in den Umsetzer 21. Jeder Leitungssatz für den X-Wert oder den Y-Wert ist 12 Bits breit. Für die RAM mit einer Kapazität von 64K in dem Anzeigespeicher 11 sind nur 11-Bit breite Leitungen erforderlich. 12-Bit breite Leitungen ermöglichen, daß 256K-RAM für einen Anzeigespeicher mit höherer Auflösung verwendet werden. Der Umsetzer 21 behandelt jeden Wert x und Y gleich. Der X-Wert wird von einem Dividierer 81 dividiert, wobei der X-Wert um drei Stellen nach unten verschoben wird. Die verbleibenden Datenbits, der Quotient oder x div 8, werden zu einem Haltespeicher 82 und einem Inkrementierer 83 gesandt. Der Rest des Dividierers 81, X mod 8, wird in einem Haltespeicher 85 gespeichert.
  • In ähnlicher Weise werden die Werte von Y div 8, Y div 8 inkrementiert oder unverändert belassen, und Y mod 8 in Haltespeichern 88,90 bzw. 91 gespeichert. Die Haltespeicher 82,84,88 und 90 sind mit den Eingangsanschlüssen eines Vier-zu-Eins-Multiplexers 86 verbunden. Das Ausgangssignal des Multiplexers 86 erscheint an einer 9- Bit-Adreßleitung zu dem Anzeigespeicher 11. Die Haltespeicher 85,91 sind mit einem Logikblock 92 verbunden, der auf ein Taktsignal und das Steuerpixel/Array-Abrufsignal reagiert. Der Ausgang des Logikblocks 92 ist mit dem Eingang eines Zeitsteuerungsblocks 93 verbunden, der auch ein Taktsignal empfängt. Der Zeitsteuerungsblock 93 erzeugt die Signale für die 8-Bit-Zeilenadreßstrobe- (RAS)-Leitungen und die 8-Bit-Spaltenadreßleitungen (CAS). Die Leitungen führen aktiv den Low-Pegel. Der Zeitsteuerungsblock 93 ist ebenfalls mit dem Multiplexer 86 verbunden, so daß die Adreßsignale zeitlich korrekt gesteuert sind. Es ist nicht dargestellt, daß alle Haltespeicher 82,84,85,88,90 und 91 und die Inkrementierer 83,89 auch mit den Taktsignalen für einen zeitlich korrekt gesteuerten Betrieb in Verbindung stehen.
  • Fig. 11 zeigt den Betrieb des Umsetzers 21 über das Beispiel von Fig. 2. Bei dem ersten 50-Nanosekundentaktzyklus plaziert die Adreßleitung die Zeilenadresse (RAD 1) der zwei oberen Arrays, durch die der Block 12A hindurchschneidet. Gleichzeitig geht, da die Aktualisierungsblock-Array 12A nur die Zeilenleitungen 5, 6 und 7 dieser Arrays aufweist, die Zeilenadreßstrobeleitungen für die Zeilen 5 bis 7 (RAS 5-7) in den Low-Zustand, um diese Chips in dem in Arrays organisierten Anzeigespeicher 11 freizugeben. Bei dem zweiten Taktzyklus wird die Zeilenadresse (RAD 2) der unteren beiden Arrays, in denen der Block 12A angeordnet ist, auf der Adreßleitung des Umsetzers 25 angeordnet. Zu diesem Zeitpunkt gehen auch die Zeilenadreßstrobeleitungen für die Zeilen 0 bis 4 (RAS 0-4) in den Low-Zustand, um diese RAM in dem Halbleiterspeicher 11 freizugeben. Der Block 12A weist die Zeilen 0 bis 4 der unteren Arrays auf.
  • An diesem Punkt weisen die Halbleitervorrichtungen in dem Speicher 11 nur ihre Zeilenadressen auf. Bei dem dritten Taktzyklus wird die Spaltenadresse für die linken beiden Arrays (CAD 3) von dem Umsetzer 25 auf der Adreßleitung angeordnet. Entsprechend werden die Zeilenadreßstrobeleitungen für die Spalten 5 bis 7 (CAS 5-7) freigegeben, da diese Spalten von dem Block 12A umfaßt werden. Bei dem vierten Taktzyklus werden die Spaltenadressen für die ersten fünf Spalten der rechten zwei Arrays (CAD 4) auf der Adreßleitung angeordnet und das Spaltenadreßstrobesignal für die Leitungen 0 bis 5 (CAS 0-4) wird freigegeben.
  • Auf diese Weise werden nach vier 50-Nanosekunden-Taktzyklen alle Adressen in den Haltespeichern von Halbleiter- RAM angeordnet, welche den Anzeigespeicher 11 aufweisen. Aus der Art des Betriebs dieser integrierten Schaltungen mit einer gewissen Datenzugriffs- und einer gewissen Datenausregel- oder -setzzeit erscheinen die Daten nach ungefähr 350 Nanosekunden aus dem Anzeigespeicher 11. Wie zuvor beschrieben, treten die Daten zweidimensional rotiert auf und müssen durch die Barrelverschiebeeinrichtung 22 zurückgeschoben werden, bevor sie in eine der Puffer-Arrays 23,24 geladen werden. Dies geschieht innerhalb von 800 Nanosekunden.
  • Die Aktualisierungsblocks brauchen nicht immer 4 Arrays aufzuweisen, sondern weisen möglicherweise zwei oder sogar nur eine Array auf. In diesen Fällen übt der Umsetzer 21 seine Funktion aus. Das obige Beispiel wurde lediglich zur Veranschaulichung des kompliziertesten Falls seines Betriebs ausgewählt.
  • Die vorliegende Beschreibung hat sich bislang mit der Modifizierung von Datenblocks mit Geraden oder Vektoren befaßt. Bei komplizierteren Formen, einschließlich Kurven oder Bögen, bietet die vorliegende Vorrichtung die aus dem Stand der Technik bekannte Punkt-um-Punkt-Berechnung und Wiedergewinnung aus dem Datenanzeigespeicher, der die komplexe Form enthält, nach dem Stand der Technik. Die Pixel-/Array-Abrufsteuerleitung in Fig. 10 gestattet die Auswahl von Betriebsarten, nämlich zwischen einer Verarbeitung in Arrays (oder im Block) für Vektoren und einer Einzel-Punkt-Verarbeitung für Kurven.
  • Mittels einer geeigneten Modifizierung des Breshenham- Algorithmus für einfache Kurven können jedoch viele der Vorteile der vorliegenden Erfindung beibehalten werden. Diese Kurven, wie beispielsweise die eines Kreises oder einer Ellipse, lassen die Interpolation der Kurve blockweise anstatt nach einzelnen Datenpunkten zu. Anstatt der Oktantrichtungen werden Quadrantrichtungen verwendet. Die Quadrantrichtungen werden nicht wie bei den Vektoren gesetzt, sondern an den Punkten wiederberechnet, an denen die Kurve beginnt, sich auf sich selbst zurück zu verdoppeln, entweder in X- oder in Y- Richtung. Im Falle eines Kreises gibt es beispielsweise vier derartige Punkte, nämlich den am weitesten oben, unten, links und rechts gelegenen Punkt des Kreises.
  • Diese Modifizierung des Breshenham-Algorithmus und die Berechnung der Quadranten bringt die Verarbeitungszeit auf ein Minimum, selbst wenn die Interpolation der Datenpunkte der Kurve innerhalb eines Datenblocks länger dauert als die Übertragung des Datenblocks von dem Anzeigespeicher. Kurven erfordern generell eine längere Berechnungszeit als Vektoren und üblicherweise komplexere Berechnungseinheiten, wie beispielsweise Multiplikatoren, als die in Fig. 8 dargestellten. Da jedoch der Datenblock übertragen werden kann, wenn die Punkte interpoliert werden, wird keine Zeit für die Datenübertragung verschwendet.

Claims (8)

1. Schaltung zum Modifizieren von Bildschirmdaten in einem in Daten-Arrays für die bitorientierte Darstellung organisierten Anzeigespeicher entsprechend einem ausgewählten Muster, mit:
einer ersten Anzeigespeichereinrichtung (23,24) zum Empfangen und Halten eines ersten Bildschirmdatenblocks von dem Anzeigespeicher (11);
einem auf die Eingangssignale reagierenden Mustergenerator (28) zum Erzeugen von Musterdaten entsprechend einem ersten Teil des ausgewählten Musters, das auf den ersten Block der Bildschirmdaten aufgebracht werden soll;
einer ersten Musterspeichereinrichtung (25,26) zum Empfangen und Halten des ersten Teils der Musterdaten von dem Mustergenerator; und
einer Logikeinrichtung (27) zum Kombinieren des ersten Bildschirmdatenblocks mit dem ersten Teil der Musterdaten zu einem modifizierten Bildschirmdatenblock und zum Zurückführen des ersten modifizierten Bildschirmdatenblocks zu dem Anzeigespeicher (11);
gekennzeichnet durch
eine zweite Anzeigespeichereinrichtung (23,24) zum Empfangen und Halten eines zweiten Bildschirmdatenblocks von dem Anzeigespeicher (11); und
eine zweite Musterspeichereinrichtung (25,26) zum Empfangen und Halten eines zweiten Teils der Musterdaten von dem Mustergenerator;
wobei die Anordnung derart ist, daß der erste Bildschirmdatenblock in der Logikeinrichtung (27) mit dem ersten Teil der Musterdaten kombiniert wird, während der zweite Bildschirmdatenblock und der zweite Teil der Musterdaten von der zweiten Anzeigespeichereinrichtung (23,24) bzw. von der zweiten Musterspeichereinrichtung (25,26) empfangen werden, und daß der zweite Bildschirmdatenblock in der Logikeinrichtung (27) mit dem zweiten Teil der Musterdaten kombiniert wird, während ein weiterer Bildschirmdatenblock und ein weiterer Musterdatenblock von der ersten Anzeigespeichereinrichtung (23,24) bzw. der ersten Musterspeichereinrichtung (25,26) empfangen werden, und sukzessive so weiter.
2. Schaltung nach Anspruch 1, dadurch gekennzeichnet, daß der Mustergenerator (28) derart angeordnet ist, daß er entsprechend einer Modifikation des Breshenham-Algorithmus funktioniert.
3. Schaltung nach Anspruch 1 oder 2, gekennzeichnet durch eine mit dem Anzeigespeicher (11) und den Anzeigespeichereinrichtungen (23,24) gekoppelte Barrelverschiebeeinrichtung (22), wobei die Barrelverschiebeeinrichtung in der Lage ist, Daten in zwei Dimensionen von dem Speicher und zu den Anzeigespeichereinrichtungen zu schieben, wodurch eine Rotation der Daten nach diesem Speichertransfer verhindert wird.
4. Schaltung nach Anspruch 1,2 oder 3, dadurch gekennzeichnet, daß die Logikeinrichtung (27) imstande ist, eine UND-, ODER- und EXKLUSIV-ODER-Verknüpfung der Bildschirmdatenblöcke und der Musterdatenteile auf die an sie angelegten Steuersignale hin durchzuführen.
5. Schaltung nach Anspruch 4, dadurch gekennzeichnet, daß der Mustergenerator (28) Adreßsignale von den Eingangssignalen erzeugt, um jedes adressierte Datum in die Musterspeichereinrichtungen (25,26) zu setzen.
6. Schaltung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Anzeigespeichereinrichtungen (23,24) mit dem Anzeigespeicher (11) durch einen ersten Bus (32) gekoppelt sind, der eine jedem Datum des Blocks in dem Anzeigespeicher entsprechende Leitung aufweist, so daß Daten zwischen den Anzeigespeichereinrichtungen und dem Anzeigespeicher (11) parallel übertragen werden.
7. Schaltung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Musterspeichereinrichtungen (25,26) mit dem Mustergenerator (28) durch einen zweiten Bus (82) gekoppelt sind, wobei der zweite Bus mehrere Leitungen aufweist, so daß jedes in den Musterspeichereinrichtungen gehaltene Datum adressiert werden kann.
8. Schaltung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Anzeigespeichereinrichtungen und die Musterspeichereinrichtungen mit der Logikeinrichtung (27) durch dritte (34) und vierte (33) Busse gekoppelt sind, wobei jeder die gleiche Leitungsanzahl aufweist wie der erste Bus (32), so daß Daten von den Anzeigespeichereinrichtungen und Daten von den Musterspeichereinrichtungen parallel zu der Logikeinrichtung übertragen werden.
DE85303187T 1984-05-07 1985-05-03 Schaltung zum Modifizieren von Daten in einem Anzeigespeicher. Expired - Fee Related DE3587461T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/607,995 US4648049A (en) 1984-05-07 1984-05-07 Rapid graphics bit mapping circuit and method

Publications (2)

Publication Number Publication Date
DE3587461D1 DE3587461D1 (de) 1993-08-26
DE3587461T2 true DE3587461T2 (de) 1994-01-27

Family

ID=24434602

Family Applications (1)

Application Number Title Priority Date Filing Date
DE85303187T Expired - Fee Related DE3587461T2 (de) 1984-05-07 1985-05-03 Schaltung zum Modifizieren von Daten in einem Anzeigespeicher.

Country Status (5)

Country Link
US (1) US4648049A (de)
EP (1) EP0164880B1 (de)
JP (1) JPS60239796A (de)
AT (1) ATE91819T1 (de)
DE (1) DE3587461T2 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4730261A (en) * 1983-10-25 1988-03-08 Ramtek Corporation Solids modelling generator
US6552730B1 (en) * 1984-10-05 2003-04-22 Hitachi, Ltd. Method and apparatus for bit operational process
US5034900A (en) * 1984-10-05 1991-07-23 Hitachi, Ltd. Method and apparatus for bit operational process
US5265204A (en) * 1984-10-05 1993-11-23 Hitachi, Ltd. Method and apparatus for bit operational process
US5282269A (en) * 1985-09-27 1994-01-25 Oce-Nederland B.V. Raster image memory
US4868765A (en) * 1986-01-02 1989-09-19 Texas Instruments Incorporated Porthole window system for computer displays
JP2737898B2 (ja) * 1986-01-20 1998-04-08 富士通株式会社 ベクトル描画装置
US4805116A (en) * 1986-04-23 1989-02-14 International Business Machines Corporation Interpolated display characteristic value generator
US5276778A (en) * 1987-01-08 1994-01-04 Ezel, Inc. Image processing system
US4903217A (en) * 1987-02-12 1990-02-20 International Business Machines Corp. Frame buffer architecture capable of accessing a pixel aligned M by N array of pixels on the screen of an attached monitor
US4816814A (en) * 1987-02-12 1989-03-28 International Business Machines Corporation Vector generator with direction independent drawing speed for all-point-addressable raster displays
US4870406A (en) * 1987-02-12 1989-09-26 International Business Machines Corporation High resolution graphics display adapter
JPH0727573B2 (ja) * 1987-02-13 1995-03-29 日本電気株式会社 弧の端点検出回路
US4882683B1 (en) * 1987-03-16 1995-11-07 Fairchild Semiconductor Cellular addrssing permutation bit map raster graphics architecture
US4855935A (en) * 1987-05-08 1989-08-08 Sun Microsystems, Inc. Method and apparatus for rendering vectors using bresenham parameters
US5283866A (en) * 1987-07-09 1994-02-01 Ezel, Inc. Image processing system
US5553170A (en) * 1987-07-09 1996-09-03 Ezel, Inc. High speed image processing system having a preparation portion and a converting portion generating a processed image based on the preparation portion
US5109481A (en) * 1987-07-24 1992-04-28 Hewlet-Packard Company Quadratic interpolation for shaded image generation
US5063375A (en) * 1987-07-27 1991-11-05 Sun Microsystems, Inc. Method and apparatus for shading images
US4904994A (en) * 1987-09-08 1990-02-27 Auto-Trol Technology Corporation Apparatus and method for identifying next matrices for vector drawing
US4928243A (en) * 1987-10-06 1990-05-22 Preco Industries, Inc. Method and system for printing graphics and text from vector-based computer aided source information
US5254979A (en) * 1988-03-12 1993-10-19 Dupont Pixel Systems Limited Raster operations
US4992961A (en) * 1988-12-01 1991-02-12 Hewlett-Packard Company Method and apparatus for increasing image generation speed on raster displays
US5179647A (en) * 1989-01-09 1993-01-12 Sun Microsystem, Inc. Method and apparatus for implementing adaptive forward differencing using integer arithmetic
US5309553A (en) * 1990-06-15 1994-05-03 Mitsubishi Denki Kabushiki Kaisha Apparatus for and method of generating a straight line of pixels in a discrete coordinate system
FR2666165B1 (fr) * 1990-08-23 1995-02-03 Sextant Avionique Procede de presentation d'images sur un ecran matriciel et systeme pour la mise en óoeuvre du procede.
US5420972A (en) * 1990-11-15 1995-05-30 International Business Machines Corporation Method and apparatus for rendering lines
JPH0683969A (ja) * 1990-11-15 1994-03-25 Internatl Business Mach Corp <Ibm> グラフィックス・プロセッサ及びグラフィックス・データ処理方法
JPH087715B2 (ja) * 1990-11-15 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理装置及びアクセス制御方法
JPH0785219B2 (ja) * 1990-11-15 1995-09-13 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システム及びデータ制御方法
JP2725915B2 (ja) * 1990-11-15 1998-03-11 インターナショナル・ビジネス・マシーンズ・コーポレイション 三角形描画装置及び方法
US5422991A (en) * 1992-09-22 1995-06-06 International Business Machines Corporation Parallel vector generator and triangle generator incorporating same
JP3223639B2 (ja) * 1993-04-15 2001-10-29 ソニー株式会社 画像メモリのリードアドレス発生方法
US5627956A (en) * 1995-01-31 1997-05-06 Compaq Computer Corporation Run slice line draw engine with stretching capabilities

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3015125A1 (de) * 1980-04-19 1981-10-22 Ibm Deutschland Gmbh, 7000 Stuttgart Einrichtung zur speicherung und darstellung graphischer information
US4520356A (en) * 1980-06-16 1985-05-28 Honeywell Information Systems Inc. Display video generation system for modifying the display of character information as a function of video attributes
NL8101339A (nl) * 1981-03-19 1982-10-18 Philips Nv Inrichting voor het afbeelden van digitale informatie met selektiemogelijkheid van beeldpagina's en/of resolutie uitbreiding.
JPS58209784A (ja) * 1982-05-31 1983-12-06 株式会社東芝 メモリシステム

Also Published As

Publication number Publication date
US4648049A (en) 1987-03-03
EP0164880A2 (de) 1985-12-18
EP0164880B1 (de) 1993-07-21
JPH0530280B2 (de) 1993-05-07
DE3587461D1 (de) 1993-08-26
JPS60239796A (ja) 1985-11-28
EP0164880A3 (en) 1989-05-24
ATE91819T1 (de) 1993-08-15

Similar Documents

Publication Publication Date Title
DE3587461T2 (de) Schaltung zum Modifizieren von Daten in einem Anzeigespeicher.
DE3751075T2 (de) Verfahren und System zur Steuerung einer Multibildschirmanzeige.
DE68919024T2 (de) Verfahren und Prozessor zur Abtastumsetzung.
DE68926571T2 (de) Wirksames verfahren zur aktualisierung eines zeitverschachtelt arbeitenden einzeltor-z-pufferspeichers
DE3687358T2 (de) Bildpufferspeicher mit variablem zugriff.
DE69119630T2 (de) Verfahren und Einrichtung zur Maximierung von Spaltenadressenkohärenz für den Zugriff von seriellen und Direktzugriffstoren in einem graphischen System mit einem Rasterpufferspeicher
DE3438869C2 (de)
DE69122557T2 (de) Bilderzeugung
DE69323919T2 (de) Graphik-Koprozessor
DE69122226T2 (de) Verfahren und Einrichtung zur Zugriffsanordnung eines VRAM zum beschleunigten Schreiben von vertikalen Linien auf einer Anzeige
DE3587750T2 (de) Peripheriegerät für Bildspeicher.
DE3853489T2 (de) Grafik-Anzeigesystem.
DE3636394C2 (de) Einrichtung und Verfahren zur Speicherorganisation
DE69521953T2 (de) Organisation eines Z-Puffer-Etikettenspeichers
EP0038411A2 (de) Einrichtung zur Speicherung und Darstellung graphischer Information
DE10101073B4 (de) Bildaufbereitungsvorrichtung mit niedrigeren Speicherkapazitätsanforderungen und Verfahren dafür
DE2261141C3 (de) Einrichtung zur graphischen Darstellung von in einem Computer enthaltenen Daten
DE3889240T2 (de) Zähler mit veränderbarer Verschaltung zur Adressierung in graphischen Anzeigesystemen.
DE69722535T2 (de) Verfahren und Gerät zum Schaffen von Texturdaten
DE3889557T2 (de) Vektorgenerator für Raster-Bildschirmanzeige.
DE69215155T2 (de) Gerät mit schneller Kopierung zwischen Rasterpuffern in einem Anzeigesystem mit Doppel-Pufferspeichern
DE68929482T2 (de) Integrierter Schaltkreis mit synchronem Halbleiterspeicher, ein Verfahren zum Zugriff auf den besagten Speicher sowie ein System, das einen solchen Speicher beinhaltet
DE69027637T2 (de) Abschneidungsprozessor
DE68927245T2 (de) Bildverarbeitungssystem
DE3716752A1 (de) Verfahren und vorrichtung zur informationsausgabe

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee