TTL COMPUTER BY ALESSIO LOMBARDO

[HOME] [WORKLOG] [HARDWARE] [CONTACT-ME] [ ]

 

Questa è la pagina dedicata al Worklog ovvero il "Diario" della costruzione di questo ambizioso progetto. Il sito nasce a metà del lavoro. Quindi la parte iniziale del progetto è raccontata non dettagliatamente. Clicca sulle foto per ingrandirle.

14/01/2012

Realizzati alcuni schemi elettrici provvisori della "Memory Section" e della "Control Unit Section". Inoltre ho costruito la prima parte della scheda "Control Unit Internal Bus" (completata al 30%).

12/01/2012

Completata la progettazione logica del TTL Computer Full. Si passa adesso alla progettazione degli schemi elettrici con Fidocad.

   

Schema logico del TTL Computer Full (a sinistra) e della sua Control Unit (a destra)

21/01/2012

Con il software Multisim 11 della National Instruments ho iniziato a costruire la Control Unit. Durante le prove ho effettuato delle piccole modifiche ai Controller. Ad esempio molte reti di porte logiche sono state sostituite con dei Flip Flop JK.

15/01/2012

Ancora una modifica all'architettura del processore. Sono stati uniti numerosi segnali ed è stata aggiunta l'istruzione LIP (Load Instruction Pointer). Inoltre è stata modificata la Control Unit che adesso integra il Clock e il Load Counter. Intanto sto iniziando a scrivere in AL-Assembly il sistema operativo del TTL Computer: "ALOS - Alessio Lombardo Operatinf System".

06/01/2012

Iniziata la realizzazione della scheda "CU - Internal Bus". Ho anche realizzato un prototipo su Breadboard dell'Instruction Pointer usando degli IC 74161. Intanto sto iniziando a progettare gli schemi elettrici delle altre schede da costruire. Sto incontrando parecchie difficoltà a causa dei numerosi segnali da gestire.

Prototipo dell'Instruction Pointer a 8 bit realizzato su Breadboard. Nel Computer verrà ampliato a 16 bit.

29/12/2011

È stata completata la scheda Peripherals - ALPI Bus. Ho aggiunto un piccolo jumper per abilitare o disabilitare il pin "Busy" che servirà per bloccare il processore. Inoltre ho disegnato un nuovo medello 3D della versione Full.

28/12/2011

Ho costruito la prima parte della scheda "Peripherals - ALPI Bus", dopo aver realizzato il suo schema elettrico. La scheda ha una superficie di 220x100mm. Oltre ad avere 8 slots ALPI, avrà per ogni slot un LED bicolore che segnalerà se la periferica inserita è disattivata (colore rosso) o attivata (colore arancione o verde). Se lo slot è vuoto il LED rimarrà spento. Questa scheda verrà collegata alla Control Unit Section tramite 2 connettori presenti a sinistra. Al momento solo poche linee sono state saldate ma spero di completare tutta la scheda entro domani.

La scheda "Peripherals - ALPI Bus" ancora in costruzione durante un test.

27/12/2011

Finalmente è stata progettata la disposizione delle schede del TTL Computer Full. Esso sarà composto da 5 Sezioni: Registers (4 schede già funzionanti), ALU (3 schede già funzionanti), Memory (4 schede da progettare), Control Unit (4 schede da progettare) e Peripherals (una singola scheda da progettare). In totale sarà composto da 16 schede di cui 7 già in funzione e 9 da progettare. La sezione Memory conterrà le memorie Flash e RAM e i registri speciali IP e ABR. La sezione Control Unit conterrà la ROM, il "Mode Controller", l'"Halt Controller", il clock, il "Counter", il registro IR e il buffer DBB. Ovviamente bisognerà aggiungere al conto le varie periferiche opzionali. Attualmente ho intenzione di implementare le seguenti periferiche: tastiera esadecimale, display a 7 segmenti esadecimale, display a LED binario, display LCD, display 8x8 a LED, moltiplicatore binario (coprocessore), scheda sonora stereo.

