ESERCIZI DEL CORSO DI INFORMTIC Questa breve raccolta di esercizi vuole mettere in luce alcuni aspetti della prima parte del corso e fornire qualche spunto di riflessione. Il contenuto del materiale seguente non può sostituire in nessun modo le informazioni acquisite durante le lezioni teoriche, ma anzi vuole evidenziare che negli esercizi vi è concentrata la teoria. ESERCIZIO 1 Titolo: DEFINIZIONE DI BLOCCO FUNZIONLE SOMMTORE Per capire: Come definire in modo completo un blocco funzionale Come passare da una tabella della verità ad un circuito TESTO: Si disegni un blocco funzionale sommatore a 1 bit (con riporto sinistro e destro), se ne rappresenti in modo univoco il funzionamento e si disegni il circuito logico. EX 1.1 DISEGNO E DEFINIZIONE DI BLOCCO FUNZIONLE Rappresentazione: O B Lo schema funzionale del blocco definisce gli ingressi e le uscite, per cui nel nostro caso devono essere : : primo bit B: secondo bit : Il riporto da destra (ad es. potrebbe venire da un altro sommatore ) : O: il bit del risultato : il bit del riporto della notra addizione 1
Per descrivere univocamente il comportamento del blocco funzionale è sufficiente scrivere la tabella della verità (non deve sorprendere che una tabella in cui si possono esprimere tutte le possibili combinazioni degli ingressi e le loro corrispondenti uscite rappresenti in modo completo ed univoco il blocco). La tabella è composta indicando in modo chiaro quali sono gli ingressi e le uscite e completando in modo ordinato (numeri crescenti in binario) la parte riguardante gli ingressi B O 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 questo punto, ragionando su quale funzionalità il blocco funzionale deve implementare, si considera UN RIG LL VOLT quale deve essere l'uscita del blocco per QUELL particolare configurazione degli ingressi e si scrive il suo valore nella casella della uscita considerata. d esempio nella sesta riga: B O 1 0 1 ingressi=(1+0 con 1 in riporto) vogliamo che quindi il blocco produca: uscite=(o=zero,=1 ovvero che riusulti zero e che venga generato un riporto in uscita), quindi B O 1 0 1 0 1 Ripetendo per tutte le righe si ottiene la tabella della verità completa 2
B O 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Domanda: Possono essere state trascurate delle configurazioni degli ingressi? Risposta: NO! Le righe degli ingressi sono state compilate seguendo la numerazione binaria crescente e la tabella è composta da 2 N righe (N = numero ingressi - nell'esercizio sono 3- ), per cui non possono esistere altre configurazioni degli ingressi - Fine 1.1 - EX 1.2 DLL TBELL DELL VERIT' LL EQUZIONE LOGIC La scrittura dell'equazione logica che rappresenta il funzionamento del blocco che stiamo progettando può essere derivata DIRETTMENTE dalla tabella della verità. Si trova la rappresentazione di una variabile in uscita LL VOLT. Iniziamo con "O". Si evidenziano SOLO le righe della tabella nelle quali la variabile è a "1". B O 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Nel nostro caso sono 4. La funzione sarà quindi composta da 4 termini, tutti "messi in OR" (ricordiamo che " messo in OR con B" si scrive +B, mentre " messo in ND con B" si scrive *B, o anche semplicemente B ). 3
Primo termine: Per scrivere il primo termine dei quattro che comporranno l'espressione logica della variabile di uscita "O" è sufficiente guardare la prima riga. Nel termine compaiono TUTTE LE VRIBILI di ingresso, senza il segno di complementazione ( complementata di scrive Ā) se nella riga compaiono con "1", oppure con il segno di complementazione se nella riga compaiono con "0". Piu' semplicemente con un esempio, prendendo la terza riga: B O 0 1 0 1 Primo termine= Ā * B * _IN; in parole= ( complementata) ND (B complementata) ND ( complementata). Ripetendo ciò per tutte le righe e mettendo in OR i termini trovati si ricava l'espressione booleana di "O": O = Ā * * + Ā* B * _IN + * * _IN + * B * = = Ā + Ā B _IN + _IN + B Ripetendo quanto visto sopra per la variabile di uscita si evidenziano le seguenti linee: B O 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 e si ottiene l'espressione: = Ā * B * + * * + * B * _IN + * B * = = Ā B + + B _IN + B - fine 1.2 4
Domanda: L'espressione booleana così trovata rappresenta COMPLETMENTE il comportamento desiderato della variabile d'uscita, ovvero si può dire che possieda TUTTE le informazioni della tabella della verità? Risposta: SI! Per chi vuole rendersene conto basta guardare la composizione dell'espressione logica. Vogliamo, ad esempio per "", che sia a "1" solo per le righe della tabella della verità a "1", e per nessun altra riga; ma i 4 termini che compongono l'espressione (ad esempio il primo Ā * B *, "nato" dalla quarta riga) NON PUO' CHE ESSERE =1 SOLO IN QUELL RIG DELL TBELL (provare tutte le altre configurazioni degli ingressi ed il termine Ā*B* varrà sempre 0!). Poichè vale lo stesso per gli altri 3 termini e tutti i termini sono in OR, il risultato finale è che l'or varrà "1" solo per nelle righe corrette della tabella della verità L'espressione = Ā B + + B _IN + B esprime completamente la funzione descritta in tabella. OSS: le espressioni logiche trovate NON sono le uniche espressioni logiche che rappresentano correttamente la tabella della verità. Spesso infatti è possibile semplificare l espressione ottenuta sfruttando le proprietà dell algebra di Bool (associativa, commutativa,...) ottenendo altre espressioni che implementano altrettanto esattamente la corrispondenza Ingressi-Uscite COMPLETMENTE descritta dalla tabella della verità: EX 1.3 DLL EQUZIONE LOGIC L CIRCUITO CON PORTE LOGICHE E possibile sia passare dalla tabella della verità direttamente al circuito, sia passare dall equazione logica direttamente al circuito. La forma dell espressione logica ottenuta è chiamata somma di prodotti in quanto i termini sono composti da prodotti (es: Ā*B* ) e sono tra di loro sommati (PrimoTermine + SecondoTermine + TerzoTermine +... ). Questa particolarità si riflette nella topologia del circuito. Il ciruito si compone nel seguente modo: 1. Si implementa una variabile di uscita alla volta. Per ogni variabile si ripetono i punti seguenti 2. Si predispone una porta logica OR con un numero di ingressi pari al numero di termini della espressione (che sappiamo essere pari al numero 5
delle righe della tabella della verità con la corrisponente variabile di uscita a 1 ; numero di righe evidenziate nelle tabelle precedenti). OR 3. Si aggiunge un termine alla volta. Ogni termine viene rappresentato da una porta ND con in ingresso TUTTE LE VRIBILI della sezione di ingresso della tabella della verità; Le variabili che nel termine non sono complementate (ad es. in Ā*B* B e ) entrano direttamente nella porta ND, le variabili che nel termine sono complementate (ad es. in Ā*B* ) entrano in una porta NEGTORE (NOT) e successivamente nella porta ND. ND Ā*B* NOT OR B 6
4. ggiungendo le porte corrispondenti ai termini rimanenti il circuito della variabile d uscita considerata viene completato nel modo seguente: ND Ā B NOT ND B OR ND B ND B B OSS: La tabella della verità, l espressione logica delle variabili di uscita ed il circuito descrivono TUTTI in modo COMPLETO le funzionalita del blocco funzionale ed possibile passare direttamente da uno all altro. TB. VERIT' ESPRESSIONI LOGICHE CIRCUITO 7
ESERCIZIO 2 Titolo: SOMMTORE 4 BIT MEDINTE COMPOSIZIONE DI BLOCCHI FUNZIONLI Per capire: Come funzionalità più complesse possono essere realizzate da composizioni di blocchi più semplici TESTO: vendo a dispozione un blocchi funzionali di sommatori ad un bit (con riporto sinistro e destro), si disegni un blocco funzionale sommatore a 4 bit e come sia possibile ottenerlo dalla composizione dei blocchi funzionali dati. EX 1.1 DISEGNO E DEFINIZIONE DI BLOCCO FUNZIONLE Il testo può essere riscritto in altro modo: Si vuole realizzare: vendo a disposizione il blocco: 4 bit B 4 bit B 4 bit O O OSS: la rappresentazione indica che siamo passati da un ingresso ad 1 bit (un filo) ad un ingresso a 4 bit (4 fili -BUS- ) Il nostro bus (composto da 4 fili) può accettare dati composti da 4 bit ( ='3 2 1 0' es. =0110 binario 3=0,2=1,1=1,0=0) Raffigurazione Realtà 4 bit 3 2 1 0 8
Nel dispositivo di fianco (una scheda denominata RISC Processor Based Module) è possibile notare gruppi di fili ordinati (bus bus) che escono ed entrano da rettangoli scuri (chip o circuiti integrati) Vi è un parallelismo fra lo schematismo dei blocchi funzionali che usiamo negli esercizi e i collegamenti che vi sarebbero se costruissimo la scheda che "risolve l'esercizio". Per comporre in modo corretto i blocchi è necessario osservare come avvenga una somma in binario, evidenziando il meccanismo del riporto. Esaminiamo quali operazioni effettuiamo nel sommare =0110 a B=0011: 0 1 1 0 0 0 1 1???? La somma viene effettuata bit a bit, scrivendo l'eventuale riporto (per la successiva addizione) in questo modo: 1 0 1 1 0 0 0 1 1?? 0 1 Completando l'addizione 1 1 0 1 1 0 0 0 1 1 1 0 0 1 (Suggerimento: l'addizione può essere facilmente controllata tenendo conto che =0110 binario = (4+2) decimale =6 decimale e B=0011 binario = (2+1) decimale = 3 decimale Per cui +B=9 decimale = 1001 binario) 9
La disposizione ed il collegamento dei blocchi funzionali ad un bit che implementa il sommatore a 4 bit con riporto è la seguente: B 3 B 3 2 B 2 1 B 1 0 B 0 O 3 O 2 O 1 O 0 O 10