Apple2fpga: Rekonstruktion eines Apple II + auf einem FPGA


Apple2fpga: Reconstructing an Apple II+ on an FPGA
Copyright © By Stephen Edwards
For original English text, go to: http://www1.cs.columbia.edu/~sedwards/apple2fpga/

Rainbow Apple LogoAltera DE2 board

Apple2fpga: Rekonstruktion eines Apple II + auf
ein FPGA
Stephen A. Edwards
Columbia University

Als Weihnachtsgeschenk für mich im Jahr 2007 umgesetzt ich eine 1980er-Ära von Apple II + in VHDL auf ausführenein Altera
DE2 FPGA-Board
. Der Punkt, abgesehen von Unterhaltung, wurde illustrieren die Macht (oder besser gesagt, low power) der modernen FPGAs. Setzen einen anderen Weg, was hat Steve Jobs seine erste Million ist jetzt seinKlasse-Projekt für meine 4840 Embedded-Systeme -Klasse.

Was ist ein Apple II?


Inside an Apple II

Der Apple II war einer der ersten wirklich erfolgreichen persönlichen
Computern. Designed by Steve Wozniak (“Woz”) und der ersten
eingeführt in 1977, es wirklich losging 1978, als die 140K
Disk II 5,25-Zoll-Floppy-Laufwerk wurde eingeführt, gefolgt von
VisiCalc, das erste Tabellenkalkulationsprogramm.

Ziemlich einfach selbst nach den Maßstäben des Tages war der Apple II
erbaut um die preiswerten 8-Bit-6502-Prozessor von MOS
Technology (es verkauft für $ 25, wenn ein Intel 8080 verkauft für $ 179).
Die 6502 war ein Acht-Bit-Datenbus und konnte den Zugang 64K
Speicher. In den Apple II, läuft es auf etwas über 1 MHz.
Abgesehen von den ROMs und DRAMs, der Rest der Schaltung
bestand aus diskreten LS TTL-Chips.

Während das erste Apple II mit 4K von DRAM geliefert, dies schnell
stieg auf einen Standard von 48K auf 64K und später durch die Hilfe von
Bankumschaltung und eine Speichererweiterung. DRAMs, an dieser Zeit wurden Spitzentechnologie. Während sie schwer
zu bedienen und benötigt +5, +12, und-5V Netzteile und benötigen, um werden in regelmäßigen Abständen aktualisiert, die etwa sechsfache Verbesserung in der Dichte hat es sich gelohnt. Breathless Kopie in einem frühen Anzeige für die
Apple I angepriesen ihre Vorteile.

Während der Apple II mit einer integrierten Tastatur kam, ein rudimentär (one-bit) Sound-Port und einen Game-Port in der Regel
verbunden mit einem Zwei-Achsen Analog-Joystick, war das Hauptmerkmal seiner integrierten Video-Display. Es generiert Composite (Basisband) NTSC Video, das in der Regel durch einen HF-Modulator gesendet wurde erscheinen z. B., ein TV-Kanal 3.

Der Apple II hatte drei Video-Modi: ein 40 X 24 Groß-only Schwarz-Weiß-Text-Display, eine 40 X 48 16-Farben mit niedriger Auflösung
Display und eine 140 X 280 6-Farb-Display mit hoher Auflösung.

Der Apple II kann fast als eine Video-Display-Gerät gedacht werden dies geschieht, um einen Mikroprozessor mit ihm verbunden. Woz
begann mit einem 14.31818 MHZ Master Pixeltakt – genau vier fachen 3.579545 MHz ColorBurst Frequenz in NTSC verwendet
video. Aufgrund der Art, Farbe war es, die hinzugefügt Schwarz-Weiß-NTSC-Standard, scheinbar schwarz-weiß
Muster bei genau dieser Frequenz gesendet werden interpretiert als Farbe.

Woz abgeleitet der CPU-Takt von den 14.31818 MHZ Uhr durchDivision durch etwa vierzehn. Ich sage etwa, weil in der Tat
jeder 65. CPU-Zyklus (einmal pro horizontale Scan-Linie) ist gestreckt über zwei 14 MHz Taktperioden der Phase der Erhaltung
die 3,58 MHz ColorBurst Frequenz. So gibt es 65 * 14 + 2 = 912 Pixel Perioden pro Zeile, oder genau 228 Zyklen der 3,58
MHz ColorBurst pro Zeile.

Sowohl die CPU-und Video-Zugriff auf ein Byte Speicher bei 1 MHz. Ihre Zugriffe verschachtelt sind, so dass die DRAM effektiv arbeitet bei 2
MHz. Ein weiterer Woz Trick: das Video-Adressen sind so, dass erfrischenden das Video auch genügt, um den DRAMs aktualisieren, so dass keine
zusätzlichen Refresh-Zyklen benötigt werden.

