Apple2fpga: Reconstructing an Apple II+ on an FPGA [Romanian]

Original at: http://www.cs.columbia.edu/~sedwards/apple2fpga/

apple skhema

Apple2fpga: Reconstruirea unui Apple II + pe un FPGA (matrice de programare vertical) 

Stephen A. Edwards

Universitatea din  Columbia

Ca un cadou de Crăciun pentru mine în anul 2007, am implementat un Apple II + din anii 1980 în VHDL pentru a o rula pe planșetă Altera DE2 FPGA. Scopul, în afară de divertisment, a fost ilustrarea puterii (sau mai degrabă, puterii reduse) de FPGA-uri moderne. Pus în alt mod, ceea cea făcut primul milioan luiSteve Jobs poate fi acum un proiect de clasă pentru pentru lecțiile mele de sisteme integrate4840.

Ce este un Apple II? 

skhema

Apple II a fost unul dintre primele calculatoare care cu adevărat au avut succes. Proiectat de Steve Wozniak ("Woz") şi introduse pentru prima dată în 1977, într-adevăr ei au decolat în 1978, când a fost introdus un floppy 140k Disk Drive II pe 5.25 ich-uri, urmat de VisiCalc, primul program de calcul tabelar. 

Destul de simplu, chiar pentru standardele de azi, Apple II a fost construit cu procesorieftin de 8-biți 6502 de la MOS Technology (a fost vîndut cu 25 dolari atunci când un Intel 8080 s-a vândut pentru 179 dolari). 6502 a avut magistrală de date pe opt biţi şi ar putea accesa 64K de memorie. În Apple II, aceastarulează la puţin peste 1 MHz. În afară de ROM-uri şi DRAM-uri, restul  circuitelor consta dinchip-uri discrete LS TTL.

În timp ce a fost livrat primul Apple II cu 4K de DRAM, aceasta a devenit rapid un standard de 48k, iar mai târziu de 64K, prin ajutorul băncii de comutare si un card de expansiune a memoriei. DRAM, la acel moment a fost o tehnologie de ultimă oră. În timp ce acest calculator au fost dificil de utilizat, de aceea că necesita surse de alimentare de5, 12, şi 5V şi care trebuia să fie actualizată periodic, îmbunătăţirea lor de aproximativ  şase ori în densitate a făcut-o foarte  prețioasă.Într-un anunţ devremea ceea putem vedea cum el enumărăavantajele lui Apple I.

În timp ce Apple II a venit cu o tastatură integrată, cu un sound port rudimentar ( deun bit), şi un port de joc, care de obicei era conectat la un joystick analog cu două axe, caracteristica lui principală a fost  video ecranul integrat. Era generat compozit (prin bandă) cu video NTSC care a fost trimis, de obicei, printr-un modulator RF pentru a apărea, de exemplu, pe un canal TV 3.

Apple II a avut trei moduri video: text în negru-şi-alb40 X 24  scris doar cu majuscule, de 40 X 48 16-culori cu rezoluţia de afişare scăzută şi și un display un 140 x 280 cu 6 culori cu  rezoluţie înaltă.

Apple II aproape poate fi considerat ca un dispozitiv de afişare video care s-a întâmplat ca să aibă un microprocesor conectat la el. Woz a început cu un ceascare avea 14.31818 MHz de pixel – exact de patru ori mai mic signal de culori  – 3.579545 MHz  - utilizat în video NTSC. Din cauza culorii a fost adaugat in standard alb-negru de NTSC, modele alb-negre asemănătoare trimise exact la această frecvenţă sunt interpretate ca culoare.

Woz a derivatCPU ceasului de la ceasul de 14.31818 MHz prin împărţirea aproximativ în paisprezece părți. Spun aproximativ deoarece, în fapt, fiecare ciclu de CPU de şaizeci şi cinci (cite unu pe linie orizontală de scanare) este întinsă de două   perioade de ceas cîte14MHz pentru a păstra faza de frecvenţă 3.58 MHz a signalului de culoare. Astfel, există 65 * 14 + 2 = 912 perioade de pixeli pe linie, sau exact 228 de cicluri signalelor de culoare 3.58 MHz pe linie.

