ELEMENTI PROGETTAZIONE LOGICA

Размер: px
Начинать показ со страницы:

Download "ELEMENTI PROGETTAZIONE LOGICA"

Транскрипт

1 UNIVERSITA DEGLI STUDI DI MILANO BICOCCA CORSO DI LAUREA IN INFORMATICA ELEMENTI PROGETTAZIONE DI LOGICA Dispense per il Corso di PROGETTAZIONE LOGICA Prof. Giuliano F. BOELLA

2 2

3 i PREMESSA Queste dispense ad uso degli studenti presentano in forma completa ancorché condensata gli elementi di guida alla progettazione dei sistemi digitali. Nel capitolo sono presentate le numerazioni decimale, binaria ed esadecimale. Sono introdotti il codice binario ed i codici ad esso collegati (BCD, GRAY, ASCII). Nel capitolo 2 sono introdotti gli elementi di logica delle decisioni. Nel capitolo 3 viene introdotta l Algebra di Boole, strumento principe per trattare le funzioni di decisione binarie: si scrivono le funzioni logiche binarie nella loro forma piú semplice. Nel capitolo 4 sono introdotti i simboli grafici e le definizioni delle funzioni logiche elementari, nonché i circuiti logici che le meccanizzano. Nel capitolo 5 viene introdotta la LOGICA COMBINATORIA, usata per generare le funzioni logiche di decisione, base dei circuiti elettronici di controllo delle macchine digitali. Nel capitolo 6 viene introdotta la LOGICA SEQUENZIALE SINCRONA, con la quale si realizzano le macchine a stati, che sono i costituenti primari di tutte le moderne macchine elettroniche digitali. Nel capitolo 7 si studiano i contatori, che sono le piú semplici macchine sequenziali sincrone: viene introdotto il contatore binario universale (UBC), struttura base per costruire una larga parte delle macchine sequenziali. Nel capitolo 8 sono introdotti i registri a scorrimento, elementi dedicati al trattamento di dati binari. Viene introdotto il registro universale a scorrimento (USR), struttura base per la realizzazione dei vari tipi di registro a scorrimento. Nel capitolo 9 viene trattata la progettazione dei sistemi digitali sincroni. Questo capitolo, unitamente al capitolo 7, forma il nucleo di guida alla progettazione e realizzazione di macchine elettroniche digitali. Gli ultimi due capitoli 0 e introducono alla progettazione e realizzazione di macchine digitali mediante sistemi CAD (Computer Aided Design) basati su linguaggi di definizione di alto livello (HDL). Sono aggiunte due appendici. Nell appendice A viene trattato in forma completa un caso generale della progettazione sequenziale sincrona, secondo quanto presentato nel capitolo 6. Nell appendice B si esamina un caso di elaborazione alternativa seriale-parallelo. Giuliano F. Boella 20 giugno 2005

4 ii

5 Indice NUMERAZIONI E CODICI. Introduzione Numerazione binaria Numerazione ottale ed esadecimale Conversione fra numeri di diversi sistemi numerici Codici numerici Codice binario Codice BCD Codice di Gray Codice ASCII Logica delle decisioni 9 2. Elementi Operatori logici e variabili logiche Equivalenze di De Moivre Funzioni di decisione complesse L algebra di Boole 5 3. Postulati Teoremi Funzioni booleane Tabella delle combinazioni Tabella della veritá Mappe di Karnaugh Minimizzazione delle funzioni booleane Manipolazioni algebriche Uso delle mappe di Karnaugh Meccanismo della semplificazione Esempi Condizioni di indifferenza e ridondanze I Circuiti Logici 3 4. Definizioni Simboli logici fondamentali (in logica positiva) Logica a diodi Circuiti integrati Considerazioni sul circuito NAND iii

6 iv INDICE 5 Logica Combinatoria Definizioni Progettazione Esempi Blocchi logici funzionali Il decoder binario Il multiplexer binario Il demultiplexer Altri blocchi logici funzionali Logica Sequenziale Dalla logica combinatoria alla logica sequenziale Logica sequenziale asincrona Logica sequenziale sincrona La Memoria Stati interni e variabili di stato Analisi di una logica sequenziale Il diagramma degli stati Sintesi di reti sequenziali sincrone Esempio Gli stati ridondanti I Contatori Sintesi di un contatore binario sincrono Sintesi di un contatore decimale codificato in binario Contatore binario universale I registri a scorrimento Struttura dei registri a scorrimento Il registro universale a scorrimento La progettazione di sistemi digitali sincroni 7 9. Struttura di un sistema sincrono L unitá di controllo nei sistemi digitali sincroni Struttura dell unitá di controllo basata su contatore Progettazione dell unitá di controllo Esempio di progetto di un sistema sincrono con contatore Metodologia di progettazione sincrona Sincronizzazione di segnali esterni Realizzazione di una macchina sequenziale Sintesi di macchine sequenziali con un linguaggio HDL Cenni sull utilizzo di ABEL Scrittura delle dichiarazioni Inserimento di commenti Scrittura delle equazioni Esempio di file di lavoro Uso di costrutti evoluti Uso delle strutture globali Struttura when-then-else

7 INDICE v Linguaggi di descrizione di macchine a stati 95. La struttura state diagram di ABEL Esempio d uso del costrutto state diagram Costruzione del diagramma degli stati La struttura truth table di ABEL Esempio col costrutto truth table Conclusioni A Esempio di progettazione di una rete sequenziale sincrona 07 B Elaborazione alternativa seriale-parallela 5

8 vi INDICE

9 Capitolo NUMERAZIONI E CODICI. Introduzione Il sistema numerico che usiamo normalmente é il sistema numerico posizionale decimale. Questo sistema, che ci sembra fondamentale, é solo uno di una infinita varietá di possibili sistemi numerici. Il numero decimale 234 rappresenta un migliaio, due centinaia, tre decine e quattro unitá ed é composto dalle cifre, 2, 3 e 4. Il sistema decimale fa uso di 0 cifre: 0,, 2, 3, 4, 5, 6, 7, 8, 9 per rappresentare i numeri fino a 9 ed usa i multipli delle potenze di 0 per i numeri oltre 9. Cosí, il numero decimale 234 rappresenta la somma di 000 (= 0 3 ) piú 200 (= ) piú 30 (= 3 0 ) piú 4 (= ). Questo sistema numerico é basato sulla radice 0. In un sistema con base o radice r le cifre usate vanno da 0 a r. Perció il sistema numerico decimale richiede 0 cifre, le cifre da 0 a 9 che ben conosciamo. Un numero intero N puó essere espresso matematicamente come N = a n r n + a n r n a 2 r 2 + a r + a 0 r 0 dove n = 0,, 2,... r = radice del sistema numerico a = cifra con valore fra 0 e r- Analogamente la parte frazionaria F di un numero puó essere espressa matematicamente come F = a r + a 2 r 2 + a 3 r a m r m. Un numero viene rappresentato con una stringa di cifre, nella quale alla posizione di ogni cifra viene attribuito un peso, cioé una potenza della radice. Ecco allora la scrittura di un generico numero decimale D in forma di stringa: d n d n 2...d 2 d d 0.d d 2...d m costituita da n cifre intere e da m cifre frazionarie, separate dal punto (.) che individua la demarcazione fra le due parti, la parte intera e la parte frazionaria. Se il punto non esiste, si assume che il numero é intero. La cifra d n é la cifra piú significativa; la cifra d m é la cifra meno significativa. Il valore del numero é la somma di ciascuna cifra moltiplicata per la corrispondente potenza della radice: D = i=n i= m d i r i.

10 2 CAPITOLO. NUMERAZIONI E CODICI.2 Numerazione binaria Poiché in elettronica é piú facile e piú affidabile realizzare una condizione dicotomica (presenza o assenza di corrente; presenza o assenza di tensione), appare evidente far ricorso a variabili binarie e alla numerazione binaria. Il sistema numerico binario ha radice 2. Poiché r = 2, sono necessarie due sole cifre, 0 e, per rappresentare i numeri nel sistema numerico binario. Un generico numero binario puó essere scritto in forma di stringa: b n b n 2...b 2 b b 0.b b 2...b m La cifra binaria viene usualmente detta bit, contrazione dalla espressione inglese binary digit. La cifra b n é la cifra piú significativa (most significant bit: MSB); la cifra b m é la cifra meno significativa (least significant bit: LSB). Anche qui il punto separa la parte intera dalla parte frazionaria: esso é detto punto binario. Il valore B del numero é la somma di ciascuna cifra moltiplicata per la corrispondente potenza della radice 2: B = i=n i= m b i 2 i Applicando le definizioni giá viste possiamo scrivere, effettuando il calcolo nel sistema decimale: N = 0 2 = ( ) 0 = ( ) 0 = 23 0 Quindi al numero 0 in base 2 corrisponde il numero 23 in base 0. Diamo un esempio con un numero binario avente parte frazionaria: = ( ) 0 = Numerazione ottale ed esadecimale La base 0 é importante perché la usiamo normalmente. La base 2 é importante per l uso che se ne fa nei circuiti elettronici. I numeri in base 8 e 6 hanno interesse perché forniscono un modo conveniente per una rapida rappresentazione dei numeri binari multibit. Il sistema numerico ottale usa la base 8 e necessita di 8 cifre: si usano le ordinarie cifre da 0 a 7 (8 e 9 ovviamente non compaiono mai!). Il sistema numerico esadecimale usa la base 6 e necessita di 6 cifre: si usano le ordinarie 0 cifre da 0 a 9 a cui vengono aggiunte altre sei cifre, che sono A, B, C, D, E, F. Per utilizzare questi sistemi occorre scrivere le relative tabelle pitagoriche, poi operare in analogia a quanto si fa per il sistema decimale. Vediamo ora un utilizzo pratico delle numerazioni ottale ed esadecimale. Nella Tabella. sono listati i primi 6 numeri interi nelle quattro numerazioni: BIN per binario, OCT per ottale, DEC per decimale, HEX per esadecimale. Sono affiancate altre due colonne con le stringhe binarie a 3 e 4 bit, 3ST e 4ST. Poiché una stringa di 3 bit puó assumere solo 8 differenti combinazioni, ne segue che essa é in corrispondenza biunivoca con una cifra ottale: si confrontino le colonne OCT e 3ST della tabella. Analogamente una stringa di 4 bit puó assumere 6 differenti combinazioni, ne segue che essa é in corrispondenza biunivoca con una cifra esadecimale: si confrontino le colonne HEX e 4ST della tabella. É quindi molto facile convertire un numero binario in un numero ottale. Partendo dal punto binario e

11 .3. NUMERAZIONE OTTALE ED ESADECIMALE 3 andando a sinistra, raggruppiamo le cifre binarie a tre a tre (eventualmente inserendo zeri all inizio per completare la tripletta piú a sinistra) e rimpiazziamo ciascun gruppo con la corrispondente cifra ottale: = = Se il numero é frazionario, se cioé vi sono cifre a destra del punto binario, sempre partendo dal punto e procedendo sia verso destra che verso sinistra raggruppiamo le cifre binarie a tre a tre (eventualmente aggiungendo zeri in testa e in coda per completare le triplette): = = Tabella. BIN DEC OCT 3ST HEX 4ST A B C D E F In maniera analoga si procede per la conversione di un numero binario in un numero esadecimale, questa volta raggruppando le cifre binarie a quattro a quattro e rimpiazzando ciascun gruppo di quattro bit con la corrispondente cifra esadecimale: = = DA = = 5.AB 6 Con due cifre esadecimali si rappresenta un numero binario di 8 bit, cioé un byte. É ovvio che é piú facile ricordare due cifre esadecimali piuttosto che ricordare tutti e 8 i bit di un byte. Un esempio: = D9 6 Inoltre é invalso l uso dei numeri esadecimali per rappresentare gli indirizzi di memoria dei computer. Ad esempio, in un microprocessore i singoli byte di una memoria di 64k sono identificati da un indirizzo a 6 bit, mnenonicamente piú facile da ricordare e da confrontare se espresso con 4 cifre esadecimali: B = D9F 3 H Chi programma i sistemi a microprocessore conosce bene l utilitá dei numeri esadecimali.

12 4 CAPITOLO. NUMERAZIONI E CODICI.4 Conversione fra numeri di diversi sistemi numerici Le conversioni fra i sistemi binario, ottale ed esadecimale sono semplicissime da effettuarsi, poiché si tratta di operare delle sostituzioni, passando sempre attraverso la rappresentazione binaria e mettendo in corrispondenza i gruppi di cifre binarie con gli equivalenti ottali ed esadecimali B = B = 3352 O B = B = 5EA H 234 O = B 234 O = B = B = 29C H CAD H = B CAD H = B = B = 6235 O dove B sta per binario, O per ottale, H per esadecimale. Le conversioni per passare dai sistemi binario, ottale, esadecimale al sistema decimale si fanno applicando la formula di sommatoria D = i=n i= m d i r i facendo il calcolo nel sistema decimale e utilizzando ogni volta il corretto valore della radice: r = 2, 8, 6 rispettivamente per binario, ottale, esadecimale. 0 B = ( ) D = 27 D 27 O = ( ) D = 87 D CAD H = ( ) D = 3245 D Le conversioni dal sistema decimale ai sistemi binario, ottale, esadecimale si fanno mediante divisioni successive. Partiamo dalla formula generale della sommatoria D = riscrivendola nel modo seguente, limitata a m = 0: i=n i= m d i r i D = ((...((d n ) r + d n 2 ) r +...) r + d ) r + d 0 Se dividiamo l espressione per r, otteniamo un quoto della stessa forma del numero di partenza D = (...((d n ) r + d n 2 ) r +...) r + d e un resto pari a d 0 : abbiamo ottenuto l ultima cifra significativa d 0. Iterando il procedimento otteniamo via via tutte le altre cifre del numero cercato. Usiamo la sequente procedura in ambito decimale: scriviamo il numero decimale da convertire, tracciamo alla sua destra una linea verticale, sotto il numero scriviamo il quoto (ottenuto per divisione intera del numero) e accanto al numero, al di lá linea, il resto. Iterando il processo di divisione fino ad azzerare il quoto otteniamo il valore convertito prendendo in sequenza i resti a partite dall ultimo ottenuto, che rappresenta la cifra piú significativa. Come esempio convertiamo il numero decimale 7 nel corrispondente numero binario, effettuando la divisione per 2 nel sistema decimale.

13 .5. CODICI NUMERICI Pertanto: 7 D = 00 B. Convertiamo ora il numero decimale 234 nel corrispondente numero ottale, effettuando la divisione per 8 nel sistema decimale Pertanto: 234 D = 2322 O. Convertiamo infine il numero decimale 234 nel corrispondente numero esadecimale, effettuando la divisione per 6 nel sistema decimale D Pertanto: 234 H = 4D2 H..5 Codici numerici Un codice é un modo sistematico di rappresentare un informazione..5. Codice binario É possibile rappresentare 2 n differenti messaggi con un puro codice binario di n bit. Una particolare combinazione di n bit é detta parola. Un byte é un codice di 8 bit. Word é un codice di 6 bit..5.2 Codice BCD Un codice a 4 bit molto comune é il codice BCD (Binary Coded Decimal), che codifica le cifre decimali da 0 a 9 in una rappresentazione assoluta. Esso é molto utilizzato nei sistemi elettronici che operano direttamente in decimale o per l uscita dati in decimale verso un utenza esterna. Nella Tabella.2 che segue viene data la corrispondenza tra cifre decimali e codici BCD. Si noti che un codice a 4 bit consente 6 combinazioni, ma di esse ne vengono utilizzate soltanto 0. Le rimanenti 6 non sono direttamente utilizzate (si vedrá che possono essere utilizzate per effettuare delle semplificazioni a livello dei circuiti logici). Delle molte varietá possibili é stato scelto il codice binario naturale con pesi 8,4,2, in modo da avere la corrispondenza diretta fra il valore della cifra digitale ed il valore del codice

14 6 CAPITOLO. NUMERAZIONI E CODICI binario. Tabella.2 DEC BCD Si notino i sei codici non utilizzati, listati nella parte bassa della tabella..5.3 Codice di Gray Nelle applicazioni elettromeccaniche dell elettronica, in particolare nelle macchine utensili a controllo numerico, é necessario avere un sensore che produca un valore numerico in corrispondenza ad ogni posizione meccanica. Ció puó essere realizzato con una maschera a tratti pieni e vuoti, con m piste che ripetono le configurazioni del codice binario a m bit, con m scelto in base alla risoluzione voluta (ad es., m = 0 consente 024 posizioni), rigidamente fissata sul pezzo di cui si vuol misurare lo spostamento. Una serie di fotocelle allineate legge un tratto di ogni pista e rileva il codice. Si realizza in tal modo un codificatore di posizioni o encoder. L encoder puó codificare uno spostamento rettilineo o uno spostamento angolare a seconda che le piste siano rettilinee o disposte su una corona circolare. L encoder presenta un problema quando la posizione da rilevare é in corrispondenza alla demarcazione fra due regioni codificate contigue. Se cambia un solo bit, non vi sono problemi. Ma se cambiano piú bit, certamente le fotocelle non scattano tutte contemporaneamente nello stesso punto: pertanto si creano ambiguitá, cioé il codice prodotto puó essere momentaneamente errato. Questo problema é stato risolto da Gray costruendo un codice che presenta un solo cambiamento per ogni coppia di regioni contigue lungo tutte le piste dell encoder. Il codice di Gray é un codice ciclico, con la caratteristica di essere anche riflesso. Usando questa seconda caratteristica il codice viene costruito in modo ricorsivo. Il codice di Gray a bit ha due parole, 0 e. Il codice di Gray a 2 bit si ottiene da quello a bit facendo precedere le due parole da uno 0, poi scrivendo di seguito le due parole a bit riflesse e facendole precedere da un, ottenendo quindi 4 parole.

15 .5. CODICI NUMERICI 7 Iterando con lo stesso procedimento si puó scrivere un codice a n bit, come si puó vedere dalla Tabella.3, nella quale sono riportati il codice binario a 4 bit e di fianco il codice di Gray a 4 bit. Tabella.3 DEC BIN GRAY Un semplice algoritmo permette di passare dal codice Gray al corrispondente codice binario, che viene usato nel calcolo..5.4 Codice ASCII Il codice ASCII (si pronuncia askii), acronimo di American Standard Code for Information Interchange, é il piú noto codice di caratteri. Nato inizialmente su 7 bit, é stato esteso a 8 bit; quindi é un codice a byte che rappresenta 255 caratteri piú il carattere nullo. Nei primi 28 codici sono contenuti 32 caratteri di controllo, seguiti dai codici relativi alle lettere dell alfabeto maiuscole e minuscole, alle cifre, alla punteggiatura. Nei restanti 28 codici sono contenuti vari caratteri da stampa. I primi 28 caratteri sono fissi in ogni implementazione del codice ASCII, i secondi 28 caratteri possono variare da implementazione a implementazione. Possiamo considerare il codice ASCII come l alfabeto generale dei calcolatori: il calcolatore elabora stringhe di caratteri ASCII e compie le azioni conseguenti.

16 8 CAPITOLO. NUMERAZIONI E CODICI

17 Capitolo 2 Logica delle decisioni 2. Elementi Consideriamo il quadrato di Fig 2.. Esso rappresenta l universo: cioé circonda un area e stabilisce dei confini. Dentro l area tracciamo una linea che la biseca verticalmente. Sono individuate due regioni. La regione di sinistra é il dominio di una generica variabile logica A. Possiamo affermare che la variabile A é vera nel suo dominio e che é falsa nella regione di destra, dominio della variabile Ā (detta A complemento o A negato). A Ā Fig. 2. Ridisegnamo lo stesso quadrato-universo (Fig 2.2) e tracciamo una linea che lo biseca orizzontalmente. Sono individuate due regioni, rispettivamente domini delle variabili B e B, in analogia con quanto giá visto per la variabile A. B B Fig. 2.2 Sovrapponiamo i due quadrati delle Figg. 2. e 2.2 nella Fig Nello stesso universo sono presenti i domini delle due variabili logiche A e B. Ovviamente, la variabile A é vera nella metá sinistra del quadrato, cioé nel suo dominio, cosí come appare in Fig. 2.. La variabile B é vera nella metá superiore del quadrato, cosí come appare nella Fig L indicazione delle variabili é riportata esternamente al quadrato. 9

18 0 CAPITOLO 2. LOGICA DELLE DECISIONI A Ā B B Fig. 2.3 Consideriamo ora la Fig La regione quadrettata riunisce i due domini in cui é vera la variabile A o la variabile B. Introduciamo l operatore unione. L espressione A B individua la regione a quadretti della Fig A Ā B B Fig. 2.4 Consideriamo ora la Fig La zona quadrettata individua la regione in cui sono vere entrambe le variabili A e B. Introduciamo l operatore intersezione. L espressione A B individua la regione a quadretti della Fig A Ā B B Fig Operatori logici e variabili logiche All operatore unione dell espressione A B equivale nel mondo delle variabili logiche A e B l operatore OR. All espressione A B sostituiamo l espressione A OR B e in modo pratico l espressione A + B (letto a or b : somma logica). All operatore intersezione dell espressione A B equivale nel mondo delle variabili logiche A e B l operatore AND. All espressione A B sostituiamo l espressione A AND B e in modo pratico l espressione A B (letto a and b : prodotto logico). Introduciamo inoltre l operatore NOT. Esso consente di passare dalla variabile A al suo complemento Ā

19 2.2. OPERATORI LOGICI E VARIABILI LOGICHE (inversione logica) secondo l espressione: Ā = NOT A (e quindi A = NOT Ā). Riprendendo la Fig. 2.3, possiamo ridisegnarla (Fig. 2.6) indicando le espressioni che individuano le 4 regioni dell universo logico: le espressioni A B, Ā B, A B, Ā B individuano i quattro quadranti in cui é diviso l universo logico. A Ā B A B Ā B B A B Ā B Fig. 2.6 Le variabili logiche sono variabili binarie e possono assumere soltanto due valori, VERO e FALSO. In alternativa, si usa il valore per VERO, il valore 0 per FALSO. Quindi una generica variabile X puó assumere il valore (X = ) e di conseguenza ( X = 0); oppure X = 0 e di conseguenza X =. Usando i valori e 0 per le variabili si puó sintetizzare il comportamento degli operatori AND e OR in semplici tabelle. Scriviamo dapprima la tabella dell operatore AND applicato a due variabili logiche. Nella zona di sinistra della tabella elenchiamo tutte le combinazioni possibili delle due variabili; nella zona di destra (dopo la barra verticale) scriviamo il risultato dell operazione: A B A B Tab. 2. Occorre che entrambe le variabili siano vere (=) perché il risultato sia vero (=). Scriviamo la tabella dell operatore OR applicato a due variabili: A B A + B Tab. 2.2 Basta che almeno una delle variabili sia vera (=) perché il risultato sia vero (=). Notiamo che il risultato dell operazione AND coincide con il prodotto aritmetico delle due variabili A e B, mentre quello dell operatore OR si differenzia dalla somma aritmetica nell ultimo caso ( + = ).

20 2 CAPITOLO 2. LOGICA DELLE DECISIONI E ovvia la generalizzazione a un numero qualsiasi di variabili. Scriviamo ora la tabella per il caso di tre variabili: A B C A + B + C A B C Tab. 2.3 All operatore OR viene anche dato il nome di OR INCLUSIVO, in quanto si ha risultato nel caso in cui entrambe le variabili sono vere. E stato introdotto l operatore OR ESCLUSIVO (EXOR, ), applicato a due sole variabili, per la rilevanza che esso assume nella logica. Scriviamo la tabella dell EXOR di due variabili: A B A B Tab. 2.4 Come si vede dalla tabella, viene escluso il caso in cui entrambe le variabili A e B sono vere. All operatore EXOR é stato dato un simbolo pratico: A B. L operatore EXOR non é un operatore primario, come invece sono AND, OR, NOT. Si puó infatti scrivere, combinando gli operatori con l uso standard delle parentesi: ovvero A EXOR B = (A AND B) OR (Ā AND B) A B = (A B) + (Ā B) 2.3 Equivalenze di De Moivre Sono utili le seguenti equivalenze, la cui correttezza puó essere verificata col diagramma di Fig A + B = (Ā B)

21 2.4. FUNZIONI DI DECISIONE COMPLESSE 3 e, scambiando fra loro AND e OR, A B = (Ā + B) Queste equivalenze possono essere generalizzate a piú di due variabili: A + B K = (Ā B... K) A B... K = (Ā + B K) 2.4 Funzioni di decisione complesse Le funzioni di decisione elementari sono: AND e OR. Con esse, variamente combinate, é possibile costruire qualsivoglia funzione di decisione piú complessa. Abbiamo giá visto il semplice caso dell EXOR. Anche le equivalenze di De Moivre sono funzioni di decisione appena piú complesse. Se si ha a che fare con un numero piú alto di variabili logiche definite nello stesso universo, é facile intuire come si possano generare delle funzioni di decisione complesse. Esaminiamo ora il caso della somma aritmetica in binario. Calcoliamo la somma S e il riporto R di due numeri binari di un solo bit. Scriviamo una tabella (Tab. 2.5) in cui riportiamo tutti i casi possibili: A B S R Tab. 2.5 Studiando attentamente la tabella notiamo che la somma S e il riporto R possono essere ottenuti con l uso delle funzioni di decisione giá viste. Infatti: S = A B R = A B Ricordiamo che la sottrazione aritmetica puó essere ottenuta come somma del minuendo col sottraendo opportunamente complementato. Inoltre le operazioni aritmetiche di moltiplicazione e divisione sono riconducibili rispettivamente a sequenze di somme e di sottrazioni opportune. Quindi con le sole funzioni di decisione binarie AND, OR, NOT si possono implementare non solo le funzioni di decisione ma anche le funzioni elementari dell aritmetica binaria. Realizzando le funzioni di decisione in forma elettronica é possibile costruire calcolatori elettronici binari e in generale qualsiasi tipo di elaboratore elettronico.

22 4 CAPITOLO 2. LOGICA DELLE DECISIONI

