Σχεδίαση Κυκλωμάτων με τη VHDL, 3η Έκδοση
Circuit Design with VHDL, Third Edition (τίτλος πρωτοτύπου)
Επιστημονική επιμέλεια: Θεοδωρίδης, Γεώργιος
Εξώφυλλο/εικαστικό: Θεοχάρη, Ιωάννα
Επιμέλεια κειμένου: Βρασσάς, Νικόλαος
Κυκλοφορεί
ISBN: 978-960-491-161-5
Παπασωτηρίου, Αθήνα, 12/2022
3η έκδ., Ελληνική, Νέα
€ 45.00 (περ. ΦΠΑ 6%)
Βιβλίο, Χαρτόδετο
24 x 17 εκ, 970 γρ, 592 σελ.
Αγγλικά (γλώσσα πρωτοτύπου)
Περιγραφή

Αυτή η συνολική πραγμάτευση της VHDL και των εφαρμογών της στη σχεδίαση και την προσομοίωση των πραγματικών, βιομηχανικού τύπου κυκλωμάτων έχει εξολοκλήρου ενσωματώσει τις νεότερες επιστημονικές εξελίξεις και έχει διευρυνθεί για τις ανάγκες της τρίτης έκδοσης. Νέες ενότητες περιλαμβάνουν όλες τις VHDL-2008 δομές, λεπτομερή επισκόπηση ψηφιακών κυκλωμάτων, RTL ανάλυση και μια απαράμιλλη συλλογή παραδειγμάτων και ασκήσεων της VHDL. Το βιβλίο εστιάζει περισσότερο στη χρήση της VHDL παρά αποκλειστικά στη γλώσσα, δίνοντας έμφαση στον σχεδίασμά παραδειγμάτων και στις εργαστηριακές ασκήσεις.
Η τρίτη έκδοση ξεκινά με μία λεπτομερή επισκόπηση των ψηφιακών κυκλωμάτων (συνδυαστικών, ακολουθιακών, μηχανών καταστάσεων, κυκλωμάτων FPGA), περιέχοντας έτσι μια αυτοτελή και απλή αναφορά για τη διδασκαλία της σχεδίασης ψηφιακών κυκλωμάτων με VHDL. Κατά την πραγμάτευση της VHDL-2008, κάνει μια σαφή διάκριση μεταξύ της VHDL για σύνθεση και της VHDL για προσομοίωση. Το κείμενο παρέχει παραδείγματα πλήρων κωδίκων VHDL, καθώς και αποτελέσματα προσομοίωσης και σχόλια. Το βιβλίο έχει εμπλουτιστεί με καινούρια παραδείγματα και ασκήσεις που δεν έχουν δημοσιευτεί προηγουμένως, με παρουσίαση πλούσιου υλικού που αποσκοπεί στο να εμπνεύσει και να παρακινήσει τους σπουδαστές.
Το βιβλίο ενδείκνυται για προπτυχιακούς και μεταπτυχιακούς φοιτητές στη VHDL και στον σχεδίασμά ψηφιακών κυκλωμάτων, αλλά μπορεί να χρησιμοποιηθεί και ως βιβλίο αναφοράς για επαγγελματίες που ασχολούνται με τη VHDL. Μπορεί επίσης να χρησιμεύσει ως κείμενο για διαδικτυακά μαθήματα από το σπίτι ή από το πανεπιστήμιο για κυκλώματα VLSI.
O Volnei A. Pedroni είναι επίτιμος διδάκτωρ στο Τμήμα Ηλεκτρονικών Μηχανικών του Ομοσπονδιακού Πανεπιστημίου Τεχνολογίας στη Βραζιλία (UTFRP), καθώς και τακτικός επισκέπτης καθηγητής του Τμήματος Ηλεκτρολόγων Μηχανικών στο Τεχνολογικό Ινστιτούτο της Καλιφόρνιας (Caltech), από το οποίο κατέχει μεταπτυχιακό και διδακτορικό δίπλωμα. Είναι συγγραφέας του Finite State Machines in Hardware: Theory and Design (with VHDL and SystemVerilog) (The MIT Press).