23/12/2011

Progettato il bus di espansione per le connessioni con le periferiche. Il suo nome è "ALPI - Alessio Lombardo Peripheral Interconnect". Nella scheda saranno presenti 8 Slots ALPI da 32 pin ma poiché le periferiche gestibili sono 15, è probabile che venga aggiunta, in caso di necessità, una seconda scheda con altri slots. Le periferiche verranno inserite negli slots verticalmente e potranno essere rimosse anche "a caldo". Ogni slot è separato in due parti: una da 20 pin, l'altra da 12 pin. In questo modo sarà impossibile inserire una periferica al contrario.

Logo del Bus di Espansione "ALPI"

20/12/2011

Ancora miglioramenti al linguaggio AL-Assembly e al Compilatore. Sono stati aggiunti i codici operativi della futura Control Unit e adesso sono supportate le "etichette". Ho anche sviluppato l'editor specifico per il linguaggio: "AL-Assembly Editor" (ALAE.EXE). Si tratta di una versione opportunamente modificata dell'Editor "Notepad++", che mostra con diversi colori le "keywords" del linguaggio e avvia automaticamente il compilatore alla pressione del tasto "F9".

ALAE.EXE che visualizza un listato su Windows 7

11/12/2011

In questi giorni mi sono dedicato alla progettazione del TTL Computer Full. Ho migliorato la vecchia architettura che avevo realizzato ad Agosto e quindi ho disegnato degli schemi logici nuovi. Anche la Control Unit, dopo tante difficoltà, adesso è progettata. Questa sarà l'architettura definitiva e non potrà essere più modificata. Inizia quindi la seconda fase: la progettazione delle singole schede. Il metodo costruttivo sarà identico alla versione Lite, ovvero le schede verranno innestate fra loro con degli "strip header" e saranno organizzate in "Sezioni", connesse fra loro grazie a dei connettori. Ovviamente le Sezioni "Registers" e "ALU" sono già pronte e verranno connesse alle altre Sezioni da creare. Intanto sto scrivendo un ampia documentazione sull'architettura della macchina, che sarà disponibile a breve.

   

Architettura del TTL Computer Full e della Control Unit

   

Schema logico delle Memorie e schemi elettrici dei due "Controllers" della Control Unit

06/12/2011

Costruito finalmente lo stabilizzatore di tensione definitivo per il TTL Computer Lite. Come al solito, il calore è eccessivo e quindi ho aggiunto una piccola ventola a 12 Volt sopra le alette di dissipazione. Inoltre ho fissato la capsula piezoelettrica alla basetta (la Control Board) e ho aggiunto dei condensatori di filtro per raddrizzare il "beep" (che nei giorni scorsi aveva cambiato frequenza). Adesso il TTL Computer Lite è definitivamente concluso!

20/11/2011

Nuova versione del Compilatore AL-Compiler. Adesso supporta sia la sezione Registri sia la sezione ALU. Inoltre è possibile fornire dei parametri al compilatore per far avviare direttamente le sottofunzioni richieste. Anche il linguaggio inizia a diventare più elaborato e prossimamente sarà possibile effettuare numerose operazioni per interagire con le memorie e le periferiche.

13/11/2011

Durante l'utilizzo del TTL Computer Lite, lo stabilizzatore provvisorio si è guastato, forse a causa dell'eccessivo calore sviluppato. Invece che 5V forniva ben 12V in uscita e ha rischiato di bruciare tutti gli integrati! Fortunatamente non si è verificato nessun danno ma adesso, in attesa di un nuovo stabilizzatore, dovrò alimentare il progetto con un alimentatore ATX per PC. Intanto il "beep" all'avvio ha inspiegabilmente cambiato frequenza e durata e nei prossimi giorni dovrò sistemare anche questa situazione.

31/10/2011