In meiner Rekonstruktion habe ich versucht, das Verhalten der Reproduktion Timing-Schaltung (einschließlich der gestreckten Zyklus) so nah wie möglich ist. Anstatt jedoch tatsächlich zu generieren niedrigeren Taktfrequenzen auf diese Weise (in der Regel eine schlechte Idee, in
modernes Design, wo der Einsatz von On-Chip-PLL mit Skew-Kontrolle ist die bevorzugte Technik), lief ich die meisten der Kern an den 14
MHz Takt und verteilt Riegel Freigaben auf alles, was Ursprünglich war an einem der abgeleiteten Frequenzen getaktet.

My Wiederaufbau

Mein Apple II Kern besteht aus einem Taktgeber, ein Video Generator, der 6502 Prozessor-Kern, die ich aus nahm
Peter Wendrich ist Commodore 64 Emulator , die ROMS, und einige zufällige Logik für Adressdekodierung und anderen onboard I / O. Im Großen und Ganzen den Kern erwartet einen 14.31818 MHZ Taktsignal, Eingabe über die Tastatur, Zugang zu einer 64K RAM und Zugriff auf die Peripherie-Bus (Derzeit nur ein Laufwerk Emulator) und erzeugt ein Ein-Bit Video-Stream zusammen mit einem Bit Audio-Daten für den Lautsprecher.

Um diesen Kern verwendbar, befestigte ich an eine PS / 2 Tastatur Controller (von Alex Freed und ELSE ), eine Scheibe Emulator und ein VGA-Line-Doubler, dass die 15 kHz horizontal wandelt Bildwiederholfrequenz des Apples Ein-Bit-Video-Ausgang, um eine Farbe VGA
Ausgang mit 30 kHz horizontale Refresh-Rate.

Die Linie Verdoppler enthält Speicher für zwei Linien von Videos aus dem Apple; zeige ich eine doppelt, während die andere aus gelesen werden
Apples Video-Ausgang. Zusätzlich zu interpretieren und Erzeugung der horizontalen und vertikalen Synchronisation Signale,
Er wandelt den Ein-Bit-Video-Stream an Farbe mit einem wahrscheinlichübermäßig einfachen Algorithmus: alle vier 14 MHz Pixel
interpretiert als Block und als eine einzige Farbe. Dies ist recht wirksam, und produziert viele der ungeraden Farbe
Farbsäume Wirkungen der ursprünglichen Apple II, ist aber nicht ganz Recht, da eine wahre Fernseher tatsächlich durchführt schonender
Tiefpass-Filterung auf der luimance und Chrominanz. Abesseren Algorithmus würde erwägen Bits neben jeder Gruppe von
vier. Dennoch ist das Display sicherlich brauchbar.

Apple II text modeApple II lores modeApple II hires mode
Meine Emulation der Disk II ist primitiv (read-only), aber funktional. Lagere ich ein “nibblized” Bild von einem 5,25-Zoll-Diskette
auf einer externen SD-Karte und las es in den On-Chip-Speicher eine Spuru einem Zeitpunkt. I kodiert ein SPI-Interface (einer der drei gesprochen von typischen SD-Karten) in VHDL, die in der Lage, aufzuwachen ist die Karte und Download zufälligen 256-Byte-Blöcken. Controlling ist dies eine einfache Emulator für die Disk II-Controller, die eine sehr bietet Low-Level-Schnittstelle zum Antrieb. Zum Beispiel die Lese / Schreib-Kopf unter Softwaresteuerung durch selektives pulsierende vier verschoben Schrittmotor Phasen. Meine Hardware-Emulator Uhren dieser Impulse und Modelle auf welcher Spur der Kopf derzeit befindet.

Jedes Mal, wenn die Track-Nummer ändert, liest mein Controller aus dem SD-Karte eine neue Gruppe von 6655 Byte (256 * 25) in Track-Speicher. Inzwischen emulieren I die sich drehende Scheibe durch periodisch ändernden die Adresse der Daten von der CPU gelesen, wenn es greift auf die Disk I / O Standorten.

Für das Debuggen, brachte ich die CPU-PC, vier der Sieben-Segment-Anzeigen auf dem Board und den aktuellen Titel für
das Laufwerk, auf zwei weitere. Während die PC ist in der Regel ändern, so schnell es verschwommen wird, tun Muster oft auftauchen. Zum Beispiel, der PC bleibt hoch konzentriert, wenn der Computer am wartet der Eingabeaufforderung ein. Ebenso habe ich eine Menge Software gefunden, einschließlich des Betriebssystems, wenn es in Bewegung ist der Antrieb Kopf, Anrufe des Monitors “delay”-Routine, die Dinge zu verlangsamen.