Ευχαριστίες  xvii
1 Επισκόπηση των Συνδυαστικών Κυκλωμάτων 1
1.1 Συνδυαστικά Κυκλώματα 1
1.2 Θεμελιώδεις Λογικές Πύλες 1
1.3 Δομές Τύπου Αλυσίδας έναντι Δομών Τύπου Δέντρου 3
1.4 Παραδείγματα Συνδυαστικών Λογικών Κυκλωμάτων 4
1.4.1 Πολυπλέκτης 4
1.4.2 Αποκωδικοποιητής Διεύθυνσης 5
1.4.3 Ανιχνευτής Ισοτιμίας 5
1.4.4 Κωδικοποιητής Προτεραιότητας 6
1.4.5 Μετατροπείς από Δυαδική Αναπαράσταση σε Αναπαράσταση BCD 7
1.5 Παραδείγματα Συνδυαστικών Αριθμητικών Κυκλωμάτων 9
1.5.1 Μονάδα Πλήρους Αθροιστή  10
1.5.2 Αθροιστής Ριπής Κρατούμενου 10
1.5.3 Πιο Γρήγοροι Αθροιστές (Αθροιστής Manchester, Αθροιστής με Πρόβλεψη Κρατούμενου και Δεντρικής Δομής Αθροιστής Kogge-Stone) 11
1.5.4 Συστοιχίες Αθροιστών  11
1.5.5 Αφαιρέτες 12
1.5.6 Κύκλωμα Αύξησης κατά 1, Ελάττωσης κατά 1, Μετατροπής σε Συμπλήρωμα ως προς το 2  13
1.5.7 Παράλληλος Πολλαπλασιαστής  14
1.5.8 Συγκριτές (Ισότητας και Μεγαλύτερος από/Ίσος με)  14
1.5.9 Αριθμητική και Λογική Μονάδα  15
1.6 Δυαδική Αριθμητική 16
1.6.1 Bit Κρατούμενου και Σημαία Υπερχείλισης 16
1.6.2 Αριθμητική Μη Προσημασμένων Ακεραίων  17
1.6.3 Αριθμητική Προσημασμένων Ακεραίων 18
1.6.4 Επέκταση, Αποκοπή, Στρογγυλοποίηση και Κορεσμός  20
1.6.5 Αριθμητική Κινητής Υποδιαστολής 24
2 Επισκόπηση των Ακολουθιακών Κυκλωμάτων 29
2.1 Ακολουθιακά Κυκλώματα  29
2.2 Μανδαλωτές  29
2.3 Φλιπ Φλοπ  31
2.4 Ανάλυση και Πρόληψη Μεταβατικού Παλμού 34
2.5 Αφαιρετικό Επίπεδο Μεταφοράς Περιεχομένου Καταχωρητών 35
2.6 Αρχικά Παραδείγματα Ακολουθιακών Κυκλωμάτων 36
2.6.1 Καταχωρητές Ολίσθησης 36
2.6.2 Σύγχρονος Μετρητής Modulo-2N 37
2.6.3 Σύγχρονοι Μετρητές Modulo-M  38
2.6.4 Ασύγχρονοι Μετρητές 38
2.6.5 Gray, Johnson, και Μετρητές Μοναδικού Σημαντικού 39
2.6.6 Γεννήτριες Σημάτων  41
2.6.7 Διαιρέτες Ρολογιού  41
2.6.8 Χρονόμετρα και Ακολουθιακοί Μετατροπείς από Δυαδικό σε BCD  42
2.6.9 Γραμμή με Προγραμματιζόμενες Βαθμίδες Καθυστέρησης  42
2.7 Διαίρεση Ρολογιού 42
2.7.1 Συνήθεις Περιπτώσεις Διαίρεσης Ρολογιού  42
2.7.2 Διαίρεση Ρολογιού από Οποιονδήποτε Ακέραιο με Συμμετρική Φάση  44
2.7.3 Το Κόστος της Διαίρεσης Ρολογιού με έναν Άρτιο Ακέραιο  44
2.7.4 Διάσπαση ενός Μεγάλου Διαιρέτη Ρολογιού σε Μικρότερους Σειριακά Συνδεδεμένους Διαιρέτες Ρολογιού 46
2.8 Πολλαπλασιασμός Ρολογιού και Κυκλώματα με Βρόχους Κλειδωμένων Φάσεων  47
2.9 Ασύγχρονα Δεδομένα και Συγχρονιστές  49
2.9.1 Διάβαση Τομέα Ρολογιού  49
2.9.2 Ένα Πρακτικό Παράδειγμα: Μετρητές Συχνότητας  51
2.9.3 Διαχείριση της Επαναφοράς ενός Καταχωρητή  52
2.10 Οδήγηση Ρολογιού μέσω Πύλης  53
2.11 Επιπλέον Παραδείγματα για Ακολουθιακά Κυκλώματα 54
2.11.1 Κυκλώματα Παραγωγής Μοναδικού Παλμού και Ανίχνευσης Παλμών. 54
2.11.2 Διακόπτες Αποκλυδωνισμού  55
2.11.3 Γεννήτριες Τιμών Αναφοράς  58
2.11.4 Διαμορφωτής Πλάτους Παλμού  58
2.11.5 Γεννήτριες Ψευδοτυχαίων Ακολουθιών  60
2.11.6 Ψηφιακά Φίλτρα Πεπερασμένης Κρουστικής Απόκρισης (Finite Impulse Response, FIR) 60
2.11.7 Ψηφιακά Φίλτρα Άπειρης Κρουστικής Απόκρισης (Infi nite Impulse Response, IIR)  63
2.11.8 Κυκλώματα Μετατροπής Παράλληλων Δεδομένων σε Σειριακά και το Αντίστροφο  65
3 Επισκόπηση των Μηχανών Πεπερασμένων Καταστάσεων 67
3.1 Μηχανές Πεπερασμένων Καταστάσεων (Finite State Machines, FSM) 67
3.2 Διάγραμμα Μετάβασης Κατάστασης και Τύποι Μηχανών  67
3.3 Αναπαράσταση έναντι Υλοποίησης  69
3.4 Μετατροπή από Moore σε Mealy και από Mealy σε Moore  70
3.5 Χρονική Συμπεριφορά των Μηχανών Moore έναντι των Mealy  71
3.6 Επιλογή ανάμεσα σε Μηχανές Moore και Mealy  73
3.7 Είδη Μεταβάσεων  74
3.8 Λάθη στα Διαγράμματα Καταστάσεων  75
3.9 Μηχανές με Ασφαλή Κατάσταση 78
3.10 Θεμελιώδεις Αρχιτεκτονικές για Υλοποίηση FSM σε Υλικό. 78
3.11 Στιλ Κωδικοποίησης 79
3.12 Θεμελιώδεις Τεχνικές Σχεδίασης για FSM  79
3.13 Κατηγορίες Μηχανών Καταστάσεων  81
3.14 Διαχείριση του Χρόνου  82
3.15 Διαχείριση των Επαναλαμβανόμενων Καταστάσεων  85
3.16 Υλοποίηση FSM με Χρήση Δεικτών 85
3.17 Διαχείριση της Αναδρομικότητας 86
3.18 Πλήθος Φλιπ Φλοπ σε Μηχανές Πεπερασμένων Καταστάσεων 88
3.19 Παραδείγματα Μηχανών Καταστάσεων από την Κατηγορία 1 (Τυπική)  88
3.19.1 Διαιτητής  88
3.19.2 Ελεγκτής για Πόρτα Γκαράζ 89
3.19.3 Ελεγκτής Διαδρομής Δεδομένων Κυκλώματος Υπολογισμού Μέγιστου Κοινού Διαιρέτη  90
3.20 Παραδείγματα Μηχανών Καταστάσεων Κατηγορίας 2 (Χρονικά Εξαρτώμενες) 93
3.20.1 Συναγερμός Αυτοκινήτου  93
3.20.2 Αποκωδικοποιητής Κωδικού Πρόσβασης  93
3.20.3 Σειριακή Διεπαφή Περιφερειακών για έναν Μετατροπέα από Αναλογικό σε Ψηφιακό Σήμα 95
3.21 Παραδείγματα Μηχανών Καταστάσεων Κατηγορίας 3 (Αναδρομικές)  96
3.21.1 Διεπαφή Μνήμης SRAM  97
3.21.2 Ελεγκτής Διαδρομής Δεδομένων για έναν Σειριακό Πολλαπλασιαστή  97
3.21.3 Προσδιορισμός Τιμής Αναφοράς με Ενσωματωμένα Κυκλώματα Αποκλυδωνισμού 99
4 Επισκόπηση των Επιτόπια Προγραμματιζόμενων Συστοιχιών Πυλών (Field-Programmable Gate Arrays, FPGAs) 101
4.1 Προγραμματιζόμενες Λογικές Διατάξεις 101
4.2 Μνήμες Διαμόρφωσης για PLD 104
4.3 Ολοκληρωμένα Κυκλώματα Τύπου PLA και PAL 104
4.4 Ολοκληρωμένα Κυκλώματα Τύπου GAL  105
4.5 Ολοκληρωμένα Κυκλώματα Τύπου CPLD  105
4.6 Ολοκληρωμένα Κυκλώματα Τύπου FPGA  107
5 Εισαγωγή στη VHDL 115
5.1 Σχετικά με τη VHDL  115
5.2 Μετάφραση Κώδικα VHDL σε Κύκλωμα 115
5.3 Ροή Σχεδίασης 117
5.4 Εμπορικά Εργαλεία για Χρήση της VHDL 119
5.5 Σχεδίαση σε Επίπεδο RTL  119
5.6 Ταυτόχρονες Εντολές έναντι Ακολουθιακών Εντολών 119
5.7 Λεξικολογικά Στοιχεία της VHDL 120
5.7.1 Σύμβολα Ανάθεσης  120
5.7.2 Σχόλια  120
5.7.3 Bit και Συμβολοσειρές από Bit 121
5.7.4 Ακέραιοι Αριθμοί  121
5.7.5 Χαρακτήρας και Συμβολοσειρές Χαρακτήρων  122
5.7.6 Αναγνωριστικά  122
5.7.7 Οριοθέτες 122
5.7.8 Δεσμευμένες Λέξεις στη VHDL  123
5.8 Επιλέγοντας Καλά Ονόματα για τον Σχεδιασμό 124
5.8.1 Ονοματίζοντας την Οντότητα του Σχεδιασμού  124
5.8.2 Ονοματίζοντας την Αρχιτεκτονική  124
5.8.3 Ονοματίζοντας Σταθερές 125
5.8.4 Ονοματίζοντας Σήματα και Μεταβλητές  125
5.8.5 Ονοματίζοντας Συναρτήσεις και Διαδικασίες  125
5.8.6 Ονοματίζοντας Τύπους Δεδομένων  126
5.8.7 Ονοματίζοντας Αρχεία  127
6 Δομή και Σύνθεση του Κώδικα129
6.1 Μονάδες Σχεδιασμού και Δομή του Κώδικα 129
6.2 Βιβλιοθήκες και Πακέτα 130
6.3 Λίστα Πακέτων  134
6.4 Δήλωση Οντότητας 135
6.5 Σώμα Αρχιτεκτονικής 138
6.6 Κλάσεις Αντικειμένων  138
6.6.1 Σταθερά  139
6.6.2 Σήμα  140
6.6.3 Μεταβλητή  141
6.6.4 Αρχείο (File)  142
6.7 Γενικευμένα Στοιχεία 143
6.8 Αντιστοίχιση Οντότητας με Αρχιτεκτονική 145
6.9 Εισαγωγικά Παραδείγματα με τη VHDL  146
7 Προκαθορισμένοι Τύποι Δεδομένων .153
7.1 Προκαθορισμένοι Τύποι Δεδομένων της VHDL 153
7.2 Κατηγορίες Τύπων Δεδομένων 154
7.3 Δηλώσεις Τύπων 156
7.4 Υποτύποι 158
7.5 Μία Σημείωση για τους Τελεστές και τις Ιδιότητες  159
7.6 Μελέτη Προκαθορισμένων Τύπων Δεδομένων 159
7.6.1 Βασικοί Τύποι 159
7.6.2 Τύποι Βασικής Λογικής  162
7.6.3 Προσημασμένοι και Μη Προσημασμένοι Τύποι  164
7.6.4 Τύποι Σταθερής Υποδιαστολής  166
7.6.5 Τύποι Κινητής Υποδιαστολής  168
7.6.6 Τύπος real  170
7.7 Τύποι Εγγραφής  172
7.8 Τύποι Προσπέλασης, Τύποι Αρχείου και Προστατευόμενοι Τύποι  173
7.9 Συγκέντρωση, Συνένωση και Αλλαγή Μεγέθους  174
7.9.1 Συγκέντρωση Δεδομένων. 174
7.9.2 Συνένωση Δεδομένων  175
7.9.3 Αλλαγή Μεγέθους Δεδομένων Τύπου Πίνακα  176
7.10 Μετατροπή Τύπου  179
7.10.1 Αυτόματη Μετατροπή 179
7.10.2 Αλλαγή Τύπου  180
7.10.3 Συναρτήσεις Μετατροπής Τύπου 180
7.10.4 Συναρτήσεις Μετατροπής των Τιμών 'L' και 'H' σε '0' και '1'  183
7.11 Εκφράσεις Πιστοποίησης Τύπου  184
7.12 Επιπλέον Παραδείγματα 184
7.13 Ασκήσεις 187
8 Τύποι Δεδομένων Ορισμένοι από τον Χρήστη .193
8.1 Επισκόπηση των Συνθέσιμων Προκαθορισμένων Τύπων 193
8.2 Τύποι Ορισμένοι από τον Χρήστη 193
8.2.1 Τύποι Ακεραίων Αριθμών  193
8.2.2 Τύποι Απαρίθμησης 195
8.2.3 Τύποι Πίνακα 195
8.3 Δημιουργία και Διευθυνσιοδότηση Τύπου Σύνθετου Πίνακα  196
8.3.1 Διαστάσεις Πινάκων  196
8.3.2 Προκαθορισμένοι Πίνακες 1D 197
8.3.3 Δημιουργία Πινάκων 1D × 1D  197
8.3.4 Δημιουργία Πινάκων 2D 198
8.3.5 Δημιουργία Πινάκων 1D × 1D × 1D  199
8.3.6 Δημιουργία Πινάκων 3D 199
8.4 Έλεγχος και Επαναφορά Δεδομένων Τύπου Πίνακα 200
8.4.1 Μηδενισμός Όλων των Στοιχείων του Πίνακα  200
8.4.2 Έλεγχος Ύπαρξης Μόνο Μηδενικών Τιμών σε Δεδομένα Τύπου Πίνακα 200
8.5 Κλασικά Λάθη στις Αναθέσεις  201
8.6 Επιπλέον Παραδείγματα 204
8.7 Ασκήσεις 208
9 Τελεστές και Ιδιότητες .213
9.1 Προκαθορισμένοι Τελεστές  213
9.1.1 Λογικοί Τελεστές 214
9.1.2 Αριθμητικοί Τελεστές  218
9.1.3 Τελεστές Σύγκρισης 223
9.1.4 Τελεστές Ολίσθησης  226
9.1.5 Τελεστής Συνένωσης  227
9.1.6 Τελεστής Ελέγχου Συνθήκης 228
9.2 Υπερφορτωμένοι Τελεστές Οριζόμενοι από τον Χρήστη  228
9.3 Προκαθορισμένες Ιδιότητες 229
9.3.1 Ιδιότητες Βαθμωτών Τύπων. 229
9.3.2 Ιδιότητες Τύπων και Αντικειμένων Κατηγορίας Πίνακα 230
9.3.3 Ιδιότητες Σημάτων 231
9.3.4 Ιδιότητες Ονοματισμένων Οντοτήτων 232
9.4 Ιδιότητες Οριζόμενες από τον Χρήστη  232
9.5 Ιδιότητες για τη Σύνθεση  234
9.5.1 Ιδιότητες Κωδικοποίησης Μηχανών Καταστάσεων 234
9.5.2 Ιδιότητες για Μηχανή με Ασφαλή Κατάσταση  235
9.5.3 Ιδιότητα Keep  236
9.5.4 Ιδιότητες Υλοποίησης Μνημών ROM και RAM 237
9.6 Δομή Group 237
9.7 Ψευδώνυμο 238
9.8 Ασκήσεις 239
10 Ταυτόχρονος Κώδικας 243
10.1 Ταυτόχρονες Εντολές 243
10.2 Η Εντολή when 246
10.3 H Εντολή select 248
10.4 Η Εντολή generate  249
10.5 Εντολές Δημιουργίας Στιγμιότυπου Συστατικού Στοιχείου 252
10.5.1 Στιγμιότυπο Συστατικού Στοιχείου  252
10.5.2 Στιγμιότυπο Οντότητας Σχεδιασμού  253
10.6 Αποφεύγοντας Πολλαπλές Αναθέσεις στο Ίδιο Σήμα  256
10.7 Προτεινόμενες Προσεγγίσεις για Αριθμητικά Κυκλώματα 258
10.8 Επιπλέον Παραδείγματα και Ασκήσεις  264
11 Ταυτόχρονος Κώδικας: Εξάσκηση .265
11.1 Επιπλέον Παραδείγματα Σχεδιασμών με Χρήση Σύγχρονου Κώδικα 265
11.2 Ασκήσεις 273
Σημειώσεις σχετικά με τις παρακάτω ασκήσεις:  273
Μέρος 1: Συνδυαστικά Λογικά Κυκλώματα. 273
Μέρος 2: Συνδυαστικά Αριθμητικά Κυκλώματα 277
Μέρος 3: Κυκλώματα με Χρήση Στιγμιότυπων Συστατικών Στοιχείων (Κώδικας σε Επίπεδο Δομής) 281
12 Ακολουθιακός Κώδικας 283
12.1 Ταυτόχρονος Κώδικας έναντι Ακολουθιακού Κώδικα 283
12.2 Ανίχνευση Μεταβάσεων Ρολογιού: clk'event ή rising_edge(clk); 284
12.3 Η Εντολή process 285
12.4 Η Εντολή if  288
12.5 Η Εντολή case 292
12.6 Η Εντολή wait  294
12.7 Η Εντολή loop 295
12.8 Οι Ακολουθιακές Εντολές when και select 297
12.9 Σήμα έναντι Μεταβλητής 298
12.10 Περισσότερα για τον Κανόνα Ενημέρωσης Σημάτων και Μεταβλητών 302
12.11 Περισσότερα για τον Κανόνα Συναγωγής Φλιπ Φλοπ 307
12.12 Το Πρόβλημα των Συνδυαστικών Βρόχων  312
12.13 Επιπλέον Παραδείγματα και Ασκήσεις  314
13 Ακολουθιακός Κώδικας: Εξάσκηση .315
13.1 Επιπλέον Παραδείγματα Σχεδιασμών με Χρήση Ακολουθιακού Κώδικα 315
13.2 Ασκήσεις 325
Μέρος 1: Σήμα έναντι Μεταβλητής 326
Μέρος 2: Συνδυαστικά Κυκλώματα  329
Μέρος 3: Μετρητές και Διαιρέτες Ρολογιού 330
Μέρος 4: Χρονόμετρα και Συναφή Κυκλώματα  332
Μέρος 5: Συγχρονισμός  337
Μέρος 6: Ολισθητές 339
Μέρος 7: Ελεγκτές 340
Μέρος 8: Σειριακά Αριθμητικά Κυκλώματα  343
Μέρος 9: Φίλτρα 346
Μέρος 10: Με Στιγμιότυπο Συστατικού Στοιχείου (Κώδικας σε Επίπεδο Δομής)  347
14 Πακέτα και Υποπρογράμματα 349
14.1 Πακέτο  349
14.2 Πακέτο με Γενικευμένα Στοιχεία  351
14.3 Συνάρτηση  353
14.4 Διαδικασία  359
14.5 Συνάρτηση έναντι Διαδικασίας – Περίληψη  363
14.6 Υποπρόγραμμα με Λίστα Γενικευμένων Στοιχείων και Λίστα Γενικευμένων Στοιχείων με Υποπρόγραμμα 364
14.7 Υπερφόρτωση Υποπρογραμμάτων 366
14.8 Οι Εντολές Assert και Report 367
14.9 Ασκήσεις 369
15 H Περίπτωση των Μηχανών Καταστάσεων .373
15.1 Η Προσέγγιση της Μηχανής Πεπερασμένων Καταστάσεων (FSM) 373
15.2 Στιλ Κωδικοποίησης Καταστάσεων 375
15.3 VHDL για Τυπικές (Κατηγορία 1) Μηχανές Καταστάσεων  375
15.3.1 Αρχιτεκτονικές Υλικού για Τυπικές Μηχανές Καταστάσεων 376
15.3.2 Απλή Μετατροπή από Moore σε Mealy  376
15.3.3 Πρότυπα VHDL για Τυπικές Μηχανές Καταστάσεων  378
15.4 VHDL για Χρονικά Εξαρτώμενες Μηχανές Καταστάσεων (Κατηγορία 2)  388
15.4.1 Αρχιτεκτονική Υλικού για Χρονισμένες Μηχανές Καταστάσεων  388
15.4.2 Πρότυπα VHDL Χρονικά Εξαρτώμενων Μηχανών Καταστάσεων  389
15.5 VHDL για Αναδρομικές Μηχανές Καταστάσεων (Κατηγορία 3) 396
15.5.1 Αρχιτεκτονικές Υλικού για Αναδρομικές Μηχανές Καταστάσεων 396
15.5.2 Πρότυπα VHDL για Αναδρομικές Μηχανές Καταστάσεων  396
15.6 Συνοψίζοντας και Απλοποιώντας 403
15.7 Ασκήσεις 404
16 Η Περίπτωση των Μηχανών Καταστάσεων: Πρακτική Εξάσκηση 407
16.1 Παραδείγματα Σχεδιασμού Τυπικών Μηχανών Καταστάσεων (Κατηγορία 1)  407
16.2 Παραδείγματα Σχεδιασμού Χρονικά Εξαρτώμενων Μηχανών Καταστάσεων (Κατηγορία 2)  411
16.3 Παραδείγματα Σχεδιασμού Αναδρομικών Μηχανών Καταστάσεων (Κατηγορία 3) 416
16.4 Ασκήσεις 420
Μέρος 1: Ασκήσεις με Τυπικές FSM 420
Μέρος 2: Ασκήσεις με Χρονισμένες FSM 422
Μέρος 3: Ασκήσεις με Αναδρομικές FSM 425
16.5 Ασκήσεις με Κυκλώματα Διασύνδεσης για Κυκλώματα SPI, I2C, και LCD  426
17 Επιπλέον Παραδείγματα Σχεδιασμού 427
17.1 Επιπλέον Παραδείγματα Σχεδιασμού  427
Παράδειγμα 17.1 Διασύνδεση διεπαφής SPI με FSM για μία μνήμη EEPROM  428
17.2 Ασκήσεις 468
Μέρος 1: Ασκήσεις με το Πρωτόκολλο SPI  468
Μέρος 2: Ασκήσεις με το Πρωτόκολλο I2C 468
Μέρος 3: Ασκήσεις με Οθόνη LCD Απεικόνισης Αλφαριθμητικών 471
Μέρος 4: Ασκήσεις με Κύκλωμα Οδήγησης VGA για Βίντεο  471
Μέρος 5: Ασκήσεις με το Πρωτόκολλο SPI  473
18 Εισαγωγή στην Προσομοίωση με Κώδικες Δοκιμής 475
18.1 Κώδικες Δοκιμής  475
18.2 Διαχείριση του Χρόνου στη VHDL  476
18.3 Γεννήτρια Ερεθισμάτων 478
18.4 Πλήρεις Κώδικες Δοκιμής  482
18.5 Πρακτικές Θεωρήσεις για Προσομοιώσεις Λειτουργίας και Χρονισμού  489
18.6 Διαχείριση των Αρχείων Δεδομένων  490
18.7 Εκτέλεση Προσομοιώσεων με τη Χρήση Αρχείων με Σενάρια Tcl  495
18.8 Ασκήσεις 495
19 Πληροφορίες Αναφοράς .497
19.1 Εκπαιδευτικό Υλικό για το Vivado  497
19.1.1 Εισαγωγή  497
19.1.2 Δημιουργία Καινούριου Έργου 497
19.1.3 Εισαγωγή και Δοκιμή του Αρχείου Σχεδιασμού  499
19.1.4 Εκτέλεση Προσομοίωσης σε Επίπεδο Συμπεριφοράς με Κώδικα Δοκιμής 499
19.1.5 Εξομοίωση σε Επίπεδο Συμπεριφοράς με Σενάριο Tcl 503
19.1.6 Σύνθεση του Σχεδιασμού 504
19.1.7 Υλοποίηση του Σχεδιασμού 505
19.1.8 Εκτέλεση Λειτουργικής Προσομοίωσης με Χρήση του Κώδικα Δοκιμής  505
19.1.9 Εκτέλεση Λειτουργικής Προσομοίωσης με Χρήση του Σεναρίου Tcl  506
19.1.10 Εκτέλεση Προσομοίωσης Χρονισμού με τη Χρήση του Κώδικα Δοκιμής 506
19.1.11 Ανάθεση Ακροδεκτών 506
19.1.12 Προγραμματισμός του FPGA 507
19.1.13 Μερικές Σημαντικές Εντολές Tcl για το Vivado  507
19.2 Εκπαιδευτικό Βοήθημα για το Quartus Prime  508
19.2.1 Εισαγωγή  508
19.2.2 Σύνθεση του Κυκλώματος 509
19.2.3 Έλεγχος Αποτελεσμάτων της Σύνθεσης  510
19.2.4 Προσομοίωση του Κυκλώματος  512
19.2.5 Ανάθεση Ακροδεκτών  515
19.2.6 Προγραμματίζοντας το FPGA 516
19.2.7 Ερμηνεύοντας τις Εξισώσεις της Υλοποίησης  517
19.3 Εκπαιδευτικό Υλικό για το ModelSim  517
19.3.1 Εισαγωγή  517
19.3.2 Δημιουργία Έργου 518
19.3.3 Εκτέλεση Προσομοίωσης Λειτουργίας με Κώδικα Δοκιμής 520
19.3.4 Εκτέλεση Προσομοίωσης Χρονισμού με Κώδικα Δοκιμής  522
19.3.5 Εκτέλεση Προσομοίωσης Λειτουργίας με Σενάριο Tcl 522
19.3.6 Εκτέλεση Προσομοίωσης Χρονισμού με Σενάριο Tcl  523
19.3.7 Χρήση Σημείων Διακοπής  524
19.3.8 Μερικές Σημαντικές Εντολές Tcl για το ModelSim  524
19.4 Ανάλυση Προσομοίωσης και Συστάσεις  525
19.4.1 Συστάσεις Προσομοίωσης 525
19.4.2 Οι Μεταβατικοί Παλμοί σε Συνδυαστικά Κυκλώματα (Έξοδος του Ενός Bit)  526
19.4.3 Οι Μεταβατικοί Παλμοί σε Σήματα Πολλαπλών Bit  526
19.5 Χρησιμοποιώντας Μία Οθόνη Επτά Τμημάτων με τη VHDL  526
Επιλογή 1: Με ταυτόχρονο κώδικα (εντολή select)  527
Επιλογή 2 (προτιμώμενη): Με ακολουθιακό κώδικα (εντολή case μέσα σε συνάρτηση) 528
19.6 Σειριακή Διεπαφή Περιφερειακών 529
19.6.1 Δομή Διαύλου SPI  529
19.6.2 Λειτουργία Διαύλου SPI  530
19.6.3 Παράδειγμα: Διεπαφή SPI για ένα Τσιπ FRAM (Σιδηροηλεκτρική RAM) 531
19.7 Διεπαφή I2C  532
19.7.1 Δομή του Διαύλου I2C 532
19.7.2 Λειτουργία Διαύλου I2C  533
19.7.3 Παράδειγμα: Διεπαφή I2C για έναν Μετατροπέα από Αναλογικό σε Ψηφιακό Σήμα 534
19.8 Οθόνη Υγρών Κρυστάλλων Απεικόνισης Αλφαριθμητικών  536
19.8.1 Οθόνη LCD για Απεικόνιση Αλφαριθμητικών  536
19.8.2 Ακροδέκτες της Οθόνης 536
19.8.3 Σύνολο Εντολών  537
19.8.4 Γεννήτρια Χαρακτήρων ROM 537
19.8.5 Αρχικοποίηση του Μικροελεγκτή με Εντολές 537
19.8.6 Τυπική Δομή FSM για Κυκλώματα Οδήγησης Οθόνης LCD Απεικόνισης Αλφαριθμητικών 540
19.9 Διεπαφή VGA για Βίντεο 540
19.9.1 Διεπαφή VGA  540
19.9.2 Γενική Αρχιτεκτονική Διεπαφής VGA  541
19.9.3 Συζευκτήρας VGA 542
19.9.4 Δομή των Σημάτων Ελέγχου 542
19.10 Διεπαφή DVI για Βίντεο 543
19.10.1 Διεπαφή DVI  543
19.10.2 Γενική Αρχιτεκτονική για Διεπαφή DVI 544
19.10.3 Πομπός TMDS  545
19.10.4 Συζευκτήρας DVI  545
19.11 Σύνδεση TMDS  547
19.11.1 Σύνδεση TMDS  547
19.11.2 Αλγόριθμος Κωδικοποίησης TMDS  548
19.11.3 Ακροδέκτες CML 550
19.12 Χρήση Βρόχων Κλειδωμένης Φάσης με τη VHDL 551
19.12.1 Δημιουργία Στιγμιοτύπου PLL με το Vivado  551
19.12.2 Δημιουργία Στιγμιοτύπου PLL με το Quartus Prime  554
19.13 Λίστα Απαριθμημένων Παραδειγμάτων και Ασκήσεων  557
Βιβλιογραφία 565
Ευρετήριο 567