23 Capitolo 3 L algebra di Boole A questo punto sorge la necessitá di avere uno strumento efficiente ed efficace per trattare le funzioni di decisione binarie. Questo strumento esiste ed é l algebra di Boole. George Boole (85-64) introduce attorno al 850 un algebra della logica, con la quale intende investigare le leggi del pensiero umano: l intera struttura del calcolo delle proposizioni dipende dal presupposto che le affermazioni logiche, che vengono fatte, possono essere o vere o false: non sono ammesse condizioni intermedie. Nel 938 C. E. Shannon si accorge che l algebra di Boole é lo strumento cercato per trattare le funzioni logiche binarie usate in elettronica. Oggi, l algebra di Boole é il fondamento della progettazione logica dei moderni elaboratori elettronici. Non intendiamo dare qui una rigorosa trattazione matematica dell algebra di Boole: per questo rimandiamo a testi specializzati. Presentiamo invece un sommario dei postulati e teoremi; inoltre diamo un riferimento per il normale uso dell algebra di Boole orientato alla progettazione dei sistemi logici. 3. Postulati Presentiamo qui l insieme dei postulati che sono alla base dell algebra di Boole. Postulato a X = se X 0. Postulato b X = 0 se X. Questi due postulati definiscono formalmente una variabile binaria, cioé a due valori. Postulato 2a 0 0 = 0. Postulato 2b + =. Questi postulati introducono le notazioni e +. La notazione = é accettata nel suo significato convenzionale. implica lo AND logico. + implica lo OR logico. Si noti che i postulati con suffisso a e b sono uno il duale dell altro. Postulato 3a =. Postulato 3b = 0. Postulato 4a 0 = 0 = 0. Postulato 4b 0 + = + 0 =. Postulato 5a 0 =. Postulato 5b = 0. 5

24 6 CAPITOLO 3. L ALGEBRA DI BOOLE I postulati dal 2 al 4 definiscono le operazioni AND e OR. I postulati 4a e 4b introducono la proprietá commutativa nell algebra di Boole. I postulati 5a e 5b introducono l operazione complemento (NOT). Questi postulati costituiscono la base di tutti i teoremi che seguono. 3.2 Teoremi Anche nell algebra di Boole le lettere dell alfabeto sono usate per rappresentare le variabili, che sono binarie e che possono assumere due soli valori: o 0 o. In elettronica possiamo definire che un interruttore puó essere nello stato ON (chiuso) quando conduce, nello stato OFF (aperto) quando interrompe il circuito. Possiamo identificare lo stato ON dell interruttore con lo stato booleano, lo stato OFF con lo stato 0 booleano: in elettronica le cifre e 0 non rappresentano un numero, bensí uno stato! Se l interruttore A é in conduzione, possiamo scrivere A =. I due stati e 0 di una variabile non possono esistere simultaneamente: se assumiamo A = implichiamo Ā = 0; parimenti se assumiamo A = 0 implichiamo Ā = (se un interruttore é ON non puó allo stesso tempo essere OFF). Nota - Spesso il simbolo viene omesso se dal contesto appare che non si creano ambiguitá. L espressione A B + C appare scritta AB + C. Teorema a X + 0 = X. Teorema b X = X. Continuando con l analogia elettronica, definiamo OR la connessione di due o piú interruttori in parallelo. Se X denota un interruttore che puó essere aperto ( 0 ) o chiuso ( ), il teorema a definisce che lo stato della rete elettrica equivalente (Fig. 3.) é totalmente dipendente dallo stato dell interruttore X. 0 X + 0 = X X Fig. 3. In modo duale, definiamo AND la connessione di due o piú interruttori in serie. Se X denota un interruttore che puó essere aperto ( 0 ) o chiuso ( ), il teorema b definisce cho lo stato della rete elettrica equivalente (Fig. 3.2) é totalmente dipendente dallo stato dell interruttore X. X X = X Fig. 3.2 In senso formale, i Teoremi a e b sono dimostrati mediante la tecnica nota come analisi deduttiva. Cioé, i Postulati 2 e 3 sono applicati in sequenza per rendere conto di tutti i possibili stati di X, verificando che i Teoremi a e b sono uguaglianze valide.

25 3.2. TEOREMI 7 Teorema 2a X + =. Teorema 2b X 0 = 0. Teorema 3a X + X = X. Teorema 3b X X = X. Teorema 4a (X) = X. Teorema 4b ( X) = X. Teorema 5a X + X =. Teorema 5b X X = 0. I Teoremi 2-5 completano i fondamenti formali aritmetici dell algebra booleana. Essi possono essere dimostrati mediante l analisi deduttiva. Nella Fig. 3.3 sono mostrate le reti elettriche equivalenti. X + = X X X 0 = 0 0 X X + X = X X X X X X = X Fig. 3.3 Diamo infine alcuni teoremi, che sono molto utili nella manipolazione algebrica delle equazioni booleane. Questi teoremi sono dimostrabili mediante i teoremi giá introdotti. Alcuni dei teoremi usano la proprietá distributiva, valida anche per l algebra booleana. Teorema 6a X(X + Y ) = X. Teorema 6b X + XY = X. Teorema 7a X( X + Y ) = XY. Teorema 7b X + XY = X + Y. Teorema 8a XY + XZ = X(Y + Z). Teorema 8b (X + Y )(X + Z) = X + Y Z. Teorema 9a XY + Y Z + XZ = XY + XZ. Teorema 9b (X + Y )( X + Z) = XZ + XY.

26 8 CAPITOLO 3. L ALGEBRA DI BOOLE 3.3 Funzioni booleane 3.3. Tabella delle combinazioni Ciascuna variabile booleana puó assumere uno dei due stati o 0. Due variabili prese insieme possono individuare 2 2 = 4 stati. La variabile A puó essere presente come A o Ā. Una seconda variabile B puó anch essa essere presente come B o B. Queste due variabili prese insieme possono dare luogo a quattro combinazioni: AB, A B, ĀB, Ā B. Assegnando alla variabile vera e 0 alla variabile complementata possiamo riscrivere i quattro stati come,0,0,00. Tre variabili possono essere scritte in 2 3 differenti combinazioni, dando luogo a 2 3 stati; n variabili danno luogo a 2 n stati. La tabella delle combinazioni é un elencazione sistematica di tutte le combinazioni che un gruppo di variabili binarie puó assumere, ordinate secondo la sequenza numerica binaria. Date tre variabili A, B, C, sono possibili 2 3 = 8 differenti combinazioni di queste variabili prese insieme. In Tab. 3. é mostrata la tabella delle combinazioni delle tre variabili A, B, C. A B C Comb Ā C 0 0 Ā BC ĀB C ĀBC 0 0 A B C 0 A BC 0 AB C ABC Tab Tabella della veritá Una funzione booleana f(a, B, C) é un espressione algebrica in cui compaiono le variabili A, B, C sia nella forma vera che in quella complementata, variamente collegate fra loro con gli operatori AND e OR. Una funzione booleana viene univocamente definita dalla sua tabella della veritá. La tabella della veritá é un estensione della tabella delle combinazioni: a questa viene aggiunta sulla destra una colonna nella quale é indicato lo stato che la funzione assume in corrispondenza di ogni combinazione delle variabili, per tutte le combinazioni. In Tab 3.2 é mostrata la tabella della veritá di una funzione f di tre variabili: A B C Comb f Ā C Ā BC 0 0 ĀB C 0 0 ĀBC 0 0 A C 0 0 A BC 0 AB C ABC 0 Tab. 3.2

27 3.3. FUNZIONI BOOLEANE 9 E immediato scrivere l espressione booleana della funzione f partendo dalla tabella della veritá. La funzione é data dallo OR delle combinazioni (somma canonica) per le quali f = : f = Ā BC + ĀBC + A BC + AB C. Il metodo appena illustrato mostra come si giunge alla sintesi delle funzioni booleane. L espressione appena scritta é l espressione primitiva della funzione f. Applicando i teoremi dell algebra booleana é possibile scrivere l espressione piú semplice della funzione f Mappe di Karnaugh Una piú eloquente ed utile rappresentazione di una funzione booleana é data dalla mappa di Karnaugh. Tutte le possibili combinazioni che un gruppo di variabili puó assumere sono rappresentate in forma di matrice nella mappa. La mappa della funzione di una variabile é tracciata in Fig 3.4. Entro l area del rettangolo c é un dominio (o cella) dove la funzione é vera e un dominio dove la funzione é falsa. A 0 Ā A Fig. 3.4 In modo simile, la mappa della funzione di due variabili (Fig. 3.5) é costituita da quattro celle, ove ogni cella rappresenta una combinazione delle due variabili. B 0 A 0 Ā B A B ĀB AB Fig. 3.5 Si puó dire che la funzione A é contenuta nelle due celle che formano la colonna di destra della matrice; la funzione Ā é contenuta nelle due celle che formano la colonna di sinistra della matrice. Assegnando A = e Ā = 0, B = e B = 0 possiamo tracciare il diagramma della mappa di Karnaugh delle combinazioni di due variabili (Fig. 3.6). Notiamo che la variabile A é listata superiormente in orizzontale, mentre la variabile B é listata lateralmente a sinistra in verticale. Le intersezioni delle colonne di A con le righe di B formano in maniera univoca le combinazioni delle due variabili. B 0 A Fig. 3.6

28 20 CAPITOLO 3. L ALGEBRA DI BOOLE La mappa di Fig. 3.5 denota le celle in funzione di A e di B. La mappa di Fig. 3.6 mostra lo stato binario associato a ciascuna cella. Le due mappe sono equivalenti. Vediamo ora l utilitá delle mappe di Karnaugh per dimostrare un teorema in un caso molto semplice. Consideriamo il Teorema 6b, X + XY = X. Questo é un problema a due variabili e puó essere contenuto nella mappa di due variabili, che abbiamo giá visto, come illustriamo in Fig X 0 X 0 X 0 Y 0 Y 0 Y 0 X XY X + XY = X Fig. 3.7 La variabile X é contenuta nelle due celle della colonna di destra. La funzione XY é contenuta nella cella singola all intersezione della colonna di destra, dove X =, con la riga inferiore, dove Y =. Si vede che la funzione X contiene o include la funzione XY ; perció la funzione XY é ridondante. Di qui la prova del Teorema 6b. La mappa di Karnaugh puó essere usata per definire una funzione. In ogni cella corrispondente alla combinazione delle variabili per cui la funzione é vera si pone ; dove la funzione é falsa si pone 0. Essa dá una definizione del tutto equivalente a quella data dalla tabella della veritá. Per fare un esempio, tracciamo, una accanto all altra (Fig. 3.8), la tabella della veritá e la mappa di Karnaugh della stessa funzione di due variabili: A B f B 0 A Fig Minimizzazione delle funzioni booleane Si puó effettuare la minimizzazione delle funzioni booleane mediante manipolazioni algebriche, utilizzando i teoremi dell algebra di Boole, oppure mediante l elaborazione delle mappe di Karnaugh Manipolazioni algebriche Facciamo alcuni esempi di manipolazioni algebriche che consentono di minimizzare le funzioni booleane. Esempio : f = A BC + Ā BC = BC(A + Ā) = BC.

29 3.4. MINIMIZZAZIONE DELLE FUNZIONI BOOLEANE 2 Esempio 2: Esempio 3: Esempio 4: f = Ā + B + C + A BC = (A BC) + A BC = f = AC + BC + ĀB = AC + BC(A + Ā) + ĀB = AC + ABC + ĀBC + ĀB = AC( + B) + ĀB(C + ) = AC + ĀB f = AB + C(AB + C) = AB + ABC + C C = AB( + C) = AB Uso delle mappe di Karnaugh Abbiamo giá visto le mappe di Karnaugh per funzioni di o 2 variabili. La mappa di Karnaugh é una disposizione ordinata di celle, che contengono le combinazioni delle variabili in modo che nel passare da una cella ad una contigua cambi lo stato di una sola variabile. La mappa contiene una cella per ogni combinazione delle variabili, in modo da esaurire tutte le combinazioni possibili. Una mappa di 2 variabili deve contenere 4 celle, perché vi sono 2 2 combinazioni differenti delle due variabili. Una mappa di tre variabili deve contenere 2 3 celle; una mappa di n variabili deve contenere 2 n celle. Raffiguriamo (Fig. 3.9) la mappa di Karnaugh di tre variabili. AB C 0 Fig. 3.9 Le variabili alfabetiche sono identificate sopra e a lato del diagramma. Al di sopra delle celle sono disposte le combinazioni delle variabili A e B secondo la disposizione del codice di Gray a 2 variabili. In verticale, a sinistra delle celle, é disposta la variabile C. Le otto celle corrispondono alle otto combinazioni di tre variabili.

30 22 CAPITOLO 3. L ALGEBRA DI BOOLE Raffiguriamo (Fig. 3.0) il diagramma della mappa di Karnaugh per quattro variabili. 00 AB CD 0 Fig. 3.0 Le variabili sono identificate sopra e a lato del diagramma. Le combinazioni delle variabili A e B sopra in orizzontale e delle varibili C e D lateralmente in verticale sono disposte secondo il codice di Gray di due variabili. La costruzione dei diagrammi delle mappe di cinque o piú variabili é la ovvia estensione di quanto fatto per giungere fino a quattro variabili. Consideriamo ora la struttura delle mappe di quattro variabili. Avendo ordinato le combinazioni, contenute nelle celle, secondo il codice di Gray, che é ciclico, i due bordi superiore ed inferiore della tabella risultano adiacenti e una sola variabile cambia stato nell attraversamento del bordo. Pertanto a questo punto possiamo considerare la mappa come cilindrica, con i due bordi superiore ed inferiore coincidenti. Una considerazione analoga vale per i bordi destro e sinistro: anch essi sono coincidenti. Ecco allora che la mappa di Karnaugh, che disegnamo in forma di matrice piana, é in realtá in forma di una superficie toroidale, senza bordi. Di conseguenza, qualsiasi cella ha una cella contigua su ognuno dei suoi quattro lati Meccanismo della semplificazione Si parte scrivendo la tabella della veritá della funzione. Da essa si ricava quali sono le combinazioni vere e si pone un nelle celle della mappa corrispondenti alle combinazioni vere. Ogni collocato nella mappa corrisponde ad una combinazione presente nella somma canonica, espressione della funzione. Per come é stata costruita la mappa, a due collocati in celle contigue corrispondono combinazioni che differiscono soltanto in una variabile: le rispettive combinazioni nella somma canonica si sommano secondo il teorema (in forma generalizzata) term Y + term Ȳ = term (Y + Ȳ ) = term. La semplificazione delle funzioni avviene attraverso l applicazione ripetuta del suddetto teorema. Inoltre le ridondanze sono automaticamente eliminate, come giá visto al paragrafo Le mappe di Karnaugh sono lo strumento piú potente per elaborare le funzioni booleane. La minimizzazione delle funzioni avviene attraverso il riconoscimento di configurazioni tipiche di gruppi di celle.

31 3.4. MINIMIZZAZIONE DELLE FUNZIONI BOOLEANE 23 Elenchiamo qui di seguito le regole da seguire per individuare i gruppi di celle rilevanti per costruire l espressione semplificata di una funzione. i gruppi possono contenere, 2, 4, 8 o in generale 2 n celle i gruppi non possono includere celle contenenti uno 0 i gruppi possono essere orizzontali o verticali, ma non diagonali: i gruppi sono quindi in forma di rettangoli o di quadrati ogni gruppo deve essere il piú largo possibile, cioé deve contenere quanti piú possibile ogni cella contenente un deve appartenere ad almeno un gruppo i gruppi si possono sovrapporre le celle che si trovano sui bordi possono venir raggruppate con quelle corrispondenti dal lato opposto (ricordiamoci del toroide ) i gruppi devono essere nel minor numero possibile senza contraddire alcuna delle regole elencate precedentemente Esempi Presentiamo ora alcuni esempi che illustrano le regole suddette. Le configurazioni dei gruppi possono essere, con riferimento ad una mappa di quattro variabili: due in celle contigue, che fanno eliminare una variabile; quattro su quattro celle in linea o su quattro celle in quadrato, che fanno eliminare due variabili; otto su otto celle in un rettangolo 2 4, che fanno eliminare tre variabili. E ovvia l estensione a mappe con piú di quattro variabili. Seguono alcuni esempi di semplificazione con mappe di tre variabili.

32 24 CAPITOLO 3. L ALGEBRA DI BOOLE C AB C AB B C Ā B C 0 AB C AB AC B C C 0 AB C AB A C C AB C AB B C + A C Ā B + Ā C C 0 AB C AB A + C B + C Fig. 3.

33 3.4. MINIMIZZAZIONE DELLE FUNZIONI BOOLEANE 25 Seguono alcuni esempi di semplificazione con mappe di quattro variabili CD 0 AB ĀD 00 0 CD 0 AB B D AB AB CD CD 0 BD B D AB CD 00 0 CD AB CD ĀB Fig. 3.2

34 26 CAPITOLO 3. L ALGEBRA DI BOOLE 00 AB AB CD 0 CD 0 0 A C 00 0 CD 0 AB B AB CD 0 D 0 AB CD CD + AC 00 0 CD 0 AB ĀB + ACD 00 0 CD 0 AB CD + A Fig AB CD ĀB + CD

35 3.4. MINIMIZZAZIONE DELLE FUNZIONI BOOLEANE 27 Lo scopo della minimizzazione di una funzione sta nel ricavare l espressione piú semplice della funzione, partendo dalla somma canonica delle combinazioni ottenuta dalla tabella della veritá. L espressione minima é una somma logica col minor numero di termini, ove ciascun termine deve contenere il minor numero di varia-bili. Il metodo sta nel cercare le configurazioni che raggruppano il maggior numero di, poiché esse consentono la semplificazione piú efficiente. Il metodo va ripetuto fino ad esaurire tutti gli presenti nella mappa. Facciamo un esempio utilizzando la mappa iniziale della Fig. 3.4a CD 0 AB (a) 00 0 CD 0 AB (b) 00 0 AB CD (c) 00 0 CD 0 AB (d) 00 0 AB CD (e) Fig. 3.4 Nella Fig. 3.4b é tracciato il miglior raggruppamento per i due della prima riga. Nella Fig. 3.4c é tracciato il miglior raggruppamento per i quattro della terza riga. Nella Fig. 3.4d é tracciato il miglior raggruppamento per i quattro delle colonne prima e quarta. Dalla Fig. 3.4e si ricava che tutti

36 28 CAPITOLO 3. L ALGEBRA DI BOOLE gli sono stati raggruppati nel modo piú efficiente. Pertanto si puó scrivere l espressione della funzione nella sua forma piú semplice: f = B C D + CD + BC in luogo della somma canonica di 8 termini, ciascuno di 4 variabili. Riportiamo nel seguito alcuni esempi di minimizzazione di funzioni. Esempio 3. f = ĀB CD + ĀBCD + AB C D + AB CD + ABC D + ABCD 00 0 CD 0 AB f = AB + BD Esempio 3.2 f 2 = ĀB C D + ĀB CD + AB CD + Ā BCD + ĀBCD + ABCD + A BCD + Ā BC D + ĀBC D 00 0 CD AB Esempio 3.3 f 2 = ĀC + ĀB + BD + CD f 3 = Ā B C D + ĀB C D + Ā B CD + ĀB CD + Ā BCD + ABCD + ĀBCD + Ā BC D + ABC D

37 3.4. MINIMIZZAZIONE DELLE FUNZIONI BOOLEANE CD AB Esempio 3.4 f 3 = Ā B + Ā C + ĀD + ABC f 4 = ĀB C D + AB C D + Ā B CD + ĀB CD + A B CD + AB CD + ABCD + A BCD + ABC D + Ā BCD 00 0 CD 0 AB f 4 = BC + BD + AB Esempio 3.5 f 5 = Ā B CD + ĀB CD + A B CD + ABCD + A BCD + ĀBCD 00 0 CD 0 AB CD 0 AB f 5 = B CD + ĀBD + ACD = Ā CD + BCD + A BD Nell Esempio 3.5 vediamo due diverse soluzioni di uguale complessitá, quindi equivalenti.

38 30 CAPITOLO 3. L ALGEBRA DI BOOLE Condizioni di indifferenza e ridondanze Puó accadere che nella tabella della veritá di una funzione compaiano condizioni in cui per una qualche combinazione il valore della funzione puó essere indifferentemente o 0. Questa condizione viene indicata nella tabella con il simbolo φ. Tale simbolo appare anche nella mappa di Karnaugh. Puó accadere inoltre che certe combinazioni non si verifichino mai (ad es., quando usiamo il codice BCD sei delle sedici combinazioni non si verificano mai): queste combinazioni sono dette ridondanze. Nella tabella della veritá in corrispondenza della ridondanza viene posto il simbolo. Tale simbolo appare anche nella mappa di Karnaugh. Sia la condizione di indifferenza sia la ridondanza vengono utili nella minimizzazione delle espressioni delle funzioni. Basta scegliere uguali a le condizioni di indifferenza che consentono una semplificazione. Le ridondanze non si verificano mai, quindi possiamo attribuire loro, dove é utile, il valore fittizio unicamente per consentire la semplificazione (dal punto di vista della logica in questo caso sommiano un termine che vale sempre 0, quindi non alteriamo la funzione). La tabella della veritá presentata in Tab. 3.3 illustra le considerazioni fatte. A B C f f φ 0 0 φ 0 0 φ 0 0 φ φ 0 0 φ 0 Disegnamo le mappe di Karnaugh per f e f 2 e ricaviamo le funzioni semplificate. AB AB C 0 φ φ C 0 φ φ φ φ f f 2 Risultano: f = ĀC; f 2 = C. Non considerando le condizioni di indifferenza e le ridondanze si avrebbe: f = Ā BC; f 2 = ĀBC.

39 Capitolo 4 I Circuiti Logici 4. Definizioni Accenneremo brevemente allo hardware che implementa elettronicamente le funzioni booleane. Dobbiamo prima introdurre alcune definizioni e convenzioni ed i simboli logici standard. digitale: é sinonimo di numerico; logica: la scienza dei principi formali del ragionamento; logica digitale: la scienza del ragionamento con stati binari; funzione logica: una funzione booleana che esprime una relazione fra variabili booleane in ingresso ed in uscita; simbolo logico: la rappresentazione grafica delle parti che realizzano una funzione logica; schema logico: uno schema grafico che rappresenta le funzioni logiche senza riferimento all implementazione fisica. Assegnamento dei livelli logici Consideriamo il dispositivo logico schematizzato in Fig. 4.. L uscita F é funzione degli ingressi A e B. A B Fig. 4. F L uscita e gli ingressi possono assumere soltanto valori fissi scelti arbitrariamente. E ormai uso consolidato distinguere fra due livelli, alto (HIGH; H) e basso (LOW; L). Ad esempio, si usa assegnare una banda di valori possibili a ciascun livello: H 2 3 volt L 0 volt mentre la banda di valori volt 2volt é proibita. Si opera in logica positiva quando lo stato é assegnato a rappresentare il livello H, mentre lo stato 0 é assegnato a rappresentare il livello L. Si opera in logica negativa quando 0 é assegnato a rappresentare il livello H, mentre é assegnato a 3

40 32 CAPITOLO 4. I CIRCUITI LOGICI rappresentare il livello L. Nel seguito si userá sempre la logica positiva: si segnalerá l uso della logica negativa quando occasionalmente sará utilizzata. 4.2 Simboli logici fondamentali (in logica positiva) Introduciamo i simboli logici delle funzioni logiche elementari dell algebra di Boole. AND - Il simbolo che segue rappresenta l operatore AND a due ingressi. A fianco é data la tabella della veritá dell AND nelle due forme, con (L,H) e con (0, ): A B F = AB F A B L L L H H L H H F L L L H A B F OR - Il simbolo che segue rappresenta l operatore OR a due ingressi. A fianco é data la tabella della veritá dell OR nelle due forme, con (L,H) e con (0, ): A B F = A + B F A B L L L H H L H H F L H H H A B F NOT - Il simbolo che segue rappresenta l operatore NOT o INVERTER: A F = A F A L H F H L A F 0 0 NAND - Il simbolo che segue rappresenta l operatore NAND a due ingressi. A fianco é data la tabella della veritá del NAND nelle sue due forme, con (L,H) e con (0, ): A B F = AB F A B L L L H H L H H F H H H L A B F NOR - Il simbolo che segue rappresenta l operatore NOR a due ingressi. A fianco é data la tabella della veritá del NOR nelle sue due forme, con (L,H) e con (0, ):

41 4.2. SIMBOLI LOGICI FONDAMENTALI (IN LOGICA POSITIVA) 33 A B F = A + B F A B L L L H H L H H F H L L L A B F N.B. - Il cerchietto (bubble in inglese), che é presente sull uscita di NOT, NAND, NOR, sta a indicare che l uscita é in logica invertita, cioé l uscita é 0 invece di, come é ben evidente nel caso del NOT. Simbolo logico generico Il rettangolo che appare di seguito é il simbolo di una funzione logica generica. Detto simbolo deve essere adeguatamente specificato per identificare la funzione eseguita: deve esserne data la relativa tabella della veritá, oppure l espressione esplicita. I I 2 F I n F = F (I, I 2,..., I n ) AND e OR a piú ingressi Diamo qui di seguito i simboli e le tabelle della veritá dell AND e dell OR a tre ingressi. A B C F = ABC F A B C F A B C F = A + B + C F A B C F E ovvia la generalizzazione a AND e OR con piú di 3 ingressi.

42 34 CAPITOLO 4. I CIRCUITI LOGICI 4.3 Logica a diodi Consideriamo il circuito di Fig. 4., composto da due diodi D e D2 e da un resistore R (+V a = 2V ; R = 0KΩ). Gli ingressi A e B possono essere posti a livello 0V o a livello +5V. Scriviamo: la tabelle di funzionamento del circuito; la corrispondente tabella della veritá (H 5V ; L 0V ). +V a R A B F A B F D D2 F 0v 0v 0v 0v 5v 0v 5v 0v 0v 5v 5v 5v L L L L H L H L L H H H A B Fig. 4. Questo semplice circuito si comporta come un AND: esso meccanizza l operatore AND. 4.4 Circuiti integrati Consideriamo ora il circuito di Fig v R R2 A B F A B D D2 D3 D4 T R 0v F L L H L H H H L H H H L Fig. 4.2 Basta che almeno uno degli ingressi A e B sia posto a 0v perché l uscita F sia a 5v (transistor TR spento: equivalente a interruttore aperto). Se entrambi gli ingressi sono a +5v, l uscita F é a 0v