Vergleich Implementierungen

Kill A Watt power meter

Eine zentrale Motivation für dieses Projekt war zu zeigen, wie integrierte Moderne FPGAs geworden und wie vergleichsweise wenig Macht, die sie verbrauchen. So verglich ich die Kraft durch eine tatsächliche Apple II +, eine verbrauchte Apple II + emuliert in Software, und meine FPGA Wiederaufbau.

Zur Messung der Leistung, habe ich die kostengünstige und sehr einfach zu
Verwendung “Kill Ein Watt “ Leistungsmesser. Diese Forderungen 0,2% Genauigkeit, die viel zu bekommen eine ungefähre Vorstellung von dem, was (Watt?) vor sich geht.

In jedem Fall, maß ich die Macht durch das System verbraucht ohne den Monitor. Die Leistung war mehr oder weniger konstant Dell (während der Emulator lief) und FPGA-Board, das Apple II Der Stromverbrauch variiert erheblich, wenn die Festplatte aktiv war (Spinning).

Nur die Nummer für den Apple II ist wirklich fair. Der Dell ist freakishly überwältigt, hatte weit mehr Speicher (192 MB) als notwendig, um Linux und Apple II Emulator laufen und nie benutzt seine Diskettenlaufwerk, CD-ROM, etc. Das FPGA-Board hat ähnliche Probleme: es hat auch (unbenutzt) Ethernet, USB und NTSC-Video Schnittstellen sowie SDRAM-und Flash-Chips. Während keiner war Laufen sie immer noch etwas Strom verbraucht.

An Apple II + An Apple II + emuliert in Software An Apple II + auf einem FPGA
An Apple II+

An Apple II+ on a Dell


An Apple II+ on an FPGA
22W 62W 5W
31W
(Disk aktiv)
Apple II + Dell Optiplex GXA Altera / Terasic DE2
c. 1982 c. 1998 c. 2006
Synertek 6502 Intel Pentium II Altera Cyclone II EP2C35F672C6
LS TTL, 16K DRAMs, 1 MHz NMOS CPU 233 MHz, 250 nm-CMOS-CPU 90 nm CMOS
CPU: 4K-Transistoren CPU: 7,5 Millionen Transistoren 33K LEs, 150M Transistoren?

Technical Resources

Der Apple II hat sehr ausführlich dokumentiert worden. Beginnend mit der erste Apple II “Redbook” Reference Manual, Apple selbst hat
veröffentlicht die Schaltpläne für den Apple II-Serie. Wenn Woz sprach an der Columbia, erwähnte er diese beabsichtigt war: Er wollte zu teilen
so viel technische Informationen wie möglich an die Nutzer zu erziehen.
Eine solche Haltung ist selten in diesen Tagen.

Zwei Drittanbieter-Bücher bieten noch detailliertere Erläuterungen: Winston Gayler ist Der Apple II Schaltungsbeschreibung
(Sams, 1983) und Jim Sather ist Understanding Apple II (Quality Software, 1983). Ich konsultierte sowohl häufig
beim Schreiben der VHDL für dieses Projekt. Für das Verständnis der Disk II und genauer, Apples Disk Operating System (DOS
3,3), Don Worth und Pieter Lechner Beneath Apple DOS (Quality Software, 1983) ist unübertroffen, auch wenn es viel ist
mehr Software-fokussierten als die ersten beiden Bücher.

Alle diese Bücher sind lange out-of-print, aber einige wurden gescannt und archiviert werden auf der web. 1000bit.net hat eine besonders schöne Sammlung.

Alex Freed ist FPGApple Projekt inspiriert diese.  Alex war so freundlich, seinen Source-Code mit mir teilen (es war
nicht so schlecht, wie er behauptet auf seiner Website), und ich benutzte es als Referenz als ich schrieb meine eigenen.

Downloads

Retrocomputing auf einem FPGA: Rekonstruktion eines 80er-Ära Home Computer mit programmierbarer Logic , einen technischen Bericht über das Projekt.

apple2fpga-1.1.zip

apple2fpga-0.1.tar.gz

Diese enthält alle VHDL-Quelle sowie einige Skripte, Hilfsprogramme und eine bootfähige Disk-Image. Sie ist bereit, compile with Altera Quartus-System für die DE2 FPGA-Board.
Andere Platten oder anderen Umgebungen erfordert eine gewisse Anpassung.