Finora ci siamo accontentati di alcune simulazioni software per capire il funzionamento di una CPU. Questi strumenti supportano sia le architetture classiche a 8 bit che quelle più complesse dei chip moderni. Seppur interessanti, queste rimangono solamente delle rappresentazioni software.
Non sarebbe più divertente eseguire il debug e visualizzare l’esecuzione delle istruzioni in una CPU tramite dei LED? Questo è proprio quello è possibile fare con il MK1 8Bit Computer di Federico Scozzafava, dove è possibile vedere e toccare con mano le meccaniche interne di una CPU.
È facile notare come il MK1 8bit Computer abbia molto in comune con il computer su breadboard progettato da Ben Eater (autore di un’eccezionale video-serie educative sul tema). Scozzafava ammette prontamente che il suo progetto ha tratto notevole ispirazione da quello di Eater, ma è anche veloce nel sottolineare che la sua CPU ha un’architettura diversa. Uno sguardo veloce alle caratteristiche delle due macchine mostra che l’unità di logica aritmetica (ALU) del MK1 supporta più operazioni e più RAM rispetto al design di Eater. Inoltre, come testimoniano le immagini, questo è chiaramente un design a circuito stampato (PCB) e non una breadboard!
Qui, Scozzafava ci spiega la motivazione dietro la creazione della sua CPU da zero:
Mi sono sempre chiesto se fossi in grado di costruire una CPU da zero. Siamo circondati da così tanti dispositivi smart, circuiti e dispositivi che usiamo e tendiamo a considerarli come una scatola nera, impossibili da replicare o addirittura di capirne il funzionamento.
La creazione di un PCB pulito, con numerosi indicatori LED, semplifica sicuramente la comprensione del funzionamento di una CPU.
Specifiche tecniche
Le specifiche del MK1 8bit Computer:
- Bus estendibile a 8 bit
- Supporto per periferiche esterne, come un display a caratteri LCD
- Clock regolabile da 1 Hz a 32 kHz
- ALU con operazioni Add, Sub, OR, AND, NOT, Shift e Rotate
- Logica combinatoriale della Control Until implementata con EEPROM
- Display a 4 cifre come output visivo
Un’attenta, o forse anche casuale, ispezione del PCB rivela un Arduino Nano. Aspettate un attimo, Scozzafava sta forse usando qualche trucco? l’Arduino, forse, pilota i LED al posto delle porte logiche serie 7400 !?
Benché sia possibile caricare il codice nella memoria del computer utilizzando dei dip switch, un metodo preferibile è quello di caricare il codice direttamente nella memoria da un PC, tramite un Arduino Nano. Quest’ultimo agisce come un convertitore da USB a seriale alla CPU fai-da-te. La versione 2 della MK1 CPU, inoltre, include una scheda dedicata per il caricamento del codice, tramite una memoria flash, eliminando la necessità di un PC e Arduino.
A proposito della versione due, avrete sicuramente notato diversi fili nella foto. La prima versione del computer è il risultato della prima progettazione di un PCB da parte di Scozzafava. La seconda revisione del circuito risolve questi piccoli problemi oltre ad aggiunge nuove funzionalità al computer.
Dimostrazione
Questo video mostra diversi programmi in esecuzione sul computer MK1 a 8 bit. Gli esempi includono la generazione della sequenza di Fibonacci, le tabelline, i numeri primi e l’ordinamento tramite bubble sort di una sequenza casuale.
Con un PCB così elegante ed un design pulito, a lavoro già con il suo successore, il progetto CPU di Scozzafava merita di essere seguito. Date un’occhiata al repository GitHub del computer 8bit MK1 per la documentazione e file di progettazione. Ci sono schemi KiCad per ciascuna delle schede, codice per l’uploader, alcune spiegazioni e immagini.
Articolo tradotto da: https://www.hackster.io/news/see-inside-of-a-cpu-with-the-mk1-8bit-computer-14fa9e313c73