Riprende la progettazione della versione Full del progetto. Ho migliorato lo schema logico rimuovendo alcune parti superflue. La Control Unit così sarà meno complessa poiché verrà gestito un minor numero di segnali.

27/10/2011

Viene inserita una piccola ventola allo stabilizzatore provvisorio per limitare lo sviluppo di calore. Tuttavia anche questa soluzione appare inefficiente.

26/10/2011

Effettuando degli "stress-test" sul calcolatore, ho notato che lo stabilizzatore riscalda troppo. Probabilmente è necessaria un'aletta di dissipazione più grande o una ventola. Casualmente ho trovato una batteria da 12V 7,2Ah al piombo che posso utilizzare al posto dell'alimentatore 220V AC - 12V DC che usavo fino ad ora per alimentare il TTL Computer. Da oggi quindi si potrà scegliere se alimentare a batteria o con l'alimentatore.

25/10/2011

Tutti i collegamenti fra il Control Panel e la Control Board sono stati realizzati. Il Control Panel Provvisorio è quindi completo! Nella versione definitiva, il cartoncino verrà sostituito con una lastra di alluminio. Adesso manca solo l'ultima parte della Control Board ovvero lo stabilizzatore e la capsula dinamica. Viene avviato nuovamente il progetto sempre con lo stesso stabilizzatore provvisorio. Questa volta tutte le funzioni sono implementate grazie al Control Panel che gestisce sia il Data Bus, sia il Control Bus. Inizia la fase di test, ovvero vengono effettuate delle operazioni con dei dati. Le prove hanno successo: il TTL Computer Lite è stato completato e funziona perfettamente!

Il TTL Computer Lite terminato durante un test

24/10/2011

Control Panel completo al 70%. Infatti molti collegamenti con la scheda Control Board sono stati realizzati.

22/10/2011

Costruita la prima parte del "Control Panel". Provvisoriamente sarà di cartoncino, successivamente di alluminio.

17/10/2011

