Frage:
16-Bit-Grafikchip
Doihead
2018-05-26 19:59:01 UTC
view on stackexchange narkive permalink

Ich versuche, einen 16-Bit-Einplatinencomputer rund um den 68000 zu bauen, und frage mich, ob es nicht proprietäre 16-Bit-Grafikchips wie den Yamaha V9958 mit leicht verfügbaren Datenblättern gibt.

Danke

Komm schon, Zeit, in FPGA-Sachen einzutauchen.
Ich habe bereits daran gearbeitet, aber es dauert einige Zeit, bis ich verschiedene FPGAs, SRAMs usw. durchgearbeitet habe. Siehe Antwort :-)
Zwei antworten:
Jules
2018-05-26 20:54:16 UTC
view on stackexchange narkive permalink

Nun, eine naheliegende Wahl wäre die Verwendung des Chips, von dem die von Ihnen erwähnten Yamaha-Geräte erweiterte Klone waren, des TMS9918. Sie werden nicht mehr hergestellt, können aber relativ einfach erworben werden, wenn Sie an den richtigen Stellen suchen. Sie sind also definitiv eine plausible Wahl. Der TMS9918 wurde im ersten 16-Bit-PC, dem TI-99/4, verwendet, sodass Sie sich dort in guter Gesellschaft befinden. Sie würden im Vergleich zum MSX etwas an Auflösung verlieren, aber es ist immer noch ein ziemlich vernünftiges System.

Eine andere Wahl wäre das Motorola 6845, das etwas weniger fortschrittlich, aber viel vielseitiger war - es wurde schließlich als Grundlage für die IBM PC-Grafikkarten bis einschließlich EGA (und) verwendet ist auch im VGA in abwärtskompatibler Form vorhanden), ist also für echte Arbeit geeignet.

Bearbeitet, um Folgendes hinzuzufügen:

Der NEC uPD7220 ist ein weiterer guter Kandidat, insbesondere sein 16-Bit-Nachfolger, der uPD72120. Im Gegensatz zum 6845 implementiert dies ein befehlsbasiertes System, bei dem Sie dem Chip mitteilen, was zu zeichnen ist, und der Videospeicher für Sie aktualisiert wird. Wie die 99x8-Chips verfügt es über einen eigenen Speicher, auf den der Zugriff verwaltet wird (während der 6845 unabhängig davon ist, ob der Speicher, mit dem er verbunden ist, ein eigener ist oder von der Host-CPU verwaltet wird: Er generiert nur Adressen und erwartet externe Schaltkreise Führen Sie den eigentlichen Speicherzugriff durch) und bieten Sie eine Möglichkeit, Änderungen am Speicher von der CPU zusammen mit allgemeinen Zeichnungsprimitiven anzufordern (im Gegensatz zum 99x8 bietet es jedoch ein Busanforderungs- / Bestätigungsprotokoll, das auch direkten Zugriff darauf ermöglicht und verwenden kann ein Standard-DMA-Protokoll zum Durchführen von Blockübertragungen zum und vom Systemspeicher).

Wie die anderen oben ist es ein veraltetes Teil, das nicht mehr hergestellt wird, sondern bei ebay und ähnlichen Websites gekauft werden kann.