43 4.5. CONSIDERAZIONI SUL CIRCUITO NAND 35 (transistor acceso: equivalente a interruttore chiuso). La tabella di funzionamento (H = 5v; L = 0v) é la tabella caratteristica di un NAND: F = AB. Quindi il circuito di Fig. 4.2 implementa un NAND a due ingressi. Questo circuito é stato il prototipo della serie dei circuiti logici integrati DTL (tecnologia Diode Transistor Logic). Attualmente le tecnologie correnti sono: TTL (Transistor Transistor Logic), ECL (Emitter Coupled Logic), CMOS (Complementary Metal Oxide Semiconductor). Nasce subito il problema dell interconnessione fra funzioni integrate: deve essere data una modalitá di interconnessione che garantisca che il circuito finale sia funzionante correttamente. Allo scopo sono stati introdotti il fan-out e il fan-in. Gli ingressi sono tutti normalizzati su una data corrente, la stessa per tutti (fan-in = ). Le uscite devono sopportare una corrente totale massima pari a 0 correnti normalizzate (fan-out = 0). Cosí basta contare il numero di fan-in connessi ad ogni uscita e verificare che questo numero sia sempre minore o uguale a 0 per essere sicuri del corretto funzionamente del circuito completo. 4.5 Considerazioni sul circuito NAND Il NAND é rappresentato col simbolo A B F = AB F Applicando le equivalenze di De Moivre possiamo scrivere: F = AB = A + B A questa seconda espressione puó esser fatta corrispondere la seguente rappresentazione equivalente del NAND: A B F = A + B F da cui si deduce che il NAND, in logica positiva in ingresso e in logica negativa in uscita, é al tempo stesso un OR in logica negativa in ingresso e in logica positiva in uscita. Possiamo allora collegare i NAND in cascata nel modo seguente: A B D C AB CD F = AB + CD

44 36 CAPITOLO 4. I CIRCUITI LOGICI Quindi con soli NAND si possono realizzare entrambe le funzioni AND e OR. Infine, se collego insieme gli ingressi del NAND ottengo un NOT: A F = A Appare evidente che con soli NAND é possibile generare tutte e tre le funzioni logiche della logica booleana, quindi con soli circuiti NAND é possibile costruire tutte le funzioni richieste. Infatti, all inizio dell era dei circuiti integrati digitali erano prodotti solo i NAND. In seguito sono venuti gli integrati con tutte le funzioni e in ampia varietá.

45 Capitolo 5 Logica Combinatoria 5. Definizioni La logica combinatoria tratta la realizzazione delle reti logiche di decisione (macchine combinatorie), usando le tecniche fornite dall algebra di Boole. Lo schema generale di una generica rete logica combinatoria é presentato in Fig. 5.. I I 2 I 3 rete logica combinatoria F F 2 F 3 I n F m Fig. 5. Sono indicate le n variabili in ingresso I, I 2,..., I n e le m funzioni logiche in uscita F, F 2,..., F m. La rete logica sará risolta quando saranno note le espressioni logiche delle funzioni: F = F (I, I 2,..., I n ) F 2 = F 2 (I, I 2,..., I n ) F m = F m (I, I 2,..., I n ) Si noti che la rete logica combinatoria é considerata a risposta istantanea (prescindendo dal piccolo ritardo di propagazione dei segnali elettrici), poiché in ogni istante lo stato delle funzioni in uscita é completamente determinato dallo stato delle variabili d ingresso in quello stesso istante. 37

46 38 CAPITOLO 5. LOGICA COMBINATORIA 5.2 Progettazione La procedura per progettare una rete logica combinatoria passa attraverso i seguenti stadi: : definizione completa e univoca del problema da risolvere 2: analisi del problema, con individuazione delle variabili d ingresso e delle funzioni di uscita 3: scrittura della tabella della veritá di ogni funzione 4: sintesi delle funzioni e loro semplificazione con le mappe di Karnaugh 5: disegno della schema logico della rete. Talvolta é necessario riciclare fra i primi tre stadi della procedura, poiché la definizione del problema data in linguaggio naturale puó presentare delle ambiguitá. Completati i primi tre stadi con la corretta e completa scrittura delle tabelle della veritá delle funzioni, i rimanenti stadi sono automatici: basta applicare correttamente le tecniche dell algebra di Boole. Un circuito logico combinatorio puó avere dozzine di ingressi, dozzine di uscite e puó richiedere centinaia di espressioni del tipo somma di prodotti logici, e migliaia e migliaia di righe per costruire la tabella della veritá della rete. Di conseguenza, molti problemi di progetto di reti logiche combinatorie reali possono essere troppo complessi per essere risolti con l applicazione diretta della procedura vista. Ma sorge anche un altro problema: come puó la mente umana concepire dal nulla un sistema logico cosí complesso? La risposta sta nel ragionamento strutturato. Un sistema complesso é il risultato di una collezione di tanti sottosistemi meno complessi, ciascuno dei quali puó essere descritto in modo piú semplice. Negli anni sono state sviluppate parecchie strutture basilari, dette moduli funzionali: decoder, multiplexer, demultiplexer, sommatori, comparatori, alu e simili. Questi moduli si ritrovano abbastanza regolarmente come blocchi costitutivi di piú grossi sistemi. Descriveremo nel seguito come sono fatti questi moduli funzionali. Qui basta poterli descrivere ciascuno con un suo blocco logico funzionale, su cui sono individuati ingressi e uscite, di cui é definita la funzionalitá. L interconnessione di un insieme di questi blocchi logici funzionali viene a costituire un diagramma a blocchi, anche di notevole complessitá, pur rimanendo perfettamente comprensibile e sotto controllo, che descrive la complessa rete che si intende realizzare. Ultimamente sono stati sviluppati sistemi software (CAD) che aiutano considerevolmente nel trattare le reti complesse e semplificano e riducono il lavoro manuale; mai peró possono sostituire l ingegno umano nell ideare nuove strutture logiche e nuove funzionalitá. Ad illustrazione della procedura descritta e del modo con cui va utilizzata diamo nel seguito due semplici esempi di progettazione di reti logiche combinatorie Esempi Esempio. Problema - Costruire un decodificatore che pilota un display a 7 segmenti, partendo da una cifra decimale codificata in binario secondo il codice BCD. Analisi - Il dato disponibile é l uscita da una decade di conteggio operante in BCD: sono disponibili 4 linee che portano la configurazione BCD corrispondente ad una cifra decimale. Si vogliono accendere i segmenti luminosi di un display a 7 segmenti per visualizzare la cifra decimale corrispondente. In Fig.

47 5.2. PROGETTAZIONE é disegnato il blocco funzionale da realizzare, con l indicazione dei 4 ingressi (BCD) A 0, A, A 2, A 3 e delle 7 uscite a, b, c, d, e, f, g con riferimento allo schemino del display. Lo stato sull uscita accende il segmento corrispondente. A 3 A 2 A A 0 decoder BCD 7segm a b c d e f g f e a g d b c Fig. 5.2 Tabella della veritá - Si procede a scrivere la tabella della veritá per le 0 combinazioni degli ingressi A 0, A, A 2, A 3, corrispondenti alle 0 cifre decimali. In tabella sono omesse le 6 combinazioni, che non si verificano mai, che verranno utilizzate quali ridondanze nella semplificazione delle funzioni. A 3 A 2 A A 0 a b c d e f g Sintesi e minimizzazione - Tracciamo e analizziamo le 7 mappe di Karnaugh per ricavare le 7 funzioni a, b, c, d, e, f, g. Su tutte le mappe sono riportate le sei ridondanze (celle con ). A 3 A A 3 A A A 0 A A a = A 2 + A A 0 + A A 0 b = A + A 0 + A 2

48 40 CAPITOLO 5. LOGICA COMBINATORIA A 3 A A 3 A A A 0 A A c = A 2 A 0 + A 2 A + A A 0 + A 2 A A 0 d = A 2 A 0 + A A 0 A 3 A A 3 A A A 0 A A e = A 3 + A A 0 + A 2 A + A 2 A 0 f = A 3 + A + A 2 A 0 + A 2 A 0 A 3 A A A 0 0 g = A 3 + A A 0 + A 2 A + A 2 A A questo punto é possibile procedere a disegnare lo schema logico del decodificatore. Esempio 2. Problema - realizzare un sommatore assoluto per numeri binari di n bit. Analisi - Si intuisce che il sommatore puó essere suddiviso in n celle identiche (Fig. 5.3), che operano in parallelo sui numeri ma con propagazione seriale del riporto. Pertanto basta studiare in dettaglio la cella prototipo, con la quale per replicazione sará costruito il sommatore. Ogni cella presenta 3 ingressi, i due bit da sommare A i e B i e il bit di riporto C i dalla cella precedente, e 2 uscite, il bit di somma S i e il bit di riporto C i verso la cella successiva.

49 5.2. PROGETTAZIONE 4 S i S i S i+ C i Adder Adder Adder C i C i+ A i B i A i B i A i+ B i+ Fig. 5.3 Tabella della veritá - Si procede a scrivere per il blocco adder la tabella della veritá delle uscite S i e C i relative alle otto combinazioni dei tre ingressi C i, A i, B i. C i A i B i S i C i Sintesi e minimizzazione - Si procede alla sintesi della somma S i con l uso della mappa di Karnaugh. B i 0 C i A i La mappa di Karnaugh non aiuta. E invece possibile qualche manipolazione algebrica. S i = C i A i B i + C i A i B i + C i A i B i + C i A i B i = C i (A i B i + A i B i ) + C i (A i B i + A i B i ) = C i (A i B i ) + C i (A i B i ) = C i (A i B i ) Attraverso l uso dell operatore EXOR la somma é facilmente implementabile. Si procede alla sintesi del riporto C i mediante la mappa di Karnaugh.

50 42 CAPITOLO 5. LOGICA COMBINATORIA C i A i B i 0 da cui si ricava direttamente: C i = A i B i + C i A i + C i B i Avendo ricavato le due funzioni S i e C i il blocco adder é definito. Quindi si puó procedere a disegnare lo schema logico completo. Nota - Questo sommatore ha una grave limitazione. La somma é stabile solo dopo che il riporto si é propagato lungo tutta la serie di adder. La condizione piú sfavorevole si verifica quando il riporto deve propagarsi dal primo fino all ultimo adder: in questa condizione il ritardo di propagazione é massimo e pone un limite alla massima velocitá operativa della rete logica. Se questo fatto si rivela critico, occorre sviluppare un algoritmo piú efficiente, anche se piú complesso. 5.3 Blocchi logici funzionali Diamo qualche esempio di blocco logico funzionale, elemento costitutivo di schemi logici complessi Il decoder binario Un decoder binario ha tante uscite quante sono le combinazione delle variabili d ingresso. E fatto in modo che sia attiva la sola uscita che corrisponde alla combinazione presente in ingresso. In Fig. 5.4 é rappresentato, in forma di blocco funzionale, un decoder a 2 ingressi, quindi a 2 2 = 4 uscite. A B DEC 2 4 F 0 = A B F = A B F 2 = A B F 3 = A B Fig. 5.4 E intuitivo procedere all estensione ai decoder 3 8, 4 6, ecc Il multiplexer binario Il multiplexer é la realizzazione interamente elettronica di un commutatore meccanico. Esso permette di selezionare un ingresso fra tanti e di inviare in uscita il suo stato. Il multiplexer si avvale di un decoder per effettuare la selezione degli ingressi. In Fig 5.5 é rappresentato, in forma di blocco funzionale, un multiplexer a 4 ingressi (4 ).

51 5.3. BLOCCHI LOGICI FUNZIONALI 43 I 0 I I 2 I 3 S 0 S S 0 S S 0 S S 0 S F DEC 2 4 S 0 S Fig. 5.5 L espressione logica della funzione F d uscita del multiplexer (4 ) é: F = I 0 S 0 S + I S 0 S + I 2 S 0 S + I 3 S 0 S E facile generalizzare a 2 n ingressi. Si noti che l espressione di F é molto simile ad una somma canonica, espressione di una funzione. Per questa caratteristica i multiplexer sono spesso usati per generare funzioni logiche Il demultiplexer Il demultiplexer svolge la funzione opposta rispetto al multiplexer: invia il segnale in ingresso su una delle possibili uscite selezionate da un decoder. In Fig. 5.6 é dato il blocco logico funzionale del multiplexer ( 4) e sono scritte le espressioni logiche delle uscite. I O 0 = I S 0 S DEMUX O = I S 0 S 4 O 2 = I S 0 S O 3 = I S 0 S Fig. 5.6 S 0 S E ovvia la generalizzazione a un demultiplexer con 2 n uscite.

52 44 CAPITOLO 5. LOGICA COMBINATORIA Altri blocchi logici funzionali Oltre ai blocchi funzionali giá presentati, che sono di piú frequente uso, ne esistono molti altri, sia come funzioni di decisione (codificatori di prioritá, display drivers, porte direzionali, ecc), sia come funzioni aritmetiche (unitá aritmetico-logiche (ALU), comparatori, ecc), spesso disponibili come microcircuiti integrati ad elevata scala d integrazione. Si puó fare riferimento a pubblicazioni specializzate e ai cataloghi delle case costruttrici di circuiti integrati.

53 Capitolo 6 Logica Sequenziale 6. Dalla logica combinatoria alla logica sequenziale Si é visto che le tecniche della logica combinatoria consentono di costruire un numero considerevole di funzioni di decisione e di funzioni aritmetiche. Occorre peró ricordare che tutte queste funzioni sono a risposta istantanea, nel senso che lo stato delle variabili d uscita dipende in ogni istante dallo stato delle variabili d ingresso nello stesso istante (si considera nullo il tempo di propagazione dei segnali elettrici nella rete circuitale che realizza le funzioni): nelle tabelle della veritá non compare il tempo. Una rete logica combinatoria da sola non é in grado di realizzare una semplice operazione quale puó essere un conteggio. Infatti per effettuare un conteggio devono intervenire nuove entitá. Il conteggio avviene col passare da un dato numero ad un numero successivo in una sequenza regolare e ordinata, che si sviluppa nel tempo. Ad ogni numero puó essere associato uno stato, cosí che una sequenza di numeri é in corrispondenza biunivoca con una sequenza di stati. Per passare da un numero al successivo occorre ricordare a quale numero é giunto il conteggio. Occorre quindi una memoria che ricordi lo stato (numero) cui é giunto il conteggio e che possa evolvere allo stato successivo. Il processo di evoluzione implica il tempo. Ecco allora che occorre realizzare un sistema in cui é presente una memoria, che memorizza gli stati interni e che evolve nel tempo sotto il controllo della rete logica combinatoria, che esegue le operazioni di decisione ed aritmetiche. Questo sistema costituisce una logica sequenziale. La logica sequenziale puó essere realizzata fisicamente in due modi diversi. come: - logica sequenziale asincrona - logica sequenziale sincrona 6.2 Logica sequenziale asincrona Nella logica sequenziale asincrona il tempo interviene in due modi. a)- Si usa il ritardo di propagazione dei segnali elettrici nella rete per introdurre il tempo di macchina. b)- Si usa il tempo reale per l acquisizione degli eventi esterni. Il primo punto é critico. Il tempo di propagazione dei segnali dipende dalla temperatura dei semiconduttori, con cui il circuito elettrico é realizzato, e varia con essa; inoltre esso é dipendente dalla dispersione dei parametri fisici che intervengono nel processo tecnologico di fabbricazione dei componenti. Tutto ció rende la realizzazione della logica sequenziale asincrona molto critica e soggetta a problemi di riproducibilitá, ancorché essa consenta la piú elevata velocitá operativa dei circuiti. Perció essa viene usata molto limitatamente, per realizzare particolari circuiti semplici, che possono trarre vantaggio dalla alta velocitá operativa; ma é completamente abbandonata nelle grandi realizzazioni, per le quali si ricorre alla ben piú sicura e riproducibile logica sequenziale sincrona. 45

54 46 CAPITOLO 6. LOGICA SEQUENZIALE 6.3 Logica sequenziale sincrona Nel seguito verrá studiata la logica sequenziale sincrona (o impulsata): in Fig. 6. é dato uno schema grafico che la illustra concettualmente. CLOCK M em o ri k OUT 2 a IN n Logica m combinatoria OUT Fig Diagramma a blocchi di una logica sequenziale sincrona Nota - I segnali in ingresso (IN) e in uscita (OUT) sono segnali logici. Il clock é un segnale temporale: non é un segnale logico. Un segnale logico non puó e non deve diventare un segnale di clock e viceversa. Esaminando la Fig. 6. si notano i due blocchi interni, Memoria e Logica Combinatoria, e le varie linee di segnale. Vi sono n linee d ingresso (IN) sulla Logica, m linee d uscita (OUT) dalla Logica, k linee d uscita diretta (OUT2) dalla Memoria, molte linee di interconnessione fra Logica e Memoria; ma soprattutto si evidenzia la linea del CLOCK (termine inglese per orologio), la linea che introduce il tempo della logica sequenziale sincrona. Si noti che la linea del clock opera esclusivamente sulla Memoria. Il tempo entra sotto forma di un segnale di frequenza (clock), che scandisce le operazioni: i cambiamenti di stato della memoria avvengono esclusivamente in corrispondenza di una transizione del segnale di clock. In Fig. 6.2 é dato il diagramma temporale del segnale di clock: sono visualizzati due periodi consecutivi, t n e t n+ ; i cambiamenti di stato avvengono convenzionalmente in corrispondenza della transizione positiva del clock. t t n t n+ Fig Diagramma temporale del clock Ecco: il nome di logica sequenziale sincrona viene dal fatto che i cambiamenti di stato degli organi della memoria avvengono in sincronia col segnale di clock. Si puó anche vedere il segnale di clock come una sequenza temporale di impulsi, ove ogni impulso comanda il cambiamento di stato della memoria: da qui il nome alternativo di logica sequenziale impulsata.

55 6.3. LOGICA SEQUENZIALE SINCRONA 47 Quanto alla Logica Combinatoria, nei capitoli precedenti sono state ampiamente trattate la sua costituzione e le tecniche di progettazione. Occorre ora esaminare la Memoria, studiandone gli elementi costitutivi e la sua strutturazione La Memoria La Memoria deve immagazzinare un codice binario, che rappresenta lo stato interno della logica sequenziale. Un codice é costituito da un certo numero n di bit. L insieme degli elementi di memoria, che memorizzano un codice binario di n bit, costituisce un registro di n bit. Occorre quindi un elemento di memoria che possa immagazzinare un bit. L elemento di memoria binaria, costitutivo del registro, é il flipflop. La memorizzazione del bit nel flipflop avviene in corrispondenza della transizione attiva del clock: ogni flipflop opera sotto comando del clock. Quindi ad ogni flipflop deve giungere il clock oltre ai segnali logici di ingresso. Si esaminano ora i quattro tipi principali di flipflop: RS, D, T, JK. Flipflop RS Il flipflop Reset-Set RS é il capostipite della serie. In Fig. 6.3 é dato il simbolo logico e la tabella caratteristica di funzionamento. S n R n Q n+ CP S R Q Q Q n 0 Fig Flipflop RS Si notano i due comandi S, R e l ingresso del clock CP. Da ogni flipflop sono disponibili le due uscite Q e Q, che portano all esterno lo stato del bit memorizzato nelle due forme, vera e complementata. La tabella caratteristica spiega il funzionamento del flipflop RS. Il comando viene predisposto nel periodo t n del clock e il risultato conseguente é disponibile nel periodo t n+ del clock, dopo la transizione attiva. Dalla tabella si desume che: quando entrambi gli ingressi sono a 0 in t n, in t n+, il flipflop resta nello stesso stato in cui é a t n ; quando S n = 0 e R n = in t n+ é Q n+ = 0 (flipflop resettato); quando S n = e R n = 0 in t n+ é Q n+ =. La combinazione S n = e R n = é proibita: non deve presentarsi mai. Flipflop D Il flipflop D é presentato in Fig. 6.4: sono dati il simbolo logico e la tabella caratteristica di funzionamento. D Q D n Q n+ CP 0 Q 0 Fig Flipflop D Il flipflop D riporta al periodo t n+ lo stato dell ingresso presente a t n. In effetti esso ritarda il dato di un periodo di clock, da cui il nome del flipflop (D sta per Delay). Il flipflop D é l elemento costitutivo dei

56 48 CAPITOLO 6. LOGICA SEQUENZIALE registri a scorrimento, come si vedrá nel seguito. Nota - E il flipflop costruttivamente piú semplice, piú veloce, piú facilmente realizzabile in forma integrata ad alto impaccamento. Flipflop T Il flipflop T é presentato in Fig. 6.5: sono dati il simbolo logico e la tabella caratteristica di funzionamento. T Q T n Q n+ CP 0 Q Q n Q n Fig Flipflop T Dalla tabella si desume che il flipflop T resta nello stato in cui é per T n = 0; per T n = commuta, cioé in t n+ va nello stato complementare (T sta per Toggle). E l elemento piú adatto per costruire contatori binari. Flipflop JK Il flipflop JK é presentato in Fig. 6.6: sono dati il simbolo logico e la tabella caratteristica di funzionamento. J n K n Q n+ CP J K Q Q Q n 0 Q n Fig Flipflop JK Il flipflop JK é il piú generale e il piú complesso. Se si esclude l ultima combinazione degli ingressi J e K diviene un flipflop RS. Se si collegano insieme i due ingressi diventa un flipflop T (Fig. 6.7a). Se l ingresso K é comandato da J attraverso un inverter diventa un flipflop D (Fig. 6.7b). T J K Q D J K Q CP Q CP Q (a) Fig. 6.7 Per questa sua versatilitá il flipflop JK é disponibile in forma di circuito integrato per essere usato direttamente a livello elementare. E importante vedere ora il modo con cui puó essere comandato, come illustrato nella tabella di comando (Tab. 6.). (b)

57 6.3. LOGICA SEQUENZIALE SINCRONA 49 Q n Q n+ J n K n φ 0 φ 0 φ φ 0 Tab. 6. In essa é indicato come devono essere predisposti gli ingressi J n e K n nel periodo t n affinché il flipflop passi dallo stato Q n in t n allo stato Q n+ in t n+. L indicazione φ significa che é indifferente che il comando sia 0 o (condizione di indifferenza). Questa particolaritá del comando del flipflop JK diviene utile nella semplificazione delle funzioni di comando J e K con le tabelle della veritá. Struttura master-slave del flipflop Un flipflop, inserito in una rete logica, si trova nella condizione indicata in Fig J K CP Q Q Logica combinatoria Fig. 6.8 Si vede che le uscite del flipflop entrano nelle funzioni logiche combinatorie che comandano gli ingressi J e K del flipflop stesso. Questo fatto puó produrre degli inconvenienti durante la commutazione del flipflop: quando le uscite Q e Q iniziano a variare elettricamente, esse inducono una variazione elettrica degli ingressi J e K del flipflop, creando una interazione (feedback) che puó compromettere il buon funzionamento del flipflop. E stata allora introdotta la struttura master-slave come indicato in Fig J M as S la Q K t e r v e Q CP Fig. 6.9 Il flipflop in uso é in realtá costituito da 2 flipflop, il flipflop Master e il flipflop Slave. Gli ingressi operano sul Master; le uscite Q e Q escono dallo Slave. Il clock CP opera su entrambi. Durante l evoluzione dell impulso del clock si verificano 4 eventi importanti, come indicato in Fig. 6.0.

58 50 CAPITOLO 6. LOGICA SEQUENZIALE Fig Impulso di clock : il flipflop slave é disconnesso dal master 2: gli ingressi operano sul master 3: gli ingressi sono staccati dal master (nel tratto da 2 a 3 il master si assesta nella condizione comandata dagli ingressi) 4: lo slave é riconnesso al master e ne assume lo stato. In questo modo non v é interazione fra ingressi e uscite durante la commutazione del flipflop. L operazione del flipflop é quindi sicura ed esatta. 6.4 Stati interni e variabili di stato Come giá visto, n fliflop costituiscono un registro, che memorizza un codice binario di n bit. Ciascun bit del codice é identificato come una variabile di stato. Ogni flipflop del registro memorizza una variabile di stato. Lo stato di una logica sequenziale é quindi determinato dalle variabili di stato, che possono assumere ciascuna i due soli valori binari 0 e e che sono raccolte nel codice. Un codice binario di n bit puó assumere 2 n combinazioni distinte; quindi puó rappresentare 2 n stati, detti stati interni della logica sequenziale. Ogni stato interno contiene in sé tutta l informazione sul passato della logica sequenziale, informazione necessaria e sufficiente per determinare l evoluzione futura della logica sequenziale stessa. Per quanto grande possa essere 2 n, esso é sempre un numero finito. Perció é finito il numero di stati possibili: la logica sequenziale é anche detta macchina a stati finiti. 6.5 Analisi di una logica sequenziale L analisi é orientata a dedurre come funziona una logica o rete sequenziale quando ne é noto lo schema logico. In generale l analisi é molto difficile quando la rete é complessa. In caso di reti molto complesse bisogna ricorrere a sistemi computerizzati con calcolatori molto potenti e software molto sofisticato. Qui per scopi didattici ci si limita ad una caso semplice e abbastanza facilmente trattabile. In Fig. 6. é disegnato lo schema logico di una semplice logica o rete sequenziale, che include due soli flipflop A e B, che costituiscono il registro di memoria. La logica combinatoria, molto semplice, é costituita da 4 funzioni logiche elementari. E presente un ingresso esterno W e una sola uscita Z.

