ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ, ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ Αναφορά 8 ης εργαστηριακής άσκησης: Αποκωδικοποιητής ΔΗΜΗΤΡΙΟΣ ΓΙΑΝΝΙΣΗΣ Α.Μ.: 2022201300028 Χειμερινό Εξάμηνο 2014-2015 1
ΠΕΡΙΕΧΟΜΕΝΑ Περιεχόμενα... Στόχος... Μεθοδολογία... Ανάλυση Μεθοδολογίας... 1. Κατασκευή Πίνακα Αλήθειας της συνάρτησης... 2. Κατασκευή Αποκωδικοποιητή 2 Εισόδων σε 4 Εξόδους... 3. Κατασκευή του κυκλώματος που υλοποιεί τη συνάρτηση f... 4. Δημιουργία κώδικα για την αποτύπωση του κυκλώματος του αποκωδικοποιητή 2x4... 5. Δημιουργία κώδικα για την αποτύπωση του κυκλώματος που υλοποιεί τη συνάρτηση f... 6. Δημιουργία κώδικα ως οδηγού προσομοίωσης... Αποτέλεσμα Προσομοίωσης... Συμπεράσματα... 2 3 4 5-10 5 6 7 8 9 10 11 12 2
ΣΤΟΧΟΣ Ο στόχος της εργασίας είναι η υλοποίηση της συνάρτησης f(a,b,c) = Σ(1,2,3,6,7) με χρήση αποκωδικοποιητών 2 εισόδων (DEC 2x4) και επίτρεψη (enable). 3
ΜΕΘΟΔΟΛΟΓΙΑ Χρησιμοποιήθηκε η μέθοδος της συνδυαστικής λογικής. Κατασκευάστικε ένας αποκωδικοποιητής 2 εισόδων σε 4 εξόδους. Στην συνέχεια κατασκευάστηκε το κύκλωμα που υλοποιεί τη συνάρτηση f με χρήση δυο αποκωδικοποιητών 2 εισόδων σε 4 εξόδους. 4
ΑΝΑΛΥΣΗ ΜΕΘΟΔΟΛΟΓΙΑΣ Προκειμένου να κατασκευαστεί το κύκλωμα που υλοποιεί την συνάρτηση f(a,b,c) = Σ(1,2,3,6,7) ακολουθήθηκαν τα βήματα που περιγράφονται στις παρακάτω υποενότητες: 1. ΚΑΤΑΣΚΕΥΗ ΠΙΝΑΚΑ ΑΛΗΘΕΙΑΣ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ Κατασκευαζεται ο πίνακας αλήθειας της συνάρτησης. a b c ΕΛΑΧΙΣΤΟΟΡΟΙ f 0 0 0 a'b'c' 0 0 0 1 a'b'c 1 0 1 0 a'bc' 1 0 1 1 a'bc 1 1 0 0 ab'c' 0 1 0 1 ab'c 0 1 1 0 abc' 1 1 1 1 abc 1 Η απλοποιημένη μορφή της συνάρτησης σε μορφή αθροίσματος γινομένων είναι: f(a,b,c) = a'b'c + a'bc' + a'bc + abc' + abc. 5
2. ΚΑΤΑΣΚΕΥΗ ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗ 2 ΕΙΣΟΔΩΝ ΣΕ 4 ΕΞΟΔΟΥΣ Ο αποκωδικοποιητής έχει το χαρακτηριστικό οτι δίνει σαν εξόδους όλους τους ελαχιστόρους μιας συνάρτησης. Για μια συνάρτηση που έχει 2 εισόδους ο αποκωδικοποιητής θα πρέπει να έχει 2 εισόδους και 2 2 εξόδους. Ονομάζουμε a, b, c, τις εισόδους του αποκωδικοποιητή και k0, k1, k2, k3 τις εξόδους του. Η είσοδος a χρησιμοποιείται ως είσοδος επίτρεψης (enable). Άρα το κύκλωμα ενός αποκωδικοποιητή 2x4 είναι το παρακάτω: k0 c b gate_not_1 gate_not_2 wire_not_b wire_not_c gate_and_1 gate_and_2 gate_and_3 k1 k2 k3 a gate_and_4 Το παραπάνω κύκλωμα του αποκωδικοποιητή μπορεί να αναπαρασταθεί και με τον παρακάτω τρόπο: k0 c DEC k1 b 2x4 k2 k3 a (enable) 6
3. ΚΑΤΑΣΚΕΥΗ ΤΟΥ ΚΥΚΛΩΜΑΤΟΣ ΠΟΥ ΥΛΟΠΟΙΕΙ ΤΗ ΣΥΝΑΡΤΗΣΗ f Για την κατασκευή του κυκλώματος που υλοποιεί την συνάρτηση f(a,b,c) = Σ(1,2,3,6,7) χρησιμοποιήθηκαν δύο αποκωδικοποιητές όπως αυτός που κατασκευάστηκε στην προηγούμενη υποενότητα. Ονομάστηκαν με a, b, c οι είσοδοι του κυκλώματος και με s η έξοδος. Η είσοδος a είναι η είσοδος επίτρεψης. Αυτό σημαίνει πως όταν η είσοδος a έχει τιμή 0 ενεργοποιείται ο πάνω αποκωδικοποιητής που δίνει τους ελαχιστοόρους m0 έως m3 της f ενώ ο κάτω μένει ανενεργός. Όταν η είσοδος a έχει τιμή 1 ενεργοποιείται ο κάτω αποκωδικοποιητής που δίνει τους ελαχιστοόρους m4 έως m7 της f ενώ ο πάνω μένει ανενεργός. c b a (enable) gate_not_1 DEC 2x4 wire_not_a DEC 2x4 d0 d1 d2 d3 d4 d5 d6 d7 wire_or s 7
4. ΔΗΜΙΟΥΡΓΙΑ ΚΩΔΙΚΑ ΓΙΑ ΤΗΝ ΑΠΟΤΥΠΩΣΗ ΤΟΥ ΚΥΚΛΩΜΑΤΟΣ ΤΟΥ ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗ 2x4 Παρατίθεται ο κώδικας που δημιουργήθηκε για την αποτύπωση του κυκλώματος του αποκωδικοποιητή 2x4 της παραπάνω υποενότητας. module decoder_2x4(k0,k1,k2,k3,a,b,c); input a, b, c; output k0, k1, k2, k3; wire wire_not_c, wire_not_b; not gate_not_1(wire_not_c, c); not gate_not_2(wire_not_b, b); and gate_and_1(k0, wire_not_c, wire_not_b, a); and gate_and_2(k1, c, wire_not_b, a); and gate_and_3(k2, wire_not_c, b, a); and gate_and_4(k3, c, b, a); endmodule 8
5. ΔΗΜΙΟΥΡΓΙΑ ΚΩΔΙΚΑ ΓΙΑ ΤΗΝ ΑΠΟΤΥΠΩΣΗ ΤΟΥ ΚΥΚΛΩΜΑΤΟΣ ΠΟΥ ΥΛΟΠΟΙΕΙ ΤΗ ΣΥΝΑΡΤΗΣΗ f Παρατίθεται ο κώδικας που δημιουργήθηκε για την αποτύπωση του κυκλώματος της παραπάνω υποενότητας που υλοποιεί τη συνάρτηση f. module ogdoi(s,a,b,c); endmodule input a, b, c; output s; wire wire_not_a; not gate_not_1(wire_not_a,a); decoder_2x4 decoder_2x4_1(d0,d1,d2,d3,wire_not_a,b,c); decoder_2x4 decoder_2x4_2(d4,d5,d6,d7,a,b,c); or gate_or(s,d1,d2,d3,d6,d7); 9
6. ΔΗΜΙΟΥΡΓΙΑ ΚΩΔΙΚΑ ΩΣ ΟΔΗΓΟΥ ΠΡΟΣΟΜΟΙΩΣΗΣ Παρατίθεται ο κώδικας για την εκτέλεση της προσομοίωσης. Σε αυτόν τον κώδικα δηλώνονται ως είσοδοι όλοι οι συνδυασμοί τιμών εισόδων της συνάρτησης. module test(); reg a, b, c; wire out; ogdoi test(out,a,b,c); initial begin a=0; b=0; c=0; #10 a=0; b=0; c=1; #10 a=0; b=1; c=0; #10 a=0; b=1; c=1; #10 a=1; b=0; c=0; #10 a=1; b=0; c=1; #10 a=1; b=1; c=0; #10 a=1; b=1; c=1; #10 $finish; end endmodule 10
ΑΠΟΤΕΛΕΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ Τοποθετώντας τα τρία αρχεία κώδικα, τα οποία αναφέρθηκαν στην προηγούμενη υποενότητα, μεσα στο πρόγραμμα προσομοίωσης Verilogger Pro δίνεται σαν αποτέλεσμα τα παρακάτω διάγραμματα χρονισμού στα οποία απεικονίζονται με τη σειρά οι τιμές (test.a, test.b, test.c) που δώθηκαν ως είσοδοι και η τιμή (test.out), ως έξοδος, σε σχέση με τον χρόνο. 11
ΣΥΜΠΕΡΑΣΜΑΤΑ Χρησιμοποιώντας την μέθοδο συνδυαστικής λογικής, καταφέρνουμε να δημιουργούμε κυκλώματα που εκτελούν συγκεκριμένες λειτουργίες όπως η υλοποίηση μίας συνάρτησης με χρήση αποκωδικοποιητών, με έναν πολύ πιο ευκολό και γρήγορο τρόπο. Επίσης, η συνδυαστική λογική μας βοηθά να κατασκευάζουμε κυκλώματα που θα ήταν σχεδόν αδύνατο να κατασκευαστούν μέσω πίνακα αλήθειας και χαρτών Karnaugh, λόγω των πολλών μεταβλητών η των πολλών συνδυασμών τιμών εισόδου. 12