Atât CPU şi cît și video acceseazăpe un octet memorie de la 1 MHz.  Accesările lor sunt intercalate, astfel încât DRAM eficient funcţionează la 2 MHz. Un alt truc lui Woz: adresele video sunt de aşa natură încât împrospătarea lui video, de asemenea, e suficientă pentru reîmprospătarea lui DRAM, astfel încât nu e nevoie de cicluri suplimentare de reîmprospătare.

În reconstrucţie mea, am încercat să reproduc comportamentul circuitelor timp (inclusiv ciclul întins), cât mai strâns e posibil. Cu toate acestea, mai degrabă decât generarea efectivă a ceasurilor cu frecvenţă scăzută în acest fel (în general, o idee proastă în design modern, în cazul în care utilizarea on-chip-uluiPLL cu control oblic este tehnica preferată), eu pot rulam la un ceas de 14 MHz şi distribuiam blocarea permitînd semnalelor accesul  pentru ceva ce a fost iniţial cronometrat la una din frecvenţele derivate.

Reconstrucţia mea

Procesorul meu Apple II constă dintr-un generator de sincronizare, un generator video, core procesor 6502, pe care i-am luat de la emulatorul Commodore 64 lui  Peter Wendrich, ROM-uri și unele logici aleatorii pentru decodarea adreselor de bord şi altele funcții de intrare / ieșire. În linii mari, miezul  aşteaptă unsemnal de ceas de 14.31818 MHz, intrare de la tastatură, acces la un RAM pe 64K, şi accesul la canalul periferic (în prezent, doar o unitate de disc emulator) şi generează un flux video de un bit, împreună cu un bit de date audio pentru difuzor.

Pentru a face acest processor ușor de utilizat, am ataşat la otastatură PS / 2 (de la Alex Freed şi ALSE), un disc emulator, si un dublor de linii VGA  care converteşte rata de 15 kHz reîmprospătațiorizontal din din ieșireavideo de un bit Apple film la VGA culorat cu rată de 30 kHz de reîmprospătare orizontală.

A dublator de linie conţine memorie pentru două linii de video de la Apple.  Eu am un ecran pe unul din ei  în timp ce celălalt este citit din ieșirea video-ului Apple. În adaos la interpretarea şi generarea semnalelor orizontale şi vertical a sincronizării, el converteşte fluxul video de un bit de culoare folosind un algoritm, probabil, chiar prea simplu: la fiecare patru pixeli de 14 MHz sunt interpretate ca un bloc şi afişate ca o singură culoare. Acest lucru este rezonabil și eficace, şi produce multe dintre culori ciudategenerînd astfel efectele originale lui Apple II, dar nu este destul de drept, deoarece un televizor adevăratde fapt, îndeplineşte mai blând filtrarerea pe nivel scăzut de semnalele a luminii și chromaticii. Un algoritm mai bun sunt considerați biţi grupate fiecare cîte patru. Cu toate acestea, ecranul este cu siguranţă mai uşor de utilizat.

skhema skhema skhema

Emulare mea a a Disk IIeste primitivă (numai pentru citire), dar funcţională. Am stoca  imagine"executate" de o dischetă de 5,25 inch pe un card SD extern şi le-am citit în memorie on-chip un track  la un moment dat. Am codat o interfaţă SPI (una dintre cele trei vorbite pentru carduriSDtipice)în VHDL, care este capabil să trezească cardul şi să descărce blocuri aleatoare de 256 octeți. Controlarea acestuia constădintr-un simplu emulator pentru controlerul Disk II, care oferă o interfaţă de nivel foarte scăzut pentru lucru. De exemplu, scrierea / citireaeste mutată sub controlul software-ului prin pulsareselective a patru faze de motor pas cu pas. Hardware-ul meu emulator vede aceste impulsuri, şi modele pe care calea în prezent locuieşte.

De fiecare dată când se schimbă numărul de cale, controller-ul meu citeşte de pe cardul SD un grup nou de 6655 octeți (256 * 25) în memorie căii. Între timp, eu am emulst disc de formare prin schimbarea periodică a adresei datelor citite de către CPU atunci când el se accesează la locațiile discului I / O (intrare/ieșire).

Pentru depanare, eu am scos PC-ul procesorului la patru dintre şapte segmente a ecranului de pe bord şi calea curentă pentru unitatea pe încă două. În timp ce PC-ul este, de obicei, schimbat atât de repede, încît aceasta devine o neclaritate, modele apar de multe ori. De exemplu, PC-ul rămâne foarte concentrat atunci când computerul este în aşteptare rapidă. În mod similar, am găsit o mulţime de software, inclusiv sistemul de operare atunci când se mişcă driver-ul principal, solicitînd monitorului "întârziere" de rutina pentru a incetini procesele.