59 6.5. ANALISI DI UNA LOGICA SEQUENZIALE 5 W B A B J K J K A B Q Q Q Q A A B B A B Z CP Fig. 6. Scopo dell analisi é capire il funzionamento della rete, cioé dedurre Z in funzione di W. Fase. - Dapprima si ricavano dallo schema logico le funzioni di comando dei flipflop e la funzione d uscita, scrivendo le relative espressioni logiche. J A = B K A = (B W ) = B + W J B = (W A) K B = Z = A B Si noti che l uscita Z é funzione delle sole variabili di stato A e B: non usa la variabile esterna W. Fase 2. - La rete contiene 2 flipflop; quindi possiede 2 2 = 4 stati interni. Si procede arbitrariamente all assegnazione degli stati interni nel modo seguente, prendendo come riferimento la sequenza binaria fondamentale: A B Stati 0 0 S 0 0 S 0 S 2 S 3 Fase 3. - Si tratta di ricostruire l evoluzione della rete. Si sceglie arbitrariamente uno stato interno e si fa evolvere la rete da quello stato per uno dei valori della variabile d ingresso W. Primo passo. Con W = 0 si parte dallo stato S 0, per il quale le variabili di stato assumono i seguenti valori: A = 0, B = 0. Si ricavano i valori delle funzioni di comando dei flipflop. Risulta: J A = 0, K A = 0, J B =, K B =, Z = Si deduce che il flipflop A non cambia stato; il flipflop B cambia stato. Quindi le variabili di stato divengono A = 0, B = e si va dallo stato S 0 allo stato S. Con W = si parte ancora dallo stato S 0 e si ricavano i valori delle funzioni di comando: J A = 0, K A =, J B =, K B =, Z =

60 52 CAPITOLO 6. LOGICA SEQUENZIALE Risulta: A = 0, B =. Anche in questo caso si va allo stato S. Secondo passo. Ripetendo la procedura seguita al primo passo, questa volta partendo da A = 0, B = si ricava che sia per W = 0 sia per W = : J A =, K A =, J B =, K B =, Z = 0 Risulta: A =, B = 0. Quindi si passa dallo stato S allo stato S 2. Terzo passo. Con A =, B = 0, W = 0: J A = 0, K A = 0, J B =, K B =, Z = 0 Risulta: A =, B =. Con W = 0 si passa dallo stato S 2 allo stato S 3. Con A =, B = 0, W = : J A = 0, K A =, J B = 0, K B =, Z = 0 Risulta: A = 0, B = 0. Con W = si passa dallo stato S 2 allo stato S 0. Quarto passo. Con A =, B =, W = 0: J A =, K A =, J B =, K B =, Z = 0 Risulta: A = 0, B = 0. Con W = 0 si passa dallo stato S 3 allo stato S 0. Con A =, B =, W = : J A =, K A =, J B = 0, K B =, Z = 0 Risulta: A = 0, B = 0. Con W = si passa dallo stato S 3 allo stato S 0. A B W J A K A J B K B Z A B Fig. 6. Nella Fig. 6. sono riportati i risultati ottenuti nei vari passi elencati sopra. La tabella che risulta é la tabella delle transizioni fra gli stati. A e B indicano lo stato a t n, A e B lo stato a t n+.

61 6.5. ANALISI DI UNA LOGICA SEQUENZIALE 53 Fase 4. - Partendo dalla tabella delle transizioni si puó tracciare il grafo dell evoluzione della rete: S 0 W = 0 W = Z S W = 0 W = S 2 W = W = 0 W = 0 S W = 3 Fig. 6.2 Si noti che sul grafo i cerchietti indicano gli stati interni S i e le frecce indicano le transizioni fra gli stati. Accanto alla frecce sono scritte le condizioni della variabile d ingresso W sotto le quali avvengono tali transizioni. Il grafo prende il nome di diagramma degli stati. Con W = la rete cicla su 3 stati: S 0, S, S 2, S 0... Con W = 0 la rete cicla su 4 stati: S 0, S, S 2, S 3, S 0... L uscita Z é attiva soltanto nello stato S 0. Quindi la rete sequenziale analizzata é un divisore: essa emette in uscita un impulso della durata di un periodo di clock ogni 3 o 4 cicli di clock rispettivamente per W = o W = 0. Si possono ora tracciare le forme d onda elettriche dei segnali (Fig. 6.3), quali si possono visualizzare con un oscilloscopio multitracce. CP W A B Z Fig. 6.3

62 54 CAPITOLO 6. LOGICA SEQUENZIALE 6.6 Il diagramma degli stati. Nel paragrafo precedente abbiamo ottenuto il grafo, detto diagramma degli stati, che riassume e specifica esattamente il funzionamento della rete sequenziale che abbiamo analizzato. Ma il diagramma degli stati é anche l elemento cardinale da cui parte lo sviluppo delle reti sequenziali. Se fatto compiutamente e bene, esso definisce completamente la rete sequenziale che deve essere sviluppata: esso contiene tutta l informazione necessaria e sufficiente per progettare la rete. Il diagramma degli stati é una struttura grafica molto semplice. E costituito da 3 elementi: lo stato, in forma di cerchietto o di quadratino; la transizione fra stati, in forma di freccia verso uno stato successivo; le condizioni delle variabili d ingresso, sotto cui avvengono le transizioni, scritte accanto alle relative frecce. Le regole per tracciare un diagramma degli stati sono poche e semplici. Da ogni stato possono partire da una a piú transizioni (frecce) verso altri stati, e ciascuna é individuata dalle condizioni sotto cui avviene. Ad uno stato possono giungere piú transizioni da vari stati. Una freccia che inizia e termina sullo stesso stato indica una condizione di attesa (ad ogni colpo di clock lo stato transisce a sé stesso). Tutti i diagrammi degli stati di reti logiche sequenziali sono diagrammi ciclici, cioé si richiudono su se stessi in quanto realizzano macchine: le macchine sono sempre cicliche. Nel seguito saranno dati esempi di tracciamento di diagrammi degli stati. 6.7 Sintesi di reti sequenziali sincrone Il procedimento per la sintesi di una rete sequenziale sincrona va all inverso del procedimento di analisi: si parte dal diagramma degli stati del processo che si vuol realizzare e si arriva allo schema logico della rete sequenziale che lo meccanizza. Individuato il problema che si vuol risolvere, dapprima lo si analizza in dettaglio e se ne dá una definizione chiara ed esaustiva. Indi si effettua la sequenza di azioni che segue. : Diagramma degli stati primitivi. Si costruisce il diagramma degli stati, completo delle transizioni fra gli stati con le condizioni sotto cui esse avvengono. Abbiamo giá visto che il diagramma degli stati, se fatto bene, contiene tutta l informazione necessaria e sufficiente per progettare la rete. 2: Tabella degli stati primitivi. Si traduce il diagramma degli stati in una tabella in cui compare una riga per ogni stato del diagramma. Per ogni stato si individuano lo o gli stati prossimi in funzione delle condizioni e lo stato delle uscite. 3: Tabella degli stati finali. Analizzando la tabella degli stati primitivi puó accadere di rilevare che esistono degli stati duplicati. Si scrive allora la tabella degli stati finali dalla quale gli stati duplicati vengono eliminati. 4: Diagramma degli stati finali (o essenziali). Si traccia il diagramma degli stati limitatamente agli stati essenziali e questo é il diagramma da cui si parte per effettuare la sintesi.

63 6.7. SINTESI DI RETI SEQUENZIALI SINCRONE 55 5: Determinazione del numero delle variabili di stato. Noto il numero N degli stati essenziali, si sceglie lo n minimo che rende valida la disequazione 2 n N. Questo n é il numero minimo di variabili di stato necessarie; esso determina il numero dei flipflop che costituiscono il registro di memoria della rete. 6: Assegnamento degli stati. Si scelgono N codici di n bit per identificare univocamente gli stati. (In questa scelta é importante l esperienza, poiché non esistono regole a priori che guidino ad effettuare le scelte ottimali.) 7: Scelta del tipo di flipflop. Si puó optare per i flipflop JK, che consentono una buona semplificazione delle funzioni di comando, quindi funzioni logiche piú semplici. 8: Tabella delle transizioni. Si scrive la tabella che riporta tutti i codici degli stati di partenza. Per ciascuno stato si scrivono i codici degli stati di arrivo in funzione delle condizioni esterne. Si completa la tabella compilando le colonne con lo stato delle funzioni di comando dei flipflop del registro di memoria e con lo stato delle funzioni d uscita. 9: Sintesi delle funzioni logiche. La tabella delle transizioni nella sua forma completa diviene la tabella della veritá delle funzioni della logica combinatoria presente nella rete sequenziale. Si procede quindi alla sintesi e semplificazione delle funzioni di comando dei flipflop e delle funzioni d uscita. 0: Disegno della schema logico della rete sequenziale. Note le funzioni presenti nella logica combinatoria si puó procedere a disegnare lo schema logico completo della rete sequenziale. Indi puó iniziare la fase di realizzazione della rete stessa. Le azioni, elencate finora in modo sintetico, necessitano di essere approfondite per poter essere applicate in modo funzionale. Con l impiego di un esempio opportuno si puó raggiungere questo scopo. Si rimanda all Appendice A, dove é presentato in dettaglio un caso completo e complesso, didatticamente valido Esempio Affrontiamo ora la progettazione di un caso esemplare semplice. Problema - Progettare una rete sequenziale sincrona che produca in uscita un impulso logico della durata di un periodo di clock ogni otto impulsi del clock. Disegnamo il blocco funzionale che risolve il nostro problema (Fig. 6.4). CP rete Z Fig. 6.4 Non vi sono variabili logiche esterne in ingresso alla rete. E presente un solo segnale d uscita, Z, che durerá un periodo di clock e che si ripeterá ogni otto periodi di clock. Disegnamo il diagramma degli stati primitivi, che descrive la nostra rete (Fig. 6.5).

64 56 CAPITOLO 6. LOGICA SEQUENZIALE S 0 S S 2 S 3 S 4 S 5 S 6 S 7 Z Fig. 6.5 Sono necessari otto stati. Da uno degli stati, S 7 ad esempio, si deriva il segnale Z, cioé l impulso logico richiesto. Come si vede, il diagramma é costituito dai soli stati necessari (8 cerchietti) e dalle transizioni fra gli stati, senza condizioni. Il diagramma é ciclico, in forma di anello di stati. E un diagramma molto semplice. Il diagramma degli stati che abbiamo disegnato é giá il diagramma degli stati finali, essendo nella sua forma piú semplice. Avendo N = 8 stati, si verifica che n = 3 é lo n minimo che soddisfa la diseguaglianza 2 n 8. Tutti gli otto stati sono utilizzati. Poiché n = 3, sono necessarie tre variabili di stato. Il registro di memoria é composto da tre flipflop. Possiamo procedere all assegnamento degli stati. Scegliamo di attribuire i codici secondo la sequenza binaria fondamentale. Attribuiamo alle tre variabili di stato gli indicativi A, B, C, rispettivamente con peso 2 2, 2, 2 0. S i A B C S S 0 0 S S 3 0 S S 5 0 S 6 0 S 7 Non vi sono ridondanze poiché tutti gli stati possibili sono utilizzati. Scegliamo di usare i flipflop T. Passiamo a scrivere la tabella delle transizioni. S i A B C T A T B T C Z S S S S S S S S 7 In questo esempio abbiamo scritto la tabella in modo che gli stati appaiano ordinati in sequenza verticale, cosicché lo stato prossimo é lo stato nella riga sottostante della colonna degli stati. Giunti allo stato S 7 si riparte dallo stato S 0, cioé lo stato S 0 é consecutivo allo stato S 7 (ciclicitá della macchina). Completate le colonne delle variabili di stato A, B, C dobbiamo scrivere le funzioni di comando dei flipflop T e la funzione d uscita Z. Ricordiamo che con T n = il flipflop cambia stato; con T n = 0 il flipflop resta

65 6.8. GLI STATI RIDONDANTI 57 nello stato in cui é. Dalla tabella si legge quali valori debbano assumere le funzioni T A, T B, T C. La funzione Z assume il valore nell ultimo stato solamente, quindi una volta ogni otto stati, cioé ad ogni ottavo stato. Dobbiamo procedere alla sintesi e minimizzazione delle funzioni. Dall esame della tabella si ricavano le seguenti conclusioni. : La colonna T C assume sempre il valore. Pertanto T C =. 2: La colonna T B é uguale alla colonna C. Pertanto T B = C ed é minima. 3: La colonna T A presenta due. Scriviamo l espressione della funzione T A : T A = ABC + ABC = (A + A)BC = BC 4: La colonna Z presenta un solo. Pertanto Z = ABC. Abbiamo le quattro espressioni logiche richieste. Possiamo ora disegnare lo schema logico della rete (Fig. 6.6). + BC T Q T Q T Q C B A Q Q Q CP Z Fig. 6.6 Col disegno dello schema logico della rete é finita la fase di progettazione e si conclude l Esempio. 6.8 Gli stati ridondanti In certi casi non tutti gli stati possibili sono utilizzati. In un caso ipotetico sono usati 5 degli 8 stati possibili con 3 variabili binarie. Potrebbe verificarsi questo caso: la rete funziona sul ciclo primario di 5 stati, ma gli altri 3 stati possono dar luogo ad un ciclo secondario distinto. Al momento dell accensione la rete potrebbe attivarsi sul ciclo primario e tutto sarebbe corretto; oppure potrebbe attivarsi e restare sul ciclo secondario con conseguente malfunzionamento. Se gli stati non inclusi nel ciclo primario vengono utilizzati come ridondanze per la semplificazione della logica combinatoria della rete, allora la possibile esistenza di un ciclo secondario viene impedita. Se all accensione la rete si posiziona accidentalmente su uno degli stati ridondanti, dopo qualche colpo di clock la rete si ritrova in uno stato del ciclo primario e da lí in poi funziona correttamente.

66 58 CAPITOLO 6. LOGICA SEQUENZIALE

67 Capitolo 7 I Contatori I contatori sono alla base del funzionamento di molti apparati elettronici. Ad es., in un computer gli impulsi del clock sono continuamente contati per determinare il tempo e controllare le sequenze del programma; in un radar vengono contati gli impulsi di clock per determinare la distanza del bersaglio. Vi sono molti tipi di contatori. Nel seguito sono studiati i contatori binari sincroni, che sono l esempio principe di reti sequenziali sincrone. Nell Esempio del Capitolo 6 si é visto un semplice divisore che divide per 8: il nucleo del divisore é un contatore che conta 8 impulsi di clock e ricicla. I contatori possono contare secondo la sequenza binaria completa (contatori binari) oppure secondo una sequenza binaria parziale (contatori codificati in binario). Il contatore dell Esempio del Capitolo 6 é un contatore binario. Un contatore che conti e ricicli ogni 0 stati (una decade di conteggio) é l esempio di un contatore decimale codificato in binario(vedi 7.2). 7. Sintesi di un contatore binario sincrono Il processo di sintesi di un contatore binario sincrono segue gli stessi stadi visti nel Capitolo 6 a proposito della sintesi di una rete sequenziale sincrona, ma con qualche semplificazione. Si faccia riferimento ad un contatore binario che conta 6 stati, da S 0 a S 5. Si tracci il diagramma degli stati. S 0 S S 2 S 3 S 4 S 5 S 6 S 7 S 5 S 4 S 3 S 2 S S 0 S 9 S 8 Innanzitutto il diagramma degli stati in questo caso é in forma di un semplice anello di stati: da ogni stato si passa esclusivamente allo stato successivo. Questo é il diagramma ciclico piú semplice in assoluto ed é giá il diagramma degli stati finali. Nel caso del contatore binario puro tutti gli stati sono parte del ciclo: non vi sono stati ridondanti. Infatti il numero N degli stati é una potenza di 2: vale N = 2 n, con n uguale al numero delle variabili di stato e quindi al numero dei flipflop. Nell attribuire il nome alle n variabili di stato si usa l indicazione Q 0, Q,..., Q n cosí da mettere in relazione la posizione della variabile nel codice col peso binario corrispondente: a Q 0 il peso 2 0, a Q il peso 2,..., a Q i il peso 2 i, ecc. Cosí nell assegnamento degli stati si fa coincidere il codice dello stato con il codice della sequenza numerica binaria rappresentata. Flipflop T - I flipflop del tipo T sono i piú adatti per realizzare i contatori binari: infatti l esperienza 59

68 60 CAPITOLO 7. I CONTATORI dimostra che, iniziando ad utilizzare i flipflop piú generali del tipo JK, si trova in ogni caso che le espressioni delle funzioni J e K coincidono e quindi J = K (la caratteristica del flipflop T). Nello scrivere la Tabella delle transizioni si puó adottare un accorgimento che semplifica la scrittura della tabella stessa. Si scrivono i codici degli stati incolonnati secondo la sequenza numerica binaria. Cosí lo stato successivo é lo stato scritto nella riga sottostante e non é necessario riscriverlo a lato. Poi si completano le colonne con le funzioni di comando T i dei flipflop, ricordando la tabella di comando del flipflop T. Ovviamente nel presente caso lo stato successivo a S 5 é lo stato S 0. S i Q 3 Q 2 Q Q 0 T 3 T 2 T T 0 S S S S S S S S 7 0 S S S S 0 0 S S S S 5 Si possono scrivere le funzioni di comando dei flipflop: T 0 = T = Q 0 T 2 = Q 3 Q 2 Q Q 0 + Q 3 Q 2 Q Q 0 + Q 3 Q 2 Q Q 0 + Q 3 Q 2 Q Q 0 = Q Q 0 T 3 = Q 3 Q 2 Q Q 0 + Q 3 Q 2 Q Q 0 = Q 2 Q Q 0 Dall esame della tabella delle transizioni si nota il seguente fatto. Nella colonna T 2 é presente un quando nelle colonne delle variabili Q e Q 0 é contemporaneamente presente un. Analogamente, nella colonna T 3 é presente un quando nelle colonne delle variabili Q 2, Q, Q 0 é contemporaneamente presente un. Si puó dedurre l espressione generalizzata per T i : T i = Q 0 Q... Q i che permette di scrivere direttamente le funzioni di comando dei flipflop T i per qualsiasi lunghezza n del contatore binario puro (i=0,,...,n-; Q = ). Flipflop D - Ovviamente si possono usare flipflop del tipo D per sintetizzare un contatore binario. Per completezza studiamo questa alternativa. Cominciamo con lo scrivere la Tabella delle transizioni, in cui i codici degli stati sono incolonnati secondo la sequenza binaria, come giá fatto.

69 7.. SINTESI DI UN CONTATORE BINARIO SINCRONO 6 S i Q 3 Q 2 Q Q 0 D 3 D 2 D D 0 S S S S S S S S S S S S S S S 4 0 S Passiamo a scrivere le funzioni di comando dei flipflop. E immediato vedere che la colonna D 0 é il complemento della colonna Q 0. Quindi: D 0 = Q 0. Per determinare D consideriamo solamente le prime 4 righe della tabella, da S 0 a S 3 : infatti l andamento di D si ripete ciclicamente ogni 4 stati. Risulta allora: D = Q Q 0 + Q Q 0 = Q Q 0. A questo stesso risultato si giunge utilizzando la semplificazione con la mappa di Karnaugh. Per determinare D 2 consideriamo le prime 8 righe della tabella, da S 0 a S 7 : l andamento di D 2 si ripete ciclicamente ogni 8 stati. Risulta allora effettuando alcune semplificazioni: D 2 = Q 2 Q Q 0 + Q 2 Q Q 0 + Q 2 Q Q 0 + Q 2 Q Q 0 = Q 2 Q Q 0 + Q 2 Q + Q 2 Q 0 = Q 2 Q Q 0 + Q 2 (Q + Q 0 ) Applicando le equivalenze di DeMoivre si ha: D 2 = Q 2 (Q Q 0 ) + Q 2 (Q Q 0 ) = Q 2 (Q Q 0 ). Determiniamo ora D 3 utilizzando la mappa di Karnaugh: 00 Q 3 Q Q Q 0 0

70 62 CAPITOLO 7. I CONTATORI Deduciamo D 3 : D 3 = Q 3 Q 2 Q Q 0 + Q 3 Q 2 + Q 3 Q + Q 3 Q 0 = Q 3 Q 2 Q Q 0 + Q 3 (Q 2 + Q + Q 0 ) = Q 3 (Q 2 Q Q 0 ) E immediato dedurre l espressione generalizzata per D i : D i = Q i (Q i Q i 2... Q 0 ) che permette di scrivere direttamente le funzioni di comando dei flipflop D i per qualsiasi lunghezza n del contatore binario puro (i=0,,...,n-; Q = ). 7.2 Sintesi di un contatore decimale codificato in binario Si traccia il diagramma degli stati finali che include 0 stati, da S 0 a S 9. S 0 S S 2 S 3 S 4 S 9 S 8 S 7 S 6 S 5 Dalla relazione N 2 n con N = 0 si ottiene n = 4. Occorrono 4 variabili di stato, indicate con Q 3, Q 2, Q, Q 0, cosí da mettere in relazione la posizione delle variabili nel codice col peso binario corrispondente. Vengono usati 0 stati, dei 6 disponibili: quindi vi sono 6 ridondanze. I codici che identificano i 0 stati sono l equivalente binario del numero decimale corrispondente: si parla di decimale codificato in binario (BCD da binary coded decimal). Si usano flipflop T. Si passa a scrivere la tabella delle transizioni. S i Q 3 Q 2 Q Q 0 T 3 T 2 T T 0 S S S S S S S S 7 0 S S Si procede a ricavare le espressioni delle funzioni di comando. La funzione T 0 é evidente: T 0 =. Per le altre funzioni si fa uso della semplificazione con le mappe di Karnaugh.

71 7.3. CONTATORE BINARIO UNIVERSALE 63 Q 3 Q Q 3 Q Q Q 0 Q Q T = Q 3 Q 0 T 2 = Q Q 0 Q 3 Q Q 3 Q Q Q 0 Q Q T 3 = Q 3 Q 0 + Q 3 Q Q 0 T C = Q 3 Q 0 Sono elencate qui di seguito le 4 funzioni di comando per realizzare una decade di conteggio: T 0 = T = Q 3 Q 0 T 2 = Q Q 0 T 3 = Q 3 Q 0 + Q 2 Q Q 0 Si puó aggiungere il riporto (TC, acronimo di terminal count) verso la decade superiore: T C = Q 3 Q 0. Per costruire un contatore a piú decadi basterá fare in ogni decade lo AND delle funzioni di comando con il riporto dalla decade precedente. 7.3 Contatore binario universale Nell utilizzo di un contatore puó essere necessario intervenire su di esso in vari modi: puó essere necessario azzerarlo, oppure predisporlo a contare da un ben determinato valore, oppure fermarne temporaneamente il conteggio. E possibile studiare un blocco funzionale particolare, che realizzi le funzionalitá suddette. In Fig. 7. é dato il diagramma del blocco funzionale UBC (Universal Binary Counter).

72 64 CAPITOLO 7. I CONTATORI Q 0 Q Q 2 Q n SR P R CE UBC T C CP P 0 P P 2 P n Fig. 7. Il blocco funzionale UBC presenta, oltre all ingresso del clock CP: 3 ingressi di controllo (SR, P R, CE) n ingressi di dati (P 0, P, P 2,..., P n ) n uscite dai flipflop (Q 0, Q, Q 2,..., Q n ) l uscita T C. Le n uscite dato Q 0, Q, Q 2,..., Q n sono le n uscite dagli n flipflop del contatore binario. L ingresso SR (Synchronous Reset) effettua l azzeramento sincrono del contatore. L ingresso P R (Preset) é il comando sincrono per caricare in parallelo nei flipflop la configurazione di e 0 applicata agli ingressi-dato P 0, P, P 2,..., P n. L ingresso CE (Count Enable) nello stato abilita il contatore al conteggio, nello stato 0 lo mantiene fermo nel valore raggiunto. L uscita T C (Terminal Count) é un segnale di controllo, che indica che il contatore ha raggiunto la sua massima capacitá (fondo scala), cioé il massimo valore pari a 2 n. Ovviamente i tre ingressi SR, P R, CE non possono agire simultaneamente, poiché inducono azioni contrastanti. E perció necessario stabilire una gerarchia tra questi comandi. SR viene posto prioritario rispetto a P R e CE: quando SR = si ha l azzeramento del contatore (reset). Se SR = 0, perció inattivo, la prioritá sará di P R: quando SR = 0 e P R = si ha il caricamento parallelo della configurazione di e 0 prefissata agli ingressi P i (preset). Da ultimo agisce CE quando SR = 0 e P R = 0: con CE = il contatore conta gli impulsi del clock percorrendo la sequenza binaria (count); con CE = 0 il contatore mentiene il valore presente (stop). La tabella caratteristica del blocco funzionale UBC é la seguente: SR P R CE Q n...q 0 azione φ φ reset 0 φ P n...p 0 preset 0 0 (Q n...q 0 ) + count Q n...q 0 stop Il blocco funzionale UBC é costituito da n flipflop che devono essere comandati per realizzare la funzionalitá suindicata. Al solito la struttura complessiva é composta da n stadi in cascata. E sufficiente studiare il generico stadio a flipflop FFi per ottenere l espressione generale del suo comando. In Fig. 7.2 é disegnato lo schema funzionale dell i-esimo stadio, ove il flipflop é di tipo T.

73 7.3. CONTATORE BINARIO UNIVERSALE 65 Q 0 Q Q i R i SR P R CE LC P i T i T CP FFi Q Q Q i Fig. 7.2 Realizziamo dapprima la versione dello UBC con flipflop T: scriviamo la tabella della funzione di comando T i dell i-esimo flipflop del blocco funzionale UBC. SR n P R n CE n P in R in Q in Q i(n+) T in φ φ φ φ 0 0 φ φ φ 0 0 φ dove: il pedice n indica lo stato al periodo t n del clock; il pedice i indica lo i-esimo flipflop; R i = Q 0 Q...Q i é la funzione di comando dell i-esimo flipflop di un semplice contatore binario (vedi 8.). La funzione di comando T i dell i-esimo flipflop T del blocco funzionale UBC é: con Q =. T i = SR Q i + SR P R (P i Q i ) + SR P R CE Q 0 Q...Q i Esempio - Scrivere le funzioni di comando di un contatore binario del tipo start-stop con azzeramento, che possa contare fino a 2 eventi, poi ricicli. Per contare fino a 2 bastano 4 flipflop T. SR consente l azzeramento; CE controlla lo start-stop. P R non deve operare ed é posto a zero: P R = 0. Le funzioni di comando dei 4 flipflop sono: T 0 = SR Q 0 + SR CE T = SR Q + SR CE Q 0 T 2 = SR Q 2 + SR CE Q 0 Q