La Control Board viene quasi ultimata (completa all'80%). Manca solo lo stabilizzatore di tensione che deve ancora essere perfezionato e la capsula dinamica per il "beep" all'avvio. Intanto, con uno stabilizzatore momentaneo e con una capsula dinamica di riserva, avvio per la prima volta l'intero Calcolatore da un alimentatore a 12V! L'I/O dei dati non è ancora disponibile mentre l'Input dei comandi avviene tramite una piccola breadboard in attesa del Control Panel.

Il TTL Computer Lite in funzione per la prima volta con la breadboard per l'inserimento dei comandi.

16/10/2011

Costruita un'altra parte della scheda Control Board che adesso è completa al 50%.

13/10/2011

La progettazione della scheda Control Board è quasi completa e viene realizzata la prima parte. Adesso è completa al 10-15%.

La scheda Control Board ancora incompleta

09/10/2011

La Control Board sarà composta da due parti distinte. La prima parte, già progettata, sarà il collegamento del "Control Panel" con le altre due sezioni del progetto (Registers e ALU). Nell'altra parte, ancora da progettare, sarà presente la gestione dell'alimentazione.

22/09/2011

Inizia la progettazione dell'ultima parte del progetto in versione Lite: la Control Section.

20/09/2011

Inizia la collaborazione con Gregorio Candolo (http://gogoblog.altervista.org), un promettente Web Designer e mio compagno di classe. Ha realizzato una nuova versione del Sito Web visualizzabile qui.

03/09/2011

Finalmente ho completato le schede ALU Core a ALU Register. Adesso la sezione ALU è finita.

   

A sinistra, la sezione ALU completata. A destra, un test della scheda ALU Register

30/08/2011

Il sito è stato aggiunto all' "Homebuilt CPUs WebRing", fondato da David Brooks, il creatore del Simplex-III. Il WebRing può essere visualizzato nella Home Page in Inglese.

29/08/2011

Pubblicazione del sito sull'indirizzo definitivo: http://alessiolombardo.altervista.org/ttlcomputer

28/08/2011

La pagina Worklog è tradotta completamente. Rimuovo la pagina Software. Verrà inserita nuovamente quando costruirò la versione Full.

21/08/2011

La pagina Worklog è tradotta al 75%. Adesso manca la traduzione di questo mese.

12/08/2011

La pagina Worklog è tradotta al 50%. Ho fatto una foto alla sezione ALU attuale.

La sezione ALU ancora incompleta. In alto a destra la scheda "ALU Core", in alto a sinistra la scheda "ALU Internal Bus" (completa) e sotto la scheda "ALU Register"

09/08/2011

Brutta notizia: il negozio di componenti elettronici è chiuso fino a fine Agosto. Quindi non potrò continuare le due schede della Sezione "ALU" ancora incomplete. Intanto mi dedicherò alla traduzione di questa pagina.

07/08/2011

Continua la progettazione della futura "Control Unit". Sto incontrando numerose difficoltà a causa dell'elevato numero di "comandi" da gestire. Nuovi piccoli miglioramenti al Compilatore AL-Compiler.

06/08/2011

Riprogettazione della pagina "Hardware" e rimozione della "Photogallery" dal sito. Inizia la traduzione di questa pagina dall'Italiano all'Inglese.

05/08/2011

Concludo la versione definitiva del modello in 3D della versione Lite. Descrivo in Italiano e in Inglese le caratteristiche della sezione Registri e della sezione ALU. Aggiunta la pagina "Contact-Me" per contattarmi tramite mail. Cambio nome al linguaggio Assembly che da LSC-Assembly diventa AL-Assembly. Inoltre il Compilatore da LombySoftCompiler diventa AL-Compiler.

04/08/2011

Saldo un'altra parte della scheda "ALU Register" che ora è completa al 75-80%. Inoltre ho concluso lo schema dell'architettura del progetto in versione Lite (è visualizzabile nella pagina Hardware) che ho disegnato con Power Point.

03/08/2011

Inizia la traduzione del sito in Inglese. In particolare ho finito la traduzione delle pagine "Home", "Hardware" e "Photogallery".

02/08/2011

Concludo lo schema logico della versione "Full". Inoltre ho rappresentato lo schema della memoria FLASH e SRAM.

   

Schema logico e rappresentazione delle memorie del "TTL Computer Full"

Su Foglio Elettronico, inizia la progettazione logica della futura "Control Unit" che gestirà le due memorie, i registri "speciali" (IP, ABR, IR) e i vari buffer e contatori.

01/08/2011

Riprogettazione di una parte della scheda "ALU Register": è stato tolto il visualizzatore a LED e sono state inserite 16 resistenze di Pull-Down nel Bus Dati. In questo modo il Bus non può mai essere nello stato di "Alta Impedenza". Aggiornata la pagina "Photogallery" con le foto delle schede della sezione Registri. Inizio a sviluppare su carta uno schema logico più dettagliato del progetto in versione "Full".

31/07/2011

Saldo un'altra parte della scheda "ALU Register" che ora approssimativamente è completa al 30%. Inoltre sviluppo con SketchUp un nuovo modello in 3D del progetto in versione Lite.

Modello in 3D del "TTL Computer Lite"

29/07/2011

Nascono le pagine Software e Photogallery. Il sito viene momentaneamente pubblicato su "libero.it" all'indirizzo http:/digilander.libero.it/antox.xp. Saldo una piccola parte della scheda "ALU Register" e scatto delle foto alla sezione ALU.

   

La scheda "ALU Internal Bus" completa

La scheda "ALU Core" (in basso, quasi finita) e "ALU Register" (in alto, ancora largamente incompleta)

28/07/2011

Nasce questo sito (in locale) dedicato al progetto TTL Computer. Creo le pagine Worklog e in parte Home e Hardware.

Luglio 2011

La sezione Registri viene completata il 2 Luglio con la realizzazione della scheda "Registers B". Dopo una "vacanza" di una settimana, l'11 luglio testo accuratamente la sezione Registri e in poco tempo completo anche la progettazione dell'ALU.

Test della sezione registri con lo stabilizzatore di tensione. Viene provato solo un bit alla volta

Inizio quindi a costruire la scheda "ALU Core" ma un grave problema di progettazione mi interrompe. Infatti le uscite "A=B" delle ALU sono Open Collector e quindi ho dovuto inserire quattro resistenze di "Pull-Up". Intanto passo avanti: realizzo la scheda "ALU Internal Bus" e inizio a costruire la scheda "ALU Register". Intanto comincio a progettare la versione "Full". Dopo diverse prove finalmente ho disegnato uno schema piuttosto completo anche se è molto diverso dai Microprocessori convenzionali. Mi sono dedicato anche alla parte software della versione "Full" e quindi ho realizzato, con "Visual Basic .NET", un piccolo Compilatore per il linguaggio LSC-Assembly. Esso è ancora incompleto: funziona solo la codifica delle istruzioni dei Registri. Momentaneamente il compilatore l'ho chiamato LombySoftCompiler e riconosce ovviamente solo gli errori di sintassi della sezione registri.

Il LombySoftCompiler in esecuzione su Windows 7. Nel rettangolo in rosso il codice relativo ai Registri

Maggio - Giugno 2011

In questi mesi ho più tempo da dedicare al progetto, soprattutto dopo la fine della scuola. Mi sono messo alla ricerca di un buon programma CAD per la realizzazione degli schemi elettrici. Alla fine ho scelto FIDOCAD, un programma italiano e gratuito purtroppo non più supportato dal 2003. Lo avevo utilizzato già in passato per un vecchio progetto e quindi ho cominciato il lavoro di progettazione dei Registri. La progettazione è stata più difficile di quanto pensassi ed è durata parecchi giorni.

Progettazione della scheda "Registers Decoder and Selector", successivamente "Registers Control Unit"

Dopo aver forato i bordi delle basette millefori (per inserire i distanziatori), ho iniziato a saldarle. Come filo ho deciso di usare del comune doppino telefonico. Come stagno ho usato quello che già avevo: una lega di Stagno-Piombo 60/40. Durante le saldature spesso usavo una mascherina e un guanto per la mano sinistra (con cui tenevo lo stagno) a causa del Piombo che in grosse quantità è pericoloso per l'organismo. In seguito, al posto del guanto, attorcigliavo del nastro adesivo nelle dita. Inoltre a volte usavo un ventilatore per allontanare il fumo (e soprattutto per il caldo!).

   

Foratura di una scheda (a sinistra) e inserimento dei distanziatori metallici fra 2 schede (a destra)

Contemporaneamente alla realizzazione dei Registri, era in corso la progettazione della sezione ALU. La prima scheda ad essere completata è la "Registers A", seguita dalla "Control Unit". Infine sarà realizzata la scheda "Data Bus". Non mancano ovviamente i problemi. Ad esempio i connettori "Femmina" non erano compatibili con quelli "Maschi" e quindi ho dovuto ricomprare tutti i connettori "Maschi" (alcuni erano già stati saldati e ho dovuto dissaldarli). Inoltre i distanziatori da 15mm erano troppo corti e li ho dovuti sostituire con quelli da 20mm. Anche alcuni "zoccoli DIP" erano incompatibili con gli integrati e quindi ho dovuto ricomprare anche questi.

   

La scheda "Registers A" senza connettori e con un solo registro vista dall'alto (a sinistra) e durante un test (a destra)

Marzo - Aprile 2011

Lo studio del "Sistema a Microprocessore" fatto a scuola risveglia improvvisamente le idee del progetto. Non potevo realizzare una scheda per ogni operazione... AND, OR, Incremento, Negazione, Addizione, Sottrazione, ecc... Mi serviva una ALU (Arithmetic Logic Unit). Effettuando delle ricerche ho capito che dovevo cercare un 74181, capace di realizzare fino a 32 operazioni logico-aritmetiche. Anzi, quattro 74181 poiché un singolo integrato può effettuare solo operazioni a 4-bit. Inoltre decisi ancora una volta di ampliare il progetto: potevo utilizzare dei "registri" per conservare i dati da riutilizzare. Mi sembrava ancora eccessivo utilizzare una RAM e perciò decisi di usare ben nove registri, quattro per operando e uno per il risultato.

Documento del progetto simile alla futura versione "Lite". Si notano i 9 registri e l'ALU

A questo punto il passaggio era avvenuto: da "Calcolatore" a "Processore". Mi sono messo subito in cerca degli integrati che mi servivano ma con scarso risultato. Nel negozio di elettronica di fiducia molti integrati non c'erano. Quindi decisi di registrarmi al sito "RS Components", azienda specializzata in questo settore. Quasi tutti gli integrati e anche molti componenti passivi li comprerò proprio da qui. Con l'aiuto dei Datasheets trovati online, iniziai a sviluppare i primi schemi logici su carta e prototipi su breadboards.

   

Prototipo di un registro (a sinistra, con tabella di verità e schema logico della futura "Sezione Registri") e prototipo di una ALU a 4 bit (a destra)

Fatto ciò, cominciai anche a pensare alla realizzazione su basetta millefori. Scartai subito l'idea della "motherboard" ovvero della scheda unica: troppo ingombrante e soprattutto troppo difficile da progettare e costruire. Decisi invece di creare una struttura modulare, dove ogni scheda è attaccata alle altre tramite dei connettori. In questo modo è possibile eventualmente rimuovere una singola scheda ed aggiornala se ha qualche difetto. Quindi ho costruito un modello in 3D con il programma Google SketchUp, che già utilizzavo per altri scopi. Inoltre decisi di dividere il progetto in due parti. Cioè una versione "Lite", dove ogni calcolo è gestibile solo manualmente, e una versione "Full", dove è possibile fare girare piccoli programmi sfruttando una memoria e delle periferiche. Ovviamente decisi di dedicarmi solamente alla versione "Lite".

Modello in 3D del progetto in versione "Full"

Gennaio - Febbraio 2011

Ma perché fermarsi a fare solo semplici addizioni? Da qui nacque il "vero" progetto, da questa semplice domanda. Pensai di creare delle schede di espansione da inserire nella scheda degli operandi. Inserendo la scheda adatta si potevano realizzare le operazioni volute. Tuttavia, per mancanza di tempo, queste idee rimasero soltanto astratte e per lungo tempo il progetto fu accantonato.

Ottobre - Novembre - Dicembre 2010

Il progetto nasce nell'ottobre del 2010. Dopo aver studiato a scuola l'algebra di Boole e il sistema di numerazione binario, decisi di costruire un piccolo addizionatore binario ad 8 bit su una breadboard. Effettuando delle ricerche trovai i circuiti integrati adatti ovvero 2 semplici TTL 74283.

   

Foto dell'addizionatore binario ad 8 bit

Appena concluso mi resi conto che potevo migliorarlo, renderlo più complesso e con funzioni aggiuntive. Quindi progettai su carta un metodo per far "scorrere" i due addendi con l'uso di 2 contatori binari 74393. Poi ho aggiunto dei decoders "Binario-7segmenti" per pilotare dei display a 7 segmenti. Tuttavia a causa dell'irreperibilità dei decoders abbandonai quest'ultima idea. Utilizzando come clock un NE555 in configurazione astabile realizzai un clock capace di incrementare i contatori binari. Inoltre il progetto passò da 8-bit a 16-bit (che non sono pochi per un sistema artigianale).

   

Documenti di alcune idee del progetto. A sinistra il progetto per intero (ad 8 bit) , a destra uno degli operandi (a 16 bit)