WikiDer > Texas Instruments TMS9918
Das TMS9918 ist ein Videoanzeige-Controller entwickelt von Texas Instruments und wurde von vielen Computersystemen verwendet, einschließlich MSX, ColecoColecoVision, Texas Instruments TI99/4 und SegaSG-1000 und SC-3000.
In Segas wurden modifizierte Varianten mit zusätzlichen Anzeigemodi und Registern verwendet Sega Master-System, Spielausrüstung und Mega-Laufwerk.
Modellvarianten
Es sind mehrere Modellvarianten dieses Prozessors erschienen und jede hat Modellnummern mit "A" hinzugefügt als zweite Generation des jeweiligen Modells und hat einige zusätzliche Funktionen, von denen ein Bitmap-Modus (Graphic II) der wichtigste ist. Mit Ausnahme der TI-99/4 alle oben genannten Systeme verwenden die fortschrittlichere "A"-Variante. Diese gesamte Prozessorfamilie wird allgemein als TMS9918 oder TMS9918A bezeichnet.
Folgende Modellvarianten des TMS9918(A) wurden entwickelt:
- TMS9918(A)
- Farbcodierung: NTSC
- Bildwiederholfrequenz: 60 Hz.
- TMS9928(A)
- Farbcodierung: YPbPr
- Bildwiederholfrequenz: 60 Hz.
- TMS9929(A)
- Farbcodierung: YPbPr
- Bildwiederholfrequenz: 50 Hz.
- TMS9938(A)
- Farbcodierung: NTSC
- Bildwiederholfrequenz: 60 Hz.
- weiterentwickelt von als Yamaha V9938
Aus dem oben Gesagten geht hervor, dass der Unterschied zwischen den Serien '10', '20' und '30' durch die gewählte Bildcodierung gebildet wird. Unter dem Gesichtspunkt der Kosteneinsparung wurden bei der Entwicklung der Prozessoren die verschiedenen bestehenden analogen Systeme berücksichtigt Fernsehsysteme, besonders drinnen Europa, und entschied sich für a Composite-VideoAusgangssignal [genauer a YPbPr-Ausgangssignal mit Ausgang vom Leuchtdichte (Y) und die Farbunterschiede Blau (Pb) und Rot (Pr)] anstatt zwei separate Chipvarianten für die KUMPEL und SECAM-Fernsehnormen. Diese Codierung erfolgt nun im HF-Modulator.
Der TMS9918A wurde von der YamahaV9938. Es hatte mehr Bitmap-Modi, bunter Sprites, vertikales Scrollregister und eine anpassbare Farbpalette. Die V9938 wurde wiederum von der V9958, die High-Color-Modi und ein horizontales Scroll-Register enthielt. Dieser Chip wurde unter anderem in MSX2-, 2- und MSX-Turbo-R-Computern verwendet. Yamaha hat auch die V9990, das von manchen als Nachfolger des V9958 angesehen wird, aber nicht abwärtskompatibel zu diesem ist. Für den MSX ist ein Erweiterungsmodul für den V9990 unter dem Namen "Graphics 9000" freigegeben.
Schnittstelle
Der TMS9918A ist mit 16k × 8 . ausgestattet Video-RAM, die außerhalb des Adressbereichs des Z80-Prozessors liegt. Dieser Speicher wird nicht im Speicher des Prozessors gespeichert - der VDP-Bus ist ein privater (wenn auch externer) Datenbus, der vom Prozessor getrennt ist.
Ein dedizierter Adressraum bedeutet jedoch, dass der Prozessor einen 2-Byte-Befehlsbefehl an den VDP-Steuerungsport senden muss, um Daten in den Videospeicher zu übertragen. Dies bedeutet auch, dass VDP den Hauptprozessor beim Lesen von Daten aus seinem Speicher nicht verlangsamt und da der Speicher nicht in den Adressraum des Prozessors abgebildet wird, steht mehr Adressraum für anderen Speicher zur Verfügung. Der Prozessor kommuniziert mit dem VDP über einen 8-Bit-Port am VDP und die Daten werden über Schreibbefehle zwischen den beiden Ports übertragen. Wenn ein Byte geschrieben oder gelesen wird, inkrementiert der TMS9918 sein internes Adressregister, damit der Prozessor nicht bei jedem Bytezugriff eine Adressaktualisierung senden muss. Dies ist wichtig, da es das schnelle Lesen und Schreiben von Datenblöcken vereinfacht. Über die anderen internen Register des TMS9918 kann die Haupt-CPU zB den gewünschten Videomodus einstellen, die Sprites-Logik konfigurieren oder den internen Status des VDP auslesen (zB zur Sprite-Kollisionserkennung).
Bildschirmmodi
Modus 0 (Text): 40×24 monochromatische Zeichen. Da die Anzeige 256 Pixel breit ist, ist der Zeichensatz nur 6 Pixel breit. Dieser Modus unterstützt keine Sprites oder eine andere Bildschirmrandfarbe.
Modus 1 (Grafik 1): 32 × 24 Zeichen (256 × 192 Bitmap), wobei die Vorder- und Hintergrundfarbe alle 8 Zeichen im Zeichensatz bestimmt werden kann. Beispielsweise haben die Zeichen "0"-"7" jeweils die gleichen Eigenschaften.
Modus 2 (Grafik 2): 32 × 24 Zeichen (256 × 192 Bitmap), mit einer 2-Farben-Begrenzung für jede 8 Pixel breite Linie innerhalb eines Zeichens.
Modus 3 (Mehrfarbig): 64×48-Modus, sehr blockig und selten verwendet. Jedem 'Pixel' kann jedoch eine eigene Farbe zugewiesen werden, daher die Bezeichnung "Multicolor". Die Sprites hingegen haben immer noch die gleiche Auflösung wie in den Bildschirmmodi 1 und 2.
Der TMS9918 hat eine feste Palette von 16 Farben.
Sprites
In den Modi 1, 2 und 3 kann der VDP Sprites generieren. Bis zu 32 monochrome Sprites mit 8 × 8 oder 16 × 16 Pixeln können auf dem Bildschirm angezeigt werden, jedes mit seiner eigenen Farbe. Es können nicht mehr als 4 Sprites auf einer einzelnen Scanline vorhanden sein. Die horizontalen Pixel jedes zusätzlichen Sprites werden gelöscht. Sprites mit einer höheren Priorität werden zuerst aufgezeichnet und angezeigt. Der Prozessor kann diese Einschränkung jedoch umgehen, indem er die Sprite-Priorität rotiert, wodurch in jedem Frame eine andere Gruppe von Sprites aufgezeichnet wird. Dies führt jedoch dazu, dass die Sprites "flimmern", anstatt vollständig zu verschwinden. Diese Technik wird als Multiplexing bezeichnet.
Automatische Sprite-Moves werden vom VDP nicht verarbeitet. In der Praxis tut dies der Hauptprozessor während des "vertikalen Interrupts" des VDP - einer gemeinsamen VDP-Ausgabe - der automatisch alle 50 oder 60 Sekunden (je nach Prozessorvariante) während der "vertikalen Austastlücke" ( VBI Der Prozessor springt dann zu einer Sprite-Handhabungs-(Unter-)Routine, die in der Software vorhanden ist, die wiederum den VDP anweist, wo die Sprites (neu) positioniert werden sollen.
Wenn zwei nicht transparente Pixel kollidieren – in irgendeiner Kombination – wird das Sprite-Kollisionsflag aktiviert. Dies ist nützlich, um erweiterte Kollisionserkennungsroutinen in der Software aufzurufen, die dann die genaue Position bestimmen und darauf reagieren können. Beachten Sie, dass der VDP Programm Ich kann nicht sagen, welche zwei Sprites kollidierten.