UNIVERSITÀ DEGLI STUDI DI TRIESTE Facoltà di Ingegneria Corso di Laurea Triennale in Ingegneria dell’Informazione Curriculum Elettronica Relatore: Professore Boscolo Antonio Laureanda: Giovanna Bernardi L’HARDWARE DEL MICROCONTROLLORE: VISIONE STORICA E REALIZZAZIONE TRAMITE SSI DI UN MICROCONTROLLORE A 8 BIT INTRODUZIONE E MOTIVAZIONI Al giorno d’oggi i microcontrollori sono onnipresenti. È un dispositivo elettronico facile da utilizzare: è sufficiente la conoscenza di un opportuno linguaggio di programmazione di alto livello e della relazione che intercorre tra l’ingresso e l’uscita del sistema. Tuttavia il microcontrollore esiste: ha un’architettura, qualcuno prima di noi ha lavorato e studiato molto per la sua realizzazione e tutt’ora i microcontrollori vengono prodotti e le loro caratteristiche vengono continuamente ottimizzate. Ho ritenuto quindi opportuno comprendere: • le motivazioni che hanno portato alla loro nascita • la loro evoluzione nel tempo • la loro architettura Obiettivo: realizzare un semplice microcontrollore a 8 bits per acquisire le conoscenze necessarie alla futura realizzazione di un sistema più complesso. Modello di riferimento: il SAP (Simple-As-Possible), microcontrollore a 8 bits con architettura Von Neumann realizzato il logica TTL grazie ai componenti della famiglia 74XX. Implementazione: in mancanza dei componenti SSI fisici, ho utilizzato la tecnologia FPGA. ARCHITETTURA Il microcontrollore è caratterizzato dal seguente set di istruzioni: • LDA (0000): è l’operazione “load the accumulator”. • ADD (0001): è l’operazione di somma. • SUB (0010): è l’operazione di sottrazione. • OUT (0011): è l’istruzione che ordina di trasferire il contenuto dell’accumulatore all’output register per poter visualizzare poi il risultato sul display di led. • HLT (0100): è l’operazione di “halt” che ordina al microcomputer di terminare qualsiasi elaborazione sui dati. FETCH E EXECUTION CYCLE Un componente fondamentale dell’unità di controllo è il ring counter il quale produce un output T=T 6 T 5 T 4 T 3 T 2 T 1. PROGRAM COUNTER MAR E MULTIPLEXER RAM INSTRUCTION REGISTER ACCUMULATORE ADDER/SUBTRACTER ADDER/SUBTRACTER REGISTRO B OUTPUT REGISTER INSTRUCTION DECODER RING COUNTER CONTROL MATRIX I segnali LDA, ADD, SUB e OUT prodotti dall’instruction decoder, guidano la matrice di controllo insieme ai segnali generati dal ring counter. MACRO LDA ADD SUB OUT STATE CON ATTIVI T1 5E3H Ep, Lm_negato T2 BE3H CP T3 263H Ce_negato, Li_negato T4 1A3H Lm_negato, Ei_negato T5 2C3H Ce_negato, La T6 3E3H None T4 1A3H Lm_negato, Ei_negato T5 2E1H Ce_negato, Lb_negato T6 3C7H La_negato, Eu T4 1A3H Lm_negato, Ei_negato T5 2E1H Ce_negato, Lb_negato T6 3CFH La_negato, Eu, Su T4 3F2H Ea, Lo_negato T5 3E3H None T6 3E3H None CONTROL MATRIX CLOCK E RESET IL PROGRAMMA È fondamentale memorizzare il programma prima dei dati all’interno della memoria. Programma: 95+2-1+2 INDIRIZZO CONTENUTO OH LDA 6H 1H ADD 7H 2H SUB 8H 3H ADD 9H 4H OUT 5H HLT 6H 5FH 7H 2H 8H 1H 9H 2H COMPILAZIONE ERRORE: il bus W non può portare più di 8 bit nello stesso momento. MODIFICA 1: poiché sia il program counter che l’instruction register devono inviare bits al MAR, ho sfruttato un multiplexer che selezioni il registro opportuno ed il invii il contenuto corretto al MAR. Il multiplexer seleziona il registro corretto tramite il bit di selezione posto pari a Ep. MODIFICA 2: l’accumulatore riceve le parole inviate dall’adder/subtracter e dalla RAM, pertanto ho utilizzato un ulteriore multiplexer che selezioni opportunamente la RAM o l’adder/subtracter in base alle necessità grazie al bit di controllo Ce. MODIFICA 3: ho creato infine un bus indipendente per la connessione tra accumulatore e registro di output. CONCLUSIONI • Progettazione attraverso schematici (*.bdf) non consente di effettuare simulazioni RTL ( Register Tranfer Level), l'unica simulazione permessa è la Gate Level Simulation, la simulazione post-sintesi, che però è dipendente dal dispositivo impiegato. • L’attività di system validation ha permesso di verificare che i singoli componenti sintetizzati all’interno dell’FPGA rispondono adeguatamente agli input, tuttavia il sistema nel suo complesso richiede ancora un’operazione di debuging. • Il fatto che il sistema nel complesso risponde in modo anomalo potrebbe esser dovuto al fatto che i componenti sintetizzati all'interno dell'FPGA presentano dei tempi di setup e hold differenti da quelli associati agli IC reali. CONCLUSIONI • Queste leggere differenze nei tempi potrebbero creare problemi di sincronizzazione e metter in discussione la corretta attività del microcontrollore. • L’attività di debuging pertanto consiste nel risolvere problematiche legate alla tecnologia FPGA, per me nuova, e non all’hardware del microcontrollore. La risoluzione di queste quindi si discosta dal mio intento di realizzare il sistema fisicamente, appena sarà possibile reperire tutti i componenti SSI necessari.