Oder etwas etwas Moderneres wie die [SSD1963] (http://www.solomon-systech.com/de/product/display-system-solutions/display-controller/ssd1962/).
Oder etwas Modernes und Low-Pin-Count wie [FT800 oder FT81x] (http://www.ftdichip.com/EVE.htm).Verwaltet Touchscreens und bietet auch Audio.Erfordert jedoch SPI oder I2C, sodass die Schnittstelle zum Oldschool MC68000 möglicherweise nicht so einfach ist, wenn nur ein paralleler Speicherbus verfügbar ist.
@dim - ja ... für ein Projekt wie dieses möchten Sie auf jeden Fall etwas mit einem herkömmlichen parallelen Speicherbus, denn das ist das einzige, an das der 68000 angeschlossen werden kann, ohne viel durch die Rahmen zu springen.Ich möchte auch darauf hinweisen, dass die Vorschläge in den Kommentaren hier reine Framebuffer sind, aber das V9958, nach dem OP gesucht hat, basiert auf einer Textanzeige mit veränderbaren Zeichen und überlagerten Sprites, die sich wesentlich unterscheidet ... und mitdie Busleistung des 68000 (was nicht gerade großartig war: 4 Buszyklen pro Speicherzugriff, maximale Taktrate von 25 MHz ...
... und ein 16-Bit-Bus => max. 12 MB / s Datenübertragung, aber realistischer 3-6 ist das Beste, was Sie tatsächlich erhalten. Sie möchten die Bandbreitenvorteile, die durch die Verwendung dieser Art von Schnittstelle erzielt werden.
Der MC6845 ist allerdings nur ein halber Videochip.Es generiert Timing und Adressen, ruft jedoch keine Pixel ab oder zeigt sie an.Die ursprünglichen IBM PC CGA- und MDA-Karten waren aufgrund aller erforderlichen zusätzlichen Komponenten ISA-Karten in voller Länge.Sie sind heutzutage wahrscheinlich besser dran, einen kompletten Videochip auf einem FPGA zu implementieren.
@RossRidge - Die CGA- und MDA-Karten waren hauptsächlich deshalb so groß, weil sie eine große Anzahl von DRAM-Chips und die für den Zugriff auf Daten im DRAM erforderlichen Schaltkreise enthielten. Außerdem war die Schnittstelle zum ISA-Bus so, dass die CPU direkt auf denselben RAM zugreifen konnte (zusammen mit der Erzeugung von WAIT-Zuständen, wenn dies versucht wird, während der Speicher für Anzeigezwecke verwendet wird).Die Verwendung eines 6845 in der allgemeineren Konfiguration (d. H. Gemeinsamer Zugriff auf den Hauptspeicher) und die Ausnutzung der Tatsache, dass der 68000 nur in 4 von 8 Buszyklen auf den Speicher zugreifen kann, ist viel einfacher als das, was diese Karten taten.
Oldfart
2018-05-26 21:50:11 UTC
view on stackexchange narkive permalink

Ich habe mir Xilinx FPGAs angesehen. Ich habe eine VGA / SVGA / XGA-Tabelle mit verschiedenen Bits pro Pixel erstellt: 3,9,12. Einige Ergebnisse:

  • VGA 3 Bit: 900 KBit, 9 Bit: 2,7 MBit, 18 Bit: 5,4 MBit
  • SVGA 3 Bit: 1,4 Mbit, 9 Bit: 4,2 Mbit, 18 Bit: 8,4 Mbit
  • XVGA 3 Bit: 2,3 Mbit, 9 Bit: 6,9 Mbit, 18 Bit: 11,5 Mbit

Dann habe ich versucht, das auf einem FPGA abzubilden. Der begrenzende Faktor ist der interne Speicher. ~ $ 25 gibt Ihnen 1,6 Mbit. ~ $ 57 gibt Ihnen 2,7 Mbit

Als nächstes habe ich mir die Verwendung eines externen SRAM angesehen. Viel billiger! Ein 100-Pin-FPGA kostet ungefähr 8 US-Dollar, ein 16-Mbit-SRAM ~ 7 US-Dollar (LQFP-Paket) Das gibt Ihnen theoretisches XGA mit 262K Farben pro Pixel.

Dann können Sie einen DAC hinzufügen oder ein Widerstandsnetzwerk verwenden.

Ich konnte nicht überprüfen, ob das ausgewählte FPGA groß genug für XGA-Code ist. Der Code ist sehr einfach, nur eine Reihe von Zählern, aber Sie müssen eine CPU-Schnittstelle hinzufügen und können ein Zeichen-ROM-Modus sein.

Wenn mir sehr langweilig ist, könnte ich versuchen, morgen eine zu schreiben.


Die Frage wird derzeit gehalten, aber ich gebe trotzdem ein Update.

Begonnen mit einem 100-poligen XC3S50. Ich musste die Videoschnittstelle auf 12 Bit und den CPU-Datenbus auf 8 Bit reduzieren, um innerhalb der Pin-Anzahl zu bleiben. (Dies ist für XVGA) Das Design passt leicht. Ich habe einen 256x54-Bit-RAM hinzugefügt, um als Zeichen "ROM" zu arbeiten (verwendbar als 9x6 oder 10x5). Zu diesem Zeitpunkt ging mir mit dem FIFO der interne Speicher aus.

Dann habe ich einen 144 Pin XC6SL4 ausprobiert. Ich habe mich für ein größeres Gerät entschieden, weil die Erfahrung gezeigt hat, dass Sie immer etwas mehr brauchen, als Sie erwartet hatten. Es kostet 2 Dollar mehr. Diesmal hatte ich interne Speicherblöcke und Multiplikatoren frei. Ich hatte Probleme mit der Pin-Anzahl und konnte mit dem 16-Bit-CPU-Datenbus auf 18 Bit / Pixel oder mit dem 32-Bit-CPU-Datenbus auf 15 Bit / Pixel aufsteigen.

In beiden Fällen reicht die Speicherbandbreite nicht aus, um &-Schreibvorgänge gleichzeitig zu lesen. In beiden Designs gibt es einen FIFO, der die CPU-Schreibvorgänge abfängt und sie in der Austastperiode ausführt.Mit 256 Einträgen ist die 68000-CPU nicht schnell genug, um den FIFO in einer Zeilenzeit zu füllen.

Beide Designs können im Grafik- oder Zeichenmodus verwendet werden.Das gesamte Video-Timing ist programmierbar (wie beim 6845, jedoch größer und schneller), sodass viele Videomodi bis zu 1024 x 768 ausgeführt werden können.Ich habe dem Grafikmodus keine Farben hinzugefügt, aber das ist nur eine Frage der Zeit.(z. B. 16 Vordergrund- und 16 Hintergrundfarben).Da es einige Ersatzgatter gab, kann der Grafikmodus verbunden oder getrennt werden.(Im getrennten Modus fügt die Hardware den Zeichen Austastpixel hinzu, damit sie hervorstechen.)

Ich habe keine Hardware, was bedeutet, dass nichts davon im wirklichen Leben getestet werden kann.

Der MC68000 benötigt ohnehin einen eigenen RAM.Traditionell wurden Videozugriffe mit CPU-Zugriffen verschachtelt.
FWIW Ich habe Code geschrieben, der in das kleinste Cyclone IV-Gerät passt und ein eingehendes LVDS-Signal liest, das ursprünglich für ein Standard-LCD-Panel mit 640 x 480 vorgesehen war, das Bild im DRAM speichert und es dann in einer anderen Reihenfolge zurückzieht, um es einzuspeisenein Verschiebungspuffer in ein LED-Digitalzeichen, alle @50Hz aktualisieren.Ich kann mir nicht vorstellen, dass die Implementierung eines Standard-XGA-Adapters in den Geräten, die Sie sich ansehen, überhaupt ein Problem darstellt.
Was Sie jedoch * wirklich * benötigen, um es mit den 99x8-Chips vergleichbar zu machen, sind Grafikbeschleunigungsfunktionen: Blockkopie, Strichzeichnung, Sprites.Das könnte ein kleines FPGA besteuern.Ich bin mir nicht wirklich sicher.
@TEMLIB - so würde ich es definitiv machen, aber es ist erwähnenswert, dass OP nach dem V9958 fragt und die 99x8-Anzeigeprozessoren über einen eigenen Speicher verfügen, auf den der Host-Prozessor nur zugreifen kann, indem die Adresse, auf die sie zugreifen möchten, in ein Register geschrieben wird.dann von einem anderen lesen / schreiben, um den Zugriff durchzuführen (... und dies ist der Grund, warum der TI-99 / 4A in seiner Basiskonfiguration so langsam war: Über seinen TMS9918 sind 16 KB RAM angeschlossen, und nur 512 Bytes sind tatsächlich direkt angeschlossenan den Prozessor, so dass seine BASIC- und Spielekassetten alle mit Anzeigespeicher betrieben wurden ...)
@Jules Alles, was sie in den 80er und 90er Jahren auf einem (digitalen) Chip tun konnten, kann heute wahrscheinlich auf einem FPGA erledigt werden, vielleicht, wenn Sie sich nicht für das untere Ende von FPGAs entscheiden.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...