ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗ ΛΟΓΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ VERILOG 2017, Δρ. Ηρακλής Σπηλιώτης
Ελαχιστοποίηση λογικών συναρτήσεων Ο στόχος της ελαχιστοποίησης είναι η εύρεση της πιο απλοποιημένης λογικής συνάρτησης, η οποία υλοποιείται σε ψηφιακό κύκλωμα με τον ελάχιστο αριθμό πυλών. Ο πίνακας αληθείας είναι μια μοναδική αναπαράσταση της συνάρτησης, αλλά οι αλγεβρικές μορφές δεν είναι μοναδικές. Οι αλγεβρικές μορφές της συνάρτησης μπορούν να χρησιμοποιηθούν για την ελαχιστοποίηση με χρήση των αξιωμάτων και θεωρημάτων της άλγεβρας Boole, αλλά στερούνται συγκεκριμένων κανόνων που να περιγράφουν κάθε βήμα στη διδαδικασία αυτή. Ο χάρτης Karnaugh ή χάρτης παρέχει έναν απλό τρόπο για την ελαχιστοποίηση συναρτήσεων.
Χάρτης Karnaugh Ο χάρτης Karnaugh είναι ένα διάγραμμα που αποτελείται από τετράγωνα. Κάθε τετράγωνο αντιπροσωπεύει έναν ελαχιστόρο της συνάρτησης. Κάθε συνάρτηση μπορεί να εκφρασθεί ως SOP (άθροισμα γινομένων, sum of products), άρα ο χάρτης προσδιορίζει τη συνάρτηση από τα τετράγωνα που αντιπροσωπεύουν τους ελαχιστόρους που συμμετέχουν στο SOP. Αναγνωρίζοντας διατάξεις τετραγώνων στο χάρτη, ο χρήστης μπορεί να παράξει διαφορετικές αλγεβρικές εκφράσεις της συνάρτησης και να επιλέξει την απλούστερη μορφή. Η απλούστερη μορφή μπορεί να μην είναι μοναδική, οπότε όλες οι σχετικές λύσεις με τον ελάχιστο αριθμό πυλών είναι αποδεκτές.
Χάρτης δύο μεταβλητών Σε μια συνάρτηση δύο μεταβλητών υπάρχουν τέσσερις ελαχιστόροι. Ο χάρτης αποτελείται από τέσσερα τετράγωνα, το καθένα αντιστοιχεί σε έναν ελαχιστόρο.
Χάρτης δύο μεταβλητών Αν σημειώσουμε με 1 τα τετράγωνα που αντιστοιχούν σε όλους τους ελαχιστόρους μιας δεδομένης συνάρτησης, τότε αναπαριστούμε τη συνάρτηση και μάλιστα με μοναδικό τρόπο. Στο σχήμα (α) η συνάρτηση xy. Στο σχήμα (b) η συνάρτηση x y + xy + xy. Η συνάρτηση στο (b), απλοποιείται σε x + y. Αυτό προκύπτει από το χάρτη, όπου φαίνεται ότι η συνάρτηση ισχύει για x = 1 και y = 1 (σκιασμένες περιοχές).
Χάρτης τριών μεταβλητών Ο χάρτης αποτελείται από 8 τετράγωνα. Οι ελαχιστόροι διατάσσονται κατά τον κώδικα Gray, ώστε κάθε φορά να αλλάζει μόνο ένα bit από στήλη σε στήλη. Δύο γειτονικά τετράγωνα του χάρτη αντιστοιχούν σε ελαχιστόρους που διαφέρουν μόνο κατά μία μεταβλητή. Στο χάρτη του σχ. (b) υπάρχουν αριθμοί που δείχνουν τις τιμές των μεταβλητών xyz και σχηματίζουν τον αριθμό του ελαχιστόρου, π.χ. m 0 =000=x y z. Δύο τετράγωνα του χάρτη μπορεί να είναι γειτονικά ακομα και αν δεν εφάπτονται. Πχ Τα ζεύγη m 0 m 2, m 4 - m 6, m 0 -m 6, m 4 -m 2 είναι γειτονικά γιατί διαφέρουν μόνο κατά μία μεταβλητή. Γειτονικά τετράγωνα του χάρτη απλοποιούνται σε ένα γινόμενο με δύο μεταβλητές, π.χ. m m xyz xyz xz( y y) xz 5 7 m m xyz xyz xz( y y) xz 0 2
Χάρτης τριών μεταβλητών Απλοποίηση της συνάρτησης F(x,y,z)=Σ(2,3,4,5). Τοποθετούμε 1 στα τετράγωνα 010, 011, 100, 101 των ελαχιστόρων Εντοπίζουμε γειτονικές περιοχές (με κόκκινο). Περιοχές x y και xy. F= x y + xy
Χάρτης τριών μεταβλητών Απλοποίηση της συνάρτησης F(x,y,z)=Σ(3,4,6,7). Τοποθετούμε 1 στα τετράγωνα 011, 100, 110, 111 των ελαχιστόρων Εντοπίζουμε γειτονικές περιοχές (με πράσινο και κόκκινο ). Περιοχές yz και xz. F= yz + xz
Χάρτης τριών μεταβλητών Τα γειτονικά τετράγωνα για να συνδυαστούν πρέπει να έχουν πλήθος που είναι δύναμη του 2. Ένα τετράγωνο αναπαριστά έναν ελαχιστόρο, άρα χρειάζεται τρεις μεταβλετές. Δύο τετράγωνα αναπαριστούν ένα γινόμενο με δύο μεταβλητές. Τέσσερα τετράγωνα αναπαριστούν ένα γινόμενο με μία μεταβλητή. Οκτώ τετράγωνα, αναπαριστούν έναν όρο με καμμία μεταβλητή και ισούται πάντοτε με 1.
Χάρτης τριών μεταβλητών Απλοποίηση της συνάρτησης F(x,y,z)=Σ(0,2,4,5,6). Τοποθετούμε 1 στα τετράγωνα 000,010, 100, 101, 110 των ελαχιστόρων Εντοπίζουμε γειτονικές περιοχές (με πράσινο και κόκκινο ). Περιοχές z και xy. F= z + xy
Χάρτης τριών μεταβλητών Απλοποίηση της συνάρτησης F(A,B,C)=A C+A B+AB C+BC Είναι σε μορφή SOP Τοποθετούμε 1 στα τετράγωνα που ορίζονται από τα γινόμενα της F A C, A B, AB C, BC F(A,B,C)=Σ(1,2,3,5,7) Κόκκινη ομάδα C Μπλέ ομάδα A B F(A,B,C)= A B+C
Χάρτης τεσσάρων μεταβλητών 16 τετράγωνα που αντιστοιχούν στους ελαχιστόρους Κώδικας Gray, αλλαγή ενός bit ανάμεσα σε γειτονικά τετράγωνα Το πάνω όριο εφάπτεται με το κάτω όριο Το αριστερό όριο εφάπτεται με το δεξιό όριο Γειτονικά τετράγωνα είναι αυτά που εφάπτονται Απλοποίηση στο χάρτη Ομάδα 1 τετραγώνου: όρος με 4 μεταβλητές Ομάδα 2 τετραγώνων: όρος με 3 μεταβλητές Ομάδα 4 τετραγώνων: όρος με 2 μεταβλητές Ομάδα 8 τετραγώνων: όρος με 1 μεταβλητές Ομάδα 16 τετραγώνων: όρος με καμμία μεταβλητή πάντοτε ίσος με 1
Χάρτης τεσσάρων μεταβλητών Απλοποίηση της συνάρτησης F(x,y,z,w)=Σ(0,1,2,4,5,6,8,9,12,13,14). Τοποθετούμε 1 στα τετράγωνα των ελαχιστόρων Εντοπίζουμε γειτονικές περιοχές με πλήθος τετραγώνων = δύναμη του 2 y w z xz F= y +w z +xz
Χάρτης τεσσάρων μεταβλητών Απλοποίηση της συνάρτησης F=A B C +B CD +A BCD +AB C Τοποθετούμε 1 στα τετράγωνα των ελαχιστόρων Εντοπίζουμε γειτονικές περιοχές με πλήθος τετραγώνων = δύναμη του 2 B D B C A CD F=B D +B C +A CD
Χάρτης πέντε μεταβλητών Ο χάρτης 5 μεταβλητών αποτελεί μια τρισδιάστατη δομή, όπου το κάθε επίπεδο αποτελείται από χάρτη 4 μεταβλητών. Ο ένας χάρτης 4 μεταβλητών ισχύει για την τιμή της 5 ης μεταβλητής ίση με 0 και ο δεύτερος για την τιμή της 5 ης μεταβλητής ίση με 1. Στο χάρτη του σχήματος τα δύο επίπεδα φαίνονται δίπλα, ο αριστερός χάρτης των 4 μεταβλητών ABDE είναι το επίπεδο του C=0 και ο δεξιός χάρτης των 4 μεταβλητών ABDE το επίπεδο του C=1. Γειτονικά στοιχεία ορίζονται και στα δύο επίπεδα, δηλαδή στο συγκεκριμένο χάρτη για C=0 και για C=1.
Χάρτης πέντε μεταβλητών Στο χάρτη του σχήματος, οι οκτώ άσοι ορίζουν τον κόκκινο κύβο BE, ενώ οι 4 άσοι ορίζουν το γαλάζιο ορθογώνιο Α Β C. F (A,B,C,D,E) = ΒΕ + A Β C
Χάρτης έξι μεταβλητών Ο χάρτης 6 μεταβλητών αποτελεί μια τρισδιάστατη δομή, όπου το κάθε επίπεδο αποτελείται από χάρτη 4 μεταβλητών. Υπάρχουν τέσσερα επίπεδα που αντιστοιχούν στους συνδυασμούς των άλλων δύο μεταβλητών. Για περισσότερες από 6 μεταβλητές δεν ενδείκνυται χρήση χαρτών Karnaugh.
Χάρτης έξι μεταβλητών Στο χάρτη 6 μεταβλητών του σχήματος διακρίνουμε και ομαδοποιούμε τους όρους C D EF CD EF Α CD E F ΑDE F F(A,B,C,D,E,F)=C D EF +CD EF +Α CD E F +ΑDE F
Πρωτεύοντες όροι Μια συνάρτηση f λέμε ότι καλύπτει μια συνάρτηση g, αν η f παίρνει την τιμή 1 όταν το ίδιο συμβαίνει με την g. Πρωτεύον όρος (prime implicant) p μιας συναρτήσεως f είναι ένας όρος γινομένου που καλύπτεται από την f και η απαλειφή οποιουδήποτε παράγοντα από τoν p δημιουργεί μια συνάρτηση που δεν καλύπτεται από την f. Στο χάρτη Karnaugh, οι πρωτεύοντες όροι είναι οι όροι γινομένου που προκύπτουν από το συνδυασμό του μέγιστου πιθανού αριθμού γειτονικών τετραγώνων του χάρτη. Θεμελιώδης πρωτεύοντας όρος (essential prime implicant) είναι ο πρωτεύοντας όρος που καλύπτει μόνος του κάποιον ελαχιστόρο.
Πρωτεύοντες όροι Έστω F(A,B,C,D)= Σ(0,2,3,5,7,8,9,10,11,13,15) Για λόγους ευκολίας κατανόησης ο χάρτης έχει χωρισθεί σε δύο μέρη. Ο χάρτης (α) απεικονίζει δύο θεμελιώδεις πρωτεύοντες όρους, γιατί ο ελαχιστόρος m 0 και m 5, δε μπορούν να καλυφθούν από άλλο πρωτεύοντα όρο. Ο χάρτης (β) απεικονίζει τους υπόλοιπους πρωτεύοντες όρους.
Διαδικασία απλοποίησης 1. Κατά τη διαδικασία απλοποίησης μιας λογικής συνάρτησης με χρήση του χάρτη προηγείται η εύρεση των θεμελιωδών πρωτευόντων όρων. 2. Στη συνέχεια βρίσκονται οι υπόλοιποι πρωτεύοντες όροι που είναι απαραίτητοι για την κάλυψη των ελαχιστόρων που δε καλύπτονται από τους θεμελιώδεις πρωτεύοντες όρους. Οι πρωτεύοντες όροι του βήματος 2 για την κάλυψη ενός ελαχιστόρου είναι περισσότεροι από έναν, αλλά όλοι δίνουν μια συνάρτηση απλοποιημένη στον ίδιο βαθμό.
Απλοποίηση σε γινόμενο αθροισμάτων Στο χάρτη θέτουμε 0 στα κενά τεράγωνα. Ομαδοποιούμε και παίρνουμε μια απλοποιημένη έκφραση της F σε μορφή SOP. Συμπληρώνουμε την F, παίρνουμε την F και με την εφαρμογή του θεωρήματος De Morgan λαμβάνουμε την ελαχιστοποιημένη μορφή της σε μορφή POS.
Απλοποίηση σε γινόμενο αθροισμάτων Έστω F(A,B,C,D)=Σ(0,1,2,5,8,9,10) Από το χάρτη η ελαχιστοποιημένη F σε SOP, F=B D +B C +A C D Τα τετράγωνα του χάρτη με 0 είναι οι ελαχιστόροι της F Προκύπτει η ελαχιστοποιημένη F σε SOP, F =AB+CD+BD H ελαχιστοποιημένη F σε POS, F=(F ) =(A +B )(C +D )(B +D)
Απλοποίηση σε γινόμενο αθροισμάτων Έστω F(x,y,z) = Σ(1,3,4,6) Άρα F(x,y,z) = Π(0,2,5,7) F =xz+x z = x XOR z F=(F ) =(x+z)(x +z ) σε μορφή POS
Συνθήκες αδιαφορίας Σε αρκετές περιπτώσεις η συνάρτηση δε προσδιορίζεται για συγκεκριμένες τιμές των ανεξάρτητων μεταβλητών. Για παράδειγμα ο κώδικας BCD, έχει 6 συνδυασμούς που δε χρησιμοποιούνται. Οι συναρτήσεις αυτές ονομάζονται ατελώς καθορισμένες συναρτήσεις. Οι ελαχιστόροι που οδηγούν σε μη προσδιορισμένες τιμές της συνάρτησης ονομάζονται συνθήκες αδιαφορίας (don t care conditions) ή αδιάφοροι όροι και στο χάρτη τα αντίστοιχα τετράγωνα παριστάνονται με ένα Χ. Κατά την ομαδοποίηση τετραγώνων του χάρτη, μπορούμε να θεωρήσουμε τους αδιάφορους όρους, ως 0 ή ως 1 όπως μας βολεύει ώστε να επιτύχουμε μεγαλύτερη ομαδοποίηση και άρα απλούστερη συνάρτηση.
Συνθήκες αδιαφορίας Έστω F (w,x,y,z)=σ(1,3,7,11,15) με συνθήκες αδιαφορίας d(w,x,y,z)=σ(0,2,5) Σχηματισμός χάρτη: ελαχιστόροι 1, αδιάφοροι όροι Χ, υπόλοιποι όροι 0. Ομαδοποίηση με χρήση αδιάφορων όρων, καταλήγουμε στις δύο εξίσου απλές συναρτήσεις που φαίνονται στα σχήματα (α) και (β). Παρατηρούμε ότι η συνάρτηση στο χάρτη (α) περιλαμβάνει δύο αδιάφορους όρους, τους ελαχιστόρους m 0, m 2, ενώ η συνάρτηση στο χάρτη (β) περιλαμβάνει ως αδιάφορο όρο τον ελαχιστόρο m 5. Αν θέλουμε την απλοποιημένη έκφραση σε μορφή POS, τότε θεωρούμε τα 0 με όποιους αδιάφορους όρους Χ μας εξυπηρετούν: F =yz+w y => F=(F ) =(y +z )(w+y)
Yλοποίηση λογικών συναρτήσεων Κάθε συνάρτηση Boole μπορεί να γραφεί σε κανονική μορφή αθροίσματος γινομένων (SOP) ή γινομένου αθροισμάτων (POS). Οι τελεστές AND, OR και NOT μπορούν να εκφράσουν μια συνάρτηση Boole σε κανονική μορφή SOP ή POS. Άρα το σύνολο των τελεστών AND, OR και NOT μπορούν να εκφράσουν κάθε συνάρτηση Boole. Για το λόγο αυτό το σύνολο των τελεστών AND, OR και NOT καλείται λειτουργικά πλήρες (functionally complete) ή οικουμενικό (universal) Υπάρχουν και άλλοι τελεστές που με τη χρήση μόνο αυτών, μπορεί να εκφρασθεί κάθε συνάρτηση Boole, δηλαδή που είναι οικουμενικοί. Η πλειοψηφία των πυλών σε ολοκληρωμένα κυκλώματα αποτελείται από NAND και NOR.
Υλοποίηση λογικών συναρτήσεων με πύλες NAND Ο τελεστής NAND μπορεί να αντικαταστήσει τον τελεστή NOT, AND και OR. Ο τελεστής NAND είναι λειτουργικά πλήρης ή οικουμενικός.
Υλοποίηση λογικών συναρτήσεων με πύλες NAND Ο τελεστής NAND μπορεί να εκφράσει μια συνάρτηση σε μορφή SOP, άρα μπορεί να εκφράσει κάθε συνάρτηση. F=[(x 1 x 2 ) (x 3 x 4 x 5 ) ] =x 1 x 2 +x 3 x 4 x 5
Υλοποίηση λογικών συναρτήσεων με πύλες NAND
Υλοποίηση λογικών συναρτήσεων με πύλες NAND
Υλοποίηση λογικών συναρτήσεων με πύλες NOR Ο τελεστής NOR μπορεί να αντικαταστήσει τον τελεστή NOT, AND και OR. Ο τελεστής NOR είναι λειτουργικά πλήρης ή οικουμενικός.
Υλοποίηση λογικών συναρτήσεων με πύλες NOR Ο τελεστής NOR μπορεί να εκφράσει μια συνάρτηση σε μορφή POS, άρα μπορεί να εκφράσει κάθε συνάρτηση. Η NOR είναι δυική της NAND. F=[(x 1 +x 2 ) +(x 3 +x 4 +x 5 ) ] =(x 1 +x 2 )(x 3 +x 4 +x 5 )
Υλοποίηση λογικών συναρτήσεων με πύλες NOR Η πλειοψηφία των πυλών που χρησιμοποιούνται στα ολοκληρωμένα κυκλώματα, είναι NAND και NOR. Στο σχήμα βλέπουμε υλοποιήσεις δύο επιπέδων με πύλες NOR.
Άλλες υλοποιήσεις δύο επιπέδων Θα μελετήσουμε με ποιους συνδυασμούς πυλών δύο επιπέδων μποορύμε να υλοποιήσουμε όλες τις συναρτήσεις. Αν έχουμε πύλες AND, OR, NAND, NOR τότε οι οκτώ συνδυασμοί εκφυλίζονται σε μία λογική πράξη, π.χ. AND - AND σημαίνει μια πράξη AND όλων των εισόδων. Οι οκτώ μη εκφυλισμένοι συνδυασμοί φαίνονται στον παρακάτω πίνακα. Με τις δύο πρώτες γραμμές του πίνακα έχουμε ασχοληθεί. Θα εξετάσουμε τις δύο τελευταίες γραμμές του πίνακα. AND OR NAND - NAND NOR OR OR-NAND OR-AND NOR-NOR NAND-AND AND-NOR
Άλλες υλοποιήσεις δύο επιπέδων
Συνάρτηση XOR (αποκλειστικό OR) Η συνάρτηση XOR με σύμβολο ισοδυναμεί με: x y = xy + x y Η XOR ισούται με 1, μόνο όταν ένα από τα x ή το y ισούται με 1. Το αποκλειστικό NOR (ΧΝΟR), γνωστό ως συνάρτηση ισοδυναμίας: (x y) = xy + x y H XNOR ισούται με 1, μόνο αν τα x και y, έχουν την ίδια τιμή. Ισχύουν οι εξής ταυτότητες: x 0=x x 1=x x x=0 x x =1 x y =x y=(x y) H XOR είναι αντιμεταθετική και προσεταιριστική: x y=y x x (y z)=(x y ) z=x y z
Συνάρτηση XOR Υλοποιήσεις της συνάρτησης XOR
Περιττή συνάρτηση Η XOR υλοποιεί την περιττή συνάρτηση (odd function), δηλαδή τη συνάρτηση που είναι αληθής όταν στις εισόδους της υπάρχει περιττός αριθμός 1. Α Β C = (AB +A B)C +(AB+A B )C=AB C +A BC +ABC+A B C= Σ(1,2,4,7) Α Β C D = (AB +A B) (CD +C D)= =(AB +A B)(CD+C D )+(AB+A B )(CD +C D)= Σ(1,2,4,7,8,11,13,14)
Αρτια συνάρτηση Η XNOR υλοποιεί την άρτια συνάρτηση (even function), δηλαδή τη συνάρτηση που ισούται με 1 όταν στις εισόδους της υπάρχει άρτιο πλήθος 1.
Δημιουργία και έλεγχος ισοτιμίας Ένας τρόπος εντοπισμού σφαλμάτων κατά τη μετάδοση δεδομένων είναι και η ισοτιμία. Στα bit δεδομένων προστίθεται ένα επιπλέον bit, που ονομάζεται bit ισοτιμίας και ο σκοπός του είναι να δημιουργήσει άρτιο ή περιττό πλήθος 1. Το κύκλωμα που παράγει το bit ισοτιμίας, ονομάζεται γεννητρια ισοτιμίας (parity generator). Όταν ο παραλήπτης λάβει το μήνυμα ελέγχει το πλήθος των 1. Αν η ισοτιμία του δέκτη δε συμφωνεί με το πλήθος των 1 τότε έχει εντοπισθεί ένα σφάλμα. To κύκλωμα που ελέγχει την ισοτιμία, ονομάζεται ελεγκτής ισοτιμίας (parity checker).
Γεννήτρια ισοτιμίας Ένας αποστολέας μεταδίδει μήνυμα τριών bit x,y,z μαζί με 1 bit άρτιας ισοτιμίας P. Από τον πίνακα αληθείας, το P είναι η περιττή συνάρτηση: P=x y z Το λογικό διάγραμμα της γεννήτριας ισοτιμίας είναι αυτό του σχήματος:
Ελεγκτής ισοτιμίας Ο παραλήπτης λαμβάνει τα 4 bit (3 του μηνύματος x,y,z και 1 ισοτιμίας P) και θέλει να εντοπίσει τυχόν λάθη. Από τον πίνακα αληθείας, ο ελεγκτής ισοτιμίας C έχει 8 ελαχιστόρους που όλοι έχουν περιττό αριθμό 1, άρα ο τελεστής ισοτιμίας υλοποιείται με την περιττή συνάρτηση: C=x y z P. Το λογικό διάγραμμα του ελεγκτή φαίνεται στο σχήμα.
Δημιουργία και έλεγχος ισοτιμίας Το κύκλωμα της γεννήτριας ισοτιμίας, μπορεί να υλοποιηθεί με το κύκλωμα του ελεγκτή ισοτιμίας για P=0. Αυτό γιατί z 0=z. Το πλεονέκτημα είναι ότι αποστολέας και παραλήπτης (που συνήθως εναλλάσουν ρόλους), έχουν ακριβώς το ίδιο κύκλωμα. Προκειμένου για μετάδοση με περιττή ιοσοτιμία, αντί της πράξης XOR θα χρησιμοποιηθεί η πράξη XNOR.
ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ VERILOG 2017, Δρ. Ηρακλής Σπηλιώτης
Γλώσσες περιγραφής υλικού Η πολυπλοκότητα των σημερινών ψηφιακών συστημάτων, έχει οδηγήσει σε αυτοματοποίηση της διαδικασίας σχεδιασμού με χρήση υπολογιστή. Οι γλώσσες περιγραφής υλικού (Hardware description language, HDL) περιγράφουν ψηφιακά κυκλώματα. Η δομή τους θυμίζει τις γλώσσες προγραμματισμού, αλλά είναι προσανατολισμένες στην περιγραφή υλικού. Η έξοδος μιας γλώσσας προγραμματισμού είναι κώδικας μηχανής, ενώ η έξοδος μιας HDL είναι ένα ψηφιακό κύκλωμα. Μετά την περιγραφή ενός λογικού κυκλώματος με HDL μπορούν να υλοποιηθούν δύο κύριες λειτουργίες: η προσομοίωση και η σύνθεση. Η προσομοίωση (simulation) επιτρέπει των υπολογισμό των εξόδων του λογικού κυκλώματος, δηλάδή την πρόβλεψη της συμπεριφοράς του πριν αυτό κατασκευασθεί. Η σύνθεση είναι η αυτόματη εύρεση των εξαρτημάτων και των διασυνδέσεων τους, ώστε να υλοποιηθεί το ζητούμενο κύκλωμα. Η σύνθεση βασίζεται σε αλγόριθμους σχδίασης λογικών κυκλωμάτων οι οποίοι μπορούν να υλοποιηθούν από τυο λογισμικό.
Γλώσσες περιγραφής υλικού Το ψηφιακό κύκλωμα το οποίο παράγει μια HDL μπορεί να χρησιμοποιηθεί για την κατασκευή του τυπωμένου κυκλώματος (PCB), ή για τη σχεδίαση ενός ολοκληρωμένου κυκλώματος (ASIC) ή για να διαμορφώσει μια επαναδιαμορφούμενη διάταξη υλικού FPGA (Field-programmable gate array). Οι δύο κύριες γλώσσες που έχουν και την υποστήριξη της ΙΕΕΕ είναι η Verilog και η VHDL. H Verilog αναπτύχθηκε αρχικά από μια εταιρία σχεδίασης, αλλά στη συνέχεια μεταφέρθηκε σε μια ομάδα εταιριών και πανεπιστημίων με το όνομα Open Verilog International. Το όνομα VHDL προέρχεται από το VHSIC HDL, δηλαδή Very High Speed Integrated Circuits HDL, Γλώσσα περιγραφής Υλικού Ολοκληρωμένων Κυκλωμάτων πολύ Υψηλής Ταχύτητας. Στο πλαίσιο του παρόντος μαθήματος θα γίνει μια εισαγωγή στη γλώσσα Verilog, αλλά και μια εισαγωγή στη μεθοδολογία της παράστασης ψηφιακών συστημάτων με χρήση υπολογιστή.
Περιγραφή υπομονάδων σε Verilog H υπομονάδα δηλώνεται με τη λέξη module και τελειώνει με τη λέξη endmodule. Το όνομα στο συγκεκριμένο παράδειγμα είναι simple_circuit και δηλώνεται και ο κατάλογος θυρών. Στο σχήμα βλέπουμε το λογικό διάγραμμα ενός κυκλώματος με 3 πύλες και την περιγραφή του σε Verilog. //Verilog description of circuit module simple_circuit (A,B,C,D,E); output D, E; input A, B, C: wire w1; and G1(w1,A,B); not G2(E,C): or G3(D,w1, E); endmodule
Περιγραφή υπομονάδων σε Verilog Ο κατάλογος θυρών είναι οι διασυνδέσεις της υπομονάδας για να επικοινωνεί με το περιβάλλον. Τα ονόματα μεταβλητών περιέχουν αλφαριθμητικούς χαρακτήρες και το χαρακτήρα υπογράμμισης και δε μπορούν να αρχίζουν από αριθμό. Κάθε εντολή τερματίζεται με ερωτηματικό. Οι δηλώσεις input και output καθορίζουν ποιες θύρες είναι είσοδοι και ποιες είναι έξοδοι. Οι εσωτερικές συνδέσεις (τα ενδιάμεσα σήματα) δηλώνονται ως καλώδια (wires). Τα δομικά στοιχεία του συγκεκριμένου κυκλώματος είναι τρεις πύλες, οι οποίες αποτελούν και κωδικές λέξεις. Κάθε δήλωση πύλης αποτελείται από ένα προαιρετικό όνομα (π.χ. g1) ακολουθούμενο από τις εξόδους και εισόδους. Η έξοδος πάντα αναφέρεται πρώτη. Η υπομονάδα τεειώνει με endmodule και δεν υπάρχει ερωτηματικό εκεί.
Καθυστερήσεις διάδοσης πυλών Η καθυστέρηση διάδοσης είναι ο χρόνος που απαιτείται για τη διάδοση ενός σήματος από την είσοδο στην έξοδο των πυλών. Συνήθως, η μονάδα μέτρησης της καθυστέρησης είναι το 1ns. Μπορούμε να προσδιορίσουμε την καθυστέρηση διάδοσης για κάθε πύλη που περιγράφουμε με Verilog. Αυτό γίνεται κατά τη δήλωση της πύλης με χρήση του #(xx) όπου xx αριθμητικά ψηφία που δείχνουν την καθυστέρηση διάδοσης. Η καθυστέρηση αυτή λαμβάνεται υπόψη από τον προσομοιωτή.
Καθυστερήσεις διάδοσης πυλών Tο κύκλωμα του προηγούμενου παραδείγματος με χρήση καθυστέρησης. Στον πίνακα φαίνονται οι έξοδοι των πυλών μετά την καθυστέρηση. Πρατηρήστε ότι η έξοδος D της πύλης OR, για χρονικό διάστημα 20ns εμφανίζεται ένας αρνητικός σπινθήρας και μετά επιστρέφει πάλι στο 1. //Verilog description of circuit module Simple_Circuit_prop_delay(A,B,C,D,E); output D, E; input A, B, C: wire w1; and #(30) G1(w1,A,B); not #(10) G2(E,C): or #(20) G3(D,w1, E); endmodule
Προσομοίωση Η περιγραφή σε Verilog παρέχει δοκιμαστική είσοδο (test bench) για το κύκλωμα του προηγούμενου παραδείγματος.
Προσομοίωση Για την προσομοίωση ενός κυκλώματος θα πρέπει να εφαρμόσουμε εισόδους ώστε ο προσομοιωτής να υπολογίσει τις εξόδους. Περιγράφεται μια υπομονάδα διέγερσης η οποία θα εφαρμόσει τις εισόδους στο προηγούμενο κύκλωμα. Η υπομονάδα διέγερσης δεν έχει θύρες. Οι είσοδοι στο κύκλωμα δηλώνονται με την κωδική λέξη reg και οι έξοδοι με την λέξη wire. Απαιτείται ένα όνομα στιγμιοτύπου. Το όνομα Μ1 δηλώνει ένα στιγμιότυπο του κυκλώματος Simple_Circuit_prop_delay με τις συγκεκριμένες εισόδους. Η εντολή initial καθορίζει τις εισόδους μεταξύ των λέξεων begin, end. Αρχικά ΑΒC=000 για 100ns, μετά ABC=111 για 100ns. H δήλωση $finish τερματίζει τη προσομοίωση.
Λογικές εκφράσεις στη Verilog Οι λογικές εκφράσεις ορίζονται με μια συνεχή εντολή ανάθεσης που αποτελείται από τη λέξη assign ακολουθούμενη από μια λογική έκφραση. Για τη διάκριση μεταξύ αριθμητικών και λογικών τελεστών, χρησιμοποιούνται τα σύμβολα: & ΑΝD OR ~ NOT To κύκλωμα του προηγούμενου παραδείγματος περιγράφεται ως : assign D = (A & B) ~C; assign E = ~C;
Λογικές εκφράσεις στη Verilog Η παρακάτω υπομονάδα περιγράφει ένα κύκλωμα με εξόδους: Το κύκλωμα έχει τέσσερις εισόδους και δύο εξόδους.
Στοιχειώδη Κυκλώματα του χρήστη User Defined primitives, UDP Οι πύλες AND, OR κ.λ.π., ορίζονται από το σύστημα και αναφέρονται ως system primitives. Ο χρήστης μπορεί να ορίζει δικά του primitives (UDPs) για να τα χρησιμοποιεί στα modules που δημιουργεί. Ένας τρόπος ορισμού είναι ο πίνακας αληθείας. Ο ορισμός ενός primitive βρίσκεται ανάμεσα στις λέξεις primitive.. endprimitive. Μπορεί να υπάρχει μόνο μία έξοδος, η σειρά των εισόδων στη δήλωση input καθορίζει και τις τιμές στον πίνακα αληθείας. Ο πίνακας αληθείας βρίσκεται ανάμεσα στις λέξεις table.. endtable. Ο κάθε συνδυασμός τιμών εισόδων τελειώνει με (:), στη συνέχεια ακολουθεί η τιμή εξόδου και τελειώνει με (;)
Στοιχειώδη Κυκλώματα του χρήστη User Defined primitives, UDP Περιγραφή σε Verilog ενός UDP με όνομα UDP_02467
Στοιχειώδη Κυκλώματα του χρήστη User Defined primitives, UDP Η ακόλουθη περιγραφή Verilog, υλοποιεί το κύκλωμα του σχήματος.
Ασκήσεις
Ασκήσεις
Ασκήσεις
Ασκήσεις
Ασκήσεις
Ασκήσεις
Ασκήσεις