Videogenerierung mit Shift Register

Ich baue einen selbstgebauten 8-Bit-Computer und habe einige Probleme mit der Videoausgabe.

Ich möchte wissen, ob es möglich ist, mit einem Mikrocontroller, beispielsweise atmega328 mit 20 MHz, einem 8-Bit-PISO-Schieberegister und einem externen DRAM-Framebuffer, Adressbus mit hoher Auflösung, beispielsweise 640 x 480, monochrome Videoausgabe, PAL oder NTSC, zu erzeugen kann gesteuert werden durch ein anderes SIPO-Schieberegister.

Kann ich mit einem Atmega eine 640x480-Monochromausgabe erzeugen? Gibt es einen besseren Weg?

Ich habe noch nie von jemandem gehört, der einen AVR mit einem DRAM verbindet ... Ich könnte mich irren, aber das klingt für mich nach einem Job für ein FPGA. Abgesehen davon ist es definitiv möglich, NTSC-Signale mit einem AVE zu erzeugen, aber Sie müssen wahrscheinlich Assembler schreiben, um das Timing eng genug zu bekommen.
Dies ähnelt dem, was Sie tun möchten: lucidscience.com/pro-vga%20video%20generator-1.aspx
@vicatcu Ja, ich habe über FPGA (oder sogar CPLD) nachgedacht, aber sie sind hier ziemlich teuer. Es würde viel jede Alternative helfen. Ich habe keine großen Probleme mit der AVR-Montage, aber die meisten Projekte funktionieren aufgrund von Geschwindigkeitsproblemen nur mit niedrigen Auflösungen.
Die Uzebox verwendet einen auf 28 MHz übertakteten ATmega644, um rein in der Software bis zu 720 Pixel pro Zeile zu erzeugen.
@Janka Dieses Projekt ist wirklich interessant und kann mir sehr helfen! Der atmega644 ist leicht zu finden.
Warum in der Videoleistung 10 Generationen zurückgehen? dqydj.com/… aber wenn es sein muss. 4 GB TV-Boxen, die 1080p unterstützen, kosten nur 50 US-Dollar
@TonyStewart.EEsince'75 Ich möchte keine Blackbox für die Videogenerierung verwenden, es ist der springende Punkt eines 8-Bit-Homebrew-Computers, mach es selbst. Ich kann einfach einen Himbeer-Pi durch GPIO anschließen und bekomme eine Full-HD-Auflösung;)

Antworten (2)

Bei NTSC beträgt der aktive Teil einer horizontalen Linie 52,6 us. Um dort 640 Pixel zu packen, würde man einen Shift-Takt von 12,17 MHz und eine Laderate von 1,52 MHz benötigen. Ich glaube nicht, dass ein AVR eine Leseadresse generieren, die Daten lesen, in das PISO-Schieberegister schieben und die nächste RAM-Adresse schnell genug berechnen kann.

Zurück in der Zeit zu mikroprozessorbasierten Videoterminals verwendeten sie die Mikros für die Benutzeroberfläche und das Schreiben in den (Dual-Port-) Video-RAM. Das Scannen des RAM und das Umwandeln seines Inhalts in Video war alles zufällige Hardware. Heute würde diese Hardware sicherlich in ein CPLD oder FPGA passen, aber funktional wäre es immer noch eine Nicht-Firmware-Engine.

Ja. Sie haben Recht. Ich meide CPLD oder FPGA wegen des eigentlichen Preises, sie sind hier sehr teuer. Ich dachte. Wenn ich das ASCII auf AVR-Flash speichere und einen VT100 emuliere, anstatt einen externen Framebuffer zu verwenden, wäre es viel schneller, die Daten zu sammeln und das Schieberegister zu füttern (es gibt einige Berechnungen, aber das Lesen aus dem internen Flash sollte schneller sein). Ich habe etwas gerechnet und wenn ich mich nicht irre, gibt es ~ 104 Zyklen zwischen einer Schiebeladung und einer anderen (unter Verwendung eines 8-Bit-Schieberegisters). Etwa 50 Anweisungen in der AVR-Architektur.

Die Datapoint Corporation, die die Intel 4004-Architektur definierte (die Intel beim Bauen zurückschreckte), verwendete alle PMOS-Schieberegister in ihren frühen Terminals. Die Gründer (ursprünglich bei der Computer Terminal Corporation) waren Phil Ray und Gus Roach, die ihr Computerverständnis als Programmmanager für NASA-Bodenterminalgeräte für Gemini-Telemetriegeräte verfeinerten. Bei der Definition ihrer "Terminals" schlossen sie die vollständige Programmierbarkeit ein, da sie wussten, dass sie wirklich Computer verkauften. Alle Speicher sind Schieberegister.

analogsystemsrf - Ausgezeichnetes Stück Geschichte.