74 66 CAPITOLO 7. I CONTATORI T 3 = SR Q 3 + SR CE Q 0 Q Q 2 S = Q 3 Q 2 Q Q 0 SR = S + RST dove RST é il comando di azzeramento. Realizziamo ora la versione dello UBC con flipflop D: scriviamo la tabella della funzione di comando D i dell i-esimo flipflop del blocco funzionale UBC. SR n P R n CE n P in R in Q in Q i(n+) D in φ φ φ φ dove: il pedice n indica lo stato al periodo t n del clock; il pedice i indica lo i-esimo flipflop; R i = Q i Q i 2... Q 0 La funzione di comando D i dell i-esimo flipflop D del blocco funzionale UBC é: con Q =. D i = SR (P R P i + P R (CE (Q i (Q i Q i 2... Q 0 )) + CE Q i ))

75 Capitolo 8 I registri a scorrimento 8. Struttura dei registri a scorrimento Un registro a scorrimento (shift register) é costituito da una catena di flipflop D, in cui l uscita di un flipflop é collegata all ingresso D del flipflop successivo, come illustrato in Fig. 8. limitatamente a quattro stadi. Q 0 Q Q 2 Q 3 IN CP D Q D Q D Q D Q Q Q Q Q Fig. 8. Un dato sotto forma di una stringa seriale di bit sia inviato all ingresso IN. Dopo un impulso di clock il primo bit é in Q 0 ; dopo un secondo impulso di clock il bit che era in Q 0 si trova in Q, mentre in Q 0 é entrato il successivo bit del dato in ingresso. E cosí di seguito per i successivi impulsi di clock. Un registro a scorrimento riceve un dato seriale in ingresso (ad es. un byte) e dopo un opportuno numero di impulsi di clock (8 nel caso di un byte) presenta il dato in parallelo sulle uscite. Un tale registro é noto come SIPO (Serial-In, Parallel-Out): esso effettua la conversione in parallelo di un dato seriale. Un esempio di conversione seriale-parallelo con un registro a 4 flipflop é dato in Fig Sulla riga IN é visualizzata la stringa seriale di 4 bit (0) in ingresso. Dopo 4 impulsi di clock si vede l uscita parallela che presenta la combinazione (0) allineata in verticale da Q 3 a Q 0. Le forme d onda sulle uscite danno l evoluzione dello stato dei flipflop del registro nel tempo. 67

76 68 CAPITOLO 8. I REGISTRI A SCORRIMENTO tempo CP IN Q 0 Q Q 2 Q 3 0 Fig. 8.2 In Fig. 8.3 é presentato un registro del tipo PISO (Parallel-In, Serial-Out) limitato a tre stadi identici. P L IN L D Q L D Q L D Q Q 2 CP Q Q Q P 0 P P 2 Fig. 8.3 Oltre all ingresso seriale IN, sono presenti gli ingressi-dato P 0, P, P 2 e il comando PL. Nel periodo di clock in cui PL=, i dati sono caricati in parallelo nei flipflop del registro. Quando PL=0 il registro effettua lo scorrimento. Quindi il SIPO effettua la conversione in seriale di un dato parallelo. Come indicato nella Fig. 8.3, una logica combinatoria L é interposta fra i flipflop per realizzare la funzionalitá richiesta. E semplice scrivere la tabella della veritá della funzione di comando D i dello i-esimo flipflop D del registro. P L P i Q i D i da cui si ricava: D i = P L P i + P L Q i

77 8.2. IL REGISTRO UNIVERSALE A SCORRIMENTO Il registro universale a scorrimento Appare evidente che i registri a scorrimento sono orientati all elaborazione dei dati e per questo risultano utilissimi. E quindi importante disporre di un registro universale a scorrimento multifunzionale. In Fig. 8.4 é disegnato il blocco funzionale USR (Universal Shift Register) a n stadi. Q 0 Q Q 2 Q n IN SR P L SH USR CP P 0 P P 2 P n Fig. 8.4 Il blocco funzionale USR presenta, oltre all ingresso del clock CP: ingresso seriale IN al primo flipflop del registro 3 ingressi di controllo (SR, P L, SH) n ingressi di dati (P 0, P, P 2,..., P n ) n uscite dai flipflop (Q 0, Q, Q 2,..., Q n ) Le n uscite-dato Q 0, Q, Q 2,..., Q n sono le n uscite dagli n flipflop del registro. L ingresso SR (Synchronous Reset) effettua l azzeramento sincrono del registro. L ingresso P L (Parallel Load) é il comando sincrono per caricare in parallelo nei flipflop la configurazione di e 0 applicate agli ingressi dato P 0, P, P 2,..., P n. L ingresso SH (Shift Hold) nello stato abilita lo scorrimento del registro, nello stato 0 lo mantiene fermo nello stato raggiunto. Ovviamente i tre ingressi SR, P L, SH non possono agire simultaneamente, poiché inducono azioni contrastanti. E perció necessario stabilire una gerarchia tra questi comandi. SR viene posto prioritario rispetto a P L e SH: quando SR = si ha l azzeramento del registro (reset). Se SR = 0, perció inattivo, la prioritá sará di P L: quando SR = 0 e P L = si ha il caricamento parallelo della configurazione di e 0 prefissata agli ingressi P i (preset). Da ultimo agisce SH quando SR = 0 e P L = 0: con SH = si ha lo scorrimento dei bit nel registro (shift); con SH = 0 i bit restano memorizzati (stop). La tabella caratteristica del blocco funzionale UBC é la seguente: SR P L SH Q n...q 0 azione φ φ reset 0 φ P n...p 0 preset 0 0 (Q i Q i ) shift Q n...q 0 stop Il blocco funzionale USR é costituito da n flipflop che devono essere comandati per realizzare la funzionalitá suindicata. Al solito la struttura complessiva é composta da n stadi simili. E sufficiente studiare il generico stadio a flipflop per ottenere l espressione generale del comando relativo, valida per tutti i flipflop. In Fig. 8.5 é disegnato lo schema funzionale dell i-esimo stadio.

78 70 CAPITOLO 8. I REGISTRI A SCORRIMENTO Q i SR P L SH LC D i D FFi Q Q Q i CP P i Fig. 8.5 Si puó scrivere la tabella della funzione di comando D i dell i-esimo flipflop del blocco funzionale USR. SR n P L n SH n P in Q (i )n Q in Q i(n+) D in φ φ φ φ dove: il pedice n indica lo stato al periodo t n del clock; il pedice i indica lo i-esimo flipflop. La funzione booleana di comando D i dell i-esimo flipflop D del blocco funzionale USR é: D i = SR P L P i + SR P L SH Q i + SR P L SH Q i e usando le parentesi per una migliore leggibilitá: D i = SR (P L P i + P L (SH Q i + SH Q i )) con Q = IN. Ad es., per scrivere le espressioni delle funzioni di comando D i di un registro a 8 stadi occorrerá riscrivere 8 volte la funzione generale D i rispettivamente con i = 0,,..., 7 e ricordando che Q = IN.

79 Capitolo 9 La progettazione di sistemi digitali sincroni Nei capitoli precedenti sono stati introdotti i metodi di sintesi ed i blocchi funzionali combinatori e sequenziali che consentono la realizzazione di sistemi digitali. In particolare, nel Capitolo 6 si é visto che cosa sia una logica sequenziale sincrona e come se ne effettui la sintesi. Ora occorre introdurre una metodologia di progettazione di un sistema digitale sincrono. Alla base di tutto sta l individuazione di un insieme di stati, in ciascuno dei quali si esplica una ben determinata azione: gli stati vengono via via assunti dal sistema per realizzare una operativitá e vengono ripercorsi ciclicamente. Infatti, perché una macchina sia utile é necessario che essa operi ciclicamente, cioé che possa ripetere il proprio ciclo tante volte, quante sono richieste per realizzare l operativitá desiderata. Per tutto questo un sistema sequenziale sincrono puó essere definito una macchina a stati sincrona. Intendendo realizzare un sistema digitale, dapprima se ne pianifica l architettura complessiva, poi si passa alla progettazione delle macchine a stati che lo compongono, e infine si sviluppano le unitá di elaborazione dei dati. Il progetto delle macchine a stati é probabilmente il compito piú creativo a cui é chiamato il progettista digitale. Il soggetto piú importante di questo capitolo é il progetto e non la sintesi. L aspetto piú importante del progetto é l approccio sincrono all architettura complessiva del sistema. 9. Struttura di un sistema sincrono Gli esempi dati finora riguardavano singole macchine a stati con un piccolo numero di stati. In genere un sistema sequenziale é complesso, quindi non é possibile trattarlo come un unica unitá. Nella stragrande maggioranza dei casi peró i sistemi digitali possono essere suddivisi in piú parti o sottosistemi, gerarchicamente organizzati e che sono singolarmente trattabili in maniera semplice. Se un sistema elabora numeri o segnali vocali digitalizzati o dati da un impianto tecnologico, una certa sua parte, che sará indicata come unitá dati, svolgerá i compiti di memorizzare, distribuire, combinare o generalmente di elaborare dati. Un altra parte del sistema, che sará indicata come unitá di controllo, si occuperá di far funzionare l unitá dati, di verificare eventuali condizioni operative e di decidere che cosa fare secondo le circostanze. In genere, solo l unitá di controllo funziona da macchina a stati e come tale deve essere progettata. In Fig. 9. é dato lo schema a blocchi generale di un sistema, in cui sono indicate l unitá di controllo (CONTROL UNIT) e l unitá dati (DATA UNIT) insieme con le unitá di INPUT e di OUTPUT. 7

80 72 CAPITOLO 9. LA PROGETTAZIONE DI SISTEMI DIGITALI SINCRONI CLOCK COMMANDS DATA IN CONTROLS INPUT CONTROLS CONTROL UNIT DATA UNIT CONTROLS OUTPUT DATA OUT CONDITIONS Fig. 9. Questo schema é alla base di tutti i sistemi digitali, cioé tali sistemi sono tutti strutturati sulle due unitá fondamentali: unitá di controllo e unitá dati. Osservando la Fig. 9. si vede che l unitá di controllo riceve comandi dall esterno, che determinano come la macchina deve funzionare; riceve condizioni dalla unitá dati, legate all elaborazione dei dati stessi. L unitá di controllo caratterizza il sistema ed é specifica per ogni sistema. La caratteristica chiave della struttura indicata in Fig. 9. é che l unitá di controllo e l unitá dati usano lo stesso clock, cioé tutta la macchina opera sotto il controllo temporale di un unico clock. Nella Fig. 9.2 sono illustrate le operazioni compiute da entrambe le unitá durante un periodo di clock. CLOCK () X valido X (2) X X valido X X (3) X X X valido X X (4) X X X X X valido FF hold un periodo di clock X X Fig. 9.2

81 9.2. L UNITÁ DI CONTROLLO NEI SISTEMI DIGITALI SINCRONI 73 La Fig. 9.2 permette di capire come funziona temporalmente il sistema sincrono di Fig. 9.. La riga () indica che, dopo la transizione del clock, i flipflop della unitá di controllo e della unitá dati sono i primi ad assestarsi ed a presentare un uscita valida. La riga (2) indica quando diventano valide le uscite della logica combinatoria che forniscono i segnali di controllo all unitá dati. La riga (3) indica quando diventano valide le uscite combinatorie dall unitá dati, che sono le condizioni da inviare all unitá di controllo. La riga (4) indica quando sono definitivamente pronti i segnali che determinano l evoluzione verso lo stato prossimo dell unitá di controllo. Questi segnali determinano il momento in cui puó iniziare l intervallo di tempo di hold, nel quale gli ingressi dei flipflop devono rimanere stabili affinché i flipflop possano effettuare correttamente la transizione di stato su comando del clock. Dopo la transizione positiva del clock ricomincia un altro periodo di clock. Pertanto la somma dell intervallo di tempo, necessario per il completo assestamento della logica combinatoria che comanda i flipflop della unitá di controllo, con l intervallo di tempo di hold dei flipflop determina la durata minima del periodo del clock, quindi la frequenza massima di funzionamento della macchina. Da quanto visto si comprende come gli eventuali segnali esterni debbano essere sincronizzati col clock prima di poter entrare nelle funzioni logiche della macchina. Analogamente risulta ovvio che il clock deve essere distribuito all interno della macchina in modo che ne sia garantita l isocronicitá: eventuali ritardi di propagazione del clock costringono per lo meno ad abbassare la frequenza operativa della macchina. 9.2 L unitá di controllo nei sistemi digitali sincroni L unitá di controllo, che é una rete sequenziale classica, viene definita assegnandone il diagramma degli stati, completo delle transizioni fra gli stati e delle condizioni sotto cui avvengono le transizioni, nonché delle uscite richieste. Si é giá visto che il diagramma degli stati di una macchina reale deve presentare una struttura ciclica: esso realizza un andamento ciclico piú o meno complesso. La piú semplice macchina che realizza un andamento ciclico é un contatore che ricicla. Nel mondo dell elettronica digitale la piú semplice macchina sequenziale é il contatore binario. Si é giá visto che il diagramma degli stati di un contatore binario é estremamente semplice: la sua struttura é un singolo anello di stati. Si puó affermare che nella grande maggioranza dei sistemi digitali il diagramma degli stati é riconducibile ad un singolo anello di stati e, pertanto, l unitá di controllo é basata su un contatore binario. In tutti questi casi la progettazione dell unitá di controllo é grandemente facilitata dalla conoscenza dei contatori binari, considerati come macrostrutture trattabili a un piú elevato livello logico. Infatti, nel Capitolo 7 é stato sintetizzato il blocco funzionale UBC (Universal Binary Counter), in cui un contatore di un numero qualsiasi di flipflop (quindi di stati) é pilotato con tre soli segnali. Nel capitolo 0 si vedrá come la progettazione dell unitá di controllo con contatori sará ulteriormente semplificata e allo stesso tempo potenziata dall uso di linguaggi di definizione di alto livello (HDL). Nei casi in cui il diagramma degli stati non é riconducibile ad un anello di stati o ad anelli di stati annidati, occorre procedere con la metodologia classica di progetto di macchine a stati, la stessa vista nel capitolo 6 dedicato alla sintesi di reti sequenziali. In questi casi la difficoltá maggiore sta nel disegnare un diagramma degli stati che definisca esattamente e completamente la funzione della macchina. E questo é comunque un passaggio obbligato. Poi, anche in questo caso é possibile l utilizzo di linguaggi HDL che

82 74 CAPITOLO 9. LA PROGETTAZIONE DI SISTEMI DIGITALI SINCRONI semplificano e potenziano la progettazione delle macchine a stati, come si vedrá nel capitolo Struttura dell unitá di controllo basata su contatore. La generica unitá di controllo basata su un contatore del tipo UBC é schematizzata in figura 9.3. INPUTS CYCLE CONTROL DECODER CONTROLS COUNTER CONDITIONS CLK Fig Generica unitá di controllo con contatore. Rispetto alla piú generale figura 6., che illustra la generica logica sequenziale sincrona (o macchina a stati), qui nella figura 9.3 abbiamo evidenziato un dettaglio maggiore, partendo dal fatto che l unitá di controllo é basata su un contatore UBC (COUNTER), che meccanizza il diagramma degli stati in forma di anello di stati. Le uscite dei flipflop del contatore vanno ad una rete logica combinatoria di decodifica (DECODER) che produce i controlli verso l unitá dati ed i controlli verso la logica combinatoria di controllo del ciclo degli stati (CYCLE CONTROL). Quest ultima pilota direttamente gli ingressi di controllo dell UBC. Abbiamo cosí individuato 3 blocchi costitutivi dell unitá di controllo, avendo separato le funzioni principali dell unitá Progettazione dell unitá di controllo Possiamo ora individuare la sequenza delle azioni per progettare l unitá di controllo a partire dal diagramma degli stati in forma di anello, che come tale é giá il diagramma minimo. : Determinazione del numero delle variabili di stato. Noto il numero N degli stati essenziali, si sceglie lo n minimo che rende valida la disequazione 2 n N. Questo n é il numero minimo di variabili di stato necessarie: esso determina il numero dei flipflop che costituiscono il registro di memoria. Questo n é quindi il numero di fliflop che costituiscono il contatore. Il contatore é il registro di memoria della macchina. 2: Assegnamento degli stati. Quest operazione é automatica, poiché si fa corrispondere la sequenza degli stati con la sequenza binaria generata dal contatore UBC.

83 9.3. ESEMPIO DI PROGETTO DI UN SISTEMA SINCRONO CON CONTATORE 75 3: Scelta del tipo di flipflop. Si puó optare per i flipflop D o T. 4: Tabella dei controlli. Si scrive la tabella della veritá delle funzioni di controllo (uscite dal DECODER), in cui a sinistra sono listate le variabili di stato e a destra le funzioni di controllo da generare. Da questa tabella si sintetizzano le funzioni di controllo con la tecnica vista al cap. 5. 5: Tabella di controllo del ciclo del contatore. Il controllo del ciclo del contatore (CYCLE CONTROL) genera le 3 funzioni di controllo (SR,PR,CE) dell UBC. Si tratta di una logica combinatoria, che ha come ingressi controlli rilevanti generati nel DECODER, i comandi esterni e le eventuali condizioni, che vengono dall unitá dati. Pertanto dovrá essere scritta la tabella della veritá delle funzioni di controllo dell UBC. Potranno altresí essere generate altre funzioni di controllo dell unitá dati. 6: Sintesi delle funzioni logiche. Siamo ora in grado di scrivere tutte le equazioni booleane relative alla macchina. 7: Disegno della schema logico della rete sequenziale. Note le funzioni presenti nella logica combinatoria si puó procedere a disegnare lo schema logico completo della rete sequenziale. Indi puó iniziare la fase di realizzazione della rete stessa. 9.3 Esempio di progetto di un sistema sincrono con contatore Problema - Intendiamo realizzare un semplice simulatore che ci consenta di trasmettere un dato seriale nel modo seguente: viene trasmesso un messaggio costituito da un byte programmabile (un dato seriale di 8 bit) preceduto da un bit sempre allo stato (start bit) e seguito da un bit allo stato 0 (stop bit). La trasmissione é ciclica ed ha luogo quando un comando esterno la abilita: il messaggio viene trasmesso ripetitivamente ad una frequenza nominale scelta, con la possibilitá di inserire qualche bit nullo fra due trasmissioni consecutive del messaggio. In assenza di trasmissione la linea resta allo stato 0. DL B7 B6 B5 B4 B3 B2 B B0 0 Soluzione - Si vuol realizzare un sistema sincrono composto da un unitá di controllo e da un unitá dati. Il clock comune determina la frequenza di trasmissione. Per definire meglio il problema esaminiamo dapprima come deve essere strutturata l unitá dati. Il messaggio in trasmissione deve essere seriale: quindi é ovvio usare un registro a scorrimento. Nel capitolo 9 abbiamo studiato un blocco funzionale adatto, il registro universale a scorrimento (USR); vediamo come applicarlo al nostro caso. Il messaggio é lungo 0 bit. Pertanto il registro a scorrimento sará di 0 stadi, uno per ogni bit. Possiamo disegnare il blocco USR che entra nell unitá dati (Fig. 9.4).

84 76 CAPITOLO 9. LA PROGETTAZIONE DI SISTEMI DIGITALI SINCRONI OUT 0 0 Q 0 Q SR 9 P L SH USR IN P 0 P 9 CLK 0 B B 3 B 5 B 7 B 0 B 2 B 4 B 6 Fig. 9.4 Consideriamo dapprima l INPUT e l OUTPUT dei dati. Gli ingressi P 0..P 9 sono gli ingressi di caricamento, che consentono di impostare il dato da trasmettere. Ovviamente P 9 inserisce lo start bit a, e P 0 lo stop bit a 0 ; gli altri otto ingressi, da P a P 8 vengono connessi a o a 0 per impostare il dato da trasmettere B 0..B 7. L ingresso IN al primo stadio del registro va posto a 0 in modo che durante lo scorrimento nel registro entrino tutti 0 e il registro venga azzerato. L uscita seriale é presa dall ultimo stadio del registro: Q 9 fornisce l uscita OUT. Esaminiamo i 3 segnali di controllo SP, P L, SH, ricordandone la gerarchia. SR non viene usato poiché il registro si autoazzera; quindi SR viene posto a 0. P L effettua il caricamento del messaggio da trasmettere. SH va posto costantemente a poiché il registro normalmente deve scorrere. Pertanto dall unitá di controllo deve venire soltanto il comando P L. Non vi sono condizioni dall unitá dati verso l unitá di controllo. Possiamo ora disegnare lo schema a blocchi complessivo della macchina (Fig. 9.6). CLK IN Unita di P L Unita OUT controllo dati (ON/OF F ) 3 8 P 0...P 2 B...B 8 Fig Schema a blocchi della macchina. Veniamo ora all unitá di controllo. Dobbiamo tracciare il diagramma degli stati. Sono certamente necessari 0 stati in sequenza per la trasmissione di un messaggio completo, perché i segnali di comando P L devono essere intervallati fra loro di almeno 0 stati per non interferire nella trasmissione. Volendo poi inserire a volontá qualche bit di separazione fra due messaggi consecutivi, occorrerá inserire qualche stato in piú. Applicando la relazione 2 n N, dove N é il numero degli stati richiesti e n é il numero delle variabili di stato e quindi il numero dei flipflop del registro di memoria, risulta n = 4. Con n = 4 sono possibili fino a 6 stati. Possiamo ora disegnare una sequenza di 6 stati (Fig. 9.5). Osservando la figura, vediamo che é necessario un anello minimo di 0 stati (da S 6 a S 5 ) per garantire una trasmissione completa (minima distanza temporale fra due P L). L anello puó essere via via allargato ad includere gli

85 9.3. ESEMPIO DI PROGETTO DI UN SISTEMA SINCRONO CON CONTATORE 77 stati precedenti S 6, per inserire fino a 6 bit di separazione fra due messaggi consecutivi. Appare chiaro che questo diagramma é facilmente realizzabile con un contatore universale. Lo stato naturale di controllo del contatore é lo stato S 5, dal quale con P R dell UBC si puó raggiungere qualsiasi stato fra S 0 e S 6. Sul diagramma é disegnato l effetto del comando esterno I: quando I = 0 il contatore resta fermo nello stato S 5 ; quando I = il contatore conta regolarmente secondo la sequenza binaria e dallo stato S 5 salta allo stato programmato sugli ingressi di preset. Ovviamente il comando di salto é generato nello stato S 5. Lo stesso comando (P R = P L) verrá utilizzato per lanciare la trasmissione del messaggio da parte dell unitá dati. Abbiamo giá fatto implicitamente l assegnamento degli stati, avendo scelto la sequenza binaria completa a 4 bit. P L I = 0 [0, 0, 0] S 5 I = S 4 [0, 0, ] S 3 [0,, 0] S 2 [0,, ] S [, 0, 0] S 0 [, 0, ] [,, 0] S 9 S 8 S 0 S S 2 S 3 S 4 S 5 S 6 S 7 Fig Diagramma degli stati - Accanto agli stati S0..S6 é indicata la combinazione delle variabili [P 2, P, P 0 ] di programmazione dello UBC. Sviluppiamo ora l unitá di controllo. Abbiamo giá visto che essa é strutturata su un contatore binario programmabile. Scegliamo di usare i flipflop T per lo UBC. Nel capitolo 7 abbiamo studiato il blocco funzionale UBC. Disegnamo ora un blocco UBC adattato al presente caso, in cui sono richiesti 4 stadi di conteggio (Fig. 9.7). Lo UBC presenta i tre ingressi di controllo SR, P R, CE e i quattro ingressi di programmazione P 0, P, P 2, P 3. Il segnale SR é posto fisso a 0 in quanto non é utilizzato. I due segnali P R, CE devono essere correttamente pilotati per realizzare il diagramma degli stati. Degli ingressi di programmazione, P 3 é fisso a 0, mentre ai tre ingressi P 2, P, P 0 dobbiamo applicare una delle combinazioni da 000 a 0, corrispondenti agli stati da S 0 a S 6. Passiamo a scrivere la tabella dei controlli. Dal diagramma degli stati ricaviamo che il solo stato S 5

86 78 CAPITOLO 9. LA PROGETTAZIONE DI SISTEMI DIGITALI SINCRONI é rilevante nel generare i segnali di controllo. Pertanto ci basta scrivere la sola decodifica relativa al suddetto stato per costruire il DECODER. Risulta: S 5 = Q3 Q2 Q Q0 = T C Possiamo disegnare lo schema a blocchi riassuntivo dell unitá di controllo. T C (S 5) IN CLK D Q QI I Logica comb. 0 CLK P L SR P R CE Q 0 Q 3 UBC P 0 P 3 P 0 P P 2 0 Fig. 9.7 La Fig. 9.7 mostra la struttura completa dell unitá di controllo. Oltre allo UBC é presente lo AND che decodifica lo stato S 5 (il segnale T C). In ingresso il segnale di comando asincrono IN viene sincronizzato col clock mediante il flipflop QI, generando il corrispondente segnale sincrono I (vedi 9.4.), che entra nella logica combinatoria. Per completare il progetto dell unitá di controllo dobbiamo sviluppare la logica combinatoria di controllo del ciclo, che vede due segnali in ingresso (T C, I) e tre segnali in uscita (CE, P R, P L), come si deduce dalla figura 9.7. Costruiamo la tabella della veritá di questa logica: la tabella presenta due variabili in ingresso (T C e I) e tre funzioni d uscita (CE, P R, P L). T C I CE P R P L φ Il segnale CE é attivo sempre fuori dallo stato S 5 ; é 0 nello stato S 5 quando I = 0; é indifferente nello stato S 5 quando I = perché prevale gerarchicamente P R. I segnali P R e P L sono attivi soltanto nello stato S 5 quando I =. Le funzioni logiche risultano: CE = T C P R = P L = T C I Lo schema logico della rete combinatoria é disegnato nella Figura 9.8 che segue.

