Comments
Description
Transcript
Logica e circuiti logici
9 Capitolo 71 Logica e circuiti logici « 71.1 Operatori logici e circuiti elementari 71.2 Circuiti logici complessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 71.3 71.4 ...................................... 9 71.2.1 Scatole nere con un ingresso e una uscita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 71.2.2 Scatole nere con due ingressi e una uscita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Addizionatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 71.3.1 Circuito semiaddizionatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 71.3.2 Circuiti equivalenti del semiaddizionatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 71.3.3 Circuito addizionatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 71.3.4 Addizionatori in parallelo 71.3.5 Sottrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ad «a2» 2010.08 anteprima --- Copyright Daniele Giacomini -- happunti2 ( ) gmail·com i hhttp://informaticalibera.net i Edizione di prova. 71.1 Operatori logici e circuiti elementari La logica formale studia le proposizioni dichiarative, dove per proposizione si intende l’insieme di soggetto e verbo. È una proposizione dichiarativa quella proposizione nei confronti della quale è possibile stabilire se è vera o è falsa. Vero o Falso sono gli unici valori che può assumere una proposizione dichiarativa. La proposizione che non si può suddividere in altre proposizioni, si dice essere elementare. Il valore di una proposizione dichiarativa (Vero o Falso) può essere espresso in vari modi, a seconda del contesto. Generalmente, si attribuisce alla cifra numerica uno il significato di Vero, mentre a zero si attribuisce il valore Falso. La variabile che può assumere solo il valore risultante da una proposizione dichiarativa, è una variabile logica. Un’espressione logica è quella che produce un risultato Vero o Falso. L’espressione logica può essere costituita da proposizioni dichiarative, da valori costanti (espressi secondo la forma prevista per rappresentare Vero o Falso) e da variabili logiche. Per connettere o comunque per intervenire nei valori delle varie componenti dell’espressione, si utilizzano degli operatori. Si distinguono generalmente gli operatori logici in «unari» e in «connettivi logici», per distinguere se intervengono in un solo valore logico, oppure su due o più valori logici. Gli operatori logici si possono vedere come delle scatoline, aventi uno o più ingressi, ma con una sola uscita. Gli operatori logici unari ottengono in ingresso un solo valore logico; sono disponibili l’invertitore logico (NOT) e il non-invertitore logico. L’invertitore logico è l’operatore unario che inverte il valore logico ricevuto in ingresso: se in ingresso riceve il valore Vero (1), in uscita genera il valore Falso (0); se in ingresso riceve il valore Falso (0), in uscita genera il valore Vero (1). « 10 volume V Programmazione Logica e circuiti logici 11 A titolo di esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia», l’espressione logica «NOT A» è equivalente alla proposizione dichiarativa «Antonio non mangia». Il connettivo OR restituisce il valore Vero se almeno uno dei due ingressi dispone di un valore pari a Vero. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia» e la variabile «B» contiene il risultato di «Piero legge», l’espressione «A OR B» equivale alla proposizione «Antonio mangia e/o Piero legge». Il simbolo elettronico dell’invertitore logico è quello seguente: Il non-invertitore logico è l’operatore unario che presenta in uscita lo stesso valore ricevuto in ingresso. Il nome che viene dato al questo tipo di operatore indica la presenza di due negazioni consecutive che si eliminano a vicenda. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia», l’espressione logica «NOT A» è equivalente alla proposizione dichiarativa «Antonio non mangia», ma nello stesso modo, «NOT (NOT A)» è equivalente alla proposizione originale: «Antonio mangia». Il simbolo elettronico del circuito logico OR è quello seguente: Il connettivo XOR restituisce il valore Vero se solo uno dei due ingressi dispone di un valore pari a Vero. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia» e la variabile «B» contiene il risultato di «Piero legge», l’espressione «A XOR B» equivale alla proposizione «Antonio mangia oppure Piero legge». Il simbolo elettronico del non-invertitore logico è quello seguente: Il circuito del non-invertitore logico è equivalente a due invertitori posti in cascata: Il simbolo elettronico del circuito logico XOR è quello seguente: I connettivi logici sono gli operatori che utilizzano due ingressi. Il connettivo AND restituisce il valore Vero solo se entrambi i valori in ingresso sono pari a Vero. Per esempio, se la variabile logica «A» contiene il risultato della proposizione dichiarativa «Antonio mangia» e la variabile «B» contiene il risultato di «Piero legge», l’espressione «A AND B» equivale alla proposizione «Antonio mangia e Piero legge». Il circuito XOR si può anche sintetizzare utilizzando gli altri tipi di connettivi logici, per esempio come negli schemi successivi, dove la negazione logica viene rappresentata in forma sintetica attraverso l’uso di un pallino. Il simbolo elettronico del circuito logico AND è quello seguente: F | igura 71.12. Circuito XOR ottenuto dai connettivi logici fondamentali. volume V 12 Programmazione F | igura 71.13. Circuito XOR alternativo. Logica e circuiti logici 13 71.2.1 Scatole nere con un ingresso e una uscita « Una scatola nera con un ingresso e una sola uscita, può essere rappresentata come nello schema seguente: F | igura 71.14. Altro circuito XOR alternativo. Una scatola nera con queste caratteristiche, può essere al massimo di quattro tipi. Lo schema seguente sintetizza i quattro tipi possibili, distinguendo i valori che possono apparire in uscita; in basso, vengono annotati i nomi che si possono attribuire ai quattro tipi di scatola nera. 71.2 Circuiti logici complessi « Un circuito logico complesso può essere rappresentato da una «scatola nera», nella quale entrano degli ingressi e dalla quale escono delle uscite. La combinazione dei livelli logici in uscita è funzione della combinazione dei livelli logici in ingresso, del tempo e di un fattore casuale che si manifesta tipicamente all’atto dell’alimentazione iniziale del circuito. Come si vede dalle annotazioni contenute nello schema, la scatola nera di tipo due, coincide con il circuito invertente (ovvero NOT), mentre la scatola nera di tipo tre coincide con il circuito non-invertente. La scatola nera di tipo quattro può essere ottenuta con il circuito seguente: Quello raffigurato sopra è un esempio di scatola nera con cinque ingressi e tre uscite. Si osservi che, salvo indicazione diversa, l’influenza della variabile tempo e della variabile casuale dovuta all’accensione del circuito si considera ininfluente. Si consideri inoltre che, a meno di un’indicazione specifica al riguardo, il tempo di propagazione nei circuiti logici sia pari a zero. Lo schema può essere rappresentato in maniera semplificata nel modo seguente: La scatola nera di tipo uno, può essere sintetizzata usando la scatola nera di tipo quattro e invertendo il livello logico in uscita: volume V 14 Programmazione Logica e circuiti logici 15 F | igura 71.24. Scatola nera del semiaddizionatore. Pertanto, lo schema complessivo potrebbe essere il seguente: 71.2.2 Scatole nere con due ingressi e una uscita « Ci sono 16 tipi di scatole nere con due ingressi e una sola uscita. Lo schema seguente riepiloga i vari casi: T | abella 71.25. Somma senza riporto in ingresso. primo addendo (A) secondo addendo (B) risultato (sum) 02 02 12 12 02 12 02 12 02 12 12 02 riporto generato (carry out) 02 02 02 12 Il circuito del semiaddizionatore si sintetizza utilizzando un circuito XOR per la somma e un circuito AND per ottenere il riporto. F | igura 71.26. Circuito del semiaddizionatore. 71.3 Addizionatore « L’addizione in binario, eseguita con la stessa procedura consueta per il sistema di numerazione decimale, non genera mai un riporto superiore a uno. Lo si può verificare facilmente attraverso la tabella successiva. T | abella 71.23. Addizione binaria. primo addendo secondo addendo 02 02 02 02 12 12 12 12 02 02 12 12 02 02 12 12 riporto preesistente 02 12 02 12 02 12 02 12 risultato riporto generato 02 12 12 02 12 02 02 12 02 02 02 12 02 12 12 12 71.3.2 Circuiti equivalenti del semiaddizionatore « 71.3.1 Circuito semiaddizionatore « Il circuito semiaddizionatore (half adder) è una scatola nera con due ingressi costituiti dai valori da addizionare e due uscite: il risultato (sum) e il riporto dell’addizione (carry out). Il circuito del semiaddizionatore si sintetizza in modo molto semplice attraverso lo schema già presentato nella sezione precedente; se si sostituisce il circuito XOR con il suo equivalente si ottiene lo schema successivo, ma si possono anche tentare delle semplificazioni o degli adattamenti, come si vede in altre due figure. volume V 16 Programmazione F | igura 71.27. Circuito del semiaddizionatore, traducendo il circuito XOR nei termini dei connettivi logici fondamentali. F | igura 71.28. Circuito equivalente del semiaddizionatore. Logica e circuiti logici 17 T | abella 71.31. Somma con riporto in ingresso. riporto stente in) 02 12 02 12 02 12 02 12 preesi(carry primo (A) 02 02 02 02 12 12 12 12 addendo secondo addendo (B) risultato (sum) riporto generato (carry out) 02 02 12 12 02 02 12 12 02 12 12 02 12 02 02 12 02 02 02 12 02 12 12 12 Il circuito dell’addizionatore completo, si può ottenere a partire dal semiaddizionatore, come si vede nella figura successiva. F | igura 71.32. Addizionatore completo ottenuto con due semiaddizionatori. F | igura 71.29. Circuito equivalente del semiaddizionatore. F | igura 71.33. Schema dell’addizionatore completo. 71.3.3 Circuito addizionatore « Il circuito addizionatore completo è analogo a quello del semiaddizionatore, con l’aggiunta di un riporto in ingresso (carry in). F | igura 71.30. Scatola nera dell’addizionatore completo. Per addizionare dei numeri interi con più bit, occorre predisporre un addizionatore parallelo. L’esempio della figura successiva è realizzato per quattro cifre binarie e si può notare che la cifra meno significativa (A 1 e B 1) richiede solo un semiaddizionatore. 18 volume V Programmazione F | igura 71.34. Addizionatore a quattro cifre binarie. Le scatole nere sintetizzano un semiaddizionatore con due ingressi, un’uscita per il risultato e un’uscita per il riporto. Logica e circuiti logici 19 71.3.4 Addizionatori in parallelo « Un circuito addizionatore completo deve essere provvisto, sia di un riporto in ingresso (carry in), sia di un riporto in uscita (carry out), in modo da poter essere messo in parallelo, assieme ad altri circuiti del genere. F | igura 71.35. Addizionatore a quattro cifre binarie, con riporto, sia in ingresso, sia in uscita. Una volta messi assieme tutti gli addizionatori che si vogliono utilizzare, il riporto in uscita serve a determinare se la somma dei due valori interi genera un risultato valido oppure no. In pratica, un riporto in uscita con valore pari a uno (Vero) indica che la somma ha prodotto un errore. F | igura 71.36. Due addizionatori a 4 bit, messi in parallelo, per formare un addizionatore complessivo a 8 bit: se alla fine si genera un riporto, la somma ottenuta nei primi 8 bit non è valida. volume V 20 Programmazione 71.3.5 Sottrazione Logica e circuiti logici 21 F | igura 71.38. Somma e sottrazione, attraverso il controllo del riporto in ingresso. « Per eseguire la sottrazione, occorre che il sottraendo sia espresso secondo il complemento a due (complemento alla base). Per ottenere il complemento a due, si può partire dal complemento a uno, sommando poi una unità attraverso il riporto in ingresso. Il complemento a uno si ottiene semplicemente invertendo gli ingressi. F | igura 71.37. Per sottrarre un valore occorre invertire i valori del sottraendo, attivando il riporto in ingresso. Un risultato corretto della sottrazione deve dare un riporto finale; pertanto, se si inverte il riporto finale, se si ottiene un valore pari a uno (Vero), la sottrazione non è valida, in quanto si sottrae più del valore del minuendo. 71.4 Riferimenti « • Mario Italiani, Giuseppe Serazzi, Elementi di informatica, ETAS libri, 1973, ISBN 8845303632 • Tony R. Kuphaldt, Lessons In Electric Circuits hhttp://www.faqs.org/docs/electric/ i • Building a Digital Computer hhttp://artematrix.org/Projects/TTL.processor/processor.design.htm i Come si può vedere dalla figura, l’ultimo riporto viene invertito, perché una sottrazione corretta deve generare un riporto pari a uno, mentre un riporto pari a zero indica che la sottrazione non è valida. Pertanto, in questo caso, se il risultato del riporto invertito è pari a uno, si segnala la presenza di un errore nel calcolo. Per generalizzare il circuito, si possono sostituire le logiche invertenti con dei circuiti XOR, in modo da selezionare l’operazione, addizione o sottrazione, attraverso l’uso del riporto in ingresso. 22 volume V Programmazione