Università di Udine - Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Laboratorio di Architettura degli Elaboratori - A.A. 2012/13 Circuiti logici, lezione 1 Sintetizzare circuiti combinatori che soddisfino le seguenti specifiche, poi implementarli1 e simularne il comportamento2 mediante lo strumento TKGate3 . Esercizio 1 Il circuito fornisce in uscita il valore prevalente di tre segnali d’ingresso binari (cioè 1 se ci sono almeno due “1”, 0 altrimenti). Esercizio 2 Dati quattro ingressi binari, il circuito fornisce due valori di uscita: il primo assume il valore 1 se l’OR logico (disgiunzione) dei primi due ingressi è uguale all’AND logico (congiunzione) dei rimanenti ingressi; la seconda uscita vale 1 se il NOT logico (negazione) della congiunzione dei primi due ingressi coincide con il quarto ingresso. Esercizio 3 Dato l’insieme A={a, b}, si possono codificare due suoi sottoinsiemi X, Y ⊆A mediante le funzioni caratteristiche Xa , Xb , Ya , Yb , ove: 1 se c∈Z Zc , 0 se c∈Z / Ad esempio, hXa , Xb , Ya , Yb i=h1, 0, 1, 1i rappresenta X={a}, Y ={a, b}. Assumendo che le funzioni caratteristiche siano codificate mediante segnali d’ingresso binari, il circuito implementi la seguente funzione: 1 se X∩Y ( Y (ove ( significa ⊆ ma 6=) F , 0 altrimenti 1 Per progettare un circuito procedere come segue: aggiungere le componenti (menù Make: Gate: ... ; I/O: Switch, LED) e collegarle tra loro con il mouse; infine salvare il progetto. 2 Procedere come segue: intraprendere la simulazione (menù Simulate: Begin Simulation); avviare la simulazione nella nuova finestra che viene aperta dal sistema (menù Simulate: Run) ed intervenire con il mouse sugli switch per testare le configurazioni di input. 3 Per lavorare in laboratorio didattico autenticarsi su un server Linux, che mette a disposizione la versione 1.8.7 del software TKGate. Per installare il software su un calcolatore personale consultare la pagina web del corso (vedi pagina web del docente); i problemi relativi alla versione 1.8.7 di TKGate in ambiente Linux possono essere risolti come segue: • acquisire i diritti di amministratore (root) • eseguire il comando mkdir /usr/share/tkgate-1.8.7/libexec • eseguire il comando ln -s /usr/bin/gsim /usr/share/tkgate-1.8.7/libexec/gsim Circuiti logici, lezione 2 Sintetizzare circuiti combinatori che soddisfino le seguenti specifiche, poi implementarli e simularne il comportamento mediante lo strumento TKGate. Esercizio 1 • Progettare un circuito che, ricevuti 3 bit in ingresso, stabilisca se questi rappresentano nella notazione binaria un numero divisibile per 4. • Progettare un circuito che, ricevuti 4 bit in ingresso, stabilisca se questi rappresentano nella notazione binaria un numero divisibile per 2 o per 5. • Progettare un circuito che stabilisca se la rappresentazione binaria di una cifra decimale {0, 1, . . . , 9} divisibile per 3. (Suggerimento: decidere il numero di segnali d’ingresso necessari alla rappresentazione; configurazioni di ingresso che non corrispondono a cifre decimali sono gestite come condizioni di indifferenza.) Esercizio 2 a) Progettare un half-adder 4 e realizzarlo come modulo5 TKGate. b) Utilizzando 4 moduli half-adder, costruire un circuito che ricevuto in ingresso un numero binario di 4 cifre, restituisca in uscita il numero binario successivo. Infine trasformare il circuito in un modulo. 4 L’half-adder è un circuito combinatorio che somma due bits e genera il bit risultato ed un riporto. 5 Per creare ed utilizzare un modulo nel file corrente procedere in tre passi: definire il modulo (menù Module: New, Edit Interfaces, Close); selezionare il modulo (doppio click con il mouse) e progettarne il contenuto (menù Make: ... , Module: Module Input/Output) scegliendo i nomi degli input e degli output uguali a quelli dell’interfaccia definita al primo passo; creare istanze del modulo selezionando il modulo principale main+ e trascinando nella finestra di progettazione il modulo definito nei due precedenti passi. Circuiti logici, lezione 3 Esercizio 1 a) Utilizzanod due moduli half-adder, progettare un full-adder 6 come modulo TKGate. b) Dati due numeri naturali m ed n, rappresentati posizionalmente dalle cifre binarie hm1 , m0 i e hn1 , n0 i, sommare m ed n utilizzando il modulo full-adder progettato al punto a). Esercizio 2 Come in lezione 1 - esercizio 3, codificare insiemi X, Y ⊆A={a, b} mediante funzioni caratteristiche. Implementare l’operazione di differenza simmetrica di insiemi: X∆Y , (X∪Y )−(X∩Y ) ove le operazioni di unione, intersezione e differenza di insiemi sono progettate mediante moduli TKGate. 6 Il full-adder è un circuito combinatorio che somma due bits ed un riporto e genera il bit risultato ed un nuovo riporto. Circuiti logici, lezione 4 Esercizio 1 Utilinzando il modulo dell’esercizio 2 b), lezione 2, costruire un contatore sequenziale a 4 cifre, ossia un circuito sequenziale, senza ingressi e con 4 uscite che ad ogni ciclo di clock aggiorna il valore in uscita trasformandolo nel numero binario successivo7 . Esercizio 2 a) Progettare un decoder 8 a 2 ingressi. b) Progettare un decoder a 2 ingressi dotato di un segnale aggiuntivo di Enable, se il segnale Enable a 0 tutte le uscite valgono 0, se Enable vale 1 si comporta come un circuito decoder. Realizzae il circuito come modulo TKGate. c) Utilizzare il modulo dell’esercizio precedente per realizzare un decoder a 3 ingressi ed uno a 4 ingressi. 7 Per utilizzarre i flip-flop di tipo D in TKGate operare come segue: introdurre il flip-flop (menù Make: Memory: Flip-Flop) ed il suo orologio (menù Make: I/O: Clock); collegare l’ingresso D e le uscite Q, Q alla componente combinatoria del circuito; introdurre due switch che contrallono rispettivamente gli ingressi C ed E di tutti i flip-flop. Il segnale C (Clear) se posto a 0, azzera il contento dei flip-flop. Il segnale E (Enable) se posto a 1 blocca il combiamento di stato nei flip-flop. In modalità simulazione selezionare con il mouse il bottone con l’orologio (il quarto da sinistra) affinchè il flip-flop assuma uno stato iniziale non indeterminato; settare gli ingressi C ed E rispettivamente a 1 e 0 (lasciandoli in seguito inalterati) e modificare poi liberamente gli input a livelli del circuito, alternandoli agli impulsi di orologio. 8 Il decoder è un circuito combinatorio con n input e 2n output, che attiva uno solo dei segnali di uscita in dipendenza dalla configurazione d’ingresso. Circuiti logici, lezione 5 Esercizio 1 Modificare il circuito contattore sequenziale dell’esercizio 1, scorsa lezione, nel seguente modo. • Aggiungere un segnale di abilitazione al conteggio, se il segnale zero il contatore non cambia stato. • Aggiungere un segnale di azzeramento, se il segnale assume il valore 1, lo stato (e valore di uscita del contatore diventato 0. • Trasfomare il contatore in modo che conti modulo 10, assio dopo aver generato 9 in uscita, nel ciclo sucessivo genera 0. Esercizio 2 Costuire un circuito che simuli il funzionamento di un ascensore a due piani. Il circuito ha due segnali di ingressi che fungono da segnali di chiamata al piano, ha due segnali di uscita che segnalano la presenza al piano Si supponga inoltre che ascensore impiegati tre cicli di clock per passare da un piano all’altro. Esercizio 3 Costruire un multiplexer, con 2 ingressi di controllo e 4 di segnale, a partire da un decoder a 2 ingressi.