87 9.4. METODOLOGIA DI PROGETTAZIONE SINCRONA 79 I T C CE P R P L Fig. 9.8 Il progetto logico é ora completo. Seguono le equazioni booleane che sintetizzano il progetto. T 0 = P R (P 0 Q0) + P R CE T = P R (P Q) + P R CE Q0 T 2 = P R (P 2 Q2) + P R CE Q0 Q T 3 = P R (P 3 Q3) + P R CE Q0 Q Q2 T C = Q0 Q Q2 Q3 DI = IN P R = T C I P L = T C I CE = T C DS0 = P L B0 DSi = P L Bi + P L QS(i ) i =, 2,..., 8 con B8 = dove: T 0, T, T 2, T 3 sono le funzioni di comando dei flipflop T Q0, Q, Q2, Q3 del contatore; i DSi sono le funzioni di comando dei flipflop D QSi del registro a scorrimento; P 0, P, P 2, P 3 sono gli ingressi di programmazione del contatore, da impostarsi correttamente; B0, B, B2, B3, B4, B5, B6, B7 sono gli ingressi di programmazione del messaggio da trasmettere. 9.4 Metodologia di progettazione sincrona In un sistema digitale sincrono tutti i flipflop sono comandati dallo stesso segnale comune di clock e quindi tutti commutano in sincronia. (Gli eventuali ingressi asincroni dei flipflop sono al piú usati esclusivamente all inizializzazione del sistema.) Quando vengono interconnessi due sistemi digitali distinti o sottosistemi che usano clock diversi, é necessario identificare un numero ristretto di segnali asincroni essenziali che richiedono un trattamento speciale, come vedremo nel seguito. Oltre a progettare il comportamento funzionale di ciascuna macchina a stati, il progettista di un sistema sincrono reale deve svolgere tre ben definiti compiti per assicurare che il sistema operi in modo sicuro. () Identificare gli ingressi asincroni essenziali, sincronizzarli col clock ed assicurarsi che i sincronizzatori operino in modo sicuro. (2) Assicurarsi che i flipflop abbiano margini positivi di tempo di set-up e tempo di hold. (3) Determinare e/o minimizzare i ritardi di propagazione del clock nel sistema.

88 80 CAPITOLO 9. LA PROGETTAZIONE DI SISTEMI DIGITALI SINCRONI 9.4. Sincronizzazione di segnali esterni I piú semplici segnali esterni vengono da interruttori, pulsanti, relé, commutatori, ecc., cioé da dispositivi elettromeccanici con cui si comandano le macchine. Noi pensiamo che questi dispositivi operino in maniera istantanea e precisa. Ció non é vero. Quando due pezzi meccanici in movimento relativo vengono in contatto, per l elasticitá dei materiali si generano rimbalzi. Perció i contatti si interrompono e si ricongiungono piú volte in tempi dell ordine del millisecondo. E comunque i segnali generati da questi dispositivi sono segnali asincroni. Abbiamo quindi il duplice problema: evitare i rimbalzi e sincronizzare i segnali con il clock in modo da rispettare i requisiti dei segnali all interno di una macchina sincrona. Una prima soluzione molto semplice al problema dei rimbalzi é indicata nella Fig. 9.9 che segue. +V IN 0 0K R A B C Fig. 9.9 I Due invertitori HCMOS in cascata reazionati con un resistore costituiscono un flipflop D statico (senza clock). Analizziamo il circuito nel caso in cui l interruttore non sia connesso. L uscita C puó essere a o a 0. Se C=, segue che A=; quindi B=0 forza C=. Se C=0, segue che A=0; quindi B= forza C=0. Sono possibili due stati stabili in uscita. Ecco quindi un flipflop statico. Quando opera l interruttore, al primo contatto di A con 0 o il flipflop scatta con l uscita a 0 o rispettivamente e mantiene il suo stato invariato durante i successivi rimbalzi. La commutazione é quindi pressoché istantanea e precisa. Tolti i rimbalzi resta da fare la sincronizzazione del segnale esterno col clock della macchina. Un flipflop D connesso come in Fig. 9.0a consente di mettere in passo il segnale esterno I sul clock se la durata di I é maggiore del periodo del clock. I CP D Q Q QI CP I QI / / / (a) (b) Fig. 9.0 La Fig. 9.0b mostra le forme d onda dei segnali nel tempo e in particolare come l uscita QI sia sincrona con la transizione positiva del clock. Usando due flipflop D in cascata é possibile costruire un comando che duri un solo ciclo di clock. La Fig. 9. illustra come esso puó essere realizzato.

89 9.4. METODOLOGIA DI PROGETTAZIONE SINCRONA 8 I D Q A D Q B P CP Q A Q B P 2 (a) CP I A B P P 2 / / / / / / (b) Fig. 9. I due segnali P = A B e P 2 = A + B sono in alternativa un segnale impulsivo della durata di un solo periodo di clock, che rispetta i criteri per i segnali sincroni. Infine, per catturare un segnale transitorio molto rapido si puó usare lo schema di Fig S +V C QS D Q D F F 2 Q CP Q Q Q Q CP S QS Q Q (a) (b) Fig. 9.2 Si usa un flipflop F molto veloce e con un ingresso asincrono di reset C. L impulso S, usato come impulso di clock, fa scattare il flipflop F, che emette il segnale QS. Il flipflop F 2 sente il segnale QS a e sul fronte del clock di macchina CP manda la sua uscita Q a. Contemporaneamente l uscita complementare di F 2 si porta a 0 e resetta il flipflop F attraverso l ingresso di reset asincrono. Pertanto

90 82 CAPITOLO 9. LA PROGETTAZIONE DI SISTEMI DIGITALI SINCRONI al successivo fronte positivo del clock CP QS é a 0 e l uscita Q torna a 0. Il breve impulso S in ingresso é stato catturato e trasformato in un impulso logico della durata minima di un periodo di clock, sincrono col clock. Nella maggior parte dei casi pratici questi semplici metodi consentono di risolvere il problema della sincronizzazione. In caso di richieste piú stringenti puó essere aggiunta un elaborazione mirata con una macchina a stati dedicata, che renda certa la sincronizzazione. 9.5 Realizzazione di una macchina sequenziale Accenniamo brevemente al problema della realizzazione di una macchina sequenziale. Esiste un ampia gamma di microcircuiti integrati che implementano funzioni sequenziali. A livello SSI (Single Scale Integration) sono disponibili i flipflop di tipo D e JK. A livello MSI (Medium Scale Integration) é disponibile un ampia varietá di contatori, di registri a scorrimento e di altre funzioni piú complesse. Parallelamente a livello SSI e MSI é disponibile un ampia varietá di funzioni combinatorie di varia complessitá. Combinando questi microcircuiti, rispettando alcune regole base, si realizzano le macchine desiderate. A livello LSI (Large Scale Integration) sono recentemente divenute disponibili varie famiglie di circuiti integrati estremamente potenti (PLD, CPLD, FPGA, ecc) programmabili dall utente. In questi componenti sono presenti strutture AND-OR e Flipflop (macrocelle), le cui interconnessioni sono da realizzarsi attraverso programmazione. In questi casi si opera con un PC utilizzando opportuni software, che implementano linguaggi di progettazione di alto livello (HDL - High level Description Language). Alla fine del processo di progettazione é disponibile un file di programmazione che, attraverso un opportuno programmatore, effettua le interconnessioni all interno del nostro circuito integrato, facendolo diventare la nostra macchina sequenziale.

91 Capitolo 0 Sintesi di macchine sequenziali con un linguaggio HDL Vediamo ora come si puó procedere alla sintesi di una macchina sequenziale mediante un linguaggio HDL. Il sistema di progettazione é basato su un PC o su una workstation e comprende i seguenti blocchi di software: editor un editor ASCII per l input in forma alfanumerica ed eventualmente un editor grafico per l acquisizione di schemi circuitali in alternativa; compilatore riceve il file dall editor e produce un file con le equazioni booleane in forma standard; simulatore riceve il file del compilatore ed esegue la simulazione del funzionamento della macchina con uscita in forma grafica, disegnando le forme d onda dei segnali e permettendo cosí la verifica del corretto funzionamento del circuito; fitter riceve il file del compilatore e produce il file di programmazione del circuito integrato (esiste un fitter specifico per ogni famiglia di circuiti programmabili); programmatore col file del fitter esegue la programmazione fisica del circuito integrato, realizzando il circuito specifico che costituisce la macchina voluta. Ovviamente si parte sempre dal diagramma degli stati che descrive totalmente la macchina. Il problema sta nell introdurre l informazione contenuta nel diagramma degli stati in una forma che sia adatta al software. Si possono usare le equazioni booleane oppure si possono utilizzare costrutti piú evoluti, come potremo vedere nel seguito. Prendiamo in considerazione il linguaggio ABEL, perché é semplice ed é il piú adatto per iniziare. Esso comprende un editor esclusivamente alfanumerico, con cui si possono scrivere direttamente le equazioni booleane che definiscono la macchina; oppure é possibile usare costrutti a piú elevato livello di astrazione. Il compilatore di ABEL provvede a sviluppare le equazioni booleane secondo uno standard codificato. Il simulatore di ABEL permette di verificare il corretto funzionamento della macchina mediante un uscita grafica, disegnando le forme d onda dei segnali. Poi segue l implementazione fisica nel componente. 0. Cenni sull utilizzo di ABEL. Diamo qui un breve compendio di ABEL, limitato all uso che se ne fará nel seguito. Per un apprendimento completo di ABEL si rimanda a testi specializzati. Per guidarci a scrivere il file di lavoro (o file sorgente) l editor di ABEL presenta la finestra di apertura illustrata qui di seguito: 83

92 84 CAPITOLO 0. SINTESI DI MACCHINE SEQUENZIALI CON UN LINGUAGGIO HDL MODULE Title template DECLARATIONS EQUATIONS END Accanto alla parola chiave MODULE si deve scrivere il nome del file di lavoro, senza estensione. Accanto a Title, fra gli apici, si scrive il titolo che si vuol dare al progetto (questo titolo apparirá sulle stampate). Possono seguire le eventuali direttive al compilatore o al fitter. La zona seguente alla parola chiave DECLARATIONS deve contenere le dichiarazioni relative a tutte le variabili usate nelle equazioni booleane. La zona seguente alla parola chiave EQUATIONS deve contenere tutte le equazioni booleane o le espressioni equivalenti che sintetizzano il progetto. La parola chiave END deve chiudere il file di lavoro. 0.. Scrittura delle dichiarazioni Sono disponibili 4 tipi di dichiarazioni di variabili booleane: () per variabili esterne o segnali in ingresso; (2) per variabili interne combinatorie; (3) per variabili interne da registro (flipflop); (4) per variabili globali.. - I segnali d ingresso vanno scritti con la sola variabile che li rappresenta, seguita dalla parola riservata pin, che indica che il segnale entra su un contatto presente sull esterno del componente. CLK pin 43; RST pin; Si puó omettere il numero che specifica il pin fisico del componente; penserá il software ad attribuirlo Le variabili booleane interne in uscita dalle macrocelle e che sono definite da espressioni booleane di tipo combinatorio vanno scritte cosí: CEN pin istype com ; CEN node istype com ;

93 0.. CENNI SULL UTILIZZO DI ABEL. 85 a seconda che il segnale esca su un pin o resti all interno del componente (node). Al segnale possono essere associati ulteriori attributi: CEN node istype com,invert,keep ; dove invert indica che il segnale delle macrocella deve uscire complementato rispetto a come esce dalla rete AND-OR; keep indica al compilatore di non far collassare il nodo attraverso semplificazioni Le variabili booleane interne in uscita da flipflop (registered) vanno scritte cosí: Q5 pin istype reg d ; Q5 node istype reg d ; Q6 node istype reg t ; a seconda che il segnale Q5 esca o no su pin. Q5 é un flipflop di tipo D. Q6 é un flipflop di tipo T Se si hanno piú variabili, ad es. numerate progressivamente, dopo averle dichiarate singolarmente é possibile creare una variabile globale aggiuntiva nei modi seguenti: QQ = [Q0,Q,Q2,Q3,Q4,Q5,Q6]; QQ = [Q0..Q6]; Le variabili globali verranno utili al momento di scrivere le equazioni Inserimento di commenti E possibile introdurre commenti a inizio riga o dopo il termine di uno statement (dichiarazione o equazione) utilizzando il comando doppio apice secondo lo schema seguente: (commento) valido solo sulla riga su cui compare il doppio apice Scrittura delle equazioni Ci limitiamo per ora alla scrittura delle sole equazioni booleane, che sono espressioni di funzioni combinatorie di decisione o di funzioni combinatorie di comando di flipflop. Premettiamo la lista degli operatori booleani che compaiono nelle equazioni. Prioritá Operatore Descrizione Esempio! NOT!A 2 & AND A&B 3 # OR A#B 3 $ XOR A$B 3!$ XNOR A!$B L uso tradizionale delle parentesi consente di forzare le prioritá. Supponiamo di dover trascrivere la seguente equazione combinatoria di variabili booleane: F 2 = A B C + A B C + C(D + A)

94 86 CAPITOLO 0. SINTESI DI MACCHINE SEQUENZIALI CON UN LINGUAGGIO HDL In formato ABEL usando le notazioni listate in tabella possiamo scrivere: F2 =!A & B & C # A &!B &!C # C & (D # A); Nota Bene - Ogni equazione deve terminare con ;. I simboli degli operatori devono essere preceduti e seguiti da uno spazio; questo vincolo non vale per le parentesi e per il punto esclamativo. Consideriamo ora le seguenti equazioni di comando dei flipflop Q3, (tipo T), e Q4, (tipo D): T 3 = RST Q3 + RST CEN Q2 Q Q0 D4 = SH Q3 + SH Q4 Esse divengono in formato ABEL: Q3.t = RST & Q3.q #!RST & CEN & Q2.q & Q.q & Q0.q; Q3.clk = CLK; Q4.d = SH.com & Q3.q #!SH.com & Q4.q; Q4.clk = CLK; Notiamo le estensioni-punto (.t;.d;.clk) che appaiono nelle equazioni prima del segno di uguaglianza (in veritá segno di assegnamento). Esse specificano il tipo di flipflop usato, se di tipo T o D, e a quale clock é collegato il flipflop. Puó apparire anche l estensione-punto.oe, che indica il controllo di un pin in uscita in modalitá tristate. A secondo membro, dopo il segno di uguaglianza, si possono notare le estensioni-punto (.q;.com;.pin). La.q e la.com specificano che il segnale é preso dall uscita della macrocella (in modo da registro o in modo combinatorio);.pin specifica che il segnale é preso dal pin d uscita collegato alla macrocella Esempio di file di lavoro Come esempio di file di lavoro scritto in formato compatibile con ABEL possiamo trascrivere le equazioni booleane dell esempio sviluppato nel Capitolo 9, sezione 9.3. MODULE Title cont6 contatore a 0-6 stati programmabile DECLARATIONS CLK pin; Q0,Q,Q2,Q3 pin istype reg t ; QQ = [Q0,Q,Q2,Q3]; QI pin istype reg d ; IN pin; TC,PR,PL,CE pin istype com ; QS0,QS,QS2,QS3,QS4,QS5,QS6,QS7,QS8 pin istype reg d ; QS = [QS0..QS8]; P0,P,P2 pin; B0,B,B2,B3,B4,B5,B6,B7 pin; P3 = 0;

95 0.2. USO DI COSTRUTTI EVOLUTI 87 EQUATIONS contatore programmabile Q0.t = PR & (P0 $ Q0.q) #!PR & CE; Q.t = PR & (P $ Q.q) #!PR & CE & Q0.q; Q2.t = PR & (P2 $ Q2.q) #!PR & CE & Q0.q & Q.q; Q3.t = PR & (P3 $ Q3.q) #!PR & CE & Q0.q & Q.q & Q2.q; QQ.clk = CLK; logica combinatoria TC = Q0.q & Q.q & Q2.q & Q3.q; PR = TC & QI.q; PL = TC & QI.q; CE =!TC; SR = TC &!QI.q; sincronizzatore segnale esterno QI.d = IN; QI.clk = CLK; registro di scorrimento QS0.d = PL & B0; QS.d = PL & B #!PL & QS0.q; QS2.d = PL & B2 #!PL & QS.q; QS3.d = PL & B3 #!PL & QS2.q; QS4.d = PL & B4 #!PL & QS3.q; QS5.d = PL & B5 #!PL & QS4.q; QS6.d = PL & B6 #!PL & QS5.q; QS7.d = PL & B7 #!PL & QS6.q; QS8.d = PL # QS7.q; QS.clk = CLK; END Il listato presentato é un file ABEL con la specifica di file cont6.abl. Con il file ABEL si entra nel compilatore, che costruisce un file di output con le equazioni semplificate in forma standard. Con il simulatore si puó verificare se il progetto é corretto e comunque attraverso iterazioni si puó arrivare al progetto corretto. Da questo punto in poi il resto del lavoro puó essere fatto in modo totalmente automatizzato. L intervento umano non é piú necessario, quindi l errore umano é eliminato. Usando successivi blocchi di software si puó giungere fino alla realizzazione del circuito finale in modo totalmente automatico. Nei software piú evoluti é possibile un interattivitá, in modo da orientare la realizzazione finale verso la soluzione piú conveniente. 0.2 Uso di costrutti evoluti Naturalmente le considerazioni, di cui sopra, hanno portato a cercare di aumentare il grado di automazione anche nello scrivere il file di lavoro, che é poi il file sorgente del progetto. Il linguaggio ABEL contiene in sé alcuni costrutti che facilitano la scrittura del file di lavoro, operando a un livello di astrazione

96 88 CAPITOLO 0. SINTESI DI MACCHINE SEQUENZIALI CON UN LINGUAGGIO HDL piú elevato. Nel seguito prenderemo in considerazione un modo piú semplice per scrivere le equazioni che descrivono contatori e registri a scorrimento. Premettiamo la definizione di alcuni operatori aritmetici e relazionali che entrano nelle espressioni logiche presenti nei costrutti evoluti. Prioritá Operatore Descrizione Esempio negazione (compl. a 2) -A 2 moltiplicazione A B 2 / divisione A/B 3 + addizione A + B 4 == uguale a A == B 4! = non uguale a A! = B 4 < minore A < B 4 <= minore o uguale A <= B 4 > maggiore A > B 4 >= maggiore o uguale A >= B L uso tradizionale delle parentesi consente di forzare le prioritá Uso delle strutture globali Variabili globali Abbiamo visto al punto.. come si crea una variabile globale. Nelle dichiarazioni di variabili, ordinate per numero, ad es...., Q4, Q3, Q2,.. possiamo utilizzare una notazione abbreviata. Ad es., immaginiamo di dichiarare un contatore di 6 flipflop. La dichiarazione tradizionale é la seguente: Q5,Q4,Q3,Q2,Q,Q0,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q,Q0 pin istype reg d ; La dichiarazione equivalente in notazione abbreviata é: Q5..Q0 pin istype reg d ; Dopo aver dichiarato queste variabili possiamo far uso di una variabile globale per rappresentarle tutte: QQ = [Q5..Q0]; Questa variabile globale rappresenta sia il vettore delle variabili Q5..Q0 sia il valore binario corripondente. La variabile globale puó riunire solo variabili elementari dello stesso tipo: dovranno essere tutte variabili o di tipo pin, oppure di tipo istype com, oppure di tipo istype reg. Si deve sempre rispettare il requisito che tutti gli elementi che compongono una variabile globale devono essere omogenei, cioé dello stesso tipo. Vediamo l uso che si puó fare delle variabili globali in un registro a scorrimento di 8 flipflop. Nella zona Declarations scriviamo: CLK pin; QS7..QS0 pin istype reg d ;

97 0.2. USO DI COSTRUTTI EVOLUTI 89 QS = [QS7..QS0]; QSS = [QS6..QS0,QIN]; P7..P0 pin; PP = [P7..P0]; QIN pin istype reg d ; PL,SH pin istype com ; Nella zona Equations scriveremo: QS.d = PL & PP #!PL & (SH & QSS.q #!SH & QS.q); QS.clk = CLK; Come si puó vedere dall esempio, con una sola riga é stato descritto un registro a scorrimento, che richiederebbe 8 righe elementari. Notiamo come la variabile globale QS consenta l assegnamento del clock ai flipflop. Quando si scrive QS.q si fa riferimento alle uscite dei flipflop del registro; quando si scrive QS.d si fa riferimento agli ingressi dei flipflop (di tipo D) del registro. Notiamo l omogeneitá delle variabili all interno di ogni variabile globale. Il segnale d ingresso del registro, indicato con QIN, esce da un flipflop, cioé é una variabile da registro, omogenea con le altre variabili di QSS. Se fosse di altro tipo, bisognerebbe scrivere a parte l equazione relativa al solo primo stadio; poi usare le variabili globali per gli stadi rimanenti. Costanti Nel linguaggio ABEL é possibile far uso di costanti. Le costanti vanno dichiarate dando l identificatore della costante ed il valore che le viene assegnato. A = ; A,B,C =,0,; In questi casi le costanti sono binarie e possono assumere o il valore 0 o il valore. E possibile dichiarare piú variabili ordinatamente, alle quali vengono assegnati rispettivamente i valori indicati a destra del segno di uguaglianza (=), simbolo di assegnamento. Numeri e vettori di costanti E possibile l uso di costanti numeriche. Ad es., la dichiarazione seguente BB = ˆb00; indica che la costante BB é un numero binario di 8 bit. La costante BB rappresenta quindi un vettore di costanti binarie elementari. Si puó utilizzare la notazione esadecimale, per cui la costante BB puó essere dichiarata nel seguente modo equivalente: BB = ˆhB7; dove ˆh indica che la parte che segue é scritta in modo esadecimale e B e 7 sono cifre esadecimali. Si puó introdurre un vettore di costanti binarie nel modo seguente: CC = [,0,,];

98 90 CAPITOLO 0. SINTESI DI MACCHINE SEQUENZIALI CON UN LINGUAGGIO HDL questa scrittura é equivalente a: CC = ˆb0; CC = ˆhB; Nel vettore di costanti é ammesso l uso di variabili d ingresso di tipo pin. Quindi nel vettore di costanti possono entrare i pin d ingresso usati per effettuare impostazioni. Ad es., possiamo scrivere nelle dichiarazioni: P2,P,P0 pin; PP = [0,P2,P,P0]; Quindi eccezzionalmente nel vettore di costanti possono apparire le variabili esterne di impostazione. Operazioni di assegnamento Nella zona Equations possiamo usare i vettori di costanti per operazioni di assegnamento. L espressione QQ.d = 0; azzera il flipflop Q0. L espressione Q0.d = A; assegna al flipflop Q0 il valore binario della costante A. Usando variabili globali e vettori di costanti possiamo effettuare notevoli operazioni di assegnamento di valori. Dopo aver dichiarato le variabili Q7..Q0 pin istype reg d ; QQ = [Q7..Q0]; nella zona Equations possiamo scrivere QQ.d = 0; Con questo assegnamento assegnamo il valore 0 a tutte le variabili che compongono la variabile globale, essendo 0 il vettore nullo. Con la seguente espressione QQ.d = ˆb00; assegnamo ordinatamente a tutte le singole variabili di QQ i valori indicati nel vettore di costanti, cioé nella costante binaria. Con la seguente espressione [Q3..Q0].d = [0,P2,P,P0];

99 0.2. USO DI COSTRUTTI EVOLUTI 9 assegnamo ordinatamente alle singole variabili i valori impostati sui pin d ingresso P2,P,P0, che vengono usati per le impostazioni. Operazioni logiche Dopo aver scritto le seguenti dichiarazioni Q3..Q0 pin istype reg d ; QQ = [Q3..Q0]; BB = ˆb; nella zona Equations possiamo scrivere: TC = QQ==BB; Questa espressione indica che TC= quando le variabili Q3..Q0 assumono tutte il valore. Ció equivale a scrivere: TC = Q3.q & Q2.q & Q.q & Q0.q; Si noti che QQ non é accompagnata dall espressione-punto.d nell equazione TC = QQ==BB, in quanto l operazione fatta é un confronto termine a termine fra vettori Struttura when-then-else Le equazioni booleane possono entrare in una struttura when-then-else che consente di implementare logiche piú complesse. La sintassi generale della struttura when-then-else é la seguente: when (espressione logica) then { equazione ; } else { equazione 2; } Se l espressione logica é vera viene valutata l equazione (o il gruppo di equazioni ); se l espressione logica é falsa viene valutata l equazione 2 (o il gruppo di equazioni 2). E utilizzabile anche la seguente struttura annidata: when (espressione logica ) then { equazione ; } else when (espressione logica 2) then { equazione 2; }

