Quando il professore di Elettronica dei Sistemi Digitali ci disse alla fine del modulo dedicato ai circuiti logici “Ecco, adesso potreste essere in grado di costruire un computer” mi immaginavo un ammasso di cavi e cavetti che collegavano quelle porte AND, OR, XOR e così via raffigurandomele come sono disegnate nei rispettivi simboli -si ero assai niubbo-. Il mio fantasticare si fermò lì. Il modulo successivo parlò invece del linguaggio macchina e simulavamo sul mitico DMC8, una emulazione di una ipotetica riduzione dell’ancor più leggendario e reale Zilog Z80. Non ero ancora pienamente convinto che quei circuiti logici erano all’interno di un minuscolo microprocessore.
Vi presento un nerd che si è veramente messo a fare quello che io fantasticai: Steve Chamberlin è uno che ha sempre avuto le mani in pasta, iniziando a maneggiare già dagli anni 80 computer tipo l’Apple II e il Commodore 64
[quote]
Al contrario dei PC attuali, i computer di quell’epoca erano invitanti per gli smanettoni, con un hardware relativamente semplice e un interprete BASIC al boot.
[/quote]
Dopo aver appreso la logica digitale e aver maneggiato il [url=http://www.nerdkits.com/]Nerd Kit[/url] del MIT, un aggeggio per la prototipazione dell’hardware, è venuto in anni più recenti a conoscenza di progetti che miravano a emulare lo spirito degli anni 80 costruendo da zero computer (intendo proprio da circuiti, memorie, chip, cavi ed assemblatori): perchè non iniziare a farsi il proprio pc casalingo?
[b]I requisiti del progetto[/b]
-Costruzione da zero usando la logica di base della [url=http://it.wikipedia.org/wiki/Serie_7400]serie 7400[/url] mantenendo una bassa complessità a livello hardware;
-Essere interfacciabile con un PC
-Fare il boot in una console [url=http://it.wikipedia.org/wiki/BASIC]BASIC[/url];
-Avere un OS con multitasking di tipo [url=http://it.wikipedia.org/wiki/Pre-rilascio]preemptive[/url];
-Usare periferiche di input (tastiera) e output (VGA e suono)
[b]La storia[/b]
Un design iniziale verificato tramite [url=http://it.wikipedia.org/wiki/Verilog]Verilog[/url] conduce nel febbraio dell’anno successivo all’inizio dei lavori usando una board [url=http://en.wikipedia.org/wiki/Wire_wrap]wire wrap[/url] Augat, una tavola con chiodini -su cui vanno avvolti i fili- per la costruzione di circuiti elettronici senza doverli stampare (chi ha fatto elettronica dovrebbe conoscere quanto meno le [url=http://it.wikipedia.org/wiki/Breadboard]bread board[/url]), su cui dovevano starci una cinquantina di chip. In Aprile si era già a metà strada, e il BMOW 1 (il nome viene dall’acronimo Big Mess O’ Wires, Grande Groviglio di Fili) usando un programma caricato su ROM eseguì il calcolo del dodicesimo termine della serie di Fibonacci. Da qui a Febbrio 2009 furono aggiunte man mano il video VGA, l’audio a tre voci (mischiate in un canale, vedi [url=http://it.wikipedia.org/wiki/Scheda_audio]wikipedia[/url]), il BASIC, un bootloader per comunicare con un PC connesso, e perfino la possibilità di eseguire programmi compilati da assembly o da C. Entro il mese successivo, BMOW1 era funzionante ed inserito in un case (anche se non si curò dei bug successivi, ad esempio il tasto C che funziona solo nella combinazione CTRL-C).
[b]Le Specifiche[/b]
-Clock a 2 MHz (possibilità di alzarlo a 3)
-RAM 512KB, ROM 512KB (questa contiene un bootloader, un programma con menu)
-Alimentazione: 10W forniti a 2Ampere e 5Volt
-VGA con risoluzione 512×480 in bianco/nero 128×240 a 256 colori
-Suono proveniente da un chip audio programmabile a 3 voci
-Display di debug su LCD a 2 righe di 24 caratteri
-1250 fili che connettono 2500 avvolgimenti
-un cavo seriale consente di spostare i dati da un PC
[b]L’architettura[/b]
I bus dati sono a 8 bit, quello degli indirizzi a 24 bit. Ci sono quattro registri 8 bit generici e tre registri a 24 bit contengono [url=http://it.wikipedia.org/wiki/Program_counter]Program Counter[/url], Stack Pointer e Address Pointer. I registri e la [url=http://it.wikipedia.org/wiki/Unit%C3%A0_aritmetica_e_logica]ALU[/url] sono connessi da un bus dati, un altro connette RAM, ROM e le periferiche mappate in memoria. La ALU ha anche due bus dati dedicati per l’input destro e sinistro.
Le istruzioni sono comporte da massimo 15 microistruzioni (logica microprogrammata) che sono contenute in tre ROM parallele per avere una [url=http://it.wikipedia.org/wiki/Word]parola[/url] di 24bit, i bit controllano tutti i chip selezionando e abilitando gli input.
Nonostante gli indirizzi siano a 24 bit, è installato poco più di 1MB di memoria complessivamente contro i 16 possibili. Le istruzioni hanno una parte a 8 bit invisibile (indica il banco di memoria) e una a 16 bit che è direttamente usabile dai programmi.
Nel video di testa vedete la sequenza di boot con accesso al gioco di scacchi, invece qua sotto un test della scheda sonora con un’ulteriore panoramica sull’hardware.
Sul sito c’è una [url=http://www.stevechamberlin.com/cpu/downloads/]sezione[/url] da cui scaricare schemi, diagrammi a blocchi e programmi di supporto (simulatore, assemblatore).
Liberamente tratto da [url=http://www.stevechamberlin.com/cpu/about/]quo[/url] e [url=http://www.stevechamberlin.com/cpu/bmow1/]qua[/url].