ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ᄃ Σχεδίαση Ψηφιακών Συστημάτων Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2
ΠΕΡΙΕΧΟΜΕΝΑ Άσκηση 5 η : Σχεδιασμός και Προσομοίωση Flip-Flop και Καταχωρητή Ολίσθησης...4 Άσκηση 6 η : Σχεδίαση Κυκλώματος Σύγχρονου Αθροιστή με Ανατροφοδότηση...9 Άσκηση 7 η -8 η : Υλοποίηση Παραμετρικού Μετρητή (Counter)...13 Άσκηση 9 η -10 η : Σχεδίαση Αριθμητικής Λογικής Μονάδας Τεσσάρων Ψηφίων και Απεικόνιση σε FPGA...17 3
ΑΣΚΗΣΗ 5 η ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΕΞΟΜΟΙΩΣΗ FLIP-FLOP ΚΑΙ ΚΑΤΑΧΩΡΗΤΗ ΟΛΙΣΘΗΣΗΣ 1. ΘΕΩΡΙΑ Data sheet, 74HC/HCT74, Dual D-type flip-flop with set and reset, positive-edge trigger, Philips Semiconductors. Data sheet, 74HC/HCT4015, Dual 4-bit serial-in/parallel-out shift register, Philips Semiconductors. «Σχεδίαση Ψηφιακών Συστημάτων με τη γλώσσα VHDL», Brown, Vranesic, 2η εκδ.: Flip-flops, Καταχωρητές, Μετρητές και ένας Απλός Επεξεργαστής, Κεφ. 7.8, σελ 464-467, Κεφ. 7.12.2 και Παραδείγματα 7.1, 7.2, 7.3, 7.4, 7.5, σελ 486-493, Παραδείγματα 7.7, 7.8, 7.9 σελ. 500-505. «Σχεδίαση Ψηφιακών Συστημάτων με τη γλώσσα VHDL», Brown, Vranesic, 3η εκδ.: Flip-flops, Καταχωρητές, Μετρητές και ένας Απλός Επεξεργαστής, Κεφ. 7.4, σελ 388-394, Κεφ. 7.8 σελ. 397 400 και Παραδείγματα 7.2, 7.3, 7.4, 7.5, σελ 416-418, Παραδείγματα 7.7, 7.8, 7.9 σελ. 424 428. ΕΡΓΑΣΤΗΡΙΑΚΟ ΜΕΡΟΣ 1. Συμπληρώστε τον πίνακα αλήθειας ενός D-flip-flop με ασύγχρονες εισόδους SET και RESET (active low) που ενεργοποιείται στην ανερχόμενη παρυφή του σήματος χρονισμού, όπως περιγράφεται στο data sheet του 74HC74 ή άλλου ισοδύναμου. SE T RESET CLK Q QNOT 4
2. Υλοποιείστε το flip-flop χρησιμοποιώντας τη γλώσσα VHDL. Κώδικας VHDL. 5
3. Προσομοιώστε το κύκλωμα που σχεδιάσατε ώστε να επαληθεύσετε πλήρως (για όλους τους δυνατούς συνδυασμούς των εισόδων) τον πίνακα αληθείας του. 4. Με χρήση του flip-flop του πρώτου βήματος σχεδιάστε έναν καταχωρητή ολίσθησης τεσσάρων ψηφίων ισοδύναμο με τον 74HC/HCT4015.(Πρέπει να θέσετε το SET σε σταθερή λογική τιμή) 1.1.1 Σχηματικό διάγραμμα καταχωρητή ολίσθησης 6
5. Περιγράψτε σε γλώσσα VHDL τη δομή του καταχωρητή ολίσθησης που σχεδιάσατε και προσομοιώστε πλήρως τη λειτουργία του. Κώδικας VHDL. 6. Περιγράψτε σε VHDL τη συμπεριφορά του καταχωρητή ολίσθησης του προηγούμενου ερωτήματος. Κώδικας VHDL. 7
8
ΑΣΚΗΣΗ 6 η ΣΧΕΔΙΑΣΗ ΚΥΚΛΩΜΑΤΟΣ ΣΥΓΧΡΟΝΟΥ ΑΘΡΟΙΣΤΗ ΜΕ ΑΝΑΤΡΟΦΟΔΟΤΗΣΗ ΘΕΩΡΙΑ Στο παρακάτω σχήμα δίνεται ένα κύκλωμα αθροιστή με ανατροφοδότηση της εξόδου του στη μία είσοδο. Το κύκλωμα αυτό, το οποίο χρησιμοποιείται πολύ συχνά σε συστήματα επεξεργασίας σημάτων, ήχου και εικόνας, ονομάζεται συσσωρευτής (accumulator) και εκμεταλλεύεται την επιμεριστική ιδιότητα της πρόσθεσης για να επιτύχει τον υπολογισμό αθροισμάτων με πολλούς όρους χρησιμοποιώντας έναν απλό αθροιστή δύο εισόδων. Για να εξασφαλιστεί η σωστή λειτουργία του συσσωρευτή οι καταχωρητές εισόδου ενεργοποιούνται στην ανερχόμενη παρυφή του σήματος χρονισμού clock ενώ ο καταχωρητής εξόδου στην κατερχόμενη. Έτσι σε κάθε παλμό ρολογιού προστίθεται ένας νέος όρος (data_in) στο μερικό άθροισμα που εμφανίζεται στην άλλη είσοδο (datab) του αθροιστή. GND Για τη σχεδίαση του συσσωρευτή χρησιμοποιήθηκαν δομικές μονάδες από αυτές που έχουν σχεδιαστεί σε προηγούμενες ασκήσεις με μικρές τροποποιήσεις όπου χρειάστηκε. Οι μονάδες (entities) που τον αποτελούν είναι ένας καταχωρητής που ενεργοποιείται στην ανερχόμενη παρυφή του σήματος χρονισμού (reg8), ένας καταχωρητής που ενεργοποιείται στην κατερχόμενη παρυφή του σήματος χρονισμού (reg8n) και ένας αθροιστής προσημασμένων αριθμών (adder8). Όλες οι μονάδες έχουν 8 δυαδικά ψηφία. Το σήμα reset των καταχωρητών είναι ενεργό σε χαμηλή στάθμη (active low). Η είσοδος κρατουμένου (cin) πρέπει να τεθεί σε λογικό μηδέν. Για να είναι δυνατή η χρήση της πράξης της πρόσθεσης πρέπει να συμπεριληφθεί στα προγράμματα και η βιβλιοθήκη arith με τη χρήση της εντολής USE ieee.std_logic_arith.all. Επίσης, για το μονοπάτι των δεδομένων (data-path) να χρησιμοποιηθούν προσημασμένοι αριθμοί, δηλαδή τα ports των entities και τα ενδιάμεσα σήματα να είναι τύπου signed.
ΕΡΓΑΣΤΗΡΙΑΚΟ ΜΕΡΟΣ 1.1. Να γραφεί κώδικας συμπεριφοράς και να εξομοιωθεί λειτουργικά κάθε μονάδα (functional simulation). Για κάθε μονάδα να δημιουργηθεί ξεχωριστό project αλλά όλα τα projects να βρίσκονται στο ίδιο directory. Να χρησιμοποιηθούν για τις εισόδους/εξόδους (ports) των μονάδων τα ονόματα που φαίνονται στο σχήμα. Κώδικας VHDL των μονάδων reg8, reg8n και adder8 10
1.2. Όταν ολοκληρωθεί επιτυχώς το πρώτο βήμα να γραφεί κώδικας για το σύγχρονο αθροιστή ο οποίος θα χρησιμοποιεί τις μονάδες (components) με την κατάλληλη διασύνδεση. Για τα εσωτερικά σήματα να χρησιμοποιηθούν τα ονόματα που φαίνονται στο σχήμα. Προσοχή το σήμα εξόδου πρέπει να είναι τύπου buffer γιατί χρησιμοποιείται και ως είσοδος μέσα στο κύκλωμα. Κώδικας VHDL του σύγχρονου αθροιστή 11
1.3. Να γίνει λειτουργική εξομοίωση του σύγχρονου αθροιστή δίνοντας τους κατάλληλους παλμούς και δεδομένα ώστε να υπολογιστεί το άθροισμα 1+2+3+4+5+... για 100 όρους. Για να παραχθεί το άθροισμα αυτό πρέπει το σήμα στην πρώτη είσοδο να είναι counter με περίοδο απαρίθμησης ίση με την περίοδο του σήματος χρονισμού (clock). 12
ΑΣΚΗΣΗ 7 η -8 η ΣΧΕΔΙΑΣΗ ΠΑΡΑΜΕΤΡΙΚΟΥ ΜΕΤΡΗΤΗ (COUNTER) ΚΑΙ ΑΠΕΙΚΟΝΙΣΗ ΣΕ FPGA 2. ΘΕΩΡΙΑ Data sheet, 74HC/HCT191, Presettable synchronous 4-bit binary up/down counter, Philips Semiconductors. «Σχεδίαση Ψηφιακών Συστημάτων με τη γλώσσα VHDL», Brown, Vranesic, 2η εκδ.: Flip-flops, Καταχωρητές, Μετρητές και ένας Απλός Επεξεργαστής, Κεφ. 7.9, σελ 467 480, και Παράγραφοι 7.10, 7.11, 7.12 σελ. 505 507. «Σχεδίαση Ψηφιακών Συστημάτων με τη γλώσσα VHDL», Brown, Vranesic, 3η εκδ.: Flip-flops, Καταχωρητές, Μετρητές και ένας Απλός Επεξεργαστής, Κεφ. 7.9, σελ 400 406, και Παραδείγματα 7.10, 7.11, 7.12 σελ. 428 430. ΕΡΓΑΣΤΗΡΙΑΚΟ ΜΕΡΟΣ 1. Σχεδιάστε και εξομοιώστε σε επίπεδο περιγραφής συμπεριφοράς (behavioral description) χρησιμοποιώντας τη γλώσσα VHDL έναν απαριθμητή, ο οποίος έχει τα βασικά χαρακτηριστικά του 74HC191 ή άλλου ισοδύναμου: α. Να είναι παραμετρικός ως προς τον αριθμό των ψηφίων β. Να ενεργοποιείται στην ανερχόμενη παρυφή του σήματος ρολογιού (CLOCK) γ. Να έχει δυνατότητα αύξουσας και φθίνουσας μέτρησης (up/down counting) με χρήση ενός σήματος ελέγχου UD. δ. Να διαθέτει σήμα επίτρεψης μέτρησης (count enable, CE). Όταν το σήμα CE γίνεται 1 σταματάει η μέτρηση. ε. Να έχει δυνατότητα ασύγχρονης φόρτωσης αρχικής τιμής με το σήμα ελέγχου LOAD. Όταν το LOAD είναι 0 φορτώνεται η επιθυμητή τιμή. ζ. Να διαθέτει έξοδο ripple carry (RC) η οποία να γίνεται 0 όταν ο απαριθμητής παίρνει τη μέγιστη δυνατή τιμή. 2.1.1.1 Πίνακας αλήθειας του απαριθμητή CE UD LOAD CLOCK DIN COUNT 13
Κώδικας VHDL. 14
2. Υλοποιήστε ένα διαιρέτη συχνότητας του σήματος χρονισμού clock του αναπτυξιακού ώστε να παράγεται ένα σήμα χρονισμού με συχνότητα μικρότερη από 5 Hz. Κώδικας VHDL. 15
3. Χρησιμοποιώντας ως components τον αποκωδικοποιητή της οθόνης 7 τμημάτων της άσκησης 2 και το διαιρέτη συχνότητας του προηγούμενου βήματος σχεδιάστε το κύκλωμα και υλοποιήστε τον απαριθμητή στο αναπτυξιακό σύστημα UP2. Διάγραμμα βαθμίδων Κώδικας VHDL. 16
ΑΣΚΗΣΗ 9 η -10 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΨΗΦΙΩΝ ΚΑΙ ΑΠΕΙΚΟΝΙΣΗ ΣΕ FPGA 2.1.1.2 ΘΕΩΡΙΑ Αντικείμενο της άσκησης είναι ο λογικός σχεδιασμός, η εξομοίωση και η απεικόνιση σε FPGA μίας αριθμητικής-λογικής μονάδας τεσσάρων δυαδικών ψηφίων (4-bit ALU). Το λογικό διάγραμμα και ο πίνακας αλήθειας των υπομονάδων που απαρτίζουν την ALU καθώς και της πλήρους ALU ενός ψηφίου δίνονται στα επόμενα σχήματα: MUX Σχ. 9.1 Λογική Μονάδα (Logic unit, LU) Full adder 17
Σχ. 9.2 Αριθμητική Μονάδα (Arithmetic Unit, AU) LU MUX AU Σχ. 9.3 Αριθμητική-Λογική Μονάδα (ALU) ενός ψηφίου 2.1.1.3 ΕΡΓΑΣΤΗΡΙΑΚΟ ΜΕΡΟΣ 1. Περιγράψτε σε επίπεδο συμπεριφοράς (behavioral model) με χρήση της VHDL και εξομοιώστε την αριθμητική και τη λογική μονάδα του ενός ψηφίου που δίνονται στα σχήματα 9.1 και 9.2. Κώδικας VHDL για την AU και την LU ενός ψηφίου. 18
2. Περιγράψτε σε VHDL την ALU ενός ψηφίου που δίνεται στο σχήμα 9.3. Χρησιμοποιείστε μικτή περιγραφή, επίπεδο δομής (structural model) για τη σύνδεση AU και LU και συμπεριφοράς για τον πολυπλέκτη (MUX) εξόδου. Κώδικας VHDL για την ALU ενός ψηφίου. 19
3. Με το στοιχείο της ALU του προηγούμενου ερωτήματος σχεδιάστε μία ALU τεσσάρων ψηφίων και περιγράψτε την δομικά σε VHDL. Σχηματικό διάγραμμα της ALU τεσσάρων ψηφίων 20
Κώδικας VHDL. 21
4. Εξομοιώστε την ALU τεσσάρων ψηφίων 5. Απεικονίστε την ALU τεσσάρων ψηφίων σε ένα FPGA τύπου FLEX10K τοποθετώντας τα σήματα εισόδου/εξόδου όπως φαίνεται στο παρακάτω σχήμα. A0 A1 A2 A3 B0 B1 B2 B3 Cin S0 ALU 4 ψηφίων Cout S1 22
S2 G0 G1 G2 G3 6. Τροποποιήστε τον κώδικα περιγραφής της ALU ώστε να εισαχθούν καταχωρητές στην είσοδο και την έξοδο των σημάτων της και επαναλάβατε τα βήματα 4 και 5. Σχηματικό διάγραμμα της ALU τεσσάρων ψηφίων με καταχωρητές εισόδου/εξόδου Κώδικας VHDL 23
24