100 92 CAPITOLO 0. SINTESI DI MACCHINE SEQUENZIALI CON UN LINGUAGGIO HDL else { equazione 3; } In questo caso, se l espressione logica é vera viene valutata l equazione (o il gruppo di equazioni ); se l espressione logica 2 é vera viene valutata l equazione 2 (o il gruppo di equazioni 2); se entrambe le espressioni logiche e 2 sono false viene valutata l equazione 3 (o il gruppo di equazioni 3). Le regole sintattiche da utilizzare sono mutuate dal linguaggio C. La struttura when-then-else ben si presta per descrivere i contatori binari. Vediamo come implementare lo UBC ( 7.3). Ricordiamo che i segnali SR, PR, CE sono gerarchicamente ordinati e che la struttura when-then-else é una struttura gerarchica. Ecco allora come puó essere realizzato lo UBC a 6 stadi. Nella zona delle Dichiarazioni poniamo le variabili globali:... Q5..Q0 pin istype reg d ; P5..P0 pin; CONT = [Q5..Q0]; contatore a 6 stadi PP = [P5..P0]; ingressi di preset... Nella zona delle Equazioni, utilizzando le variabili globali, scriviamo:... when (SR == ) then { CONT.d = 0; } else when (PR == ) then { CONT.d = PP; } else when ( CE == ) then { CONT.d = CONT.q + ; } else { CONT.d = CONT.q; }... E essenziale tenere l ordine descrescente dei pesi binari delle variabili del contatore nella variabile globale CONT perché la struttura sia funzionante. I flipflop utilizzati in questa struttura devono essere esclusivamente di tipo D. Nel riquadro della pagina accanto riscriviamo il file di lavoro dell esempio ( 0..4), introducendo queste nuove strutture. Notiamo che anche il registro a scorrimento é stato riscritto in forma compatta, usando la costruzione when-then-else. Vediamo qui di seguito l alternativa del registro a scorrimento con sole variabili globali. QS0.d = PL & B0; [QS.. QS8].d = PL & [B.. B8] #!PL & [QS0.. QS7].q; In realtá, la prima equazione, relativa al flipflop QS0, é stata scritta in forma elementare ed isolata, in quanto essa non é omogenea con le altre 7 equazioni. Queste invece sono state compattate in una sola equazione utilizzando le variabili globali. Appare evidente che questi costrutti evoluti risultano piú efficienti al crescere del numero delle variabili

101 0.2. USO DI COSTRUTTI EVOLUTI 93 in uso e portano a ridurre gli errori di scrittura. Inoltre la leggibilitá del file di lavoro (o file sorgente) risulta molto migliorata. MODULE Title cont6b contatore a 0-6 stati programmabile, con costrutto when-then-else DECLARATIONS CLK pin; Q3,Q2,Q,Q0 pin istype reg d ; CONT = [Q3,Q2,Q,Q0]; P3,P2,P,P0 pin; pin P3 a 0 QI pin istype reg d ; IN pin; TC,PR,PL,CE pin istype com ; QS0,QS,QS2,QS3,QS4,QS5,QS6,QS7,QS8 pin istype reg d ; QS = [QS0.. QS8]; B8,B7,B6,B5,B4,B3,B2,B,B0 pin; pin B8 a EQUATIONS sincronizzatore segnale esterno QI.d = IN; QI.clk = CLK; contatore when (PR == ) then { CONT.d = [P3,P2,P,P0]; } preset else when (CE == ) then { CONT.d = CONT.q + ; } conteggio else { CONT.d = CONT.q; } attesa CONT.clk = CLK; logica combinatoria TC = Q0.q & Q.q & Q2.q & Q3.q; PR = TC & QI.q; PL = TC & QI.q; CE =!TC; registro a scorrimento when (PL == ) then { [QS0..QS8].d = [B0..B8]; } else { QS0.d = 0; [QS..QS8].d = [QS0..QS7].q; } QS.clk = CLK; END

102 94 CAPITOLO 0. SINTESI DI MACCHINE SEQUENZIALI CON UN LINGUAGGIO HDL

103 Capitolo Linguaggi di descrizione di macchine a stati Finora abbiamo studiato le macchine sequenziali il cui diagramma degli stati é riconducibile ad un anello di stati, facilmente meccanizzabile con un contatore binario sincrono. Abbiamo anche detto che l anello di stati risolve la piú grande parte delle macchine sequenziali. Negli altri casi si deve ricorrere alla procedura di progetto illustrata nel capitolo 6, paragrafo 6.7 e presentata in Appendice A. Per facilitare la soluzione di questi casi sono stati sviluppati i linguaggi di descrizione di macchine a stati. Il linguaggio ABEL contiene giá un costrutto evoluto, denominato state diagram, che é usato per implementare il progetto di macchine a stati. E ovvio che esso, come dice il suo nome, riproduce il diagramma degli stati con cui la macchina a stati viene definita.. La struttura state diagram di ABEL Nella zona EQUATIONS del file di lavoro viene scritta una struttura, che inizia con la parola riservata state diagram. La sintassi generale é la seguente. state diagram statreg state s : equazioni; logica di transizione degli stati; state s 2 : equazioni; logica di transizione degli stati; state s n : equazioni; logica di transizione degli stati; Il registro di stato statreg, scritto accanto alla parola chiave state diagram, tiene traccia dello stato corrente. Ovviamente ogni stato s i determina i segnali d uscita con le equazioni booleane e determina quale sará lo stato prossimo basandosi sulla logica di transizione degli stati, nella quale intervengono anche i segnali esterni di comando. Ogni volta che si verifica un cambiamento dei segnali di comando, le funzioni logiche determinano quale 95

104 96 CAPITOLO. LINGUAGGI DI DESCRIZIONE DI MACCHINE A STATI sará lo stato prossimo e le uscite vengono modificate di conseguenza. Ad esempio, se statreg coincide con s, lo stato corrente é lo stato s. Le uscite sono determinate dalle equazioni listate per lo stato s e la logica di transizione degli stati di s determina quale deve essere lo stato prossimo. Pertanto, alla prossima transizione attiva del clock il registro di stato statreg si porta nel nuovo stato e le uscite assumono i valori determinati dalle equazioni in questo nuovo stato. E il processo continua (ricordiamo che il diagramma degli stati é ciclico!). Il registro di stato statreg contiene le variabili di stato binarie, nel numero necessario per identificare univocamente gli stati richiesti dal progetto, secondo la regola giá vista 2 n N, dove N é il numero degli stati ed n é il numero delle variabili di stato necessarie: é ovvia la scelta dello n minimo che verifica la disequazione. Le sezioni contenenti la logica di transizione degli stati possono far uso delle ben note strutture logiche case, if-then-else, goto, with. La loro sintassi é mutuata dal linguaggio C. Si puó ricorrere al manuale di riferimento del linguaggio ABEL per avere maggiori informazioni sull uso delle strutture logiche suddette. Ciascuno stato ha pertanto la sua logica di transizione degli stati che fa anche uso delle strutture logiche suddette per determinare quale sará lo stato prossimo. Puó accadere che il numero degli stati ammessi dal registro di stato sia superiore al numero degli stati utilizzati. Ad es., per coprire 5 stati é necessario un registro con 3 variabili di stato. Ma tale registro ammette 8 stati. Quindi rimangono 3 stati inutilizzati. E necessario che anche per questi stati sia scritta un opportuna logica di transizione, per assicurarsi che la macchina a stati non entri in blocco in uno stato non definito. In questi casi un semplice statement goto ad uno stato proprio risolve il problema: si perde al piú un periodo di clock, poi si rientra nel ciclo normale..2 Esempio d uso del costrutto state diagram Per illustrare il meccanismo del costrutto state diagram usiamo un esempio appropriato. Su alcuni testi americani é riportato un esempio che riguarda il controllo delle luci posteriori di una autovettura, la T-bird degli anni sessanta. Listiamo i requisiti del progetto. I segnali d ingresso sono 3: frenata (BRK), svolta a sinistra (TL), svolta a destra (TR). I due segnali di svolta sono mutuamente esclusivi, ma uno di essi puó essere presente in concomitanza con il segnale di frenata. Il segnale di frenata puó essere presente da solo. I segnali d uscita sono 6, uno per ciascuna delle sei luci, allineate in orizzontale, 3 (L,L2,L3) sul lato sinistro e 3 (R,R2,R3) sul lato destro della coda dell auto. Quando il segnale di svolta é attivo, le tre luci sul lato appropriato si accendono in sequenza dal centro (L o R) verso l esterno (L3 o R3) finché sono tutte e tre accese; poi si spengono e il processo di ripete fintantoché il segnale di svolta é attivo. Se si attiva il solo segnale di frenata le sei luci si accendono contemporaneamente e restano accese finché dura il segnale. Se il segnale di frenata é concomitante con un segnale di svolta, le tre luci che indicano la direzione si accendono in sequenza e ciclano, mentre le tre luci dell altro lato restano costantemente accese come segno di frenata. I sei segnali d uscita sono riuniti nella stringa binaria L3L2LRR2R3..2. Costruzione del diagramma degli stati Partendo dai requisiti di progetto si puó procedere a scrivere direttamente il file di lavoro ABEL utilizando il costrutto state diagram. Preferiamo per motivi didattici anteporre il disegno del diagramma degli stati relativo a questo esempio, anche perché ció grandemente facilita la scrittura del file ABEL.

105 .2. ESEMPIO D USO DEL COSTRUTTO STATE DIAGRAM 97 S7 TR=0 TL=0 TR= S3 TL= TR=0 TL=0 S0 TL= TR= TR=0 TL=0 TR= S TL= TL= S2 TR=0 TL=0 TR= TL= TL= TL= S4 TR=0 TL=0 TR= TR=0 TL=0 S5 TR= TR=0 TL=0 S6 TR= Fig.. - Diagramma degli stati Lo stato S0 é al tempo stesso lo stato d attesa, in cui entrambi i segnali di svolta sono inattivi, oppure lo stato di ricircolo. Gli stati S, S2, S3 corrispondono alle tre configurazioni delle luci del lato sinistro, corrispondenti alla svolta a sinistra (TL=). Gli stati S4, S5, S6 corrispondono alle tre configurazioni delle luci del lato destro, corrispondenti alla svolta a destra (TR=). Le frecce indicano tutte le possibili transizioni fra gli stati, con le condizioni sotto cui avvengono. Listiamo ora la configurazione delle 6 uscite nei vari stati. stato S0: BRK= BRK=,TL= 000 BRK=,TR= 000 else stato S: BRK= else 00 stato S2: BRK= else 0

106 98 CAPITOLO. LINGUAGGI DI DESCRIZIONE DI MACCHINE A STATI stato S3: BRK=0 000 else stato S4: BRK= else 00 stato S5: BRK= else 0 stato S6: BRK=0 000 else Il diagramma degli stati e il listato delle configurazioni delle uscite contengono tutte le informazioni necessarie per il nostro progetto. Dobbiamo ora determinare il numero delle variabili di stato e procedere all assegnamento degli stati. Il numero degli stati é N = 7. Pertanto dalla disequazione 2 n = N ricaviamo che il numero n minimo che la rende valida é 3. Tre sono le variabili di stato, che indicheremo con: q2, q, q0. Il registro sará composto da tre flipflop, ove ciascuno di essi memorizza una variabile binaria. Passiamo all assegnamento degli stati. Tre variabili rendono disponibili 8 stati. Ne occorrono 7. Pertanto avremo uno stato in eccesso (S7) che dovremo comunque controllare. Nella assegnazione possiamo seguire la sequenza binaria classica, ma possiamo anche fare una scelta diversa. La tabella che segue mostra la nostra scelta. stato q2 q q0 S S 0 0 S2 0 0 S3 0 S4 0 S5 0 S6 S7 0 0 Ci resta da fare un ultima scelta, se le uscite devono essere combinatorie oppure da registro. Scegliamo l opzione delle uscite da registro, cioé da flipflop. Possiamo ora scrivere il file di lavoro ABEL utilizzando il costrutto state diagram.

107 .2. ESEMPIO D USO DEL COSTRUTTO STATE DIAGRAM 99 MODULE Title Tbird controllo luci posteriori della T-bird DECLARATIONS CLK pin; BRAKE pin; TR pin; TL pin; L,L2,L3 pin istype reg ; R,R2,R3 pin istype reg ; q2,q,q0 pin istype reg ; out = [L3,L2,L,R,R2,R3]; statreg = [q2,q,q0]; s0 = [0,0,0]; s = [0,0,]; s2 = [0,,0]; s3 = [0,,]; s4 = [,0,]; s5 = [,,0]; s6 = [,,]; s7 = [,0,0]; temporizza le luci registro di stato variabile globale per registro d uscita variabile globale per registro di stato assegnamento degli stati EQUATIONS statreg.clk = CLK; out.clk = CLK; state diagram statreg; state s0: when (BRAKE==0) then {out:=ˆb000000;} else when (BRAKE== & TL==) then {out:=ˆb000;} else when (BRAKE== & TR==) then {out:=ˆb000;} else {out:=ˆb;} if (TL) then s else if (TR) then s4 else s0; state s: when (BRAKE==0) then {out:=ˆb00000;} else {out:=ˆb00;} if (TL) then s2 else if (TR) then s4 else s0; (continua)

108 00 CAPITOLO. LINGUAGGI DI DESCRIZIONE DI MACCHINE A STATI state s2: when (BRAKE==0) then {out:=ˆb0000;} else {out:=ˆb0;} if (TL) then s3 else if (TR) then s4 else s0; state s3: when (BRAKE==0) then {out:=ˆb000;} else {out:=ˆb;} if (TL) then s0 else if (TR) then s4 else s0; state s4: when (BRAKE==0) then {out:=ˆb00000;} else {out:=ˆb00;} if (TR) then s5 else if (TL) then s else s0; state s5: when (BRAKE==0) then {out:=ˆb0000;} else {out:=ˆb0;} if (TR) then s6 else if (TL) then s else s0; state s6: when (BRAKE==0) then {out:=ˆb000;} else {out:=ˆb;} if (TR) then s0 else if (TL) then s else s0; state s7: goto s0; END

109 .3. LA STRUTTURA TRUTH TABLE DI ABEL. 0 Questo file va compilato col compilatore ABEL. L uscita del compilatore ci presenta le equazioni di comando dei 3 flipflop D, che costituiscono il registro di macchina, e dei 6 flipflop D che pilotano le 6 uscite. Nel listato che segue possiamo leggere le equazioni sintetizzate da ABEL. L.CLK = CLK;! L.D =!q0.q &!q.q & TL #!q0.q &!q.q &!BRAKE #!q0.q &!q.q & q2.q # q2.q &!BRAKE; L2.CLK = CLK; L2.D =!q0.q &!q2.q & BRAKE &!TL # q0.q & q2.q & BRAKE # q.q & BRAKE # q.q &!q2.q; L3.CLK = CLK; L3.D =!q0.q &!q.q &!q2.q & BRAKE &!TL # q.q & q2.q & BRAKE # q0.q & q2.q & BRAKE # q0.q & q.q &!q2.q; R.CLK = CLK;! R.D =!q0.q &!q.q & q2.q #!q0.q &!q.q &!TL & TR #!q2.q &!BRAKE; R2.CLK = CLK;! R2.D =!q.q & q2.q #!q2.q &!BRAKE #!q0.q &!q.q &!TL & TR; R3.CLK = CLK;! R3.D =!q2.q &!BRAKE #!q0.q &!q.q &!TL & TR #!q0.q & q2.q #!q.q & q2.q; q0.clk = CLK;! q0.t =!q0.q &!TL &!TR #!q0.q &!q.q & q2.q # q0.q & q2.q & TL &!TR # q0.q &!q2.q &!TL & TR; q.clk = CLK; q.d = q0.q &!q.q & q2.q & TR #!q0.q & q.q & q2.q & TR # q0.q &!q.q &!q2.q & TL #!q0.q & q.q &!q2.q & TL; q2.clk = CLK; q2.d =!q0.q & q.q & q2.q & TR # q0.q &!q.q & q2.q & TR #!q2.q &!TL & TR; Col compilato si procede alla simulazione per verificare la correttezza del progetto. Poi, scelto il circuito integrato che si vuole utilizzare, mediante il software fitter, che riceve in ingresso il compilato, si produce il file di programmazione. Mediante il programmatore si programma il circuito integrato programmabile e si ottiene il componente che meccanizza la nostra macchina. Come appare, il processo di realizzazione del circuito é altamente automatizzato, quindi scarsamente soggetto all errore umano. Notiamo che nel costrutto state diagram abbiamo scritto per ogni stato S i sia le equazioni booleane che controllano le uscite in quello stato, sia la logica di transizione verso gli altri stati. L unitá di controllo e l unitá dati non appaiono separatamente..3 La struttura truth table di ABEL. Il costrutto truth table (letteralmente: tabella della veritá) consente di specificare in forma tabellare i valori d uscita in funzione degli altri segnali. Va subito detto che il costrutto truth table si differenzia nettamente dalla tabella della veritá, che abbiamo studiato al capitolo 3, per definire le funzioni booleane. La sintassi generale differisce in funzione del tipo d uscita usato.

110 02 CAPITOLO. LINGUAGGI DI DESCRIZIONE DI MACCHINE A STATI I caso. - Nel caso di uscite unicamente combinatorie la sintassi é: truth table([inputs] >[outputs]) [input state ] >[output state ]; [input state 2] >[output state 2];... [input state m] >[output state m]; in cui: inputs sono i segnali che vanno a costruire le funzioni logiche degli outputs; outputs sono le uscite; lo input state i e lo output state i specificano i valori di uscita per un dato insieme di valori d ingresso. In questo caso la truth table coincide con la tabella della veritá che conosciamo. Facciamo l esempio di un AND a 2 ingressi: truth table([a,b] >[OUT]) [0,0] >[0]; [0,] >[0]; [,0] >[0]; [,] >[]; II caso. - Nel caso di uscite solamente da registro la sintassi é: truth table([inputs]:>[outputs]) [input state ]:>[output state ]; [input state 2]:>[output state 2];... [input state m]:>[output state m]; con la sola differenza del simbolo di assegnazione fra input e output. III caso. - Nel caso siano presenti uscite sia combinatorie sia da registro la sintassi é: truth table([inputs]:>[reg outputs] >[comb outputs]) [input state ]:>[reg output state ] >[comb output ]; [input state 2]:>[reg output state 2] >[comb output 2];... [input state m]:>[reg output state m] >[comb output m]; dove reg outputs sono le uscite da flipflop e comb outputs sono le uscite combinatorie. In tutti i casi occorre rispettare l uso delle parentesi e del ;. E possibile usare la condizione di indifferenza nelle variabili d ingresso. Tale condizione é inserita con un.x. al posto dello o dello 0. Essa permette di accorciare le tabelle: non é necessario specificare tutti i possibili stati di ingresso quando i valori d uscita sono gli stessi..3. Esempio col costrutto truth table Riscriviamo il file sorgente dell esempio del punto.2, usando il costrutto state diagram per definire le transizioni fra gli stati e usando il costrutto truth table per definire lo stato delle uscite.

111 .3. LA STRUTTURA TRUTH TABLE DI ABEL. 03 MODULE Title Tbird controllo luci posteriori della T-bird - con truth table DECLARATIONS CLK pin; BRAKE pin; TR pin; TL pin; L,L2,L3 pin istype reg ; R,R2,R3 pin istype reg ; q2,q,q0 pin istype reg ; out = [L3,L2,L,R,R2,R3]; statreg = [q2,q,q0]; s0 = [0,0,0]; s = [0,0,]; s2 = [0,,0]; s3 = [0,,]; s4 = [,0,]; s5 = [,,0]; s6 = [,,]; s7 = [,0,0]; temporizza le luci registro di stato variabile globale per registro d uscita variabile globale per registro di stato assegnamento degli stati EQUATIONS statreg.clk = CLK; out.clk = CLK; state diagram statreg; state s0: if (TL) then s else if (TR) then s4 else s0; state s: if (TL) then s2 else if (TR) then s4 else s0; state s2: if (TL) then s3 else if (TR) then s4 else s0; state s3: if (TL) then s0 else if (TR) then s4 else s0; (continua)

112 04 CAPITOLO. LINGUAGGI DI DESCRIZIONE DI MACCHINE A STATI state s4: if (TR) then s5 else if (TL) then s else s0; state s5: if (TR) then s6 else if (TL) then s else s0; state s6: if (TR) then s0 else if (TL) then s else s0; state s7: goto s0; inseriamo ora la truth table per il controllo delle uscite truth table([sreg.q, BRAKE, TR, TL]:>[L3,L2,L,R,R2,R3]) [ s0, 0,.x.,.x.]:>[0,0,0,0,0,0]; [ s0,, 0, 0 ]:>[,,,,,]; [ s0,, 0, ]:>[0,0,0,,,]; [ s0,,, 0 ]:>[,,,0,0,0]; [ s, 0,.x.,.x.]:>[0,0,,0,0,0]; [ s,,.x.,.x.]:>[0,0,,,,]; [ s2, 0,.x.,.x.]:>[0,,,0,0,0]; [ s2,,.x.,.x.]:>[0,,,,,]; [ s3, 0,.x.,.x.]:>[,,,0,0,0]; [ s3,,.x.,.x.]:>[,,,,,]; [ s4, 0,.x.,.x.]:>[0,0,0,,0,0]; [ s4,,.x.,.x.]:>[,,,,0,0]; [ s5, 0,.x.,.x.]:>[0,0,0,,,0]; [ s5,,.x.,.x.]:>[,,,,,0]; [ s6, 0,.x.,.x.]:>[0,0,0,,,]; [ s6,,.x.,.x.]:>[,,,,,]; END Osservando questo secondo file si notano molto bene la parte relativa alla unitá di controllo e la parte relativa all unitá dati. Col compilato si procede alla simulazione per verificare la correttezza del progetto. Poi, mediante il software fitter, che riceve in ingresso il compilato, si produce il file di programmazione. Mediante il programmatore si programma il circuito integrato programmabile e si ottiene il componente che meccanizza la nostra macchina.

113 .4. CONCLUSIONI 05.4 Conclusioni Da quanto esposto si nota che l intervento del progettista é sostanzialmente concentrato sulla sola stesura del file sorgente. Tutto il resto del processo é automatizzato. Pertanto al progettista resta la parte di lavoro piú creativa e divertente; invece la parte propriamente esecutiva é lasciata alla macchine che sono in grado di svolgerla in maniera efficiente e sicura. Ecco quindi il grande vantaggio che alla progettazione digitale viene dall aver introdotto un linguaggio di descrizione di alto livello di macchine a stati, quale é ABEL. ABEL, pur essendo un linguaggio di alto livello, non si discosta molto dalla progettazione digitale tradizionale: sono ben visibili le equazioni booleane, che intervengono ad ogni livello per definire le funzioni principali. E peró intuibile che si possa operare anche a livelli di astrazione piú elevati di quelli di ABEL. Inoltre la progettazione logica non esaurisce i problemi dello progettazione di una macchina: intervengono altri fattori, primo fra tutti la velocitá di funzionamento della macchina, legata ai ritardi di propagazione dei segnali elettrici nella struttura logica. E ovvio allora che accanto alla progettazione logica ci debba essere un controllo della velocitá operativa del circuito prodotto. I linguaggi piú recenti sono stati creati in questa ottica. Siamo ora pronti per affrontare un linguaggio veramente potente: VHDL.

114 06 CAPITOLO. LINGUAGGI DI DESCRIZIONE DI MACCHINE A STATI

115 Appendice A Esempio di progettazione di una rete sequenziale sincrona L esempio che segue illustra bene il procedimento presentato nel capitolo 6. Viene usato un problema fittizio e banale, che peró consente di analizzare tutti gli aspetti del procedimento classico di sintesi. Problema - Progettare una rete sequenziale che produca un uscita vera se il numero di contenuti in una sequenza di tre bit é dispari. Possiamo iniziare disegnando il blocco funzionale che vogliamo realizzare (Fig. A.): Clock I Rete Z Fig. A. dove I é la variabile d ingresso, Z é la variabile d uscita. Iniziamo ora a costruire il diagramma degli stati primitivi. Nello stato di partenza S 0 osserviamo lo stato della linea d ingresso I. Se I = 0 da S 0 si va a S ; se I = da S 0 si va a S 2. In Fig. A.2 sono disegnati i cerchietti che individuano i primi tre stati, con le frecce che indicano le transizioni. Accanto a ciascuna freccia é scritta la condizione I sotto cui si verifica la transizione; inoltre é scritto lo stato che deve assumere l uscita Z. Abbiamo completato l analisi del primo bit della sequenza I in ingresso. S 0 I = 0 I = Z = 0 Z = 0 S S 2 Fig. A.2 07

116 08 APPENDICE A. ESEMPIO DI PROGETTAZIONE DI UNA RETE SEQUENZIALE SINCRONA Proseguiamo con lo stesso metodo per costruire l intero diagramma degli stati (Fig. A.3). Da S si passa a S 3 con I = 0, Z = 0; si passa a S 4 con I =, Z = 0. Da S 2 si passa a S 5 con I = 0, Z = 0; si passa a S 6 con I =, Z = 0. Abbiamo completato l analisi del secondo bit della sequenza I in ingresso. Analizziamo il terzo bit della sequenza in ingresso. Partendo da uno qualunque degli stati S 3, S 4, S 5, S 6 si arriverá allo stato successivo che ora é proprio lo stato S 0, poiché abbiamo completato l analisi e quindi il ciclo si chiude (la rete é pronta per l analisi della successiva sequenza di tre bit). S 0 I = 0 I = Z = 0 Z = 0 S S 2 I = 0 I = I = 0 I = Z = 0 Z = 0 Z = 0 Z = 0 S 3 S 4 S 5 S 6 I = 0 I = 0 I = 0 I = 0 Z = 0 Z = Z = Z = 0 I = Z = I = Z = 0 S 0 I = Z = 0 Fig. A.3 I = Z = Partendo dallo stato S 3 si va allo stato S 0 : con I = 0 é Z = 0, con I = é Z =. Partendo dallo stato S 4 si va allo stato S 0 : con I = 0 é Z =, con I = é Z = 0. Partendo dallo stato S 5 si va allo stato S 0 : con I = 0 é Z =, con I = é Z = 0. Partendo dallo stato S 6 si va allo stato S 0 : con I = 0 é Z = 0, con I = é Z =. Il diagramma degli stati primitivi é ora completo. Scriviamo la tabella degli stati primitivi: per ogni stato scriviamo lo stato d arrivo (stato prossimo) e lo stato dell uscita sotto le condizioni d ingresso (Tab. A.).

