Introduzione ai microcontrollori L elettronica digitale nasce nel 1946 con il primo calcolatore elettronico digitale denominato ENIAC e composto esclusivamente di circuiti a valvole, anche se negli anni prima alcuni ricercatori avevamo proposto dei dispositivi di calcolo semplificati. Alla base dell elettronica digitale vi sono due concetti fondamentali: Algebra binaria, dove tutte le informazioni vengono codificate in sequenze di cifre a due valori (0,1); La quantificazione dei valori di tensione elettrici in fasce; L'algebra binaria si basa sulle seguenti operazioni fondamentali: AND OR NOT 0 0 = 0 A 0 = 0 1 0 = 0 A 1 = A 0 1 = 0 A A = A 1 1 = 1 A A' = 0 0+0 = 0 A+0 = A 1+0 = 1 A+1 = 1 0+1 = 1 A+A = A 1+1 = 1 A+A' = 1 0' = 1 A'' = A 1' = 0 Proprieta Associativa, Distributiva, Commutativa e leggi di De Morgan (A B) C = A (B C) = A B C (A+B)+C = A+(B+C) = A+B+C A (B+C) = (A B) + (A C) A+(B C) = (A+B) (A+C) A B = B A A+B = B+A (A B)' = A' + B' (A+B)' = A' B' TTL e` un acronimo che sta per transistor transistor logic rappresenta una classe implementativa di logica digitale basata su transistori. Tutti i circuiti standardizzati TTL operano con una alimentazione di 5V. Un segnale di ingresso viene definito basso (levello logico 0) se la sua tensione e' compresa tra 0 e 0.8 volt, e viene definito alto (Livello logico 1) se la sua tensione e' compresa tra 2.2 e 5V (le tensionoi accurate possono variare a seconda della famiglia specifica). Vi sono innumerevoli vantaggi nell impiegare sistemi di calcolo basati su elettronica digitale ed in particolare: Robustezza alla presenza di segnali di disturbo, grazie in particolare alla banda di separazione tra i valori logici.
Facilita di implementazione di funzioni logiche Possibilita di realizzare memorie anche complesse (temporanee e permanenti) tramite l uso di elementi che mantengono il proprio stato fisico (bistabili o multistabili) I circuiti digitali si dividono in due fondamentali categorie: logiche combinatorie in cui il valore dell'uscita dipende soltanto dai valori dai bit applicati in ingresso; Le logiche sequenziali in cui il valore dell'uscita dipende sia dal valore dei bit in ingresso che da uno stato interno del sistema. Le logiche combinatorie Una rete combinatoria e quindi in grado in via di principio di realizzare alcune funzioni digitali i cui risultati siano algebricamente dipendenti dagli ingressi. Il teorema di Shannon ci consente tuttavia di affermare che qualisiasi funzione algebrica (binaria) e sempre rappresentabile tramite una somma di prodotti degli ingressi o degli stessi negati. La risposta, abbastanza intuitiva si puo verificare con un esempio: I2 I1 I0 Y 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 Consideriamo la funzione descritta in tabella, dove l uscita viene descritta da un solo bit (Y) e l ingresso da 3 bit (I2, I1 e I0). Ovviamente in prima istanza possiamo scrivere che l uscita è pari alla somma di tutti i prodotti per cui la Y==1. Applicando quindi le leggi di DeMorgan possiamo ridurre il numero di somme-prodotti necessari sommando insieme tutti i prodotti affini che si differenziano per un termine solo (includendo quindi sia il termine che il suo negato). Reiterando la procedura si arriva a determinare la seguente forma minimale: Y = I1 + I0 + /I2/I1/I0
Esistono diverse categorie di componenti logici combinatori(famiglia 74XXYY). Alcuni trai i piu comuni sono: encoder e decoder, multiplexer e demultiplexer in grado di convertire un segnale con indice i un numero binario e viceversa. Come vedremo questi dispositivi risulteranno particolarmente utili nella selezione di segnali e come maschere. A B S Y ------+-- 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 Sommatori: sono elementi strutturali anche abbastanza complessi che consentono di effettuare la somma di due numeri a un numero di cifre arbitrario ma predefinito. I sommatori si compongono in via ricorsiva tramite l impiego di sommatori piu elementari ad un bito soltanto. Questi ultimi si distinuguono in FULL Adder o Half ADDER a seconda del fatto che contino una cifra di riporto precedente o meno.
Un insieme di reti combinatorie atte ad implementare in funzione di un comando specifico un set funzione algebriche anche complesse e detto ALU (Arithmetic Logic Unit) e risulta una parte essenziale di qualsiasi struttura di calcolo digitale. Se la unita logica aritmetica mette a disposizione anche capacita di calcolo in virgola mobile viene denominata FPU (Floating Point Unit). Come vedremo tra breve in quasi tutti i microcontrollori le operazioni vengono effettuate tra memorie digitali indirizzabili direttamente tramite un set di istruzioni. Tali memorie sono dette registri. Ogni qual volta sara necessario per lo sviluppo di un algoritmo ricorrere alla alu bisognera: Codificare numeri, variabili ed altro in una equivalente rappresentazione difitale (IEEE) Decomporre l algoritmo in operazioni elementari supportate dalla ALU Programmare in codice macchina la sequenza di istruzioni che prende i dati dai registri, li inoltra alla ALU, informandala della particolare istruzione da eseguire (somma differenza, shift, prodotto o altro)
Rimemorizzare i risultati cosi ottenuti in registri Controllare i flag della operazione per verificare l assenza di condizioni di eccezione che richiedano la nostra attenzione. Tipicamente queste operazioni venivano svolte manualmente dai programmatori di microcontrollori e lo sono tuttora qualora siano richieste una sequenza di prestazioni ed un controllo sul flusso di programma tale per cui sarebbe assurdo l impiego di altri strumenti di sviluppo. In tutti gli altri casi, come e ormai prassi, ci si potra affidare al compilatore C e ai programmi di rapid prototyping. Alcuni esempi
Le logiche Sequenziali Le reti sequenziali sono invece piu adatte a rappresentare il comportamento di un sistema tempodiscreto o di una macchina. Tra le reti sequenziali più elementari di tutti ritroviamo i sistemi bistabili, logiche il cui stato interno può assumere solamente due valori: 0 e 1. Il più semplice dispositivo di memoria è il flip-flop Set- Reset. Esso possiede due ingressi denominati Set e Reset ed due uscite indicata con Q e /Q in quanto la seconda risulta essre la negazione della prima. In figura sono stati rappresentati gli elementi caratteristici di un flip flop set reset, ovver: il suo simbolo circuitale, la tabella di verità che rappresenta l evoluzione del sistema in base agli ingressi ed allo stato precedente Q0, e la sua realizzazione circuitale a porte NOR. A patto di invertire gli ingressi (/S, /R) una rappresentazione esattamente equivalente può esssere implementata con porte NAND. Analisi del funzionamento: La combinazione 00 ha due stati stabili, si verifica sostituendo i NOR con due NOT in quanto S e R non sono significativi per l evoluzione. Lo stato assunto prima di andare in 00 risulta pertanto lo stato mantenuto dal sistema (in quanto stabile). Le soluzioni 01 e 10 forzano le uscite a 10 o 01, in quanto una delle uscite delle due porte è fissa e conosciuta a causa dell,ingresso diverio sa 0. La combinazione 11 non è accettabile in ingresso (anche se finché mantenuta porta in uscita i valori 00). I flip flop JK sono simili ai flip flop SR nel senso che JK hanno funzionamento analogo a set e reset, ma con due differenze fondamentali, un terzo ingresso CLOCK di validazione fa si che i valori che regolano il funzionamento (evoluzione) del dispositivo sono quelli di JK nei fronti in salita di CK. Inoltre in questa versione JK=11 è un ingresso valido e comporta l inversione dell uscita.
In figura il simbolo circuitale e la tabella di verità relativa. La sintesi dei FF JK è alquanto più complessa dei FF SR in quanto per coordinare le azioni esattamente con i fronti dell ingresso CK e non con il suo valore è necessario che il dispositivo disponga di uno stato ausiliario in più. Un semplice diagramma degli stati di un FF JK è rappresentato in figura: Un D-Latch è un flip flop SR con un ingresso di abilitazione ed una porta not. Il suo compito è quello di portare in un uscita il segnale D di ingresso solo quando la porta C ha valore logico uno.
Il rilevamento degli impulsi può essere effettuato con una rete di ritardo calibrata come mostrato in figura. In questo caso l'uscita permane a uno fintantoché l'ingresso non supera le tre porte not.
Combinando questa soluzione con un D-Latch visto in precedenza si ha un sistema stabile per memorizzare segnali durante la presenza di fronti in salita di un segnale esterno (clock). Una soluzione integrata ed alternativa per la realizzazione di un registro prevede un doppio flip flop set reset con un not che abilita/disabilita alternativamente una delle due parti. Implementazione alternativa: