ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ, ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ Αναφορά 8 ης εργαστηριακής άσκησης: Αποκωδικοποιητής ΚΑΣΣΙΑΝΟΣ ΜΕΛΑΝΙΤΗΣ Α.Μ.: 202420110008 Εαρινό εξάμηνο 2013-2014
Περιεχόμενα Περιεχόμενα... 2 Στόχος... 3 Μεθοδολογία... 3 Κυκλώματα... 5 Κώδικες... 5 Simulation... 6 Συμπεράσματα...7 2
Στόχος Στην 8 η εργαστηριακή άσκηση θα υλοποιήσουμε την συνάρτηση f(a,b,c)=σ(1,2,3,6,7) με χρήση αποκωδικοποιητών 2 εισόδων και επίτρεψη (enable). Γενικότερος στόχος της άσκησης είναι η εξάσκηση μας στην σχεδίαση και την υλοποίηση αποκωδικοποιητών αλλά και στη χρήση τους για την υλοποίηση συναρτήσεων. Μεθοδολογία Αρχικά γνωρίζουμε ότι η συνάρτηση έχει 3 εισόδους και εφόσον θέλουμε να την υλοποιήσουμε με αποκωδικοποιητές 2 εισόδων θα χρησιμοποιήσουμε δύο αποκωδικοποιητές 2 εισόδων (DEC 2x4) οι οποίοι θα βρίσκονται σε ένα κοινό κύκλωμα. Πιο συγκεκριμένα, θα παραθέσουμε το κύκλωμα ενός αποκωδικοποιητή 2 εισόδων με επίτρεψη ο οποίος σύμφωνα με τις ιδιότητες του αποκωδικοποιητή παράγει 4 ελαχιστοόρους. Μετέπειτα θα υλοποιήσουμε ακόμη έναν αποκωδικοποιητή 2x4 και θα τους τοποθετήσουμε σε ένα κοινό κύκλωμα. Τελειώνοντας με το τελικό κύκλωμα θα ενώσουμε σε μια πύλη ΟR τους ελαχιστοόρους που δίνονται από την συνάρτηση ώστε να την υλοποιήσουμε. Ακολούθως θα δημιουργήσουμε τους αντίστοιχους κώδικες καθώς και τον κώδικα ελέγχου για να δώσουμε τιμές στις εισόδους της συνάρτησης, και αφού τους μεταγλωτίσουμε με επιτυχία στο synapticad θα εξετάσουμε τα διαγράμματα που προκύπτουν από την προσομοίωση. Λογικά κυκλώματα Λογικό κύκλωμα αποκωδικοποιητή 2 εισόδων με επίτρεψη : 3
Το παραπάνω λογικό κύκλωμα μπορούμε να το σχεδιάσουμε για ευκολία και με τον παρακάτω τρόπο : Λογικό κύκλωμα υλοποίησης συνάρτησης με χρήση δύο αποκωδικοποιητών 2x4 : 4
Κώδικες των κυκλωμάτων Κώδικας αποκωδικοποιητή 2x4 : module DEC(s0,s1,s2,s3,A,B,C); input A,B,C; output s0,s1,s2,s3; wire not_a,not_b,not_c; not g1(not_a,a); not g2(not_b,b); not g3(not_c,c); and g4(s0,not_a,not_b,not_c); and g5(s1,not_a,b,not_c); and g6(s2,a,not_b,not_c); and g7(s3,a,b,not_c); endmodule Κώδικας κυκλώματος : module decoder (f,a,b,c); input A,B,C; output f; 5
wire s0,s1,s3,s4,s5,s6,s7,not_c; not g1(not_c,c); DEC DEC1(s0,s1,s2,s3,A,B,not_C); DEC DEC2(s4,s5,s6,s7,A,B,C); or g2(f,s0,s1,s3,s5,s7); endmodule Κώδικας ελέγχου : module test(); reg ina,inb,inc; wire F; decoder uut(.a(ina),.b(inb),.c(inc),.f(f)); initial begin ina=0; inb=0; inc=0; #10 ina=0; inb=0; inc=1; #10 ina=0; inb=1; inc=0; #10 ina=0; inb=1; inc=1; #10 ina=1; inb=0; inc=0; #10 ina=1; inb=0; inc=1; #10 ina=1; inb=1; inc=0; #10 ina=1; inb=1; inc=1; #10 $finish; end endmodule Simulation 6
Στο παραπάνω διάγραμμα που προέκυψε οι γραμμές test.ina, test.inb και test.inc εκφράζουν τις εισόδους της συνάρτησης. Ειδικότερα η γραμμή test.inc εκφράζει την επίτρεψη και ανάλογα με την τιμή που της δίνουμε ενεργοποιείται ο αντίστοιχος αποκωδικοποιητής. Η γραμμή test.f εκφράζει την έξοδο της συνάρτησης, και διαπιστώνουμε από τα αποτελέσματα ότι η f είναι ίση με 1 στις περιοχές που αντιστοιχούν στους ελαχιστοόρους και μας δόθηκαν στην εκφώνηση της άσκησης. Συμπεράσματα Στην 8 η εργαστηριακή άσκηση ζητούμενο ήταν η υλοποίηση μιας συνάρτησης τρειών εισόδων με τη χρήση δύο αποκωδικοποιητών 2x4. Αφού σχεδιάσαμε τους δύο αποκωδικοποιητές σε ένα κοινό κύκλωμα, αθροίσαμε τους ελαχιστοόρους που δίνονται σε μια πύλη OR ώστε να υλοποιήσουμε τη συνάρτηση. Στη συνέχεια δημιουργήσαμε τους αντίστοιχους κώδικες των κυκλωμάτων αλλά και τον κώδικα ελέγχου για να δώσουμε τιμές στις εισόδους μας και να τελέσουμε την προσομοίωση.διαπιστώσαμε από το διάγραμμα ότι η έξοδος είναι ίση με 1 μόνο στις τιμές των ελαχιστοόρων που δίνονται.μπορούμε να συμπεράνουμε από αυτή την άσκηση ότι με τη χρήση των αποκωδικοποιητών είμαστε σε θέση να υλοποιούμε πολλές συναρτήσεις με ενδεχομένως μικρότερο κόστος αλλά και περισσότερη ευκολία. 7