117 09 stato di partenza stato d arrivo uscita Z I = 0 I = I = 0 I = S 0 S S S S 3 S S 2 S 5 S S 3 S 0 S 0 0 S 4 S 0 S 0 0 S 5 S 0 S 0 0 S 6 S 0 S 0 0 Tab. A. Osservando la tabella si nota che la riga corrispondente allo stato S 6 é uguale alla riga dello stato S 3. Analogamente la riga corrispondente allo stato S 5 é uguale alla riga dello stato S 4. Due stati possono essere fatti coincidere se le loro indicazioni di stato prossimo ed i loro requisiti d uscita sono identici. Quindi lo stato S 6 duplica lo stato S 3 ; lo stato S 5 duplica lo stato S 4. Possiamo scrivere la tabella degli stati finali scrivendo ovunque S 3 al posto di S 6, S 4 al posto di S 5 e omettendo le righe duplicate (Tab. A.2). stato di partenza stato d arrivo uscita Z I = 0 I = I = 0 I = S 0 S S S S 3 S S 2 S 4 S S 3 S 0 S 0 0 S 4 S 0 S 0 0 Tab. A.2 Dalla tabella si desume che sono necessari 5 stati interni per realizzare il ciclo operativo della rete sequenziale. La procedura seguita finora ci ha portato ad un esame approfondito del problema da risolvere e ci ha consentito di giungere alla piú semplice definizione del ciclo operativo da realizzare. Con i dati in tabella possiamo passare a tracciare il diagramma degli stati finali (Fig. A.4).

118 0 APPENDICE A. ESEMPIO DI PROGETTAZIONE DI UNA RETE SEQUENZIALE SINCRONA S 0 I = 0 I = Z = 0 Z = 0 S I = I = S 2 Z = 0 Z = 0 I = 0 I = 0 Z = 0 Z = 0 I = 0 I = 0 Z = 0 Z = S 3 S I = 4 I = Z = Z = 0 Fig. A.4 Possiamo passare alla determinazione del numero delle variabili di stato. Poiché il numero N di stati essenziali é 5, la disequazione 2 n N é verificata con un n minimo pari a 3. Questo n é pure il numero dei flipflop del registro di memoria. Procediamo all assegnamento degli stati. Con n = 3 abbiamo che 2 3 = 8. Pertanto 8 sono i codici disponibili per essere assegnati agli stati. Di essi ce ne servono soltanto 5. Possiamo scegliere 5 codici da 8 in 56 modi diversi, quante sono le combinazioni di 8 elementi presi 5 alla volta. Quindi sono possibili 56 diversi assegnamenti degli stati. Non esiste un criterio a priori per scegliere l assegnamento che dia la rete piú semplice. Non essendo pratico progettare le 56 reti per poi scegliere la piú semplice, ci si basa sull esperienza per fare una scelta conveniente. La nostra scelta é la seguente. Indicando con A, B, C le tre variabili di stato che entrano nel codice con peso rispettivamente di 2 2, 2, 2 0, possiamo scrivere la seguente tabella di assegnamento degli stati (Tab. A.3): A B C S S 0 0 S S 3 0 S 4 0 Tab. A.3 Avendo usato solo 5 codici, ne restano inutilizzati 3. Ma questi tre codici non si presenteranno mai nella sequenza di stati e pertanto sono da considerarsi codici ridondanti, utilizzabili per la semplificazione delle funzioni booleane della rete. Elenchiamo qui di seguito le tre ridondanze (Tab. A.4): A B C Tab. A.4

119 Abbiamo giá scelto di utilizzare flipflop JK. Possiamo ora passare a compilare la tabella delle transizioni (Tab. A.5). A B C I A B C J A K A J B K B J C K C Z φ 0 φ φ φ 0 φ φ φ φ φ φ 0 φ φ φ 0 0 φ φ φ 0 φ 0 φ φ φ 0 φ φ φ 0 φ φ 0 φ φ φ 0 φ φ 0 Tab. A.5 Osserviamo come é scritta la tabella. Nelle prime tre colonne (A B C) é riportato lo stato delle variabili A,B,C al tempo t n. Nella quarta colonna é riportato lo stato dell ingresso I al tempo t n. Sono quindi 4 le variabili che entrano nella logica combinatoria della rete sequenziale da realizzare. Nelle tre colonne successive (A B C ) é riportato lo stato delle variabili A,B,C al tempo t n+ dopo la transizione. Nelle sei colonne successive (J A K A, J B K B, J C K C ) sono riportati gli stati (al tempo t n ) degli ingressi di comando dei flipflop JK del registro di memoria, che memorizzano le tre variabili A,B,C rispettivamente, ricavati applicando la tabella di comando dei flipflop JK (Tab. 6. del capitolo 6). Nell ultima colonna é riportato lo stato dell uscita Z al tempo t n. Se non consideriamo le tre colonne A,B,C della tabella delle transizioni, la tabella restante é la tabella della veritá della logica combinatoria della rete sequenziale che stiamo progettando. Le sette colonne J A, K A, J B, K B, J C, K C, Z rappresentano le funzioni di cui dobbiamo ricavare le espressioni booleane in funzione delle variabili A,B,C,I, elencate nelle prime quattro colonne, applicando le tecniche giá viste. Notiamo che la tabella ha 0 righe. Ricordiamo che 4 variabili danno luogo a 6 combinazioni. Quindi nella tabella non compaiono 6 righe, corrispondenti alle combinazioni mancanti che non si verificano mai. Esse sono dovute ai tre stati che non sono stati scelti fra gli otto disponibili, per ciascuno dei quali sono possibili due valori della variabile d ingresso I. Di qui il numero di sei. Queste sei combinazioni sono utilizzabili come ridondanze per semplificare le funzioni. Listiamo qui di seguito le sei ridondanze: A B C I Possiamo ricavare le funzioni utilizzando le mappe di Karnaugh per 4 variabili. Osservando la tabella, notiamo che la colonna K B non contiene 0. Scegliendo tutti i φ =, allora risulta K B =, che é l espressione piú semplice in assoluto. Procediamo a ricavare le altre funzioni, per ognuna tracciando prima il diagramma della mappa e impostando le sei ridondanze, poi scrivendo gli, i φ, gli 0 ; indi estraiamo le configurazioni che esauriscono tutti gli nel modo piú semplice.

120 2 APPENDICE A. ESEMPIO DI PROGETTAZIONE DI UNA RETE SEQUENZIALE SINCRONA AB AB φ φ 00 φ CI 0 φ φ φ CI 0 φ φ 0 φ 0 φ J A = I + C K A = C + B AB AB φ 00 CI 0 φ CI J B = ACI + ACI Z = BI + ACI AB AB φ φ φ CI 0 φ φ CI 0 φ φ φ 0 φ φ 0 J C = B I K C = I + A Raccogliamo le espressioni delle funzioni booleane della logica combinatoria: J A = I + C K A = C + B J B = A C I + A C I K B = J C = B I K C = I + A Z = A C I + B I

121 3 Possiamo disegnare le schema logico della rete sequenziale progettata (Fig. A.5). A B C CP A A B B C C Q Q Q Q Q Q J K J K J K I C B + A C I A C I B I A I I I IN Z I B I A C Fig. A.5 Col disegno dello schema logico della rete é finita la fase di progettazione.

122 4 APPENDICE A. ESEMPIO DI PROGETTAZIONE DI UNA RETE SEQUENZIALE SINCRONA

123 Appendice B Elaborazione alternativa seriale-parallela I registri a scorrimento del tipo SIPO effettuano la conversione di un dato disponibile in forma seriale in un dato disponibile in forma parallela. Conseguentemente, in certi casi é possibile effettuare un elaborazione parallela del dato, in alternativa ad un elaborazione seriale. L elaborazione parallela puó risultare piú semplice o piú veloce di quella seriale. Riprendiamo l esempio dell Appendice A. In esso il dato in ingresso é di tipo seriale e puó essere raccolto in un registro a scorrimento a tre stadi, mantenendo la caratteristica seriale del problema. Dopo di che, essendo i tre bit disponibili in parallelo, é possibile applicare una elaborazione parallela, usando una logica combinatoria definita da una tabella della veritá con tre variabili in ingresso e una funzione in uscita. La sintesi della rete diviene molto semplice. In Fig. B. é disegnato uno schema a blocchi, in cui compare il registro a scorrimento RAS con le tre variabili di uscita Q 0, Q, Q 2 e la rete logica combinatoria LC con l uscita Z richiesta. LC Z I CP Q 0 Q Q 2 RAS Fig. B. La tabella della veritá che definisce la logica combinatoria LC é: 5

124 6 APPENDICE B. ELABORAZIONE ALTERNATIVA SERIALE-PARALLELA Q 2 Q Q 0 Z La funzione Z risulta essere: Z = Q 2 Q Q 0 + Q 2 Q Q 0 + Q 2 Q Q 0 + Q 2 Q Q 0 e applicando i teoremi dell algebra booleana si ottiene: Z = Q 2 (Q Q 0 ) + Q 2 (Q Q 0 ) = Q 2 Q Q 0. Per il registro a scorrimento valgono le seguenti impostazioni: SR = 0; P L = 0; SH =. La funzione di comando dell i-esimo FF diviene: D i = Q i. E ora possibile disegnare lo schema logico della rete complessiva: Z I CP D Q D Q D Q Q 0 Q Q 2 Fig. B.2 Si puó notare la maggior semplicitá di questo schema logico rispetto a quello ottenuto come risultato dell Esempio dell Appendica A. Soprattutto il lavoro di sintesi é decisamente piú semplice in questo caso. Sorge ora la domanda: esiste un criterio per scegliere il tipo di elaborazione, se seriale o parallela, piú conveniente? Ebbene, un criterio generale non esiste. Un analisi approfondita del problema e l esperienza consentono sicuramente di scegliere la soluzione piú conveniente.

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Подробнее

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Подробнее

Codifica binaria e algebra di Boole

Codifica binaria e algebra di Boole Codifica binaria e algebra di Boole Corso di Programmazione A.A. 2008/09 G. Cibinetto Contenuti della lezione Codifica binaria dell informazione Numeri naturali, interi, frazionari, in virgola mobile Base

Подробнее

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Подробнее

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Подробнее

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Подробнее

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica. MAPPE DI KARNAUGH 1. Generalità Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica. E ovvio che più semplice è la funzione e più semplice

Подробнее

APPUNTI DI ELETTRONICA DIGITALE

APPUNTI DI ELETTRONICA DIGITALE APPUNTI DI ELETTRONICA DIGITALE ITIS MARCONI-GORGONZOLA docente :dott.ing. Paolo Beghelli pag.1/24 Indice 1.ELETTRONICA DIGITALE 4 1.1 Generalità 4 1.2 Sistema di numerazione binario 4 1.3 Operazioni con

Подробнее

Le Mappe di Karnaugh.

Le Mappe di Karnaugh. Le Mappe di Karnaugh. Introduzione Le mappe di Karnaugh rappresentano un metodo grafico-sistematico per la semplificazione di qualsiasi funzione booleana. Questo metodo si basa su poche regole e se applicate

Подробнее

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Подробнее

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Подробнее

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X. Algebra Di Boole L algebra di Boole è un ramo della matematica basato sul calcolo logico a due valori di verità (vero, falso). Con alcune leggi particolari consente di operare su proposizioni allo stesso

Подробнее

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica

Подробнее

Operatori logici e porte logiche

Operatori logici e porte logiche Operatori logici e porte logiche Operatori unari.......................................... 730 Connettivo AND........................................ 730 Connettivo OR..........................................

Подробнее

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Подробнее

Calcolatori: Algebra Booleana e Reti Logiche

Calcolatori: Algebra Booleana e Reti Logiche Calcolatori: Algebra Booleana e Reti Logiche 1 Algebra Booleana e Variabili Logiche I fondamenti dell Algebra Booleana (o Algebra di Boole) furono delineati dal matematico George Boole, in un lavoro pubblicato

Подробнее

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Подробнее

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi: Modulo 8 Elettronica Digitale Contenuti: Introduzione Sistemi di numerazione posizionali Sistema binario Porte logiche fondamentali Porte logiche universali Metodo della forma canonica della somma per

Подробнее

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Подробнее

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Подробнее

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Подробнее

Cap. 3 Reti combinatorie: analisi e sintesi operatori logici e porte logiche

Cap. 3 Reti combinatorie: analisi e sintesi operatori logici e porte logiche Cap. 3 Reti combinatorie: analisi e sintesi operatori logici e porte logiche 3.1 LE PORTE LOGICHE E GLI OPERATORI ELEMENTARI 3.2 COMPORTAMENTO A REGIME E IN TRANSITORIO DEI CIRCUITI COMBINATORI I nuovi

Подробнее

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Fondamenti di Informatica Michele Ceccarelli Università del Sannio [email protected] Angelo Ciaramella DMI-Università degli

Подробнее

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Подробнее

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Подробнее

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Подробнее

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch. Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE Comunicazione importante dalla prossima settimana, la lezione del venerdì si terrà: dalle 15:00 alle 17.15 in aula 311 l orario

Подробнее

Algebra di Boole. Le operazioni base sono AND ( ), OR ( + ), NOT ( )

Algebra di Boole. Le operazioni base sono AND ( ), OR ( + ), NOT ( ) Algebra di Boole Circuiti logici: componenti hardware preposti all'elaborazione delle informazioni binarie. PORTE LOGICHE (logical gate): circuiti di base. Allo scopo di descrivere i comportamenti dei

Подробнее

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Подробнее

I.I.S. Primo Levi Badia Polesine A.S. 2012-2013

I.I.S. Primo Levi Badia Polesine A.S. 2012-2013 LGEBR DI BOOLE I.I.S. Primo Levi Badia Polesine.S. 2012-2013 Nel secolo scorso il matematico e filosofo irlandese Gorge Boole (1815-1864), allo scopo di procurarsi un simbolismo che gli consentisse di

Подробнее

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Подробнее

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Подробнее

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Подробнее

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Подробнее

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Подробнее

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Подробнее

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE La base del sistema decimale è 10 I simboli del sistema decimale sono: 0 1 2 3 4 5 6 7 8 9 Il sistema di numerazione decimale è un sistema posizionale. L aggettivo

Подробнее

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Подробнее

I SISTEMI DI NUMERAZIONE

I SISTEMI DI NUMERAZIONE ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA I SISTEMI DI NUMERAZIONE Prof. G. Ciaschetti Fin dall antichità, l uomo ha avuto il bisogno di rappresentare le quantità in modo simbolico. Sono nati

Подробнее

Alcune nozioni di base di Logica Matematica

Alcune nozioni di base di Logica Matematica Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di

Подробнее

USO DI EXCEL CLASSE PRIMAI

USO DI EXCEL CLASSE PRIMAI USO DI EXCEL CLASSE PRIMAI In queste lezioni impareremo ad usare i fogli di calcolo EXCEL per l elaborazione statistica dei dati, per esempio, di un esperienza di laboratorio. Verrà nel seguito spiegato:

Подробнее

CODIFICA BINARIA. ... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità.

CODIFICA BINARIA. ... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità. I METODI DI NUMERAZIONE I numeri naturali... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità. Il numero dei simboli usati per valutare la numerosità costituisce la base

Подробнее

Utilizzo I mintermini si usano quando si considererà la funzione di uscita Q come Somma di Prodotti (S. P.) ossia OR di AND.

Utilizzo I mintermini si usano quando si considererà la funzione di uscita Q come Somma di Prodotti (S. P.) ossia OR di AND. IPSI G. Plana Via Parenzo 46, Torino efinizione di Mintermine onsiderata una qualunque riga della tabella di verità in cui la funzione booleana di uscita Q vale, si definisce mintermine il prodotto logico

Подробнее

Reti sequenziali sincrone

Reti sequenziali sincrone Reti sequenziali sincrone Un approccio strutturato (7.1-7.3, 7.5-7.6) Modelli di reti sincrone Analisi di reti sincrone Descrizioni e sintesi di reti sequenziali sincrone Sintesi con flip-flop D, DE, T

Подробнее

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Подробнее

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente

Подробнее

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210 Il sistema BINARIO e quello ESADECIMALE. Il sistema di numerazione binario è particolarmente legato ai calcolatori in quanto essi possono riconoscere solo segnali aventi due valori: uno alto e uno basso;

Подробнее

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa. Algebra booleana Nel lavoro di programmazione capita spesso di dover ricorrere ai principi della logica degli enunciati e occorre conoscere i concetti di base dell algebra delle proposizioni. L algebra

Подробнее

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Подробнее

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Подробнее

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Подробнее

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione La Codifica dell informazione (parte 1) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente:

Подробнее

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Подробнее

Percorsi di matematica per il ripasso e il recupero

Percorsi di matematica per il ripasso e il recupero Giacomo Pagina Giovanna Patri Percorsi di matematica per il ripasso e il recupero 2 per la Scuola secondaria di secondo grado UNITÀ CAMPIONE Edizioni del Quadrifoglio à t i n U 1 Sistemi di primo grado

Подробнее

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra

Подробнее

Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari. Mariagiovanna Sami Corso di reti Logiche 8 Anno 2007-08

Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari. Mariagiovanna Sami Corso di reti Logiche 8 Anno 2007-08 Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari Mariagiovanna Sami Corso di reti Logiche 8 Anno 27-8 8 Quali componenti, se non AND e OR (e NOT )? Si è detto inizialmente che

Подробнее

Rappresentazione di informazioni con un alfabeto finito

Rappresentazione di informazioni con un alfabeto finito Rappresentazione di informazioni con un alfabeto finito Sia A = { a 1,, a k } un insieme (alfabeto) di k simboli, detti anche lettere. Quante sono le sequenze composte da n simboli (anche ripetuti) di

Подробнее

2. Codifica dell informazione

2. Codifica dell informazione 2. Codifica dell informazione Codifica Una codifica è una regola per associare in modo univoco i valori di un dato da codificare con sequenze di simboli. La corrispondenza definita dalla codifica è arbitraria,

Подробнее

RETI E SOTTORETI. Copyright 2010 Marco Salatin Pagina 1

RETI E SOTTORETI. Copyright 2010 Marco Salatin Pagina 1 RETI E SOTTORETI Copyright 2010 Marco Salatin Pagina 1 COME CREARE UNA RETE DI COMPUTER Le maschere di rete Una maschera è uno schema usato per filtrare precisi caratteri o numeri da stringhe di caratteri

Подробнее

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Подробнее

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: G.C.D.( a d, b d ) = 1 Sono state introdotte a lezione due definizioni importanti che ricordiamo: Definizione

Подробнее

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Подробнее

Laurea Specialistica in Informatica

Laurea Specialistica in Informatica Corso di Laurea in FISICA Laurea Specialistica in Informatica Fisica dell informazione 1 Elementi di Architettura degli elaboratori Prof. Luca Gammaitoni Informazioni sul corso: www.fisica.unipg unipg.it/gammaitoni/fisinfoit/gammaitoni/fisinfo

Подробнее

Conversione tra le basi binarie

Conversione tra le basi binarie Conversione tra le basi binarie In questa lezione impareremo la conversione tra binario e ottale la conversione tra binario ed esadecimale la conversione tra ottale ed esadecimale LEZIONE 10 Introduzione

Подробнее

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Подробнее

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata Lezione n.6 Unità di controllo microprogrammata 1 Sommario Unità di controllo microprogrammata Ottimizzazione, per ottimizzare lo spazio di memoria occupato Il moltiplicatore binario Esempio di architettura

Подробнее

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario? BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario? Cosa c è dietro a questo nome? BIT è un acronimo e deriva da BInary digit, cioè cifra binaria Che

Подробнее

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Подробнее

Variabili logiche e circuiti combinatori

Variabili logiche e circuiti combinatori Variabili logiche e circuiti combinatori Si definisce variabile logica binaria una variabile che può assumere solo due valori a cui si fa corrispondere, convenzionalmente, lo stato logico 0 e lo stato

Подробнее

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione Lezione 3 Le operazioni aritmetiche binarie Sommario L aritmetica binaria La somma La sottrazione La moltiplicazione 1 Definizione Si indica con il termine bit più significativo il bit più a sinistra,

Подробнее

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti Un ripasso di aritmetica: Rappresentazione binaria - operazioni A queste rappresentazioni si possono applicare le operazioni aritmetiche: riporti 1 1 0 + 1 0 = 1 0 0 24 Un ripasso di aritmetica: Rappresentazione

Подробнее

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,

Подробнее

Codifica binaria dei numeri relativi

Codifica binaria dei numeri relativi Codifica binaria dei numeri relativi Introduzione All interno di un calcolatore, è possibile utilizzare solo 0 e 1 per codificare qualsiasi informazione. Nel caso dei numeri, non solo il modulo ma anche

Подробнее

Memorie ROM (Read Only Memory)

Memorie ROM (Read Only Memory) Memorie ROM (Read Only Memory) Considerando la prima forma canonica, la realizzazione di qualsiasi funzione di m variabili richiede un numero di porte AND pari al numero dei suoi mintermini e di prolungare

Подробнее

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Подробнее

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI 119 4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI Indice degli Argomenti: TEMA N. 1 : INSIEMI NUMERICI E CALCOLO

Подробнее

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Подробнее

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento

Подробнее

Aritmetica dei Calcolatori 1

Aritmetica dei Calcolatori 1 Architettura degli Elaboratori e Laboratorio 1 Marzo 2013 1 Sistema di numerazione sistema posizionale 2 rappresentazione binaria cambio di base basi potenze di 2 3 Rappresentazione binaria con segno Sistema

Подробнее

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Подробнее

Comparatori. Comparatori di uguaglianza

Comparatori. Comparatori di uguaglianza Comparatori Scopo di un circuito comparatore é il confronto tra due codifiche binarie. Il confronto può essere effettuato per verificare l'uguaglianza oppure una relazione d'ordine del tipo "maggiore",

Подробнее

Excel. A cura di Luigi Labonia. e-mail: [email protected]

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Подробнее

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori Informazione e computer Si può rappresentare l informazione attraverso varie forme: Numeri Testi Suoni Immagini 0001010010100101010 Computer Cerchiamo di capire come tutte queste informazioni possano essere

Подробнее

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense Linguaggio del calcolatore Circuiti e reti combinatorie ppendice + dispense Solo assenza o presenza di tensione: o Tante componenti interconnesse che si basano su e nche per esprimere concetti complessi

Подробнее

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Подробнее

Codifica binaria dei numeri

Codifica binaria dei numeri Codifica binaria dei numeri Caso più semplice: in modo posizionale (spesso detto codifica binaria tout court) Esempio con numero naturale: con 8 bit 39 = Codifica in virgola fissa dei numeri float: si

Подробнее

UNIVERSITÀ DEGLI STUDI DI TERAMO

UNIVERSITÀ DEGLI STUDI DI TERAMO UNIVERSITÀ DEGLI STUDI DI TERAMO CORSO DI LAUREA IN ECONOMIA BANCARIA FINANZIARIA ED ASSICURATIVA (Classe 7) Corso di Matematica per l Economia (Prof. F. Eugeni) TEST DI INGRESSO Teramo, ottobre 00 SEZIONE

Подробнее

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Подробнее

2.12 Esercizi risolti

2.12 Esercizi risolti Codifica dell'informazione 55 Lo standard IEEE prevede cinque cause di eccezione aritmetica: underflow, overflow, divisione per zero, eccezione per inesattezza, e eccezione di invalidità. Le eccezioni

Подробнее

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag.

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag. SOMMARIO CAPITOLO : I RADICALI. I radicali pag.. I radicali aritmetici pag.. Moltiplicazione e divisione fra radicali aritmetici pag.. Potenza di un radicale aritmetico pag.. Trasporto di un fattore esterno

Подробнее

Elementi di Informatica. ( Lezione II, parte I ) Sistemi di numerazione: binario, ottale ed esadecimale

Elementi di Informatica. ( Lezione II, parte I ) Sistemi di numerazione: binario, ottale ed esadecimale Elementi di Informatica ( Lezione II, parte I ) Sistemi di numerazione: binario, ottale ed esadecimale Il sistema di numerazione posizionale decimale Nella numerazione posizionale ogni cifra del numero

Подробнее

Lezione 1. Gli Insiemi. La nozione di insieme viene spesso utilizzata nella vita di tutti i giorni; si parla dell insieme:

Lezione 1. Gli Insiemi. La nozione di insieme viene spesso utilizzata nella vita di tutti i giorni; si parla dell insieme: Lezione 1 Gli Insiemi La nozione di insieme viene spesso utilizzata nella vita di tutti i giorni; si parla dell insieme: degli iscritti ad un corso di laurea delle stelle in cielo dei punti di un piano

Подробнее

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La

Подробнее

MAPPE DI KARNAUGH e sintesi ottima

MAPPE DI KARNAUGH e sintesi ottima MAPPE DI KARNAUGH e sintesi ottima (prima stesura da rivedere) Sappiamo che una funzione logica può essere espressa in diverse forme, tra loro equivalenti e noi siamo già in grado di passare da una all

Подробнее

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Подробнее

Teoria degli insiemi

Teoria degli insiemi Teoria degli insiemi pag 1 Easy Matematica di dolfo Scimone Teoria degli insiemi Il concetto di insieme si assume come primitivo, cioè non riconducibile a concetti precedentemente definiti. Sinonimi di

Подробнее

Definizioni iniziali

Definizioni iniziali Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Definizioni iniziali BIT: unita elementare di informazione Due soli valori: 0 e 1 Byte: sequenza di 8 bit Fondamenti di Informatica: Codifica

Подробнее

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Подробнее

Matematica Computazionale Lezione 4: Algebra di Commutazione e Reti Logiche

Matematica Computazionale Lezione 4: Algebra di Commutazione e Reti Logiche Matematica Computazionale Lezione 4: Algebra di Commutazione e Reti Logiche Docente: Michele Nappi [email protected] www.dmi.unisa.it/people/nappi 089-963334 ALGEBRA DI COMMUTAZIONE Lo scopo di questa algebra

Подробнее

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013 Complementi di Analisi per nformatica *** Capitolo 2 Numeri Complessi e Circuiti Elettrici a Corrente Alternata Sergio Benenti 7 settembre 2013? ndice 2 Circuiti elettrici a corrente alternata 1 21 Circuito

Подробнее