Compararea implementărilor

skhema

O motivaţie generalăpentru acest proiect a fost ilustrarea modul în care FPGA-uri integrate moderne au apărut şi cât de relativ puțină putere ei consumă. Așa, eu am comparat puterea consumată de un Apple II + obișnuit, un Apple II + emulat în software, şi reconstrucţiamea  deFPGA.

Pentru a măsura puterea, am folosit un măsurător de putereieftin şi foarte uşor în utilizarecu denumirea "Kill A Watt". Acesta susţine precizie de 0,2%, ce este destul pentr a  vedea de ce (watt?) așa se intîmplă.

În fiecare caz, am masurat puterea consumată de sistemul de excluzând monitorul. Puterea a fost cu mai mult sau mai puţin constantă pentru Dell (în timp ce emulator a fost rulat) şi bordul FPGA. Consumul puterii lui Apple II varia considerabil atunci când discul a fost activ.

Numai pentru numărul lui Apple II este cu adevărat drept. Dell are  copleşitor de supraputere, și a avut mult mai multă memorie (192 MB) decât este necesar pentru a rula un emulatorLinux si Apple II, şi nu a folosit niciodată dischetele, CD ROM-uri etc. FPGA bordul are probleme similare: ea are, de asemenea Ethernet (neutilizat) , USB, şi interfeţe video NTSC, precum chip-uri SDRAM si Flash. În timp ce niciunul nu a fost difuzat, ei au consumat o anumită putere.

Un Apple II + Un Apple II + emulat în software-ul Un Apple II + pe un FPGA
skhema skhema skhema
skhema skhema skhema
skhema (Disk activ)
Apple II + Dell Optiplex GXa Altera / Terasic mm şi 2
Anul producerii 1982 Anul producerii 1998 Anul producerii 2006
Synertek 6502 Intel Pentium II Altera EP2C35F672C6 II Cyclone
LS TTL, 16K DRAM, 1 MHz CPU NMOS 233 MHz, 250 nm CPU CMOS CMOS 90 nm
CPU: 4K transistori? CPU: 7.5M transistori 33K Les, 150M tranzistori?

Resurse tehnice

Apple II a fost documentat în detalii. Începand cu primul Manualul de ReferinţăApple II "Redbook", Apple a publicat schema pentru seria Apple II. Când Woz a vorbit la Columbia, el a menţionat că acest lucru a fost intenţionat: el a vrut să împartă informaţii tehnice cît mult ede posibil pentru a educa utilizatorii. O astfel de atitudine este rară în zile azi.

Două treimi a cărţii oferă un comentariu mai detaliat: articolele luiWinston Gayler The Apple II Circuit Description (Sams, 1983), şi Understanding the Apple II (Quality Software, 1983) luiJim Sather Apple II. Am consultat frecvent pe ambii în timp ceam scris VHDL pentru acest proiect. Pentru a înţelege Disk II şi mai precis, sistemul de operare Apple disc (DOS 3.3), citiți articolul lui Don Worth şi Pieter Lechner Beneath Apple DOS (Quality Software, 1983).Este al doilea articolul de așa fel, deşi este mai mult concentrat pe software decât primele două exemple .

Toate aceste cărţi sunt tipărite, dar unele au fost scanate şi arhivate pe web.1000bit.net are o colectie mai ales de minunată.

Proiectul lui Alex Freed FPGApplea inspirat acest articol. Alex a împărțit cu mine codul său sursă (nu a fost așa de rau cum el a spus pe site-ul său), şi l-am folosit ca referinţă, aşa cum  scris propria mea versiune.

Descărcări

Retrocomputing pe un FPGA: Reconstruirea unui Computer personal cu logică programabilă din anii 80, un raport tehnic cu privire la acest proiect. 

apple2fpga-1.1.zip

apple2fpga-0.1.tar.gz

Aceasta conţine toate surse VHDL, precum şi unele script-uri, programe utilitare şi o imagine de disc boot-abil. Este gata pentru compilare cu sistem de Altera lui Quartus pentru bordulDE2 FPGA. Alte plăci sau alte medii vor necesita unele adaptări.

ok ok