Υλοποίηση μικροεπεξεργαστή σε περιβάλλον FPGA

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Υλοποίηση μικροεπεξεργαστή σε περιβάλλον FPGA"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Υλοποίηση μικροεπεξεργαστή σε περιβάλλον FPGA Παναγιώτης Μουσουλιώτης Επιβλέπων Αν. Καθηγητής Λουκάς Πέτρου Νοέμβριος 2

2 Στην οικογένειά μου, που με στηρίζει όλα αυτά τα χρόνια Στον jimi, που έφυγε νωρίς

3 Περιεχόμενα Εισαγωγή iv Κεφάλαιο FPGAs - Field Programmable Gate Arrays. Γενικά.2 Δομή Λειτουργία 2.2. Τεχνολογία βασισμένη σε SRAM-στοιχεία Μία απλή προγραμματιζόμενη λογική συνάρτηση Τα προγραμματιζόμενα λογικά μπλοκ των πρώτων FPGAs Βασική δομή και κοινά χαρακτηριστικά των σημερινών SRAM-based FPGAs CLBs, Slices και LCs Αρχιτεκτονική διασύνδεσης Ενσωματωμένα χαρακτηριστικά Μπλοκ RAM, Πολλαπλασιαστές, Αθροιστές Δέντρα ρολογιού Clock trees και DCMs (Digital Clock Managers) Μπλοκ εισόδων/εξόδων είσοδοι/έξοδοι γενικής χρήσης Πρόσθετα χαρακτηριστικά Gigabit transceivers και Ενσωματωμένοι επεξεργαστές.3 Προγραμματισμός-διαμόρφωση (configuration) των SRAM-based FPGAs 7.3. Οργάνωση των προγραμματιζόμενων SRAM-στοιχείων μνήμης στο FPGA Μέθοδοι προγραμματισμού Configuration modes 8 6 Κεφάλαιο 2 Περιγραφή ψηφιακών κυκλωμάτων με την γλώσσα VHDL Γενικά Λογική σύνθεση Επίπεδα αφαίρεσης 25 i

4 2.4 Περιγραφή συνδυαστικών ψηφιακών κυκλωμάτων Δηλώσεις απλής ανάθεσης (Simple assignment statements) Σύνθετες δηλώσεις Ανάθεση μέσω σήματος επιλογής (Selected signal assignment) Ανάθεση μέσω σήματος συνθήκης (Conditional signal assignment) Δηλώσεις ακολουθιακής ανάθεσης Περιγραφή σύγχρονων ακολουθιακών ψηφιακών κυκλωμάτων Flip-flop και καταχωρητές Καταχωρητές ολίσθησης και απαριθμητές Μηχανές πεπερασμένων καταστάσεων Περιγραφή ψηφιακών κυκλωμάτων με την χρήση υποκυκλωμάτων Περιγραφή ψηφιακών κυκλωμάτων με την χρήση επαναληπτικών δηλώσεων 2.7. for generate for loop Κεφάλαιο 3 Η αρχιτεκτονική του μικροεπεξεργαστή ASM 5 3. ASM AVR-like Soft Microprocessor Ο Μικροελεγκτής AVR Η αρχιτεκτονική του μικροελεγκτή AVR Το σύνολο εντολών του ASM Κωδικοποίηση του συνόλου εντολών του ASM Υλοποίηση των εντολών του ASM ASM_ Υλοποίηση Αριθμητικών, Λογικών και Επιπέδου bit εντολών ASM_2 Forwarding στον ASM_ ASM_3 Τροποποίηση του ASM_2 Υλοποίηση εντολών Μεταφοράς Δεδομένων ASM και ASMA Υλοποίηση ολόκληρου του συνόλου εντολών ASM ASMA ASM's Assembler ii

5 Κεφάλαιο 4 Υλοποίηση του ASM στο Xilinx Virtex-II Pro TM Evaluation Kit της εταιρείας Avnet Το Xilinx Virtex-II Pro TM Evaluation Kit της εταιρείας Avnet Λογισμικό Σχεδίασης (Design Entry), Σύνθεσης (Synthesis), Προσομοίωσης (Simulation), Υλοποίησης (Implementation) και Προγραμματισμού Συσκευών (Device Programming) 4.3 Διάγραμμα Ροής Σχεδίασης με FPGA (FPGA Design Flow) Σχεδίαση (Design Entry) Προσομοίωση Συμπεριφοράς-Λειτουργίας (Behavioral Simulation) Σύνθεση (Synthesis) Περιορισμοί (Constraints) Υλοποίηση (Implementation) Προγραμματισμός Συσκευής (Device Programming) 4 98 Συμπεράσματα 44 Παράρτημα Α Κώδικας VHDL του ASM 46 Παράρτημα Β Κώδικας JAVA του ASMA 82 Βιβλιογραφία 9 iii

6 Εισαγωγή Η παρούσα διπλωματική εργασία αποτελεί μία απόπειρα γεφύρωσης του χάσματος που υφίσταται μεταξύ της ψηφιακής σχεδίασης και της αρχιτεκτονικής υπολογιστών. Προγραμματιζόμενα ψηφιακά κυκλώματα, όπως τα FPGAs, και το λογισμικό σχεδίασης που τα συνοδεύουν παρέχουν την δυνατότητα πρακτικής προσέγγισης της αρχιτεκτονικής υπολογιστών με την χρήση σύγχρονων μεθόδων ψηφιακής σχεδίασης. Στο Κεφάλαιο γίνεται μία συνοπτική παρουσίαση της αρχιτεκτονικής των FPGAs, η οποία αποτελεί το πρώτο βήμα για την διαδικασία σχεδίασης. Το Κεφάλαιο 2 ασχολείται με την γλώσσα περιγραφής υλικού VHDL και παρουσιάζεται, μέσω παραδειγμάτων, η χρήση της για την σχεδίαση βασικών ψηφιακών κυκλωμάτων. Στο Κεφάλαιο 3 παρουσιάζεται η σταδιακή υλοποίηση ενός υποσυνόλου του συνόλου εντολών του μικροελεγκτή AVR, με αποτέλεσμα τον μικροεπεξεργαστή ASM, ο οποίος περιγράφεται σε RTL επίπεδο με την γλώσσα VHDL. Ο ASM συνοδεύεται από έναν συμβολομεταφραστή γραμμένο σε JAVA τον ASMA. Το Κεφάλαιο 4 ασχολείται με την υλοποίηση του ASM στην πλακέτα Virtex-II Pro Evaluation. Θα ήθελα να ευχαριστήσω τον Μπάμπη Σερένη για τις συμβουλές του κατά την συγγραφή του συμβολομεταφραστή ASMA. Τέλος θα ήθελα να ευχαριστήσω θερμά τον κ. Λουκά Πέτρου για την ευκαιρία που μου έδωσε να ασχοληθώ με το παρόν θέμα, για τις συμβουλές και την βοήθειά του. Θεσσαλονίκη 2 Παναγιώτης Μουσουλιώτης iv

7 Κεφάλαιο FPGAs - Field Programmable Gate Arrays. Γενικά Τα FPGAs είναι ψηφιακά ολοκληρωμένα κυκλώματα τα οποία περιέχουν προγραμματιζόμενα μπλοκ ψηφιακής λογικής []. Αυτά τα μπλοκ συνδέονται μεταξύ τους με την βοήθεια προγραμματιζόμενων διασυνδέσεων. Στο Σχήμα.- φαίνεται η κάτοψη μίας γενικής αρχιτεκτονικής FPGA. Σχήμα.- Κάτοψη γενικής αρχιτεκτονικής FPGA Η διάταξη των προγραμματιζόμενων λογικών μπλοκ έχει κανονική μορφή, όμοια με αυτήν ενός διδιάστατου πίνακα [2]. Σε ένα κανάλι διασύνδεσης υπάρχει ένας αριθμός αγωγών διασύνδεσης. Οι αγωγοί διασύνδεσης διατρέχουν οριζόντια και κάθετα το ολοκληρωμένο διασυνδέοντας, μέσω των προγραμματιζόμενων διασυνδέσεων, τα προγραμματιζόμενα λογικά μπλοκ. Με αυτόν τον τρόπο γίνεται δυνατή η υλοποίηση πολυεπίπεδων λογικών συναρτήσεων. Τα μπλοκ εισόδων/εξόδων, τα οποία σχετίζονται με τους ακροδέκτες εισόδου/εξόδου του ολοκληρωμένου, συνδέονται με τα προγραμματιζόμενα λογικά μπλοκ με αγωγούς διασύνδεσης, μέσω προγραμματιζόμενων διασυνδέσεων. Το τμήμα Field Programmable της ονομασίας τους αναφέρεται στο ότι αυτά τα ολοκληρωμένα προγραμματίζονται στο πεδίο εφαρμογής τους []. Οι εταιρείες κατασκευής των FPGAs υλοποιούν τα ολοκληρωμένα έτσι ώστε να έχουν την ιδιότητα να προγραμματίζονται (προγραμματιζόμενα λογικά μπλοκ, προγραμματιζόμενες διασυνδέσεις κ.λπ.) από τον τελικό χρήστη. Η λειτουργία που θα επιτελείται από το ολοκληρωμένο καθορίζεται από τον τελικό χρήστη, ο οποίος επιλέγει τις λογικές συναρτήσεις που θα υλοποιούν τα προγραμματιζόμενα λογικά μπλοκ, τις μεταξύ τους διασυνδέσεις και τις διασυνδέσεις των μπλοκ εισόδων/εξόδων με τα προγραμματιζόμενα λογικά μπλοκ. Η επιλογή αυτή λέγεται προγραμματισμός του FPGA και γίνεται με την βοήθεια λογισμικού και υλικού που παρέχουν οι εταιρείες κατασκευής των FPGAs. Η ύπαρξη των FPGAs οφείλεται στο κενό που παρατηρήθηκε ότι υπάρχει στο φάσμα των ψηφιακών ολοκληρωμένων κυκλωμάτων στις αρχές της δεκαετίας του '9 []. Από την μία πλευρά

8 υπήρχαν τα PLDs (Programmable Logic Devices), τα οποία ήταν σε πολύ μεγάλο βαθμό προγραμματιζόμενα και απαιτούσαν πολύ μικρούς χρόνους σχεδίασης (όσον αφορά την διαδικασία σχεδίαση προγραμματισμός έλεγχος διορθώσεις επαναπρογραμματισμός) αλλά αδυνατούσαν να υλοποιήσουν πολύ μεγάλες ή και πολύπλοκες λογικές συναρτήσεις. Από την άλλη πλευρά ήταν τα ASICs (Application-Specific Integrated Circuits), τα οποία μπορούσαν να υλοποιήσουν πολύ μεγάλες και πολύπλοκες λογικές συναρτήσεις αλλά ο χρόνος και το κόστος σχεδίασής τους ήταν εξαιρετικά μεγάλα. Επίσης στα ASICs η τελική σχεδίαση είναι παγωμένη στο πυρίτιο. Για να καλυφθεί αυτό το κενό στο φάσμα των ψηφιακών ολοκληρωμένων κυκλωμάτων η εταιρεία Xilinx ανέπτυξε μία νέα κατηγορία ψηφιακών ολοκληρωμένων κυκλωμάτων, τα FPGAs, τα οποία πρωτοεμφανίστηκαν στην αγορά το 984 []..2 Δομή Λειτουργία Αν και χρησιμοποιούνται πολλές τεχνολογίες για την υλοποίηση των FPGAs (π.χ. Antifuse, E2PROM, FLASH, SRAM) [], θα γίνει αναφορά μόνο στην υλοποίηση με την χρήση SRAM προγραμματιζόμενων στοιχείων (SRAM-based programmable cells), γιατί αυτή χρησιμοποιείται ως επί το πλείστο στις τυπικές εφαρμογές και γιατί η αρχιτεκτονική των FPGAs είναι, σε μεγάλο βαθμό, ανεξάρτητη από την τεχνολογία υλοποίησης. Αξίζει να σημειωθεί ότι οι δύο κυρίαρχες τεχνολογίες είναι η Antifuse και η SRAM [3]. Η κύρια διαφορά αυτών των δύο τεχνολογιών είναι ότι η Antifuse, σε αντίθεση με την SRAM, είναι OTP (One Time Programmable) []. Το γεγονός αυτό καθώς και η ανοσία που παρουσιάζει σε φαινόμενα ακτινοβολίας [], καθιστούν την τεχνολογία Antifuse κατάλληλη για στρατιωτικές και διαστημικές εφαρμογές..2. Τεχνολογία βασισμένη σε SRAM-στοιχεία Το SRAM-στοιχείο μνήμης, το οποίο χρησιμοποιείται ως δομικό στοιχείο των μνημών SRAM [2], φαίνεται στο Σχήμα.2.-. Αυτό το στοιχείο μνήμης μπορεί να αποθηκεύσει πληροφορία του ενός bit. Για να εισαχθεί πληροφορία στο SRAM-στοιχείο μνήμης θα πρέπει να ενεργοποιηθεί η γραμμή Word line για ένα ορισμένο χρονικό διάστημα, τέτοιο ώστε η τιμή που βρίσκεται στην γραμμή Bit line να προλάβει να διαδοθεί μέσω των δύο αντιστροφέων που ορίζουν τον βρόχο [2]. Σχήμα.2.- Ένα SRAM-στοιχείο μνήμης και η (ισοδύναμη) υλοποίηση με τρανζίστορ Η αποθηκευμένη τιμή θα παραμείνει στον βρόχο για πάντα, δεδομένου της αδιάλειπτης τροφοδοσίας, εκτός και εάν αντικατασταθεί από μία νέα τιμή, η οποία θα εισαχθεί στον βρόχο των δύο αντιστροφέων με τον τρόπο που περιγράφηκε παραπάνω. Όταν η τροφοδοσία διακοπεί, 2

9 η τιμή του SRAM-στοιχείου μνήμης χάνεται. [Στο Σχήμα.2.- ο αντιστροφέας της ανάδρασης είναι μικρότερος από τον προηγούμενο. Ο μικρός αντιστροφέας κατασκευάζεται χρησιμοποιώντας μικρά (ασθενή) τρανζίστορ, έτσι ώστε η έξοδός του να μπορεί να υποσκελιστεί από τα νέα δεδομένα [2].] Ένα SRAM-στοιχείο διασύνδεσης (pass-transistor switch ή SRAM switch) αποτελείται από ένα SRAM-στοιχείο μνήμης και ένα τρανζίστορ (pass-transistor) [2], [4]. Η τιμή που αποθηκεύεται στο SRAM-στοιχείο μνήμης οδηγεί την πύλη του pass-transistor. Έτσι αναλόγως της τιμής που έχει αποθηκευτεί στο SRAM-στοιχείο μνήμης το pass-transistor λειτουργεί ως ανοικτός ή κλειστός διακόπτης. Στο Σχήμα.2.-2 φαίνεται ένα SRAM-στοιχείο διασύνδεσης. Σχήμα.2.-2 Ένα SRAM-στοιχείο διασύνδεσης (SRAM switch) Γενικά η χρήση της τεχνολογίας SRAM έχει κάποια μειονεκτήματα και κάποια πλεονεκτήματα. Το SRAM-στοιχείο διασύνδεσης καταλαμβάνει μεγάλο χώρο στην επιφάνεια του ολοκληρωμένου γιατί αποτελείται από 6 τρανζίστορ (5 για το SRAM-στοιχείο μνήμης και για pass-transistor) [4]. Τα SRAM-στοιχεία μνήμης μπορούν όμως να χρησιμοποιηθούν ως latches, flip-flop ή ακόμα και ως μνήμη διανεμημένη μέσα στο ολοκληρωμένο []. Επειδή τα περιεχόμενα των SRAM-στοιχείων μνήμης χάνονται όταν διακοπεί η τροφοδοσία, το FPGA θα πρέπει να προγραμματίζεται κάθε φορά που του παρέχεται τροφοδοσία. Βέβαια, με την βοήθεια μίας εξωτερικής μνήμης E 2PROM ή FLASH, η οποία κρατάει μόνιμα το επιθυμητό πρόγραμμα, η διαδικασία προγραμματισμού του FPGA (αφού προγραμματιστεί η εξωτερική μνήμη) διαρκεί περίπου με 2 δευτερόλεπτα, δίνοντας την αίσθηση ότι το FPGA είναι μόνιμα προγραμματισμένο. Γενικά ένα SRAM-based FPGA μπορεί να προγραμματίζεται σχετικά γρήγορα και επαναλαμβανόμενα, γεγονός που το καθιστά ελκυστικό για την σχεδίαση νέων εφαρμογών, όπου απαιτούνται επαναλαμβανόμενες δοκιμές και διορθώσεις..2.2 Μία απλή προγραμματιζόμενη λογική συνάρτηση Για να γίνει κατανοητό πώς το SRAM-στοιχείο μνήμης προσφέρει στο FPGA την ιδιότητα του προγραμματιζόμενου ολοκληρωμένου, εξετάζεται μια απλή προγραμματιζόμενη λογική συνάρτηση, η οποία φαίνεται στο Σχήμα

10 Σχήμα.2.2- Μια απλή προγραμματιζόμενη λογική συνάρτηση Στο πιο πάνω σχήμα, θεωρώντας ότι αποθηκεύοντας τη λογική τιμή '' στο SRAM-στοιχείο μνήμης του SRAM-στοιχείου διασύνδεσης (SRAM switch), τότε αυτό καθίσταται αγώγιμο, ή αποθηκεύοντας τη λογική τιμή '', καθίσταται μη αγώγιμο, δημιουργούνται οι προϋποθέσεις για μία απλή προγραμματιζόμενη λογική συνάρτηση []. Για παράδειγμα προγραμματίζοντας το πρώτο, μετρώντας από πάνω προς τα κάτω, και το τελευταίο SRAM-στοιχείο διασύνδεσης με τη λογική τιμή '', ενώ τα υπόλοιπα με τη λογική τιμή '', παράγεται στην έξοδο η λογική συνάρτηση Y = A AND (NOT B). Στην θέση του SRAM-στοιχείου διασύνδεσης θα μπορούσαν να χρησιμοποιηθούν στοιχεία διασύνδεσης μιας άλλης τεχνολογίας, όπως Antifuse, E 2PROM και FLASH, χωρίς να αλλάξει η δομή και ο τρόπος λειτουργίας της προγραμματιζόμενης συνάρτησης..2.3 Τα προγραμματιζόμενα λογικά μπλοκ των πρώτων FPGAs Τα πρώτα FPGAs βασίζονταν στην τεχνολογία CMOS και χρησιμοποιούσαν SRAM-στοιχεία για την διαδικασία προγραμματισμού []. Τα προγραμματιζόμενα λογικά μπλοκ των πρώτων FPGAs αποτελούνταν γενικά από ένα LUT (LookUp Table) τριών εισόδων, έναν καταχωρητή (register) του ενός bit, ο οποίος μπορούσε να συμπεριφέρεται είτε ως D flip-flop, είτε ως latch, και έναν πολυπλέκτη (multiplexer mux). Στο Σχήμα.2.3- φαίνεται η γενική μορφή του προγραμματιζόμενου λογικού μπλοκ των πρώτων FPGAs. Κάθε FPGA περιείχε έναν πολύ μεγάλο αριθμό τέτοιων προγραμματιζόμενων λογικών μπλοκ. Με την βοήθεια των SRAM-στοιχείων μνήμης το κάθε μπλοκ μπορούσε να προγραμματιστεί ώστε να υλοποιεί μία ξεχωριστή λογική συνάρτηση. Επίσης μπορούσε να προγραμματιστεί με τέτοιον τρόπο ώστε ο καταχωρητής (λειτουργία flip-flop ή latch) του ενός bit να περιέχει αρχική τιμή, λογικό '' ή ''. Στην περίπτωση που o καταχωρητής προγραμματιζόταν ως flip-flop, μπορούσε επίσης να προγραμματιστεί ώστε το flip-flop να είναι είτε θετικά, είτε αρνητικά ακμοπυροδότητο (positive or negative edge-triggered). 4

11 Σχήμα.2.3- Η γενική μορφή του προγραμματιζόμενου λογικού μπλοκ των πρώτων FPGAs Ο πολυπλέκτης που τροφοδοτεί το flip-flop, στο πιο πάνω σχήμα, προγραμματιζόταν έτσι ώστε να επιλέγει μεταξύ της εξόδου του LUT και μιας εξωτερικής εισόδου d. Το LUT μπορούσε να υλοποιήσει οποιαδήποτε λογική συνάρτηση τριών εισόδων. Η λειτουργία και μία πιθανή υλοποίηση της δομής του LUT συνοψίζονται στο Σχήμα Σχήμα Ο τρόπος λειτουργίας και η δομή ενός LUT τριών εισόδων Οι πύλες μετάδοσης ενεργές στο λογικό '' επιτρέπουν την διέλευση της εισόδου στην έξοδο όταν το σήμα ελέγχου είναι στο λογικό ''. Αντίστοιχα οι πύλες μετάδοσης ενεργές στο λογικό '' επιτρέπουν την διέλευση της εισόδου στην έξοδο όταν το σήμα ελέγχου είναι στο λογικό ''. Έτσι όταν για παράδειγμα και στις τρεις εισόδους του πιο πάνω σχήματος εισάγουμε το λογικό '' θα περάσει στην έξοδο Y η τιμή του πρώτου SRAM-στοιχείου μνήμης που είναι το λογικό ''. Οι τιμές που περιέχουν τα SRAM-στοιχεία μνήμης εισάγονται στο FPGA κατά τον προγραμματισμό του. Οι είσοδοι δρουν ως δείκτες στις τιμές που περιέχουν τα SRAM-στοιχεία μνήμης, δικαιολογώντας έτσι την ονομασία των LUTs. Για την υλοποίηση λογικών συναρτήσεων n εισόδων απαιτούνται 2n SRAM-στοιχεία μνήμης. Στην πραγματικότητα τα SRAM-στοιχεία μνήμης είναι συνδεδεμένα μεταξύ τους σε μορφή αλυσίδας (cascaded), κάτι το οποίο δεν φαίνεται στο Σχήμα.2.3-2, και το γεγονός αυτό αφορά 5

12 τον τρόπο προγραμματισμού του FPGA, δηλαδή το πώς τελικά εκχωρούνται οι λογικές τιμές στα SRAM-στοιχεία μνήμης έτσι ώστε το LUT να υλοποιεί την επιθυμητή συνδυαστική λογική συνάρτηση []. Λόγω της δομής των LUTs (βλέπε Σχήμα.2.3-2), ο χρόνος μετάδοσης (propagation delay) της τιμής του SRAM-στοιχείου μνήμης στην έξοδο του LUT είναι ανεξάρτητος από τη λογική συνάρτηση που υλοποιείται [5]. Πολλά από τα χαρακτηριστικά των πρώτων FPGAs συνεχίζουν να υπάρχουν και στα σημερινά FPGAs, τα οποία περιλαμβάνουν περισσότερα χαρακτηριστικά και έχουν μεγαλύτερη πολυπλοκότητα..2.4 Βασική δομή και κοινά χαρακτηριστικά των σημερινών SRAM-based FPGAs.2.4. CLBs, Slices και LCs Χρησιμοποιώντας την ορολογία της εταιρείας Xilinx, κάθε προγραμματιζόμενο λογικό μπλοκ - CLB (Configurable Logic Block) αποτελείται από έναν αριθμό τμημάτων (Slices), ο οποίος εξαρτάται από την οικογένεια του FPGA, και το κάθε Slice αποτελείται από έναν αριθμό λογικών κύτταρων LCs (Logic Cells), ο οποίος επίσης εξαρτάται από την οικογένεια του FPGA []. Τα πιο πάνω συνοψίζονται στο Σχήμα Αξίζει να σημειωθεί ότι κάθε εταιρεία χρησιμοποιεί την δική της ορολογία για να περιγράψει την εσωτερική οργάνωση των FPGAs που κατασκευάζει. Αυτό συμβαίνει γιατί υπάρχουν κάποιες διαφορές τόσο στη δομή των προγραμματιζόμενων λογικών μπλοκ, όσο και στην αρχιτεκτονική διασύνδεσης. Η χρήση της ορολογίας της εταιρείας Xilinx γίνεται γιατί στην παρούσα διπλωματική εργασία θα χρησιμοποιηθεί το FPGA Virtex-II Pro, το οποίο κατασκευάστηκε από την εν λόγω εταιρεία. Σχήμα Η γενική δομή ενός CLB με τέσσερα Slices και δύο LCs ανά Slice Η ιεραρχία στην δομή των FPGAs συνεπάγεται μια ιεραρχία στις διασυνδέσεις. Έτσι μεταξύ των LCs, μέσα σε ένα Slice, υπάρχει πολύ γρήγορη διασύνδεση, μεταξύ των Slices, μέσα σε ένα CLB, υπάρχει γρήγορη διασύνδεση και τέλος οι λιγότερο γρήγορες διασυνδέσεις μεταξύ των CLBs []. Στο Σχήμα φαίνεται η εσωτερική δομή του CLB του FPGA Virtex-II Pro. Μέσω του πίνακα τοπικής διασύνδεσης το CLB συνδέεται σε έναν πίνακα γενικής διασύνδεσης [5]. Εκτός από τις γρήγορες διασυνδέσεις μεταξύ των Slices, στο σχήμα φαίνονται η αλυσίδα γρήγορης μεταφοράς κρατουμένου (fast carry chain) CIN-COUT και η αλυσίδα ολίσθησης (shift chain) SHIFT. Η 6

13 λειτουργία και ο λόγος ύπαρξης των αλυσίδων αυτών θα επεξηγηθεί παρακάτω, κατά την εσωτερική περιγραφή των LCs. Σχήμα Εσωτερική δομή του CLB του FPGA Virtex-II Pro Η απλοποιημένη γενική μορφή των LCs είναι παρόμοια με την γενική μορφή των πρώτων προγραμματιζόμενων λογικών μπλοκ, όπως αυτή παρουσιάζεται στο Σχήμα Στο Σχήμα παρουσιάζεται η απλοποιημένη μορφή της γενικής δομής των σημερινών LCs. Σχήμα Η απλοποιημένη μορφή της γενικής δομής των σημερινών LCs Πριν την εμφάνιση του FPGA Virtex-5 της εταιρείας Xilinx το 26 [6], [7], είχαν επικρατήσει τα LUTs τεσσάρων εισόδων γιατί προσέφεραν την βέλτιστη ισορροπία όσον αφορά τα πλεονεκτήματα και τα μειονεκτήματα, και γιατί είχε παρατηρηθεί, σε περιπτώσεις που είχε γίνει επιλογή συνύπαρξης LUTs τριών και τεσσάρων εισόδων στο ίδιο FPGA, ότι τα λογισμικά λογικής σύνθεσης προτιμούσαν την κανονικότητα και την ομοιομορφία, δηλαδή LUTs του ίδιου είδους []. Η χρήση LUTs με περισσότερες από τέσσερις εισόδους δίνει την δυνατότητα υλοποίησης μεγαλύτερων και πολυπλοκότερων λογικών συναρτήσεων σε ένα προγραμματιζόμενο λογικό 7

14 μπλοκ, μειώνοντας έτσι την καθυστέρηση διάδοσης που εισάγεται λόγω των προγραμματιζόμενων διασυνδέσεων που απαιτούνται όταν χρησιμοποιούνται προγραμματιζόμενα λογικά μπλοκ με LUTs τεσσάρων εισόδων [8]. Όμως τα LUTs με περισσότερες από τέσσερις εισόδους θα είναι, λόγω της δομής τους, λιγότερο γρήγορα (βλέπε Σχήμα.2.3-2) και σε περίπτωση που δεν χρησιμοποιούνται όλες οι είσοδοί τους θα σημειώνεται σπατάλη πόρων του FPGA. Σήμερα υπάρχουν FPGAs, όπως για παράδειγμα το FPGA Virtex-6 της εταιρείας Xilinx, τα οποία κατασκευάζονται σε τεχνολογία CMOS 4 nm και περιλαμβάνουν LUTs έξι εισόδων [9], [], καθώς επίσης και FPGAs με δύο ειδών LUTs στο ίδιο FPGA, LUTs τριών και τεσσάρων εισόδων, όπως για παράδειγμα το FPGA Stratix IV της εταιρείας Altera []. Το FPGA Stratix IV ομαδοποιεί LUTs με χρήση πρόσθετης λογικής, ώστε να προκύψουν τελικά LUTs με αριθμό εισόδων σύμφωνα με τις προς υλοποίηση λογικές συναρτήσεις. Στο Σχήμα παρουσιάζεται σε συμβολική μορφή ο πολυμορφικός χαρακτήρας του LUT. Το γεγονός ότι τα LUTs αποτελούνται από έναν αριθμό SRAM-στοιχείων μνήμης παρότρυνε τους κατασκευαστές των FPGAs να προσθέσουν την δυνατότητα χρήσης των SRAM-στοιχείων μνήμης του LUT ως διανεμημένη μνήμη (distributed RAM) ή ως καταχωρητή ολίσθησης (shift register) [], [5]. Ο όρος διανεμημένη μνήμη δημιουργήθηκε λόγω του ότι τα LUTs είναι διανεμημένα σε όλη την επιφάνεια του FPGA και γιατί αυτό το είδος μνήμης πρέπει να διαχωριστεί από ένα άλλο είδος, το οποίο θα αναφερθεί παρακάτω, κατά την περιγραφή των ενσωματωμένων χαρακτηριστικών που διαθέτουν κάποια από τα σημερινά FPGAs (βλέπε παράγραφο.2.4.3). Έτσι ένα LUT τεσσάρων εισόδων μπορεί να χρησιμοποιηθεί ως διανεμημένη μνήμη των 6x bits. Η δυνατότητα χρήσης του LUT ως καταχωρητή ολίσθησης των 6 bits οφείλεται στο ότι τα SRAMστοιχεία μνήμης είναι συνδεδεμένα σε μορφή αλυσίδας. Εκτός από το πολυμορφικό LUT, διάφορους πολυπλέκτες και τον καταχωρητή, το LC περιέχει λογική για υλοποίηση κυκλωμάτων αριθμητικών πράξεων, όπως πύλη XOR, για την υλοποίηση αθροιστών, και πύλη AND, για την αποτελεσματικότερη υλοποίηση του πολλαπλασιασμού [5]. Υπάρχει επίσης η λογική για την αλυσίδα γρήγορης μεταφοράς κρατουμένου (fast carry chain), η οποία υλοποιείται με πολυπλέκτες και η οποία χρησιμοποιείται για την βελτιστοποίηση της ταχύτητας της πρόσθεσης. Η αλυσίδα γρήγορης μεταφοράς κρατουμένου (CIN-COUT) καθώς και η αλυσίδα που αφορά τον καταχωρητή ολίσθησης (SHIFTIN-SHIFTOUT) συνδέουν LCs σε πρώτο επίπεδο, Slices σε ένα δεύτερο και τελικά ολόκληρα CLBs. Στο Σχήμα φαίνεται το LC του FPGA Virtex-II Pro το οποίο περιλαμβάνει όλα τα στοιχεία που αναφέρθηκαν στα προηγούμενα. 8

15 Σχήμα Το LC του FPGA Virtex-II Pro (Λήφθηκε από το [5] της Bιβλιογραφίας) Επίσης στο Σχήμα φαίνεται (και ισχύει γενικά) ότι τα σήματα CE (Clock Enable), CLK (Clock) και SR (Set/Reset) είναι κοινά για τα δύο flip-flop των δύο LCs που βρίσκονται μέσα σε ένα Slice. Τα σήματα CE και SR μπορούν να προγραμματιστούν ώστε να είναι ενεργά είτε στο λογικό '', είτε στο λογικό ''. Το σήμα SR μπορεί να προγραμματιστεί ώστε να είναι είτε σύγχρονο, είτε ασύγχρονο. Σε κάθε Slice υπάρχουν 2 πολυπλέκτες, επιπρόσθετη λογική σε αυτήν των LCs, οι οποίοι χρησιμοποιούνται για την υλοποίηση πολύ μεγάλων πολυπλεκτών με την χρήση κάποιου αριθμού Slices, ο οποίος εξαρτάται γενικά από το FPGA. Για παράδειγμα το FPGA Virtex-II Pro χρησιμοποιεί 8 Slices (2 CLBs) για την υλοποίηση 32 πολυπλέκτη. Τέλος σε κάθε Slice υπάρχει μία πύλη OR, η οποία βρίσκεται στο ένα από τα δύο LCs (η ORCY στο Σχήμα ) και η οποία χρησιμοποιείται σε συνδυασμό με τη λογική των αλυσίδων γρήγορης μεταφοράς κρατουμένου και τα LUT για την υλοποίηση πολύ μεγάλων και ευέλικτων συναρτήσεων σε μορφή αθροίσματος γινομένων SOP (Sum Of Products) [5]. 9

16 Αρχιτεκτονική διασύνδεσης Η αρχιτεκτονική διασύνδεσης καθορίζει τον τρόπο με τον οποίο οι προγραμματιζόμενες διασυνδέσεις και οι αγωγοί τοποθετούνται στο FPGA κατά την κατασκευή του, έτσι ώστε να γίνεται δυνατή η διασύνδεση των προγραμματιζόμενων λογικών μπλοκ με άλλα προγραμματιζόμενα λογικά μπλοκ και με τα μπλοκ εισόδου/εξόδου. Επίσης λαμβάνονται υπόψη τα ενσωματωμένα και πρόσθετα χαρακτηριστικά που αναφέρονται στις παραγράφους και.2.5. Η αρχιτεκτονική διασύνδεσης θα πρέπει να προσφέρει μεγάλο βαθμό διασύνδεσης, μεγάλη ταχύτητα μετάδοσης σημάτων και να περιλαμβάνει ικανοποιητικό αριθμό αγωγών, τέτοιον ώστε να μην γίνεται σπατάλη της επιφάνειας του ολοκληρωμένου [4]. Επίσης θα πρέπει να είναι δυνατή η χρήση αυτοματοποιημένου αλγορίθμου για την υλοποίηση της διασύνδεσης μιας συγκεκριμένης εφαρμογής. Η γενική αρχιτεκτονική των σύγχρονων FPGAs παρομοιάζεται ως island-style. Τα προγραμματιζόμενα λογικά μπλοκ, τα οποία διατάσσονται σε μορφή διδιάστατου πίνακα, είναι τα νησιά που επιπλέουν σε μία θάλασσα διασυνδέσεων [8]. Στο Σχήμα φαίνεται η απλοποιημένη μορφή της αρχιτεκτονικής island-style. Οι αγωγοί διασύνδεσης οργανώνονται σε κανάλια (ομάδες αγωγών), τα οποία διατρέχουν το ολοκληρωμένο οριζόντια και κάθετα, ανάμεσα στα προγραμματιζόμενα λογικά μπλοκ. Σχήμα Η απλοποιημένη μορφή της αρχιτεκτονικής island-style Η αρχιτεκτονική διασύνδεσης των σύγχρονων FPGAs χαρακτηρίζεται από ιεραρχία και ποικιλία στο μήκος των αγωγών διασύνδεσης. Ένας αγωγός διασύνδεσης ορίζεται ως ένα συνεχές αγώγιμο τμήμα που στην αρχή και στο τέλος του υπάρχουν προγραμματιζόμενες διασυνδέσεις, οι οποίες τον συνδέουν είτε με άλλους αγωγούς διασύνδεσης, είτε με τους ακροδέκτες ενός προγραμματιζόμενου λογικού μπλοκ ή μπλοκ εισόδου/εξόδου. Επίσης μπορεί να υπάρχουν προγραμματιζόμενες διασυνδέσεις που να συνδέονται πάνω σε έναν αγωγό διασύνδεσης σε σημεία που βρίσκονται μεταξύ της αρχής και του τέλους του, χωρίς όμως να διακόπτουν την συνέχεια του. Οι προγραμματιζόμενες διασυνδέσεις υλοποιούνται κυρίως με SRAM-στοιχεία διασύνδεσης και σε κάποιες περιπτώσεις με βαθμίδες απομόνωσης τριών καταστάσεων [2]. Εάν το μήκος των αγωγών διασύνδεσης ήταν σταθερό τότε η διάδοση σημάτων κατά την διασύνδεση απομακρυσμένων προγραμματιζόμενων λογικών μπλοκ θα γινόταν με πολύ μεγάλη καθυστέρηση. Ο λόγος είναι ότι η διασύνδεση απομακρυσμένων προγραμματιζόμενων λογικών μπλοκ, με μήκος αγωγού που είναι ικανό για διασύνδεση μόνο γειτονικών μπλοκ, θα απαιτούσε

17 την παρεμβολή πολλών προγραμματιζόμενων διασυνδέσεων, οι οποίες εισάγουν μεγάλη καθυστέρηση στην διάδοση των σημάτων [4]. Έτσι σε ένα κανάλι υπάρχουν αγωγοί με μήκος ικανό για την διασύνδεση γειτονικών προγραμματιζόμενων λογικών μπλοκ, αγωγοί για την διασύνδεση ενός προγραμματιζόμενου λογικού μπλοκ με το μπλοκ που ακολουθεί μετά το γειτονικό και βρίσκεται στην ίδια στήλη ή στην ίδια σειρά των προγραμματιζόμενων λογικών μπλοκ, αγωγοί για την διασύνδεση ενός προγραμματιζόμενου λογικού μπλοκ με το τρίτο ή το έκτο μπλοκ της ίδιας σειράς ή στήλης καθώς και αγωγοί που διατρέχουν όλο το ολοκληρωμένο για διασύνδεση κάθε προγραμματιζόμενου λογικού μπλοκ με κάποιο ή κάποια άλλα προγραμματιζόμενα λογικά μπλοκ, τα οποία ανήκουν στην ίδια σειρά ή στήλη. Οι προαναφερόμενες διασυνδέσεις υλοποιούνται μέσω των πινάκων τοπικής και γενικής διασύνδεσης. Στο Σχήμα φαίνονται τα είδη των αγωγών διασύνδεσης που υπάρχουν στο FPGA Virtex-II Pro μεταξύ οποιωνδήποτε γειτονικών σειρών ή στηλών πινάκων γενικής διασύνδεσης (οι πίνακες αυτοί ορίζονται πιο κάτω). Σχήμα Είδη αγωγών διασύνδεσης στο FPGA Virtex-II Pro Εκτός από τους αγωγούς διασύνδεσης, η αρχιτεκτονική διασύνδεσης περιλαμβάνει ακόμα δύο δομές. Τους πίνακες τοπικής και γενικής διασύνδεσης. Οι πίνακες τοπικής διασύνδεσης βρίσκονται συνήθως στις τέσσερις πλευρές κάθε προγραμματιζόμενου λογικού μπλοκ και περιέχουν προγραμματιζόμενες διασυνδέσεις μέσω των οποίων συνδέουν τους ακροδέκτες ενός γειτονικού προγραμματιζόμενου λογικού μπλοκ με αγωγούς που οδηγούν σε πίνακες γενικής διασύνδεσης. Ο πίνακας γενικής διασύνδεσης βρίσκεται στις διασταυρώσεις των οριζόντιων και κάθετων καναλιών συνδέοντας με προγραμματιζόμενες διασυνδέσεις αγωγούς των οποίων τα άκρα καταλήγουν εκεί. Κάθε αγωγός που ανήκει σε ένα κανάλι μπορεί να συνδεθεί μόνο σε ένα υποσύνολο των αγωγών του κάθετου καναλιού. Αυτό συμβαίνει λόγω του μεγάλου μεγέθους και της μεγάλης χωρητικότητας C των προγραμματιζόμενων διασυνδέσεων [4]. Τα προηγούμενα συνοψίζονται στο Σχήμα

18 Σχήμα Διασύνδεση των προγραμματιζόμενων λογικών μπλοκ Έτσι μία πολύπλοκη και μεγάλη λογική συνάρτηση μπορεί να υλοποιηθεί μέσω της διασύνδεσης προγραμματιζόμενων λογικών μπλοκ, τα οποία υλοποιούν τμήματα της εν λόγω λογικής συνάρτησης. Τα μπλοκ εισόδου/εξόδου συνδέονται στους ακροδέκτες των προγραμματιζόμενων λογικών μπλοκ με τρόπο παρόμοιο με αυτόν που χρησιμοποιείται για την διασύνδεση των προγραμματιζόμενων λογικών μπλοκ Ενσωματωμένα χαρακτηριστικά Μπλοκ RAM, Πολλαπλασιαστές, Αθροιστές Μπλοκ RAM Επειδή πολλές εφαρμογές που αναπτύσσονται σε ένα FPGA απαιτούν χρήση μνήμης, τα FPGAs διαθέτουν μεγάλα μπλοκ ενσωματωμένης μνήμης. Αναλόγως της αρχιτεκτονικής του FPGA, τα μπλοκ μνήμης μπορεί (α) να βρίσκονται στην περιφέρεια του ολοκληρωμένου, (β) να είναι διασκορπισμένα στην επιφάνεια του FPGA, σχετικά απομονωμένα το ένα ως προς το άλλο, και (γ) να είναι οργανωμένα σε στήλες []. Αυτά τα μπλοκ έχουν μέγεθος από μερικά KB μέχρι μερικές δεκάδες KB. Ο αριθμός των μπλοκ κυμαίνεται από δεκάδες μέχρι εκατοντάδες. Τα μπλοκ μπορούν να χρησιμοποιηθούν ανεξάρτητα ή να συνδυαστούν, υλοποιώντας μεγαλύτερα μπλοκ μνήμης. Πολλαπλασιαστές Επειδή σε κάποιες εφαρμογές απαιτείται η ύπαρξη πολλαπλασιαστών και επειδή η υλοποίησή τους με διασύνδεση πολλών προγραμματιζόμενων στοιχείων τους καθιστά αργούς [], πολλά FPGAs περιέχουν μπλοκ πολλαπλασιαστών, οι οποίοι έχουν υλοποιηθεί με καλωδιωμένη (hard-wired) λογική. Στο Σχήμα φαίνονται μπλοκ μνήμης και πολλαπλασιαστών οργανωμένα σε στήλες. 2

19 Σχήμα Ενσωματωμένα μπλοκ μνήμης RAM και πολλαπλασιαστών στο FPGA Αθροιστές Κάποια FPGAs, εκτός από ενσωματωμένες μνήμες και ενσωματωμένους πολλαπλασιαστές, περιέχουν και μπλοκ αθροιστών. Πολλαπλασιαστές, αθροιστές και στοιχεία μνήμης μπορούν να συνδυαστούν υλοποιώντας την λειτουργία MAC (Multiply-ACcumulate). Σε αυτήν την λειτουργία πολλαπλασιάζονται δύο αριθμοί και το αποτέλεσμα προστίθεται στο περιεχόμενο του συσσωρευτή (accumulator), ο οποίος περιέχει το αποτέλεσμα της προηγούμενης εκτέλεσης της ίδιας λειτουργίας. Αυτού του είδους η λειτουργία χρησιμοποιείται ευρύτατα στις εφαρμογές Ψηφιακής Επεξεργασίας Σήματος DSP (Digital Signal Processing) και αυτός είναι ο λόγος που οι ενσωματωμένοι πολλαπλασιαστές τοποθετούνται κοντά στις ενσωματωμένες μνήμες, όπως φαίνεται στο Σχήμα Δέντρα ρολογιού Clock trees και DCMs (Digital Clock Managers) Τα σύγχρονα στοιχεία του FPGA, όπως τα D-flip-flop και τα ενσωματωμένα μπλοκ μνήμης, απαιτούν την ύπαρξη σήματος ρολογιού. Το σήμα ρολογιού εισέρχεται στο FPGA από εξωτερική συσκευή ρολογιού. Υπάρχουν ειδικοί ακροδέκτες στο FPGA οι οποίοι έχουν υλοποιηθεί έτσι ώστε να δέχονται σήματα ρολογιού. Αυτοί οι ειδικοί ακροδέκτες όταν δεν δέχονται σήματα ρολογιού μπορούν να χρησιμοποιηθούν ως συνήθεις είσοδοι/έξοδοι Ι/Ο (Input/Output) του FPGA. Η διανομή του σήματος του ρολογιού στα σύγχρονα στοιχεία γίνεται με τα δέντρα ρολογιού []. Δέντρα ρολογιού Clock trees Μέσα στο FPGA υπάρχουν ειδικές τροχιές (αγωγοί) για την διανομή του σήματος ρολογιού, οι οποίες δεν ανήκουν στην αρχιτεκτονική διασύνδεσης []. Η μορφή αυτών των τροχιών είναι δενδρική όπως φαίνεται στο Σχήμα

20 Σχήμα Δέντρα ρολογιού Clock trees Ο λόγος διανομής του σήματος ρολογιού με αυτόν τον τρόπο, δηλαδή η ομοιόμορφη παροχή του σήματος σε τεταρτημόρια του FPGA με την χρήση δενδροειδών τροχιών, αφορά την ελαχιστοποίηση της χρονικής διαφοράς άφιξης του σήματος σε κάθε σύγχρονο στοιχείο, φαινόμενο γνωστό και ως clock skew. Για παράδειγμα, εάν το σήμα ρολογιού συνδεόταν σε όλα τα σύγχρονα στοιχεία σειριακά, τότε το σήμα ρολογιού θα έφτανε με μεγάλη χρονική διαφορά στο τελευταίο στοιχείο της σειράς σε σχέση με το πρώτο. Παρά την χρήση των clock trees το φαινόμενο clock skew συνεχίζει σε κάποιο βαθμό να υπάρχει []. DCMs (Digital Clock Managers) Είναι μπλοκ που συνδέονται ανάμεσα στις εισόδους του σήματος ρολογιού και στην διανομή του σήματος ρολογιού (βλέπε Σχήμα ). Ο ρόλος τους είναι να παρέχουν θυγατρικά σήματα ρολογιού, τα οποία είναι απαλλαγμένα από τις διάφορες ασυνέπειες που μπορεί να παρουσιάζει το σήμα ρολογιού μετά την είσοδό του στο FPGA και τα οποία, εάν είναι επιθυμητό, μπορεί να έχουν πολλαπλάσια ή υποπολλαπλάσια συχνότητα από αυτήν που παρέχεται από το εισερχόμενο σήμα ρολογιού. Το είδος, ο αριθμός και οι δυνατότητες που προσφέρουν γενικά τα DCMs εξαρτώνται από την οικογένεια των FPGAs. Οι δυνατότητες που προσφέρουν τα DCMs είναι συνοπτικά οι εξής [], [2] Καθαρισμός του σήματος ρολογιού που φτάνει στο DCM απαλοιφή του φαινομένου jitter Το σήμα ρολογιού που φτάνει στο DCM συχνά παρουσιάζει λίγο μεγαλύτερους ή μικρότερους σε διάρκεια παλμούς ή ακόμα παλμούς με πολύ μικρές θετικές ή αρνητικές καθυστερήσεις. Το DCM παράγει θυγατρικά σήματα ρολογιού απαλλαγμένα από αυτές τις ασυνέπειες και ακριβή με την πραγματική συχνότητα του ρολογιού. Απαλοιφή διαφοράς φάσης (καθυστερήσεων) ρολογιού Clock de-skew Το DCM εισάγει καθυστερήσεις στα θυγατρικά σήματα ρολογιού έτσι ώστε οι ακμές τους, οι οποίες έχουν πρώτα απαλλαγεί από το φαινόμενο jitter, να φτάνουν τελικά στα σύγχρονα στοιχεία με τον ίδιο ακριβώς τρόπο που φτάνουν στο FPGA οι ακμές του σήματος ρολογιού. Σύνθεση συχνότητας Frequency synthesis Το DCM παράγει θυγατρικά σήματα ρολογιού 4

21 με πολλαπλάσια ή υποπολλαπλάσια συχνότητα σε σχέση με αυτήν του εισερχόμενου σήματος ρολογιού (ακόμα και κλάσματα της μορφής 4/5 της συχνότητας του σήματος ρολογιού που εισέρχεται στο FPGA). Μετατόπιση συχνότητας Phase shifting Το DCM έχει την δυνατότητα παραγωγής θυγατρικών σημάτων μετατοπισμένα σε σχέση με το σήμα εισόδου του ρολογιού κατά κάποιο ορισμένο ποσό φάσης. Συνήθεις περιπτώσεις αποτελούν οι μετατοπίσεις κατά 9,8 και 27 μοίρες, αλλά μπορεί να υπάρχει η δυνατότητα ορισμού συγκεκριμένης μετατόπισης φάσης διαφορετικής από τις προηγούμενες Μπλοκ εισόδων/εξόδων είσοδοι/έξοδοι γενικής χρήσης Οι ακροδέκτες του FPGA, των οποίων ο αριθμός είναι της τάξης του, είναι διανεμημένοι στην βάση του ολοκληρωμένου. Στους ακροδέκτες αυτούς υπάγονται η τάση τροφοδοσίας του ολοκληρωμένου, η γείωση, οι ακροδέκτες που αφορούν τον προγραμματισμό του και οι είσοδοι/έξοδοι γενικής χρήσης. Οι είσοδοι/έξοδοι γενικής χρήσης χρησιμοποιούνται για την μεταφορά δεδομένων προς και από το ολοκληρωμένο χρησιμοποιώντας σήματα με συγκεκριμένα ηλεκτρικά χαρακτηριστικά (I/O standards), όπως για παράδειγμα το επίπεδο τάσης που αντιστοιχεί στο λογικό '' και το αντίστοιχο επίπεδο τάσης που αντιστοιχεί στο λογικό ''. Επειδή κατά καιρούς έχει χρησιμοποιηθεί μια πληθώρα σημάτων με διαφορετικά ηλεκτρικά χαρακτηριστικά από διάφορες συσκευές, τα FPGAs περιλαμβάνουν μπλοκ εισόδων/εξόδων τα οποία μπορούν να προγραμματιστούν έτσι ώστε να δέχονται και να παράγουν σήματα με συγκεκριμένα ηλεκτρικά χαρακτηριστικά [], [3], [5]. Οι είσοδοι/έξοδοι γενικής χρήσης είναι χωρισμένες σε κάποιον αριθμό ομάδων (banks). Κάθε ομάδα μπορεί να προγραμματιστεί έτσι ώστε να υποστηρίζει ένα συγκεκριμένο I/O standard (ή έναν συγκεκριμένο συνδυασμό I/O standards) [], [5], επιτρέποντας έτσι την συνεργασία του FPGA με συσκευές που χρησιμοποιούν σήματα με διαφορετικά ηλεκτρικά χαρακτηριστικά []. Στο Σχήμα φαίνονται οι ομάδες των εισόδων/εξόδων γενικής χρήσης. Τέλος, στους ακροδέκτες εισόδου/εξόδου υπάρχουν, εσωτερικά στο FPGA, τερματικές αντιστάσεις (terminating resistors). Αυτές αποτρέπουν τις αστάθειες που μπορεί να παρουσιάσουν τα σήματα εισόδου/εξόδου λόγω της πολύ γρήγορης μεταβολής τους από την μία λογική στάθμη στην άλλη []. Οι τιμές αυτών των αντιστάσεων μπορούν να προγραμματιστούν από τον χρήστη ώστε να ανταποκρίνονται στο I/O standard που έχει επιλέξει. 5

22 Σχήμα Προγραμματιζόμενες ομάδες εισόδων/εξόδων γενικής χρήσης.2.5 Πρόσθετα χαρακτηριστικά Gigabit transceivers και Ενσωματωμένοι επεξεργαστές Gigabit transceivers Είναι ενσωματωμένα μπλοκ στο FPGA που χρησιμοποιούνται για την σειριακή μετάδοση/λήψη δεδομένων, προς/από εξωτερικές συσκευές, με πολύ μεγάλη ταχύτητα, της τάξης των δισεκατομμυρίων bits ανά δευτερόλεπτο [], [5]. Κάθε τέτοιο μπλοκ έχει συνήθως έναν αριθμό από transceivers, για παράδειγμα τέσσερις. Κάθε transceiver αποτελείται από δύο διαφορικά ζεύγη αγωγών, δηλαδή σε ένα ζεύγος, όταν ο ένας αγωγός μεταφέρει την μία λογική τιμή, ο άλλος μεταφέρει την αντίθετη. Σε κάθε transceiver το ένα ζεύγος χρησιμοποιείται για μετάδοση και το άλλο για λήψη δεδομένων. Η δημιουργία αυτών των μπλοκ οφείλεται στην αυξανόμενη ανάγκη για μεταφορά δεδομένων και στα προβλήματα που δημιουργούνται κατά την παράλληλη μετάδοση πολλών bits από ισάριθμους παράλληλους αγωγούς (bus). Τα προβλήματα αφορούν (α) την δυσκολία που εισάγει ένα τέτοιο σχήμα όσον αφορά την φυσική (διαστάσεις) και ηλεκτρική ομοιότητα των παράλληλων αγωγών που πρέπει να σχεδιαστούν πάνω σε μία ήδη πολύπλοκη πλακέτα (board) και (β) τον ηλεκτρικό θόρυβο που δημιουργείται σε σχήματα πολλών παράλληλων αγωγών []. Ενσωματωμένοι επεξεργαστές hard microprocessor cores Κάποια FPGAs περιλαμβάνουν ένα ή περισσότερα μπλοκ επεξεργαστών. Σε περιπτώσεις όπου απαιτείται από την εφαρμογή η χρήση επεξεργαστή σε συνδυασμό με κάποια λογική του FPGA, η ύπαρξή του στο εσωτερικό του FPGA απλοποιεί σημαντικά την χρήση του, αφού δεν απαιτούνται πρόσθετες εξωτερικές διασυνδέσεις [], [5]. Επίσης σε αυτήν την περίπτωση η πλακέτα είναι λιγότερο πολύπλοκη και πιο ελαφριά. Όταν υπάρχει ένας ενσωματωμένος επεξεργαστής στο FPGA, το μπλοκ του μπορεί να βρίσκεται είτε προς το μέσο του ολοκληρωμένου, είτε απομονωμένο σε μία πλευρά του ολοκληρωμένου. Στην περίπτωση που βρίσκεται στην πλευρά του ολοκληρωμένου, στην ίδια πλευρά και δίπλα στο μπλοκ του επεξεργαστή βρίσκονται άλλα μπλοκ που χρησιμοποιούνται ως περιφερειακά, όπως μνήμες και διάφορες λογικές εισόδου/εξόδου για τον επεξεργαστή. Ένα πλεονέκτημα αυτής της τοπολογίας είναι ότι το λογισμικό σχεδίασης είναι απλούστερο, αφού δεν λαμβάνει υπόψη την ύπαρξη του - απομονωμένου από τις βασικές δομές του FPGA - επεξεργαστή. Ένα άλλο πλεονέκτημα είναι ότι ο κατασκευαστής του FPGA μπορεί πολύ εύκολα να τοποθετήσει κάθε είδους περιφερειακές συσκευές δίπλα στον επεξεργαστή. Στην περίπτωση που ο επεξεργαστής βρίσκεται προς το μέσο του FPGA, χρησιμοποιεί ως περιφερειακά τα βασικά στοιχεία της δομής του FPGA (ή κάποια λογική σύνθεση αυτών). Σε αυτό το σχήμα ο επεξεργαστής βρίσκεται πολύ 6

23 πιο κοντά στις περιφερειακές συσκευές και προκύπτει πλεονέκτημα στην ταχύτητα. Βέβαια σε αυτήν την περίπτωση το λογισμικό σχεδίασης πρέπει να λαμβάνει υπόψη την ύπαρξη του επεξεργαστή που βρίσκεται ανάμεσα στις βασικές δομές του FPGA..3 Προγραμματισμός-διαμόρφωση (configuration) των SRAM-based FPGAs Στο τέλος της διαδικασίας σχεδίασης, σε ένα λογισμικό σχεδίασης που υποστηρίζει το συγκεκριμένο FPGA που πρόκειται να χρησιμοποιηθεί, ο σχεδιαστής καταλήγει με ένα αρχείο προγραμματισμού-διαμόρφωσης (configuration file) του FPGA. Τα περιεχόμενα αυτού του αρχείου καθορίζουν σε γενικές γραμμές την κατάσταση των SRAM-στοιχείων μνήμης που απαιτείται, έτσι ώστε μετά τον προγραμματισμό του το FPGA να λειτουργεί σύμφωνα με την σχεδίαση. Στην πραγματικότητα το αρχείο προγραμματισμού-διαμόρφωσης περιέχει ένα μείγμα δεδομένων διαμόρφωσης (configuration data) των SRAM-στοιχείων μνήμης και εντολών διαμόρφωσης (configuration commands), οι οποίες υποδεικνύουν στο FPGA τι να κάνει με τα δεδομένα διαμόρφωσης []. Ο χειρισμός των εντολών διαμόρφωσης από το FPGA γίνεται από ειδική λογική που υπάρχει στο FPGA και η οποία λειτουργεί κατά τον προγραμματισμόδιαμόρφωσή του. Ο προγραμματισμός του FPGA απαιτεί την φόρτωση του FPGA με τα δεδομένα που περιέχει το αρχείο προγραμματισμού-διαμόρφωσης..3. Οργάνωση των προγραμματιζόμενων SRAM-στοιχείων μνήμης στο FPGA Μια απλοποιημένη μορφή της εσωτερικής δομής του FPGA που αφορά τα προγραμματιζόμενα SRAM-στοιχεία μνήμης φαίνεται στο Σχήμα.3.-. Σχήμα.3.- Τα προγραμματιζόμενα SRAM-στοιχεία μνήμης συνδεδεμένα σε μορφή μακρύ καταχωρητή ολίσθησης (απλοποιημένη μορφή) Όπως φαίνεται στο Σχήμα.3.- τα δεδομένα διαμόρφωσης εισέρχονται σειριακά στο FPGA και ολισθαίνουν μέχρι να προγραμματιστούν όλα τα SRAM-στοιχεία μνήμης. Η έξοδος των δεδομένων διαμόρφωσης μπορεί να χρησιμοποιηθεί είτε για την ανάγνωση των τιμών των ήδη προγραμματισμένων SRAM-στοιχείων, είτε για τον προγραμματισμό FPGAs, τα οποία συνδέονται σε σειρά [2]. Οι τρόποι με τους οποίους φτάνουν τα δεδομένα διαμόρφωσης στους ακροδέκτες που χρησιμοποιούνται για τον προγραμματισμό του FPGA θα αναφερθούν παρακάτω. 7

24 Αν και το Σχήμα.3.- παρέχει μία απλή και ευνόητη μορφή της οργάνωσης των προγραμματιζόμενων SRAM-στοιχείων μνήμης, διαφέρει από την πραγματικότητα. Αυτό οφείλεται στο ότι εάν η εσωτερική οργάνωση του FPGA ήταν πράγματι όμοια με έναν μακρύ καταχωρητή ολίσθησης, τότε τα SRAM-στοιχεία μνήμης θα έπρεπε να λειτουργούν ως flip-flop, τα οποία θα έπρεπε να οδηγούνται από ένα κοινό ρολόι. Αλλά αυτό είναι αδύνατο γιατί ένα σημερινό FPGA περιέχει δεκάδες εκατομμύρια προγραμματιζόμενα SRAM-στοιχεία μνήμης. Λόγω του ότι απαιτούνται 8 τρανζίστορ για την βασική δομή ενός flip-flop και 4 για την βασική δομή ενός latch, τα δεκάδες εκατομμύρια προγραμματιζόμενα SRAM-στοιχεία μνήμης είναι υλοποιημένα ως latches []. H πραγματική οργάνωση των SRAM-στοιχείων μνήμης φαίνεται στο Σχήμα Στην πραγματική οργάνωση των προγραμματιζόμενων SRAM-στοιχείων μνήμης υπάρχει μια ομάδα από flip-flop (flip-flop frame) που λειτουργούν ως καταχωρητής ολίσθησης []. Ο αριθμός των flip-flop που συνιστούν αυτόν τον καταχωρητή ολίσθησης μπορεί να είναι για παράδειγμα 24. Τα latches είναι ταξινομημένα σε στήλες και ο αριθμός τους, σε κάθε στήλη, είναι ίσος με αυτόν των flip-flop. Όταν ο καταχωρητής ολίσθησης γεμίσει με δεδομένα διαμόρφωσης, τότε αυτά αντιγράφονται παράλληλα στην πρώτη στήλη των latches με την χρήση ειδικού κυκλώματος. Την δεύτερη φορά που θα γεμίσει ο καταχωρητής ολίσθησης τα δεδομένα του αντιγράφονται παράλληλα στην πρώτη στήλη των latches και ταυτόχρονα τα δεδομένα της πρώτης στήλης των latches στην δεύτερη στήλη των latches. Αυτή η διαδικασία επαναλαμβάνεται μέχρι να προγραμματιστούν όλα τα latches (SRAM-στοιχεία μνήμης). Σε περίπτωση ανάγνωσης των τιμών των SRAM-στοιχείων μνήμης χρησιμοποιείται η αντίστροφη διαδικασία από αυτήν που περιγράφηκε. Σχήμα.3.-2 Η πραγματική οργάνωση των προγραμματιζόμενων SRAM-στοιχείων μνήμης.3.2 Μέθοδοι προγραμματισμού Configuration modes Υπάρχουν πέντε βασικές μέθοδοι προγραμματισμού ενός SRAM-based FPGA, οι οποίες χρησιμοποιούν μια πηγή δεδομένων προγραμματισμού-διαμόρφωσης. Η πηγή δεδομένων διαμόρφωσης μπορεί να βρίσκεται στην ίδια πλακέτα με το FPGA που προγραμματίζεται και να είναι (α) μία μνήμη FLASH (ή E2PROM), (β) ένα δεύτερο FPGA και (γ) ένας μικροεπεξεργαστής. Μπορεί επίσης ένα από τα προηγούμενα (μνήμη, δεύτερο FPGA, μικροεπεξεργαστής) να βρίσκεται σε γειτονική πλακέτα, η οποία συνδέεται με την πλακέτα στην οποία υπάρχει το FPGA που πρόκειται να προγραμματιστεί. Τέλος, πηγή διαμόρφωσης μπορεί να είναι και το αρχείο προγραμματισμού-διαμόρφωσης που παράγεται από το πρόγραμμα σχεδίασης στον ηλεκτρονικό 8

25 υπολογιστή, το οποίο μπορεί να χρησιμοποιηθεί για τον απευθείας προγραμματισμό του FPGA. Στις μεθόδους όπου χρησιμοποιείται πηγή διαμόρφωσης που βρίσκεται πάνω στην ίδια πλακέτα με το FPGA που πρόκειται να προγραμματιστεί, απαιτείται η μεταφορά των δεδομένων του αρχείου προγραμματισμού-διαμόρφωσης από τον ηλεκτρονικό υπολογιστή στην πηγή διαμόρφωσης της πλακέτας. Δηλαδή απαιτείται ο προγραμματισμός της πηγής διαμόρφωσης με τα δεδομένα του αρχείου προγραμματισμού-διαμόρφωσης. Μετά τον προγραμματισμό της πηγής διαμόρφωσης, το FPGA ρυθμίζεται από τον σχεδιαστή έτσι ώστε να είναι σε θέση να προγραμματίζεται από την πηγή διαμόρφωσης (της πλακέτας) κάθε φορά που δίνεται τροφοδοσία στην πλακέτα. Εάν για παράδειγμα η πηγή διαμόρφωσης είναι μία μνήμη FLASH, η οποία βρίσκεται πάνω στην ίδια πλακέτα με το FPGA που πρόκειται να προγραμματιστεί, θα πρέπει αρχικά αυτή η μνήμη να φορτωθεί με τα περιεχόμενα του αρχείου προγραμματισμούδιαμόρφωσης. Η διαδικασία αυτή κρατάει μερικά λεπτά, αναλόγως της ταχύτητας μεταφοράς δεδομένων μέσω του καλωδίου διαμόρφωσης (configuration port) και του μεγέθους της μνήμης, το οποίο εξαρτάται από τον αριθμό των SRAM-στοιχείων μνήμης που περιέχει το FPGA, που πρόκειται τελικά να προγραμματιστεί. Μετά τον προγραμματισμό της μνήμης FLASH διακόπτεται η τροφοδοσία της πλακέτας και ρυθμίζεται το FPGA μέσω ειδικών ακροδεκτών, έτσι ώστε όταν δοθεί τροφοδοσία στην πλακέτα να προγραμματιστεί από την μνήμη FLASH (που είχε προηγουμένως φορτωθεί με τα δεδομένα του αρχείου προγραμματισμού-διαμόρφωσης). Η διαδικασία προγραμματισμού του FPGA από την μνήμη FLASH κρατάει περίπου ένα δευτερόλεπτο. Επειδή η μνήμη FLASH δεν χάνει τα περιεχόμενά της με την διακοπή της τροφοδοσίας (non-volatile memory) και επειδή ο χρόνος προγραμματισμού του FPGA όταν δίνεται τροφοδοσία στην πλακέτα είναι πάρα πολύ μικρός, δημιουργείται η αίσθηση ότι το FPGA είναι μόνιμα προγραμματισμένο. Αντίθετα, όταν χρησιμοποιείται ο άμεσος προγραμματισμός του FPGA από το αρχείο προγραμματισμού-διαμόρφωσης, η διαμόρφωση του FPGA χάνεται με την διακοπή της τροφοδοσίας. Αυτό οφείλεται στο ότι τα SRAM-στοιχεία χάνουν την διαμόρφωσή τους με την διακοπή της τροφοδοσίας. Επειδή σε αυτήν την περίπτωση τα δεδομένα διαμόρφωσης δεν υπάρχουν μόνιμα κάπου κοντά στο FPGA, για να προγραμματίζεται αυτόματα μόλις δίνεται τροφοδοσία στην πλακέτα, θα πρέπει το FPGA να προγραμματίζεται από τον σχεδιαστή κάθε φορά που δίνεται τροφοδοσία στην πλακέτα. Σχήμα.3.2- Διαδικασία προγραμματισμού της πηγής διαμόρφωσης ή απευθείας προγραμματισμού του FPGA (Λήφθηκε από το [] της βιβλιογραφίας) 9

26 Στο Σχήμα.3.2- φαίνεται η σύνδεση του ηλεκτρονικού υπολογιστή με την πλακέτα, μέσω του καλωδίου διαμόρφωσης. Ο προγραμματισμός τόσο των πηγών δεδομένων διαμόρφωσης όσο και ο απευθείας προγραμματισμός του FPGA γίνεται με την βοήθεια ενός ειδικού καλωδίου (configuration port), το οποίο πληρεί τις προδιαγραφές που απαιτούνται ώστε να μεταφέρονται τα δεδομένα του αρχείου προγραμματισμού-διαμόρφωσης από τον ηλεκτρονικό υπολογιστή, στον οποίο τρέχει το πρόγραμμα σχεδίασης, προς τις πηγές δεδομένων διαμόρφωσης ή το FPGA, τα οποία βρίσκονται πάνω σε μία πλακέτα. Επίσης για να μπορούν οι πηγές δεδομένων διαμόρφωσης και το FPGA να προγραμματίζονται ενώ αποτελούν τμήματα μιας πλακέτας θα πρέπει να έχουν την ιδιότητα-δυνατότητα ISP (In-System Programmable). Το FPGA έχει μία ομάδα ειδικών ακροδεκτών (mode pins), οι οποίοι ρυθμίζονται από τον σχεδιαστή - τελικό χρήστη, για τον καθορισμό της μεθόδου προγραμματισμού του FPGA που θα χρησιμοποιηθεί. Επίσης υπάρχει και μια δεύτερη ομάδα ειδικών ακροδεκτών στο FPGA η οποία χρησιμοποιείται (α) για ενημέρωση του FPGA ότι αρχίζει η διαμόρφωση, (β) για μεταφορά δεδομένων διαμόρφωσης, (γ) για καθορισμό του ρυθμού μεταφοράς μέσω ρολογιού, (δ) για ειδοποίηση ότι παρουσιάστηκε σφάλμα κατά την μεταφορά δεδομένων και (ε) για ειδοποίηση προς την πηγή δεδομένων διαμόρφωσης ή τον ηλεκτρονικό υπολογιστή ότι η διαμόρφωση έχει φτάσει στο τέλος της. Αυτή η δεύτερη ομάδα ειδικών ακροδεκτών διαφέρει σε αριθμό ακροδεκτών από μέθοδο σε μέθοδο προγραμματισμού και μετά το πέρας της διαμόρφωσης του FPGA οι περισσότεροι ακροδέκτες της μπορούν να χρησιμοποιηθούν ως ακροδέκτες εισόδου/εξόδου γενικής χρήσης []. Συγκεκριμένα, οι μέθοδοι προγραμματισμού είναι οι εξής [], [2] Σειριακή μέθοδος προγραμματισμού με το FPGA να δίνει σήμα ρολογιού Master Serial mode Σε αυτήν την μέθοδο το FPGA δέχεται σειριακά τα δεδομένα διαμόρφωσης από μια πηγή δεδομένων διαμόρφωσης, για παράδειγμα μία μνήμη τύπου E 2PROM ή FLASH, στην οποία παρέχει σήμα ρολογιού, καθορίζοντας τον ρυθμό μεταφοράς. Στο Σχήμα.3.22 φαίνεται η μέθοδος προγραμματισμού Master-Serial για το FPGA Virtex-II Pro με την χρήση μιας PROM ως πηγής δεδομένων διαμόρφωσης (η PROM θεωρείται συμβολικά ως υπερσύνολο όλων των μνημών για ανάγνωση μόνο). Επίσης στο ίδιο σχήμα φαίνονται οι ακροδέκτες επιλογής μεθόδου προγραμματισμού (Μ, Μ, Μ2), που σε αυτήν την περίπτωση πρέπει να είναι όλοι στο λογικό '' (μέθοδος Master-Serial), οι ακροδέκτες εισόδου και εξόδου δεδομένων διαμόρφωσης (DIN, DOUT), ο ακροδέκτης ρολογιού (CCLK) και ο ακροδέκτης ειδοποίησης της πηγής δεδομένων διαμόρφωσης ότι η μεταφορά δεδομένων διαμόρφωσης έχει φτάσει στο τέλος της (DONE). 2

27 Σχήμα Προγραμματισμός του FPGA Virtex-II Pro με την μέθοδο Master-Serial (Λήφθηκε από το [2] της βιβλιογραφίας) Σειριακή μέθοδος προγραμματισμού με το FPGA να δέχεται σήμα ρολογιού Slave Serial mode Αυτή η μέθοδος είναι όμοια με την προηγούμενη με την διαφορά ότι το FPGA δέχεται σήμα ρολογιού από άλλη συσκευή. Στις σειριακές μεθόδους δύο FPGAs μπορούν να προγραμματιστούν σε σειρά, δηλαδή η είσοδος διαμόρφωσης του δεύτερου FPGA να παίρνει δεδομένα διαμόρφωσης από την έξοδο δεδομένων διαμόρφωσης του πρώτου. Μια τέτοια περίπτωση φαίνεται στο Σχήμα.3.2-3, όπου το πρώτο FPGA είναι ρυθμισμένο ως Master-Serial, ενώ το δεύτερο ως Slave-Serial. Σε αυτήν την περίπτωση η PROM πρέπει να έχει το κατάλληλο μέγεθος ώστε να είναι ικανή να παρέχει δεδομένα διαμόρφωσης και στα δύο FPGAs. Σχήμα Προγραμματισμός δύο FPGAs που είναι συνδεδεμένα σε σειρά (Λήφθηκε από το [2] της βιβλιογραφίας) 2

28 Παράλληλη μέθοδος προγραμματισμού με το FPGA να δίνει σήμα ρολογιού Master SelectMAP mode Σε αυτήν την μέθοδο χρησιμοποιείται μια ομάδα οκτώ παράλληλων αγωγών (8 bit bus) για την μεταφορά των δεδομένων από την πηγή διαμόρφωσης προς το FPGA. Αυτή η μέθοδος μπορεί να χρησιμοποιηθεί τόσο για τον προγραμματισμόδιαμόρφωση του FPGA, όσο και για την ανάγνωση των δεδομένων διαμόρφωσης που υπάρχουν στο FPGA, αλλά δεν μπορεί να χρησιμοποιηθεί για τον εν σειρά προγραμματισμό συσκευών, όπως στην σειριακή μέθοδο. Στο Σχήμα φαίνεται η χρήση αυτής της μεθόδου για τον προγραμματισμό του FPGA Virtex-II από μία PROM, η οποία χρησιμοποιείται ως πηγή δεδομένων διαμόρφωσης. Σχήμα Παράλληλη μέθοδος προγραμματισμού με το FPGA να δίνει σήμα ρολογιού Master SelectMAP mode (Λήφθηκε από το [2] της βιβλιογραφίας) Παράλληλη μέθοδος προγραμματισμού με το FPGA να δέχεται σήμα ρολογιού Slave SelectMAP mode Αυτή η μέθοδος είναι όμοια με την προηγούμενη με την διαφορά ότι πηγή διαμόρφωσης μπορεί να είναι ένας μικροελεγκτής ή ένα FPGA, που θα παρέχει το σήμα ρολογιού, τα δεδομένα διαμόρφωσης και όλα τα υπόλοιπα απαιτούμενα σήματα στο FPGA που πρόκειται να προγραμματιστεί. Μέθοδος ανίχνευσης-ορίων Boundary-scan (JTAG, IEEE 532) mode Η ιδιότητα ISP (InSystem Programmable) κάποιων συσκευών, όπως κάποιων FPGAs και μνημών, οφείλεται στο πρότυπο ΙΕΕΕ 532 (standard for In-System Configuration (ISC)) που υλοποιούν. Το πρότυπο ΙΕΕΕ 532 βασίζεται και είναι πλήρως συμβατό με το πρότυπο IEEE (Test Access Port and Boundary-Scan Architecture) το οποίο αναφέρεται και ως JTAG (Joint Test Action Group). Ο σκοπός δημιουργίας του προτύπου JTAG ήταν ο έλεγχος σωστής λειτουργίας των συσκευών καθώς και των διασυνδέσεών τους, που βρίσκονται πάνω σε μία πλακέτα. Οι συσκευές οι οποίες έχουν την απαιτούμενη ειδική λογική ώστε να υποστηρίζουν την λειτουργία ανίχνευσης-ορίων (Boundary-scan) μπορούν (α) να στέλνουν δεδομένα στους ακροδέκτες εισόδου/εξόδου για να ελέγχουν τις διασυνδέσεις που έχουν με άλλες συσκευές, οι οποίες βρίσκονται πάνω στην ίδια πλακέτα και (β) να δέχονται σήματα με τα οποία γίνεται έλεγχος της εσωτερικής τους λειτουργίας. Εκτός από την δοκιμή και τον έλεγχο, η λειτουργία ανίχνευσης-ορίων (Boundary-scan) προσφέρει στην 22

29 συσκευή την ευελιξία να έχει δικό της σύνολο εντολών, το οποίο αφορά την ίδια την λειτουργία. Έτσι ένας κατασκευαστής μπορεί να δημιουργήσει το δικό του σύνολο εντολών, το οποίο θα προσφέρει εκτός από τα παραπάνω, την δυνατότητα προγραμματισμού του FPGA και επαλήθευση της σωστής λειτουργίας της εφαρμογής του. Η επαλήθευση με την μέθοδο Boundary-scan γίνεται μέσω ενός καλωδίου το οποίο υποστηρίζει το πρότυπο JTAG και το οποίο συνδέεται στους ακροδέκτες του FPGA που επικοινωνούν με τη λογική του Boundary-scan. Δύο από αυτούς τους ακροδέκτες χρησιμοποιούνται για είσοδο/έξοδο JTAG δεδομένων. Τα δεδομένα αυτά εισέρχονται σειριακά μέσα στο FPGA σε flip-flop που είναι διανεμημένα στα όρια (boundary) του ολοκληρωμένου, σε μορφή μακρύ καταχωρητή ολίσθησης. Τα JTAG flip-flop παρεμβάλλονται ανάμεσα στις εισόδους/εξόδους του ολοκληρωμένου και την εσωτερική λογική του FPGA όπως φαίνεται στο Σχήμα Με αυτόν τον τρόπο το FPGA μπορεί να αλληλεπιδράσει με τα JTAG δεδομένα που εισάγονται, να αποθηκεύσει στους JTAG καταχωρητές αποτελέσματα, τα οποία μπορεί να διαβάσει ο σχεδιαστής μέσω του ακροδέκτη που συνδέεται σε έξοδο του FPGA. Η πιο πάνω διαδικασία, εκτός από τον έλεγχο σωστής λειτουργίας της εφαρμογής του FPGA, μπορεί να χρησιμοποιηθεί και για τον προγραμματισμό του FPGA με την βοήθεια της λογικής ελέγχου JTAG (JTAG-related control logic) και του καταχωρητή εντολών του JTAG. Η εισαγωγή στον καταχωρητή εντολών του JTAG μιας εντολής η οποία επιβάλλει στο FPGA να συνδέσει το flip-flop frame (βλέπε Σχήμα.3.-2), με το οποίο προγραμματίζονται τα SRAM στοιχεία μνήμης, με τα JTAG flip-flop μπορεί να οδηγήσει στον προγραμματισμό του FPGA. Σχήμα Διάταξη των JTAG Boundary-scan flip-flop (Λήφθηκε από το [] της βιβλιογραφίας) 23

30 Κεφάλαιο 2 Περιγραφή ψηφιακών κυκλωμάτων με την γλώσσα VHDL 2. Γενικά Το αρκτικόλεξο VHDL προκύπτει από τις λέξεις VHSIC Hardware Description Language. H λέξη VHSIC είναι και αυτή αρκτικόλεξο και προκύπτει από τις λέξεις Very High Speed Integrated Circuit. Η γλώσσα VHDL ξεκίνησε το 98 ως έργο (project) του Υπουργείου Άμυνας των ΗΠΑ. Σκοπός του έργου ήταν ο κοινός τρόπος τεκμηρίωσης (documentation) της δομής και της λειτουργίας όλων των ψηφιακών κυκλωμάτων που διαχειριζόταν το εν λόγω υπουργείο. Το 983 οι εταιρείες Intermetrics, IBM και Texas Instruments ανέλαβαν από κοινού την ανάπτυξη αυτού του έργου, με αποτέλεσμα την πρώτη επίσημη έκδοση της γλώσσας VHDL, το 985. Για να ενθαρρύνει την αποδοχή της VHDL από την βιομηχανία, το Υπουργείο Άμυνας των ΗΠΑ δώρησε όλα τα δικαιώματα της γλώσσας στο IEEE, το 986 []. Έτσι το 987 η VHDL έγινε πρότυπο του IEEE (IEEE STD ) και από τότε αναθεωρήθηκε και επεκτάθηκε αρκετές φορές [], [2]. Στην παρούσα διπλωματική εργασία θα γίνει χρήση του προτύπου IEEE STD Σήμερα η VHDL χρησιμοποιείται όχι μόνο για τεκμηρίωση, αλλά επιπρόσθετα, για προσομοίωση (simulation) και λογική σύνθεση (logic synthesis). Ως πρότυπο του IEEE, η VHDL προσφέρει δυνατότητες μοντελοποίησης της συμπεριφοράς ψηφιακών κυκλωμάτων. Έτσι η περιγραφή σε VHDL μπορεί να χρησιμοποιηθεί ως είσοδο σε προγράμματα λογισμικού τόσο για την προσομοίωση της λειτουργίας ψηφιακών κυκλωμάτων, όσο και για την σύνθεσή τους [2], [3]. Στο παρόν κεφάλαιο παρουσιάζεται, μέσω παραδειγμάτων, μόνο το τμήμα της γλώσσας VHDL που αφορά τη λογική σύνθεση. Το τμήμα αυτό αναφέρεται μόνο σε ένα υποσύνολο του συνόλου των εντολών και των δυνατοτήτων της VHDL [2], [3]. 2.2 Λογική σύνθεση Η λογική σύνθεση γίνεται με τη βοήθεια λογισμικού, το οποίο ονομάζεται λογισμικό σύνθεσης και αποτελεί αναπόσπαστο κομμάτι των σημερινών προγραμμάτων ψηφιακής σχεδίασης. Έτσι ο σχεδιαστής αρχικά περιγράφει ένα ψηφιακό κύκλωμα με την βοήθεια της γλώσσας VHDL. Η περιγραφή αυτή αντιστοιχεί σε ένα ή περισσότερα αρχεία απλού κειμένου (plain text), τα οποία έχουν συνήθως την κατάληξη.vhd, αντί για την συνήθη.txt. Επειδή ο πηγαίος κώδικας των πλείστων γλωσσών προγραμματισμού που αφορούν λογισμικό γράφεται επίσης σε αρχεία απλού κειμένου (με αντίστοιχες καταλήξεις), η περιγραφή ενός ψηφιακού κυκλώματος σε VHDL συχνά αναφέρεται και ως κώδικας VHDL (VHDL source code). Όταν ο σχεδιαστής προχωρήσει στην σύνθεση της περιγραφής του, το λογισμικό σύνθεσης θα εκτελέσει τις εξής ενέργειες. Έλεγχος της περιγραφής για συντακτικά λάθη από τον VHDL compiler (HDL Compilation). Στην περίπτωση συντακτικών λαθών το λογισμικό σύνθεσης τερματίζει ανεπιτυχώς. Τα συντακτικά λάθη υποδεικνύονται και δίνονται συμβουλές για την διόρθωσή τους. 2. Εφόσον δεν υπάρχουν συντακτικά λάθη, η περιγραφή σε VHDL υποβάλλεται στην διαδικασία σύνθεσης (HDL Synthesis) και το αποτέλεσμα είναι ένα αρχείο το οποίο καλείται netlist. Το αρχείο αυτό περιλαμβάνει βελτιστοποιημένες (optimized) λογικές εκφράσεις, οι οποίες αναπαριστούν σε επίπεδο υλικού την δομή και την λειτουργία του ψηφιακού κυκλώματος που περιγράφηκε σε VHDL. 24

31 Όσον αφορά την δεύτερη ενέργεια, πρέπει να επισημανθεί ότι ενδέχεται μία απηλλαγμένη συντακτικών λαθών περιγραφή σε VHDL, στην οποία χρησιμοποιήθηκαν εντολές μόνο από το υποσύνολο του συνόλου εντολών της γλώσσας που αφορούν την σύνθεση, να μην είναι δυνατό να υποβληθεί στην διαδικασία σύνθεσης με επιτυχία. Ο λόγος είναι ότι υπάρχουν περιγραφές σε VHDL, οι οποίες παρόλο που είναι συντακτικά και λογικά σωστές, εντούτοις δεν αντιστοιχούν σε κάποιο συνδυασμό υπαρκτών ψηφιακών μονάδων, και έτσι το λογισμικό σύνθεσης αδυνατεί να συνθέσει ένα ψηφιακό κύκλωμα, το οποίο να λειτουργεί σύμφωνα με την περιγραφή σε VHDL. Έτσι ο σχεδιαστής θα πρέπει να έχει πάντα κατά νου ότι η VHDL δεν είναι γλώσσα προγραμματισμού λογισμικού, αλλά γλώσσα περιγραφής υλικού, και ότι εάν ο ίδιος δεν έχει μια εικόνα για το τι υπαρκτές ψηφιακές μονάδες θα πρέπει να χρησιμοποιήσει το λογισμικό σύνθεσης για την σύνθεση της περιγραφής του, τότε ενδέχεται είτε η διαδικασία σύνθεσης να αποτύχει [2], [3], είτε να χρησιμοποιήσει περισσότερες ψηφιακές μονάδες από αυτές που απαιτούνται στην πραγματικότητα [3]. Μια ακόμα επισήμανση που πρέπει να γίνει στην δεύτερη ενέργεια του λογισμικού σύνθεσης αφορά τις βελτιστοποιημένες λογικές εκφράσεις που παράγονται. Με τον όρο βελτιστοποιημένες εννοείται, σε μία πρώτη προσέγγιση, ότι θα είναι ελαχιστοποιημένες (minimized) [2], [3]. Όπως θα φανεί από τις παραγράφους που ακολουθούν, η περιγραφή σε VHDL μπορεί να γίνει σε διάφορα επίπεδα αφαίρεσης, στα οποία σχεδόν ποτέ δεν περιγράφεται η ελαχιστοποιημένη μορφή του υπό σχεδίαση ψηφιακού κυκλώματος. 2.3 Επίπεδα αφαίρεσης Ένα ψηφιακό κύκλωμα μπορεί να περιγραφεί σε διάφορα επίπεδα αφαίρεσης []. Στο Σχήμα 2.3 φαίνονται τα επίπεδα αφαίρεσης που αφορούν την γλώσσα VHDL. Τα επίπεδα αφαίρεσης που υποστηρίζονται πλήρως από την γλώσσα είναι το λειτουργικό και το αλγοριθμικό, ενώ σε μικρότερο βαθμό υποστηρίζονται το δομικό και το επίπεδο συστήματος. Σχήμα 2.3- Επίπεδα αφαίρεσης που υποστηρίζονται από την γλώσσα VHDL Στο δομικό επίπεδο η περιγραφή ενός ψηφιακού κυκλώματος αποτελείται μόνο από πύλες. Μία τέτοια περιγραφή δεν είναι καθόλου πρακτική όταν σχεδιάζονται μεγάλα και πολύπλοκα ψηφιακά κυκλώματα. Το λειτουργικό επίπεδο περιλαμβάνει περιγραφές απλών λογικών συναρτήσεων και RTL (Register Transfer Level). Οι RTL περιγραφές αφορούν καταχωρητές που συνδέονται μέσω τμημάτων συνδυαστικής λογικής. Το αλγοριθμικό επίπεδο περιλαμβάνει αφηρημένες δομές, 25

32 όπως βρόχους, διαδικασίες και αλγοριθμικά στοιχεία, όπως εξισώσεις με αθροίσματα και πολλαπλασιασμούς. Το επίπεδο συστήματος αφορά συγκεκριμένες δομές της VHDL, οι οποίες επιτρέπουν περιγραφές αυτού του είδους. 2.4 Περιγραφή συνδυαστικών ψηφιακών κυκλωμάτων 2.4. Δηλώσεις απλής ανάθεσης (Simple assignment statements) Ο κώδικας VHDL που περιγράφει ένα ψηφιακό κύκλωμα αποτελείται από τρία βασικά τμήματα. Στο Σχήμα φαίνεται ο κώδικας VHDL που περιγράφει ένα απλό συνδυαστικό κύκλωμα. Η αρίθμηση των γραμμών δεν ανήκει στον κώδικα - περιλαμβάνεται για σκοπούς αναφοράς. Επίσης η γλώσσα δεν αντιλαμβάνεται την διαφορά μεταξύ κεφαλαίων και μικρών γραμμάτων (caseinsensitive). Σχήμα Περιγραφή συνδυαστικού κυκλώματος με την χρήση λογικών εκφράσεων και δηλώσεων απλής ανάθεσης Το πρώτο βασικό τμήμα αφορά τις γραμμές 4 και 5. Σε αυτές τις γραμμές δίνεται εντολή στον VHDL compiler να συμπεριλάβει κάποια επιπλέον αρχεία κατά την μεταγλώττιση του κώδικα που ακολουθεί. [Δηλαδή η σημασία ύπαρξης των γραμμών 4 και 5 είναι αντίστοιχη με αυτήν των γραμμών της γλώσσας C που ξεκινούν με #include.] Συγκεκριμένα η γραμμή 4 δηλώνει ότι στον κώδικα που ακολουθεί θα χρησιμοποιηθεί κώδικας που βρίσκεται σε μία συλλογή αρχείων, η οποία καλείται βιβλιοθήκη (library). Το όνομα της βιβλιοθήκης που θα χρησιμοποιηθεί είναι IEEE. Η γραμμή 5 δηλώνει τα τμήματα του πακέτου (ένα πακέτο αποτελείται από ένα ή περισσότερα αρχεία κώδικα) της βιβλιοθήκης IEEE (μια βιβλιοθήκη περιλαμβάνει συνήθως πολλά πακέτα) που θα χρησιμοποιηθούν από τον κώδικα που ακολουθεί. Συγκεκριμένα δηλώνεται ότι θα χρησιμοποιηθούν όλα τα τμήματα του πακέτου STD_LOGIC_64 (use IEEE.STD_LOGIC_64.ALL). Το 993 το IEEE όρισε το πρότυπο IEEE STD , το οποίο ενσωματώνεται στο πακέτο STD_LOGIC_64. Το πακέτο αυτό περιλαμβάνει τον τύπο δεδομένων STD_LOGIC, καθώς και συναρτήσεις μετατροπής του σε άλλους τύπους. Ο τύπος STD_LOGIC λαμβάνει εκτός από τις λογικές τιμές '' και '', τιμές όπως 'Ζ' (υψηλή αντίσταση), ' ' (αδιάφορη τιμή), καθώς και κάποιες άλλες, οι οποίες είναι απαραίτητες για την περιγραφή της λειτουργίας πραγματικών ψηφιακών κυκλωμάτων. Για να γίνει χρήση του τύπου STD_LOGIC απαιτούνται οι γραμμές 4 και 5. [Υπάρχει, 26

33 ενσωματωμένος στην VHDL (δηλαδή η χρήση του δεν απαιτεί γραμμές αντίστοιχες με τις 4 και 5), ο τύπος δεδομένων BIT, αλλά αυτός δεν επαρκεί για την περιγραφή της λειτουργίας πραγματικών ψηφιακών κυκλωμάτων, γιατί μπορεί να λάβει μόνο τις λογικές τιμές '' και ''.] Το δεύτερο βασικό τμήμα αφορά τις γραμμές 7-, όπου γίνεται ο ορισμός οντότητας (entity declaration). Θεωρώντας το υπό περιγραφή ψηφιακό κύκλωμα ως μία οντότητα, ο ορισμός οντότητας καθορίζει το όνομα που θα έχει η οντότητα ( entity C_X_ is) και περιγράφει εξωτερικά το συγκεκριμένο ψηφιακό κύκλωμα, δίνοντας πληροφορίες για τις θύρες ( port) που περιλαμβάνει, τον τύπο τους (είσοδοι/έξοδοι in/out), καθώς και τον τύπο δεδομένων που μεταφέρουν (STD_LOGIC). Το τρίτο βασικό τμήμα, το οποίο ονομάζεται αρχιτεκτονική ( architecture) της οντότητας, αφορά τις γραμμές 2-6. Ο σχεδιαστής, όπως και στην περίπτωση του ορισμού οντότητας, πρέπει να δώσει ένα όνομα στην αρχιτεκτονική. Συνήθως δίνεται ένα όνομα σχετικό με την περιγραφή της αρχιτεκτονικής (BOOLE), αλλά θα μπορούσε, όπως και στην περίπτωση της ονομασίας της οντότητας (στο τμήμα ορισμού οντότητας), να δοθεί ένα οποιοδήποτε έγκυρο, σύμφωνα με τους περιορισμούς της VHDL, όνομα [2]. Η αρχιτεκτονική καθορίζει την εσωτερική δομή-λειτουργία του κυκλώματος. Στις γραμμές 4 και 5 η αρχιτεκτονική περιλαμβάνει δύο δηλώσεις απλής ανάθεσης, σε μορφή λογικών συναρτήσεων (οι δηλώσεις τοποθετούνται πάντοτε μετά από την λέξη begin). Αυτές οι δηλώσεις εκτελούνται παράλληλα (ταυτόχρονα - concurrent) και όχι σειριακά, περιγράφοντας ένα συνδυαστικό κύκλωμα, το οποίο λειτουργεί σύμφωνα με τις συγκεκριμένες λογικές εκφράσεις. Οι παρενθέσεις στις λογικές εκφράσεις είναι απαραίτητες, γιατί στην VHDL δεν ορίζεται προτεραιότητα μεταξύ των λογικών τελεστών. Έτσι οι αντίστοιχες εκφράσεις χωρίς παρενθέσεις στερούνται νοήματος και ο VHDL compiler παράγει συντακτικά σφάλματα. Στην γραμμή 4 (όπως και στις γραμμές και 2) υπάρχει ένα σχόλιο (-- Simple assignment statement.). Οτιδήποτε ακολουθεί μετά από δύο συνεχόμενες παύλες σε μία γραμμή εκλαμβάνεται από τον VHDL compiler ως σχόλιο. Στο Σχήμα φαίνεται το αποτέλεσμα της σύνθεσης του κώδικα του σχήματος 2.4.-, στην περίπτωση που η αρχιτεκτονική δεν περιέχει καμία δήλωση (δηλαδή στην περίπτωση που στο Σχήμα οι γραμμές 4 και 5 δεν υπάρχουν). Σχήμα Σύνθεση οντότητας με αρχιτεκτονική χωρίς δηλώσεις Το αποτέλεσμα είναι ένα black box, στο οποίο εμφανίζονται οι είσοδοι και οι έξοδοι σύμφωνα με τον ορισμό της οντότητας. Το αποτέλεσμα σύνθεσης του κώδικα του σχήματος (χωρίς την παράληψη κάποιας γραμμής) φαίνεται στο Σχήμα

34 Σχήμα Αποτέλεσμα σύνθεσης του κώδικα του σχήματος Σύνθετες δηλώσεις Ανάθεση μέσω σήματος επιλογής (Selected signal assignment) Σε αυτήν την δήλωση ένα σήμα παίρνει τιμές ανάλογα με την τιμή ενός άλλου σήματος, το οποίο ορίζεται από τον σχεδιαστή ως σήμα επιλογής. Επομένως η δήλωση αυτή μπορεί να χρησιμοποιηθεί για την περιγραφή πολυπλεκτών και αποκωδικοποιητών (decoders). Στο Σχήμα φαίνεται ο κώδικας VHDL που περιγράφει έναν 2 4-bit πολυπλέκτη με την χρήση της ανάθεσης μέσω σήματος επιλογής. Σχήμα Κώδικας VHDL για έναν 2 4-bit πολυπλέκτη Στις γραμμές 7 και 9 του σχήματος εμφανίζεται ένας νέος τύπος δεδομένων, ο τύπος STD_LOGIC_VECTOR. Ο τύπος αυτός παριστάνει μία ομάδα σημάτων τύπου STD_LOGIC ως ένα σήμα-διάνυσμα, αποτελεί υποτύπο (subtype) του τύπου STD_LOGIC και ορίζεται στο πακέτο STD_LOGIC_64. Οι εκφράσεις (3 downto ) και ( to 3), που ακολουθούν τον τύπο STD_LOGIC_VECTOR, ορίζουν τον αριθμό των σημάτων τύπου STD_LOGIC που περιλαμβάνει το αντίστοιχο σήμα-διάνυσμα, καθώς και το πιο σημαντικό bit (most-significant bit). Συγκεκριμένα με την έκφραση (3 downto ) ορίζεται το bit με δείκτη 3 ως το πιο σημαντικό bit, ενώ στην έκφραση ( to 3) ορίζεται το bit με δείκτη ως το πιο σημαντικό bit. Οι εκφράσεις αυτές δεν παίζουν ιδιαίτερο ρόλο στο συγκεκριμένο παράδειγμα, αφού η λειτουργία του κυκλώματος που 28

35 περιγράφεται είναι, ανάλογα με την τιμή του σήματος επιλογής, να περάσει η μία εκ των εισόδων Α και Β (σήματα 4-bit) στην έξοδο F (και πάλι σήμα 4-bit). Στην περίπτωση όμως που τα σήματα-διανύσματα παριστάνουν δυαδικούς αριθμούς, οι οποίοι εμπλέκονται σε κυκλώματα αριθμητικών πράξεων, τότε είναι πιο φυσικό να αποδίδεται στο πιο σημαντικό bit o μεγαλύτερος δείκτης. [Στα επόμενα το σήμα-διάνυσμα θα αναφέρεται ως σήμα.] Στις γραμμές 4-6 του σχήματος παρουσιάζεται η ανάθεση μέσω σήματος επιλογής για την περιγραφή ενός πολυπλέκτη. Συγκεκριμένα στην γραμμή 4 ορίζεται το σήμα S ως σήμα επιλογής (with S select), ενώ στις 5 και 6 ορίζονται οι τιμές που θα παίρνει η έξοδος F όταν το σήμα S παίρνει τη λογική τιμή '', καθώς και όταν το σήμα S παίρνει μια λογική τιμή διάφορη του '' (others). Έτσι όταν το σήμα S παίρνει τη λογική τιμή '', τότε η έξοδος F παίρνει την τιμή της εισόδου Α, ενώ όταν το σήμα S παίρνει οποιαδήποτε τιμή εκτός της λογικής τιμής '' (others), τότε η έξοδος F παίρνει την τιμή της εισόδου B. Η λέξη others συμβολίζει, εκτός από τη λογική τιμή '', όλες τις άλλες τιμές που μπορεί να πάρει το σήμα S (επειδή το σήμα S είναι τύπου STD_LOGIC, μπορεί να πάρει και άλλες τιμές εκτός από τις λογικές τιμές '' και '' (βλέπε παράγραφο 2.4.)). Η χρήση της λέξης others είναι απαραίτητη γιατί η σύνταξη της γλώσσας VHDL ορίζει ότι η ανάθεση μέσω σήματος επιλογής πρέπει να γίνεται για όλες τις πιθανές τιμές του σήματος επιλογής. Στο Σχήμα φαίνεται ο κώδικας VHDL που περιγράφει έναν 24 δυαδικό αποκωδικοποιητή με την χρήση της ανάθεσης μέσω σήματος επιλογής. Σχήμα Κώδικας VHDL για έναν 24 δυαδικό αποκωδικοποιητή Στην γραμμή 3 του σχήματος φαίνεται ο ορισμός ενός εσωτερικού, στην οντότητα DEC, σήματος τριών bits (W). Ο ορισμός των εσωτερικών σημάτων γίνεται στο τμήμα της αρχιτεκτονικής πριν από την λέξη begin. Στην γραμμή 5 ορίζεται ότι το σήμα W προκύπτει από την ομαδοποίηση των σημάτων εισόδου EN και A (με αυτήν την σειρά). Η ομαδοποίηση γίνεται με τον τελεστή ομαδοποίησης (concatenate operator) &. Έτσι το πρώτο από αριστερά bit του σήματος W, αντιπροσωπεύει το σήμα EN, ενώ τα υπόλοιπα δύο bit αντιπροσωπεύουν το σήμα A. 29

36 Στις γραμμές 6-2 του σχήματος ορίζεται ότι με σήμα επιλογής το σήμα W, η έξοδος Y παίρνει την τιμή όταν το σήμα W παίρνει την τιμή, δηλαδή όταν το σήμα EN (που αντιπροσωπεύει την ενεργοποίηση του αποκωδικοποιητή) παίρνει τη λογική τιμή '' και το σήμα εισόδου A παίρνει τη λογική τιμή. Έτσι όταν ο αποκωδικοποιητής είναι ενεργοποιημένος (το σήμα EN παίρνει τη λογική τιμή ''), ανάλογα με τη λογική τιμή των δύο bits της εισόδου, το bit της εξόδου με δείκτη ίσο με την τιμή που αντιπροσωπεύει η είσοδος παίρνει τη λογική τιμή '', ενώ τα υπόλοιπα τη λογική τιμή '' (το πρώτο bit από αριστερά έχει δείκτη όπως ορίζεται στην γραμμή 9 ( to 3)). Στην γραμμή 2 ορίζεται ότι όταν ο αποκωδικοποιητής δεν είναι ενεργοποιημένος, ανεξάρτητα από την τιμή της εισόδου, η έξοδός του Y είναι. [Οι τιμές σημάτων που αποτελούνται από πολλά bits μπαίνουν σε διπλά εισαγωγικά.] Ανάθεση μέσω σήματος συνθήκης (Conditional signal assignment) Παρόμοια με την ανάθεση μέσω σήματος επιλογής λειτουργεί και η ανάθεση μέσω σήματος συνθήκης, με την διαφορά ότι εκτός από την χρήση της για περιγραφή πολυπλεκτών και αποκωδικοποιητών, μπορεί να χρησιμοποιηθεί για την περιγραφή κωδικοποιητών προτεραιότητας (priority encoders). Εάν στο Σχήμα οι γραμμές 4-6 αντικατασταθούν από την γραμμή που φαίνεται στο Σχήμα , τότε ο κώδικας VHDL θα περιγράφει τον ίδιο 2 4-bit πολυπλέκτη. Σχήμα Ανάθεση μέσω σήματος συνθήκης για την περιγραφή ενός πολυπλέκτη Εάν στο Σχήμα οι γραμμές 6-2 αντικατασταθούν από τις γραμμές που φαίνονται στο Σχήμα , τότε ο κώδικας VHDL θα περιγράφει τον ίδιο 24 δυαδικό αποκωδικοποιητή. Σχήμα Ανάθεση μέσω σήματος συνθήκης για την περιγραφή ενός αποκωδικοποιητή Στο Σχήμα φαίνεται η περιγραφή σε VHDL ενός 42 κωδικοποιητή προτεραιότητας. Στις γραμμές 4-7 του σχήματος φαίνεται ότι το bit της εισόδου Α με δείκτη 3 (Α(3)) έχει την μεγαλύτερη προτεραιότητα. Έτσι εάν πάρουν ταυτόχρονα όλα τα bits της εισόδου Α τη λογική τιμή '', τότε η έξοδος του κωδικοποιητή F θα υποδείξει την είσοδο με την μεγαλύτερη προτεραιότητα (Α(3)). Η σειρά προτεραιότητας είναι Α(3), Α(2), Α() και Α(). Επειδή από την έξοδο F, όπως ορίζεται στις γραμμές 4-7, δεν γίνεται αντιληπτή η τιμή η τιμή του bit A(), στην γραμμή 8 ορίζεται ότι το σήμα εξόδου (του ενός bit) Z θα παίρνει τη λογική τιμή '' όταν όλα τα bit της εισόδου A είναι μηδέν, διαφορετικά θα παίρνει τη λογική τιμή ''. Έτσι όταν η έξοδος F παίρνει την δυαδική τιμή και η έξοδος Ζ τη λογική τιμή '', γίνεται αντιληπτό ότι το bit Α() παίρνει τη λογική τιμή ''. 3

37 Σχήμα Κώδικας VHDL για έναν 42 κωδικοποιητή προτεραιότητας Δηλώσεις ακολουθιακής ανάθεσης Η σειρά, με την οποία εμφανίζονται στον κώδικα VHDL, των δηλώσεων που αναφέρθηκαν στα προηγούμενα δεν επηρεάζει το νόημα του κώδικα (το κύκλωμα που περιγράφεται είναι ακριβώς το ίδιο). Εάν για παράδειγμα στο Σχήμα η δήλωση απλής ανάθεσης της γραμμής 5 μπει μετά την δήλωση της ανάθεσης μέσω σήματος επιλογής (γραμμές 6-2), τότε το νόημα του κώδικα παραμένει το ίδιο και περιγράφεται το ίδιο κύκλωμα. Το ίδιο ισχύει για την σειρά των δηλώσεων των γραμμών 4-7 (ανάθεση μέσω σήματος συνθήκης) και της γραμμής 8 (επίσης ανάθεση μέσω σήματος συνθήκης) στο Σχήμα Οι δηλώσεις απλής ανάθεσης, ανάθεσης μέσω σήματος επιλογής και ανάθεσης μέσω σήματος συνθήκης εκτελούνται ταυτόχρονα, ανεξάρτητα από την θέση που έχουν στο τμήμα ορισμού της αρχιτεκτονικής, και λόγω αυτής της ιδιότητας που έχουν ονομάζονται δηλώσεις ταυτόχρονης ανάθεσης (concurrent assignment statements). Εκτός από τις δηλώσεις ταυτόχρονης ανάθεσης η VHDL παρέχει ακόμα μία κατηγορία δηλώσεων, των οποίων η σειρά με την οποία εμφανίζονται στο κώδικα επηρεάζει το νόημα του κώδικα. Οι δηλώσεις αυτές λέγονται δηλώσεις ακολουθιακής ανάθεσης (sequential assignment statements). Οι δηλώσεις ακολουθιακής ανάθεσης που χρησιμοποιούνται για την περιγραφή συνδυαστικών κυκλωμάτων είναι η case και η if-then-else. Η γλώσσα VHDL απαιτεί οι δηλώσεις ακολουθιακής ανάθεσης να τοποθετούνται μέσα σε μία άλλη δήλωση, η οποία καλείται process. Η δήλωση case είναι ισοδύναμη με την ανάθεση μέσω σήματος επιλογής, όσον αφορά την περιγραφή συνδυαστικών κυκλωμάτων. Έτσι η case μπορεί να χρησιμοποιηθεί για την περιγραφή πολυπλεκτών και αποκωδικοποιητών. Στο Σχήμα φαίνεται το τμήμα κώδικα που εάν αντικαταστήσει τις γραμμές 4-6 στο Σχήμα θα περιγράφεται ακριβώς το ίδιο κύκλωμα με πριν (ένας 2 4-bit πολυπλέκτης). 3

38 Σχήμα Χρήση της case για την περιγραφή ενός 2 πολυπλέκτη Η λέξη process ακολουθείται από μία λίστα ευαισθησίας (sensitivity list) (A, B, S), η οποία θα πρέπει να περιλαμβάνει όλες τις εισόδους του κυκλώματος, όταν περιγράφεται συνδυαστικό κύκλωμα. Η δήλωση process ενεργοποιείται όταν υπάρχει αλλαγή στην τιμή ενός ή περισσότερων σημάτων που βρίσκονται στην λίστα ευαισθησίας. Όταν η process ενεργοποιείται, οι δηλώσεις που βρίσκονται μέσα σε αυτήν υπολογίζονται ακολουθιακά (δηλαδή με την σειρά). Λόγω του υπολογισμού των δηλώσεων ακολουθιακής ανάθεσης, οι τιμές κάποιων σημάτων αλλάζουν. Οι αλλαγές αυτές γίνονται "αντιληπτές" από δηλώσεις ταυτόχρονης ανάθεσης που, ενδεχομένως, υπάρχουν έξω από την δήλωση process, μόνο όταν τελειώσει ο υπολογισμός όλων των δηλώσεων ακολουθιακής ανάθεσης που βρίσκονται μέσα στην process (όταν δηλαδή τελειώσει η εκτέλεση της process). Στην πρώτη γραμμή της case (Σχήμα ) ορίζεται ως σήμα επιλογής το S (case S is) και ανάλογα με τις τιμές που παίρνει αυτό το σήμα, υπολογίζονται οι αντίστοιχες δηλώσεις ανάθεσης. Για παράδειγμα, όταν το σήμα επιλογής S παίρνει τη λογική τιμή '' (when '' =>) τότε η έξοδος F παίρνει την τιμή της εισόδου Α (F <= A;), όταν τελειώσει η εκτέλεση της process. Επειδή η δήλωση case πρέπει να περιλαμβάνει έναν όρο when για κάθε τιμή του σήματος επιλογής S, ο δεύτερος όρος when κάνει χρήση της λέξης others και ορίζει ότι όταν το σήμα επιλογής S παίρνει τιμή διάφορη του λογικού '' (when others =>), τότε η έξοδος F παίρνει την τιμή της εισόδου Β (F <= Β;), όταν τελειώσει η εκτέλεση της process. Η δήλωση if-then-else είναι ισοδύναμη με την ανάθεση μέσω σήματος συνθήκης, όσον αφορά την περιγραφή συνδυαστικών κυκλωμάτων. Έτσι η if-then-else μπορεί να χρησιμοποιηθεί για την περιγραφή πολυπλεκτών, αποκωδικοποιητών και κωδικοποιητών προτεραιότητας. Στο Σχήμα φαίνεται ο κώδικας VHDL που περιγράφει έναν 42 κωδικοποιητή προτεραιότητας, ίδιο με αυτόν που περιγράφηκε στο Σχήμα Η μόνη διαφορά είναι ότι οι γραμμές 4-7 του σχήματος περιγράφονται στο Σχήμα από τις γραμμές 425. Επίσης στο Σχήμα φαίνεται ότι είναι δυνατή η συνύπαρξη δηλώσεων ταυτόχρονης ανάθεσης με την δήλωση process. Σκοπός της δήλωσης process είναι ο διαχωρισμός των δηλώσεων ακολουθιακής ανάθεσης (που τοποθετούνται στο εσωτερικό της) από τις δηλώσεις ταυτόχρονης ανάθεσης (που τοποθετούνται έξω από την process). Η process θεωρείται από την VHDL ως δήλωση ταυτόχρονης ανάθεσης και έτσι μπορεί να εκτελείται ταυτόχρονα με την δήλωση ανάθεσης μέσω σήματος συνθήκης της γραμμής 26 (Σχήμα ). 32

39 Σχήμα Κώδικας VHDL για έναν 42 κωδικοποιητή προτεραιότητας 2.5 Περιγραφή σύγχρονων ακολουθιακών ψηφιακών κυκλωμάτων Οι δηλώσεις ακολουθιακής ανάθεσης (βλέπε παράγραφο ) χρησιμοποιούνται κυρίως για την περιγραφή σύγχρονων ακολουθιακών ψηφιακών κυκλωμάτων. Τα σύγχρονα ακολουθιακά κυκλώματα χρησιμοποιούνται για αποθήκευση δεδομένων (flip-flop και καταχωρητές), καθώς και για διάφορες άλλες λειτουργίες, όπως καταχωρητές ολίσθησης (shift registers), απαριθμητές (counters) και μηχανές πεπερασμένων καταστάσεων FSMs (Finite State Machines) Flip-flop και καταχωρητές Στο Σχήμα φαίνεται ο κώδικας VHDL για ένα θετικά ακμοπυροδότητο D-flip-flop. Στην γραμμή 2 η λίστα ευαισθησίας της process περιλαμβάνει μόνο το σήμα CLOCK και όχι όλες τις εισόδους, όπως γίνεται στα συνδυαστικά κυκλώματα. Αυτό σημαίνει ότι η process θα ενεργοποιείται (εκτελείται) μόνο όταν το σήμα CLOCK αλλάζει. Στην γραμμή 4 παρουσιάζεται ένα νέο στοιχείο της γλώσσας VHDL ( 'EVENT), το οποίο καλείται ιδιότητα (attribute). Υπάρχουν εκτός της 'EVENT και άλλες ιδιότητες στην γλώσσα VHDL. Η συγκεκριμένη ιδιότητα αναφέρεται σε οποιαδήποτε αλλαγή του σήματος CLOCK (CLOCK'EVENT). Έτσι η συνθήκη της if στην γραμμή 4 ισχύει όταν το σήμα CLOCK αλλάζει και η τελική του τιμή είναι το λογικό '' (CLOCK'EVENT and CLOCK = ''), δηλαδή στην θετική ακμή του σήματος CLOCK. Στην γραμμή 5 η έξοδος Q παίρνει την τιμή της εισόδου D, εφόσον ισχύει η συνθήκη της γραμμής 4. Εάν δεν ισχύει η συνθήκη της γραμμής 4, τότε η έξοδος Q διατηρεί την τιμή που πήρε από την είσοδο D την 33

40 τελευταία φορά που παρουσιάστηκε θετική ακμή του σήματος CLOCK. Σχήμα Κώδικας VHDL για ένα D-flip-flop Στο Σχήμα φαίνεται ο κώδικας VHDL για έναν παραμετροποιήσιμο καταχωρητή με ασύγχρονο μηδενισμό. Με την δήλωση generic(n integer = 6); στην γραμμή 5 γίνεται ο ορισμός της παραμέτρου Ν τύπου integer, η οποία παίρνει την τιμή 6. Στις γραμμές 6 και 8 η παράμετρος N χρησιμοποιείται για τον ορισμό του εύρους των σημάτων D και Q του καταχωρητή. Έτσι η παράμετρος Ν μεταβάλλει το μέγεθος του καταχωρητή N_REG. Η λίστα ευαισθησίας της process στην γραμμή 3 έχει δύο σήματα, τα RESET και CLOCK. Έτσι η process ενεργοποιείται με την μεταβολή αυτών των δύο σημάτων. Όταν το σήμα RESET πάρει τη λογική τιμή '', τότε ανεξάρτητα από την μεταβολή του σήματος CLOCK, θα εκτελεστεί η δήλωση Q <= (OTHERS => '');, η οποία σημαίνει ότι όλα τα bits του σήματος Q θα γίνουν '', ανεξάρτητα του μήκους του. Επειδή το σήμα RESET βρίσκεται στην λίστα ευαισθησίας και επειδή ο έλεγχος για την συνθήκη RESET = '' έχει την μεγαλύτερη προτεραιότητα, το Σχήμα περιγράφει έναν παραμετροποιήσιμο καταχωρητή με ασύγχρονο μηδενισμό. Σχήμα Κώδικας VHDL για έναν παραμετροποιήσιμο καταχωρητή 34

41 2.5.2 Καταχωρητές ολίσθησης και απαριθμητές Στο Σχήμα φαίνεται ο κώδικας VHDL για έναν 4-bit καταχωρητή ολίσθησης με παράλληλη φόρτωση. Στην γραμμή 7 γίνεται ορισμός του σήματος Q ως τύπου buffer. Ο τύπος buffer χρησιμοποιείται για τον συμβολισμό εξόδου από μία οντότητα, η οποία (έξοδος) χρησιμοποιείται και ως εσωτερικό σήμα στην οντότητα. Αυτό πρακτικά σημαίνει ότι το σήμα Q μπορεί να χρησιμοποιηθεί και στο δεξιό τμήμα μίας ανάθεσης (ενώ ένα σήμα τύπου out δεν επιτρέπεται να χρησιμοποιηθεί με αυτόν τον τρόπο και βρίσκεται πάντα στο αριστερό τμήμα μίας ανάθεσης). [Τα εργαλεία σχεδίασης προειδοποιούν ότι η χρήση του τύπου buffer μπορεί να προκαλέσει προβλήματα κατά την προσομοίωση (simulation), όπου πρέπει να ορίζονται ρητά οι είσοδοι και οι έξοδοι του υπό εξέταση ψηφιακού κυκλώματος. Για την αποφυγή χρήσης του τύπου buffer για το σήμα Q, μπορεί να οριστεί ένα εσωτερικό σήμα στην αρχιτεκτονική (πριν από την λέξη begin), το οποίο θα χρησιμοποιηθεί μέσα στην process αντί του σήματος Q και θα παρέχει την τιμή του στο Q με μία δήλωση απλής ανάθεσης έξω από την process.] Στην γραμμή 2 δεν υπάρχει λίστα ευαισθησίας στην process. Αυτό συμβαίνει γιατί χρησιμοποιείται στην γραμμή 4 η δήλωση wait until. Η δήλωση wait until χρησιμοποιείται πάντα στην πρώτη γραμμή της process και με την χρήση της υπονοείται ότι στην λίστα ευαισθησίας της process υπάρχει μόνο το σήμα CLOCK (δηλαδή το σήμα εκείνο που εμπλέκεται κάθε φορά με την wait until). Επίσης τα σήματα που λαμβάνουν τιμή σε process που χρησιμοποιείται η wait until θεωρούνται έξοδοι flip-flop. Έτσι στην θετική ακμή του σήματος CLOCK εάν L = '', γίνεται παράλληλη φόρτωση του καταχωρητή ολίσθησης, διαφορετικά τα δεδομένα ολισθαίνουν από αριστερά προς τα δεξιά κατά bit. Οι γραμμές 8-2 υπολογίζονται ακολουθιακά, αλλά λαμβάνουν τις τιμές τους ταυτόχρονα με το τέλος της εκτέλεσης της process (όπως ακριβώς συμβαίνει σε έναν πραγματικό καταχωρητή ολίσθησης). Το σήμα S_IN είναι σειριακή είσοδος στον καταχωρητή ολίσθησης και συνδέεται στην είσοδο του flip-flop που έχει έξοδο το Q(3). Σχήμα Κώδικας VHDL για έναν 4-bit καταχωρητή ολίσθησης H process στο Σχήμα (γραμμές 2-23) είναι ισοδύναμη με την process που φαίνεται στο 35

42 Σχήμα , όπου αντί της δήλωσης wait until χρησιμοποιείται λίστα ευαισθησίας σε συνδυασμό με μία δήλωση if. Σχήμα Ισοδύναμη process με αυτήν του σχήματος Στο Σχήμα φαίνεται ένας 4-bit απαριθμητής προς τα πάνω με ασύγχρονο μηδενισμό (RESET) και σύγχρονο σήμα enable (EN). Στην γραμμή 3 ορίζεται ότι θα χρησιμοποιηθεί το πακέτο NUMERIC_STD στον κώδικα που ακολουθεί. Το πακέτο αυτό είναι απαραίτητο για την χρήση του τελεστή πρόσθεσης +, που χρησιμοποιείται στην γραμμή 8. Η έκφραση RISING_EDGE(CLOCK) που χρησιμοποιείται στην γραμμή 6 είναι μία συνάρτηση του πακέτου STD_LOGIC_64 με όρισμα το σήμα CLOCK. Η έκφραση RISING_EDGE(CLOCK) είναι ισοδύναμη με την έκφραση CLOCK'EVENT and CLOCK = ''. Στο πακέτο NUMERIC_STD η πρόσθεση ορίζεται μόνο για τους τύπους δεδομένων UNSIGNED και SIGNED. [Οι τύποι αυτοί είναι σήματα-διανύσματα και η βάση τους είναι ο τύπος STD_LOGIC. Το αριστερότερο bit στους τύπους UNSIGNED και SIGNED θεωρείται το πιο σημαντικό. Ο τύπος SIGNED είναι στην μορφή του συμπληρώματος ως προς δύο (two's complement form).] Έτσι για να αυξηθεί το σήμα Q κατά, πρώτα μετατρέπεται στον τύπο UNSIGNED και έπειτα το αποτέλεσμα της πρόσθεσης μετατρέπεται σε STD_LOGIC_VECTOR ώστε να συμφωνεί με τον τύπο δεδομένων του σήματος Q. H VHDL κάνει αυστηρό διαχωρισμό στους τύπους δεδομένων. Έτσι παρόλο που οι τύποι UNSIGNED και STD_LOGIC_VECTOR έχουν ως κοινή βάση τον τύπο STD_LOGIC, εντούτοις δεν μπορεί ένα σήμα τύπου STD_LOGIC_VECTOR να πάρει τιμή από ένα σήμα τύπου UNSIGNED, εάν δεν μεσολαβήσει μετατροπή. Εάν το σήμα RESET πάρει τη λογική τιμή '', τότε ο απαριθμητής μηδενίζεται ασύγχρονα (γραμμές 4-5). Εφόσον το σήμα RESET έχει τη λογική τιμή '', σε κάθε θετική ακμή του σήματος CLOCK το σήμα Q αυξάνεται κατά, εάν το σήμα EN έχει τη λογική τιμή '' (γραμμές 78). Στην περίπτωση που το σήμα EN έχει τη λογική τιμή '', το σήμα Q λαμβάνει την τιμή που είχε πριν από θετική ακμή του σήματος CLOCK, δηλαδή η τιμή του σήματος Q παραμένει αμετάβλητη (γραμμή 2). 36

43 Σχήμα Απαριθμητής προς τα πάνω 4-bit Στο Σχήμα θα μπορούσε αντί του πακέτου NUMERIC_STD (γραμμή 3), να χρησιμοποιηθεί το πακέτο STD_LOGIC_UNSIGNED. Το πακέτο STD_LOGIC_UNSIGNED καθορίζει ότι τα σήματα τύπου STD_LOGIC_VECTOR μπορούν να αντιμετωπίζονται ως τύπου UNSIGNED. Έτσι στο κώδικα του σχήματος στην θέση της γραμμής 3 θα υπήρχε η δήλωση use IEEE.STD_LOGIC_UNSIGNED.ALL και στην θέση της γραμμής 8 θα υπήρχε η δήλωση Q <= Q +. Το πακέτο STD_LOGIC_UNSIGNED κάνει χρήση ενός άλλου πακέτου, του STD_LOGIC_ARITH. [Τα πακέτα STD_LOGIC_UNSIGNED και STD_LOGIC_ARITH (καθώς και το πακέτο STD_LOGIC_SIGNED για τους προσημασμένους αριθμούς) δεν αποτελούν τμήμα των προτύπων της IEEE, που αφορούν την γλώσσα VHDL. Τα πακέτα αυτά παρέχονται από την εταιρεία Synopsys Inc., η οποία είναι πωλητής προγραμμάτων λογισμικού CAD (Computer-Aided Design) [2]. Εντούτοις τα πακέτα STD_LOGIC_ARITH, STD_LOGIC_SIGNED και STD_LOGIC_UNSIGNED περιλαμβάνονται στα περισσότερα συστήματα σχεδίασης CAD που υποστηρίζουν την γλώσσα VHDL και χρησιμοποιούνται ευρέως στην πράξη. Επειδή υπάρχει η πιθανότητα τα πιο πάνω πακέτα να διαφέρουν, έστω και ελάχιστα, από λογισμικό CAD σε λογισμικό CAD, συνίσταται από κάποιες εταιρείες σχεδίασης ψηφιακών συστημάτων η χρήση του πακέτου NUMERIC_STD, το οποίο αποτελεί τμήμα των προτύπων της γλώσσας VHDL [4].] Μηχανές πεπερασμένων καταστάσεων Οι μηχανές πεπερασμένων καταστάσεων ή FSMs (Finite State Machines) αποτελούν ένα συστηματικό τρόπο σχεδίασης σύγχρονων ακολουθιακών κυκλωμάτων [2], [3], [5]. 37

44 Σχήμα Γενική μορφή μιας FSM Η γενική μορφή μιας FSM φαίνεται στο Σχήμα Εάν θεωρηθεί ότι η διακεκομμένη γραμμή δεν υπάρχει στο σχήμα τότε η FSM ακολουθεί το μοντέλο Moore, κατά το οποίο οι έξοδοι είναι συνάρτηση της παρούσας κατάστασης. Στην περίπτωση που η διακεκομμένη γραμμή υπάρχει τότε η FSM ακολουθεί το μοντέλο Mealy, κατά το οποίο οι έξοδοι είναι συνάρτηση της παρούσας κατάστασης και των εισόδων. Σχήμα Διάγραμμα καταστάσεων - μοντέλο Moore Στο Σχήμα φαίνεται το διάγραμμα καταστάσεων ενός σύγχρονου ακολουθιακού κυκλώματος που ακολουθεί το μοντέλο Moore και πληρεί τις εξής προδιαγραφές. Το κύκλωμα έχει μία είσοδο, w, και μία έξοδο, z. 2. Η έξοδος z παίρνει τη λογική τιμή '' εάν κατά την διάρκεια των δύο αμέσως προηγούμενων παλμών του σήματος ρολογιού η είσοδος w ήταν ίση με ''. Στο Σχήμα φαίνεται ο κώδικας VHDL που αντιστοιχεί στο διάγραμμα καταστάσεων του σχήματος Στην γραμμή χρησιμοποιείται η λέξη type για να γίνει ορισμός του τύπου STATE_TYPE, ο οποίος μπορεί να λάβει τις τιμές A, B και C. [Αντί του ονόματος STATE_TYPE θα μπορούσε να χρησιμοποιηθεί οποιοδήποτε έγκυρο όνομα της VHDL. Το ίδιο ισχύει και για τις 38

45 τιμές A, B και C.] Σε αυτήν την περίπτωση, η λέξη type χρησιμοποιείται για τον ορισμό τύπων δεδομένων που παίρνουν αριθμήσιμες τιμές, οι οποίες καθορίζονται από τον σχεδιαστή (γι' αυτό και οι τύποι δεδομένων που ορίζονται με αυτόν τον τρόπο ονομάζονται enumerated types [6]). Στην γραμμή ορίζονται τα σήματα y_next και y_present ως τύπου STATE_TYPE, τα οποία στο Σχήμα αντιπροσωπεύουν το σήμα επόμενης κατάστασης και το σήμα παρούσας κατάστασης αντίστοιχα. Τα σήματα αυτά μπορούν, σύμφωνα με τον ορισμό του τύπου STATE_TYPE στην γραμμή, να πάρουν μία από τις τιμές A, B και C. Επειδή οι καταστάσεις εκφράζονται με τους χαρακτήρες A, B και C, δεν ορίζεται η κωδικοποίησή τους και δίνεται η ευελιξία στο εργαλείο σύνθεσης να ορίσει την κωδικοποίησή τους ανάλογα με τους περιορισμούς (constraints) που θέτει ο σχεδιαστής (οι περιορισμοί αφορούν την ταχύτητα και το μέγεθος της υπό σχεδίασης FSM). Υπάρχει όμως και η δυνατότητα ορισμού των καταστάσεων από τον σχεδιαστή στον κώδικα VHDL. Η process που ορίζεται στις γραμμές 4-36 του σχήματος αντιπροσωπεύει την συνδυαστική λογική υπολογισμού επόμενης κατάστασης του σχήματος Έχει ως εισόδους την είσοδο w και την παρούσα κατάσταση y_present και υπολογίζει το σήμα επόμενης κατάστασης y_next. Η process που ορίζεται στις γραμμές του σχήματος αντιπροσωπεύει τον καταχωρητή κατάστασης του σχήματος Ο καταχωρητής αυτός παίρνει ασύγχρονα την τιμή που αντιστοιχεί στην κατάσταση Α όταν το σήμα RESET πάρει τη λογική τιμή '' (γραμμές 4-4). Στην περίπτωση που το σήμα RESET έχει τη λογική τιμή '', σε κάθε θετική ακμή του σήματος CLOCK, ο καταχωρητής κατάστασης αποθηκεύει την επόμενη κατάσταση (γραμμές 42-43). Η γραμμή 47 του σχήματος αντιπροσωπεύει την συνδυαστική λογική υπολογισμού της εξόδου του σχήματος Σύμφωνα με αυτά που αναφέρθηκαν στην παράγραφο , η δήλωση της γραμμής 47 θα μπορούσε να περιγραφεί ισοδύναμα από μία process. Τελικά η έξοδος z παίρνει τη λογική τιμή '' εάν η παρούσα κατάσταση y_present έχει την τιμή που αντιστοιχεί στην κατάσταση C, δηλαδή, σύμφωνα με το διάγραμμα καταστάσεων του σχήματος , όταν η είσοδος w είχε τη λογική τιμή '' κατά την διάρκεια των δύο αμέσως προηγούμενων παλμών του σήματος CLOCK. 39

46 Σχήμα Κώδικας VHDL που αντιστοιχεί στο διάγραμμα καταστάσεων του σχήματος Στο Σχήμα φαίνεται η αρχιτεκτονική της οντότητας Moore_ του σχήματος όταν η κωδικοποίηση των καταστάσεων γίνει από τον σχεδιαστή. 4

47 Σχήμα Αρχιτεκτονική με κωδικοποίηση καταστάσεων για την οντότητα του σχήματος Έτσι τα σήματα y_present και y_next ορίζονται ως τύπου STD_LOGIC_VECTOR( downto ) για να μπορούν να λάβουν τις τιμές των καταστάσεων A, B και C, που ορίζονται ως σταθερές τύπου STD_LOGIC_VECTOR( downto ). Επειδή τα σήματα y_present και y_next ορίζονται ως STD_LOGIC_VECTOR( downto ) είναι απαραίτητο στην δήλωση case της πρώτης process να μπει η έκφραση when others. Στην αρχιτεκτονική του σχήματος αυτό δεν χρειάζεται γιατί στην case καθορίζεται τι θα γίνει για όλες τις πιθανές τιμές του σήματος y_present, το οποίο είναι τύπου STATE_TYPE. [Πρέπει να επισημανθεί ότι παρόλο που ο κώδικας VHDL του σχήματος καθορίζει ρητά την κωδικοποίηση των καταστάσεων, ενδέχεται το εργαλείο σύνθεσης να αλλάξει την κωδικοποίηση κατά την σύνθεση εάν υπάρχει ρύθμιση (στο εργαλείο σύνθεσης) που καθορίζει ότι η κωδικοποίηση καταστάσεων θα γίνεται αυτόματα. Σε αυτήν την περίπτωση ο 4

48 σχεδιαστής θα πρέπει να μεταβάλλει την ρύθμιση αυτή έτσι ώστε να καθορίζεται ότι η κωδικοποίηση θα γίνει σύμφωνα με τον κώδικα VHDL.] Στο Σχήμα φαίνεται μία εναλλακτική (αλλά ισοδύναμη) αρχιτεκτονική της οντότητας Moore_ του σχήματος Στην αρχιτεκτονική του σχήματος ορίζεται μόνο το σήμα παρούσας κατάστασης y. Η περιγραφή της συνδυαστικής λογικής υπολογισμού επόμενης κατάστασης και του καταχωρητή κατάστασης γίνεται με την χρήση μίας process. Σχήμα Εναλλακτική αρχιτεκτονική για την οντότητα του σχήματος Στο Σχήμα φαίνεται το διάγραμμα καταστάσεων ενός σύγχρονου ακολουθιακού κυκλώματος που ακολουθεί το μοντέλο Mealy και πληρεί τις εξής προδιαγραφές. Το κύκλωμα έχει μία είσοδο, w, και μία έξοδο, z. 2. Η έξοδος z παίρνει τη λογική τιμή '' κατά τον ίδιο κύκλο του σήματος ρολογιού, στον οποίο η είσοδος w παίρνει τη λογική τιμή '' για δεύτερη συνεχόμενη φορά. 42

49 Σχήμα Διάγραμμα καταστάσεων - μοντέλο Mealy Σχήμα Κώδικας VHDL που αντιστοιχεί στο διάγραμμα καταστάσεων του σχήματος Στο Σχήμα φαίνεται ο κώδικας VHDL που αντιστοιχεί στο διάγραμμα καταστάσεων του σχήματος Στις γραμμές 5-35 περιγράφεται ο καταχωρητής κατάστασης και η συνδυαστική λογική υπολογισμού επόμενης κατάστασης και στην γραμμή 37 η συνδυαστική λογική υπολογισμού της εξόδου, όπου φαίνεται ότι η έξοδος εξαρτάται από την είσοδο, όπως ορίζεται στο μοντέλο Mealy. 43

50 2.6 Περιγραφή ψηφιακών κυκλωμάτων με την χρήση υποκυκλωμάτων Έστω ότι σε έναν φάκελο (folder) με το όνομα project, ο σχεδιαστής ψηφιακών συστημάτων έχει δύο αρχεία κώδικα VHDL. Το ένα ονομάζεται MUX.vhd και περιέχει τον κώδικα του σχήματος και το άλλο ονομάζεται N_REG.vhd και περιέχει τον κώδικα του σχήματος Ο σχεδιαστής επιθυμεί η έξοδος του πολυπλέκτη να αποθηκεύεται σε έναν καταχωρητή αντίστοιχου μεγέθους. Στο Σχήμα 2.6- φαίνεται ο κώδικας VHDL του αρχείου MUX_REG.vhd, το οποίο βρίσκεται στον κατάλογο project και περιγράφει την διασύνδεση των δύο υποκυκλωμάτων ώστε να προκύψει το επιθυμητό αποτέλεσμα. Σχήμα 2.6- Κώδικας VHDL για ψηφιακό κύκλωμα που προκύπτει από υποκυκλώματα Από την δήλωση της οντότητας MUX_REG (γραμμές 4-8) φαίνεται ότι οι θύρες του κυκλώματος που προκύπτει περιλαμβάνει όλες τις θύρες των υποκυκλωμάτων, εκτός από αυτές που εμπλέκονται στην μεταξύ τους σύνδεση. Τα ονόματα των θυρών θα μπορούσαν να είναι οποιαδήποτε έγκυρα ονόματα της VHDL. Επειδή η αρχιτεκτονική της οντότητας MUX_REG περιγράφει ένα κύκλωμα που προκύπτει από την διασύνδεση υποκυκλωμάτων, ονομάζεται (αυθαίρετα) STRUCTURAL (γραμμή ). Στις γραμμές 26 και 8-23 δηλώνονται τα δύο υποκυκλώματα που θα χρησιμοποιηθούν στην οντότητα MUX_REG (component declaration statements). Οι δηλώσεις αυτές ξεκινούν και τελειώνουν με την λέξη component και περιγράφουν εξωτερικά τα υποκυκλώματα, όπως ακριβώς γίνεται στην περιγραφή των οντοτήτων τους, στα αρχεία MUX.vhd και N_REG.vhd. Οι δηλώσεις των υποκυκλωμάτων, όπως και η δήλωση του σήματος MUX_OUT που θα υλοποιήσει την εσωτερική διασύνδεση (γραμμή 44

51 25), γίνονται πάντα στην αρχιτεκτονική, πριν από την λέξη begin. Στις γραμμές υπάρχει μία δήλωση στιγμιοτύπου (instantiation statement), το οποίο ονομάζεται part_mux. [Θα μπορούσε να ονομαστεί με οποιοδήποτε έγκυρο όνομα της VHDL. Η αναγκαιότητα ονομασίας του στιγμιοτύπου προκύπτει από το γεγονός ότι το ίδιο υποκύκλωμα μπορεί να απαιτείται να χρησιμοποιηθεί πολλές φορές στην αρχιτεκτονική κάποιου κυκλώματος.] Το στιγμιότυπο part_mux είναι ένα στιγμιότυπο του υποκυκλώματος MUX και συνδέεται με τις θύρες της οντότητας MUX_REG με τον τρόπο που περιγράφεται μετά τις λέξεις port map. Συγκεκριμένα περιγράφεται ότι στην θέση της θύρας A του υποκυκλώματος θα συνδεθεί η θύρα A της οντότητας MUX_REG, στην θέση της θύρας B του υποκυκλώματος θα συνδεθεί η θύρα B της οντότητας MUX_REG, στην θέση της θύρας S του υποκυκλώματος θα συνδεθεί η θύρα S της οντότητας MUX_REG και στην θέση της θύρας F του υποκυκλώματος θα συνδεθεί το εσωτερικό σήμα MUX_OUT της οντότητας MUX_REG. Η αντιστοίχιση των θυρών του στιγμιοτύπου του υποκυκλώματος MUX με τις θύρες της οντότητας MUX_REG με τον τρόπο που περιγράφηκε πιο πάνω λέγεται αντιστοίχιση με βάση την θέση των θυρών του εξαρτήματος (position association). Επίσης η χρήση ίδιων ονομάτων για κάποιες θύρες της οντότητας MUX_REG με αυτές του υποκυκλώματος MUX δεν δημιουργούν κάποιο πρόβλημα στο VHDL compiler, γιατί σε αυτόν τον τρόπο αντιστοίχισης ο VHDL compiler ελέγχει εάν η θύρα στο στιγμιότυπο έχει ένα όνομα το οποίο αντιστοιχεί σε αυτά των θυρών της οντότητας MUX_REG και εάν η θύρα της οντότητας MUX_REG που αντιστοιχήθηκε στην συγκεκριμένη θέση θύρας του στιγμιοτύπου του υποκυκλώματος είναι του ίδιου τύπου με την θύρα του υποκυκλώματος στην συγκεκριμένη θέση. Δηλαδή τα ονόματα των θυρών του υποκυκλώματος στην αντίστοιχη δήλωση component δεν επηρεάζουν την ονοματολογία που χρησιμοποιείται από την οντότητα MUX_REG. Στις γραμμές υπάρχει η δήλωση στιγμιοτύπου part_n_reg του υποκυκλώματος N_REG. Στην γραμμή 3 δηλώνεται ότι τα σήματα του παραμετροποιήσιμου καταχωρητή N_REG θα είναι 4-bit (generic map (N => 4)). Εάν η έκφραση generic map (N => 4) παραλειπόταν, τότε τα σήματα του καταχωρητή θα ήταν 6-bit, όπως ορίζεται στο υποκύκλωμα N_REG. Επειδή όμως η έξοδος του υποκυκλώματος MUX είναι ένα σήμα 4-bit, απαιτείται ο παραμετροποιήσιμος καταχωρητής N_REG να έχει μέγεθος 4 bits. Στις γραμμές 3-32 γίνεται αντιστοίχιση των σημάτων του υποκυκλώματος N_REG με αυτά της οντότητας MUX_REG. Αυτός ο τρόπος αντιστοίχισης λέγεται αντιστοίχιση με βάση το όνομα των θυρών του υποκυκλώματος και της οντότητας (name association). Σε αυτόν το τρόπο αντιστοίχισης καθορίζεται ότι το σήμα που βρίσκεται στα αριστερά του => είναι το σήμα που ορίζεται στην δήλωση component του υποκυκλώματος N_REG και το σήμα στα δεξιά είναι το αντίστοιχο της οντότητας MUX_REG. H σειρά αναγραφής της αντιστοίχισης των σημάτων καθώς και το εάν τα σήματα της οντότητας MUX_REG έχουν τα ίδια ονόματα με αυτά του υποκυκλώματος N_REG δεν δημιουργούν κανένα πρόβλημα στον VHDL compiler. Στο Σχήμα φαίνεται το αποτέλεσμα σύνθεσης του κώδικα του σχήματος Σχήμα Το αποτέλεσμα σύνθεσης του κώδικα του σχήματος

52 Υπάρχει ένας εναλλακτικός τρόπος περιγραφής του κυκλώματος του σχήματος Αντί να γίνει η δήλωση των υποκυκλωμάτων στην αρχιτεκτονική της οντότητας MUX_REG, μπορεί να γίνει σε ένα πακέτο (package) της γλώσσας VHDL. Ένα πακέτο αποτελείται συνήθως από ένα αρχείο κώδικα VHDL που περιέχει μέσα δομές της γλώσσας VHDL, όπως δηλώσεις τύπων δεδομένων και δηλώσεις υποκυκλωμάτων, οι οποίες μπορούν να χρησιμοποιηθούν από άλλα αρχεία κώδικα της VHDL. Στην συγκεκριμένη περίπτωση ορίζεται ότι το αρχείο SUBCIRCUIT.vhd, το οποίο βρίσκεται στον φάκελο project, περιέχει τον κώδικα VHDL του πακέτου SUBCIRCUIT. Το πακέτο SUBCIRCUIT περιλαμβάνει τις δηλώσεις των υποκυκλωμάτων MUX και N_REG. Ο κώδικας ορισμού του πακέτου SUBCIRCUIT φαίνεται στο Σχήμα Σχήμα Κώδικας ορισμού του πακέτου SUBCIRCUIT Θεωρώντας ότι στον φάκελο project υπάρχουν τα αρχεία MUX.vhd, N_REG.vhd και SUBCIRCUIT.vhd, η περιγραφή του κυκλώματος του σχήματος γίνεται από την εναλλακτική μορφή του αρχείου MUX_REG.vhd, η οποία φαίνεται στο Σχήμα Σχήμα Εναλλακτική μορφή του αρχείου MUX_REG.vhd 46

53 Η διαφορά του αρχείου MUX_REG.vhd του σχήματος σε σχέση με αυτό του σχήματος 2.6- είναι ότι δεν υπάρχουν πλέον στην αρχιτεκτονική οι δηλώσεις των υποκυκλωμάτων, γιατί χρησιμοποιείται το πακέτο SUBCIRCUIT (γραμμές 3-4). Συγκεκριμένα στην γραμμή 3 ορίζεται ότι θα χρησιμοποιηθούν πακέτα από την βιβλιοθήκη WORK, η οποία συμβολίζει τον φάκελο εργασίας (στην συγκεκριμένη περίπτωση τον φάκελο project). [Συνήθως η γραμμή 3 παραλείπεται γιατί ο VHDL compiler έχει πάντα πρόσβαση στον φάκελο εργασίας.] Στην γραμμή 4 ορίζεται ότι από αυτήν την βιβλιοθήκη θα χρησιμοποιηθούν όλα τα τμήματα του πακέτου SUBCIRCUIT. Η χρήση υποκυκλωμάτων μέσω πακέτων καθίσταται αναγκαία στην περίπτωση που κάποια υποκυκλώματα χρησιμοποιούνται συχνά σε διάφορα τμήματα ενός ψηφιακού συστήματος. 2.7 Περιγραφή ψηφιακών κυκλωμάτων με την χρήση επαναληπτικών δηλώσεων Επειδή πολλά ψηφιακά κυκλώματα παρουσιάζουν κανονικότητα και ομοιομορφία στην δομή και την λειτουργία τους, η VHDL παρέχει δηλώσεις για την περιγραφή τους σε πιο συνοπτική και συμπαγή μορφή. Οι δηλώσεις αυτές είναι η for generate για την περιγραφή κυκλωμάτων που παρουσιάζουν κανονικότητα και ομοιομορφία στην δομή τους και η for loop για την περιγραφή κυκλωμάτων που παρουσιάζουν κανονικότητα και ομοιομορφία στην λειτουργία τους for generate Στο Σχήμα φαίνεται η περιγραφή ενός 8-bit καταχωρητή, ο οποίος περιλαμβάνει σύγχρονα σήματα reset και enable για το κάθε D-flip-flop που περιλαμβάνεται σε αυτόν. Ο καταχωρητής αυτός δημιουργείται (generate) με την χρήση της εντολής for generate. Σχήμα Περιγραφή 8-bit καταχωρητή με την χρήση της δήλωσης for generate 47

54 Στην γραμμή 5 του σχήματος ξεκινάει η δήλωση for generate. Μία δήλωση for generate πρέπει υποχρεωτικά να ονομάζεται ( gen_ffs). Η έκφραση i IN 7 downto ορίζει μία τοπική για την for generate - μεταβλητή με το όνομα i, η οποία παίρνει τιμές από 7 μέχρι ( 7 downto ). Αντί του ονόματος i θα μπορούσε να χρησιμοποιηθεί οποιοδήποτε άλλο έγκυρο όνομα. Η μεταβλητή i θα πρέπει υποχρεωτικά να έχει καθορισμένο εύρος, δηλαδή δεν θα μπορούσε το εύρος της να οριστεί ως η τιμή που παίρνει ένα σήμα στην οντότητα, αλλά θα μπορούσε να οριστεί ως το εύρος ενός σήματος της οντότητας [7]. Δηλαδή η γραμμή 5 είναι ισοδύναμη με την γραμμή gen_ffs for i IN tmp'range generate, όπου ως εύρος της μεταβλητής i χρησιμοποιείται το εύρος του σήματος tmp, το οποίο ορίζεται στην γραμμή 3 (η έκφραση 'RANGE είναι ακόμη μία ιδιότητα (attribute) της γλώσσας VHDL). Εάν η περιγραφή ενός κυκλώματος περιλαμβάνει παραμέτρους, τότε εφόσον είναι επιθυμητό, οι παράμετροι αυτοί μπορούν να χρησιμοποιηθούν για τον ορισμό του εύρους της μεταβλητής της δήλωσης for generate [2]. Έτσι η μεταβλητή i χρησιμοποιείται στις δηλώσεις ταυτόχρονης ανάθεσης που βρίσκονται στο εσωτερικό της for generate, ώστε να δημιουργηθεί το απαιτούμενο υλικό (η process είναι δήλωση ταυτόχρονης ανάθεσης βλέπε παράγραφο ). Στις γραμμές 6-25 περιγράφεται, συναρτήσει της μεταβλητής i, ένα D-flip-flop με σύγχρονα σήματα RSET και EN. Έτσι η δήλωση for generate που ορίζεται στις γραμμές 5-26 περιγράφει έναν καταχωρητή, εύρους ίσο με το εύρος της μεταβλητής i, του οποίου το κάθε D-flip-flop περιλαμβάνει σύγχρονα σήματα reset ( RSET(i)) και enable (EN(i)) for loop Η δήλωση for loop χρησιμοποιείται πάντα μέσα στο εσωτερικό μίας process και πρέπει υποχρεωτικά να ονομάζεται όπως ακριβώς και η for generate. Επίσης η δήλωση for loop περιλαμβάνει τοπική μεταβλητή, για την οποία ισχύουν τα ίδια με την περίπτωση της τοπικής μεταβλητής της δήλωσης for generate (βλέπε παράγραφο 2.7.). Στο Σχήμα φαίνεται η περιγραφή ενός καταχωρητή ολίσθησης 4-bit, όπου η περιγραφή της ολίσθησης των bits 3- γίνεται με την χρήση μιας δήλωσης for loop. 48

55 Σχήμα Περιγραφή ενός καταχωρητή ολίσθησης 4-bit με την χρήση δήλωσης for loop 49

56 Κεφάλαιο 3 Η αρχιτεκτονική του μικροεπεξεργαστή ASM 3. ASM AVR-like Soft Microprocessor Ο όρος soft microprocessor αναφέρεται σε μικροεπεξεργαστή, του οποίου η περιγραφή είναι σε μορφή που μπορεί να υλοποιηθεί, μέσω λογικής σύνθεσης, σε διάφορα προγραμματιζόμενα ψηφιακά κυκλώματα [], [8]. Η περιγραφή αφορά συνήθως κώδικα γλώσσας περιγραφής υλικού (HDL code), ο οποίος περιγράφει σε επίπεδο RTL τον μικροεπεξεργαστή. Ο ASM είναι ένας soft microprocessor που περιγράφεται σε επίπεδο RTL με την χρήση της γλώσσας VHDL και υλοποιεί ένα υποσύνολο του συνόλου εντολών του μικροελεγκτή AVR. 3.2 Ο Μικροελεγκτής AVR Πρόκειται για έναν RISC 8-bit μικροελεγκτή ακεραίων, με 32 καταχωρητές γενικής χρήσης (Register File - RF), με ξεχωριστές μνήμες για το πρόγραμμα (Flash) και τα δεδομένα (SRAM), με πρόσθετη μνήμη (EEPROM) και πολλά περιφερειακά [9]. Ο προγραμματισμός της μνήμης προγράμματος (Flash), της πρόσθετης μνήμης (EEPROM) καθώς και κάποιων άλλων προγραμματιζόμενων χαρακτηριστικών του μικροελεγκτή γίνεται μέσω JTAG Η αρχιτεκτονική του μικροελεγκτή AVR Το μπλοκ διάγραμμα της αρχιτεκτονικής του μικροελεγκτή AVR φαίνεται στο Σχήμα Σχήμα Μπλοκ διάγραμμα της αρχιτεκτονικής του μικροελεγκτή AVR 5

57 Στο Σχήμα φαίνεται σκιασμένο το κύριο μέρος του μικροελεγκτή AVR (AVR CPU Core) [9]. Ο AVR χρησιμοποιεί αρχιτεκτονική Harvard (ξεχωριστές μνήμες και διαύλους για το πρόγραμμα και τα δεδομένα) και αποτελεί μία RISC (Reduced Instruction Set Computer) υλοποίηση με δύο στάδια διοχέτευσης. Έτσι σε έναν κύκλο του σήματος ρολογιού (clk CPU) μία εντολή γράφεται (λειτουργία Fetch) στον καταχωρητή IR (Instruction Register) και η προηγούμενη αποκωδικοποιείται (λειτουργία Decode Register Operands Fetch), εκτελείται (λειτουργία Execute ALU Operation Execute) και το αποτέλεσμά της γράφεται στον προορισμό που ορίζεται στην συγκεκριμένη εντολή (λειτουργία Result Write Back). Τα προηγούμενα συνοψίζονται στο Σχήμα Σχήμα Η λειτουργία της γραμμής διοχέτευσης του AVR Με την εγγραφή του αποτελέσματος, στο τέλος της εκτέλεσης της εκάστοτε εντολής, μεταβάλλεται και το περιεχόμενο του καταχωρητή SREG (Status Register) αναλόγως. Ο SREG είναι ένας 8-bit καταχωρητής και περιέχει πληροφορία που αφορά το αποτέλεσμα της εκτέλεσης της τελευταίας αριθμητικής, λογικής και επιπέδου bit εντολής. Η πληροφορία αυτή μπορεί να χρησιμοποιηθεί ως συνθήκη στις εντολές άλματος υπό συνθήκη για την μεταβολή της ροής εκτέλεσης του προγράμματος. Στο Σχήμα φαίνεται ο καταχωρητής SREG του AVR. Σχήμα O καταχωρητής SREG του AVR (Λήφθηκε από το [9] της βιβλιογραφίας) Το κάθε bit του SREG ονομάζεται σημαία (flag) και έχει μία πολύ καθορισμένη σημασία για την κάθε εντολή που το μεταβάλλει [9], [2]. Τα περιεχόμενα των καταχωρητών γενικής χρήσης 27-26, και 3-3 χρησιμοποιούνται επιπρόσθετα ως 6-bit διευθύνσεις κατά την έμμεση διεθυνσιοδότηση (indirect addressing) του χώρου δεδομένων (data space) και ονομάζονται καταχωρητές έμμεσης διευθυνσιοδότησης X, Y και Z αντίστοιχα [9], [2]. Στο Σχήμα φαίνονται οι καταχωρητές X, Y και Z. 5

58 Σχήμα Oι καταχωρητές X, Y και Z (Λήφθηκε από το [9] της βιβλιογραφίας) Ο χώρος διευθύνσεων του χώρου δεδομένων θεωρείται ότι περιλαμβάνει τους 32 καταχωρητές γενικής χρήσης, τους καταχωρητές που σχετίζονται με τις εισόδους/εξόδους, την εσωτερική μνήμη SRAM και την εξωτερική μνήμη SRAM, εφόσον αυτή υπάρχει. Στο Σχήμα φαίνονται οι πιθανές διαμορφώσεις του χώρου δεδομένων του μικροελεγκτή AVR ATmega28 [9]. Σχήμα Οι πιθανές διαμορφώσεις του χώρου δεδομένων του μικροελεγκτή AVR ATmega28 (Λήφθηκε από το [9] της βιβλιογραφίας) 52

59 3.3 Το σύνολο εντολών του ASM Το σύνολο εντολών του AVR περιγράφεται στο 8-bit AVR Instruction Set [2]. Στον Πίνακα 3.3- φαίνονται οι εντολές του AVR που υλοποιήθηκαν από τον ASM. Μνημονικά Τελεστέοι Περιγραφή Πράξη-Λειτουργία Μεταβολή #Κύκλοι Ρολογιού Σημαιών (Εκτέλεση) Αριθμητικές και Λογικές Εντολές ADD Rd Rr Πρόσθεση χωρίς κρατούμενο Rd Rd + Rr C,Z,N,V,S ADC Rd Rr Πρόσθεση με κρατούμενο Rd Rd + Rr + C C,Z,N,V,S ADI Rd K Πρόσθεση με σταθερά Rd Rd + K C,Z,N,V,S SUB Rd Rr Αφαίρεση χωρίς κρατούμενο Rd Rd - Rr C,Z,N,V,S SUBI Rd K Αφαίρεση με σταθερά Rd Rd - K C,Z,N,V,S AND Rd Rr Λογικό AND Rd Rd Rr Z,N,V,S ANDI Rd K Λογικό AND με σταθερά Rd Rd K Z,N,V,S OR Rd Rr Λογικό OR Rd Rd Rr Z,N,V,S ORI Rd K Λογικό OR με σταθερά Rd Rd K Z,N,V,S EOR Rd Rr Αποκλειστικό OR Rd Rd Rr Z,N,V,S COM Rd Συμπλήρωμα ως προς ένα Rd $FF - Rd C,Z,N,V,S NEG Rd Συμπλήρωμα ως προς δύο Rd $ - Rd C,Z,N,V,S MULL Rd Rr Low Byte Unsigned πολλαπλασιασμού R LSB(Rd Rr) C,Z MULH Rd Rr High Byte Unsigned πολλαπλασιασμού R MSB(Rd Rr) C,Z PC k Καμία 2ή3 TOS PC PC k Καμία 2ή3 Καμία 2ή3 Εντολές Άλματος JMP k Άλμα CALL k Κλήση υπορουτίνας RET Επιστροφή από υπορουτίνα PC TOS BRBS sk Άλμα εάν η σημαία s του SREG If (SREG(s) = ) then PC k είναι Καμία ή4 BRBC sk Άλμα εάν η σημαία s του SREG If (SREG(s) = ) then PC k είναι Καμία ή4 Εντολές Μεταφοράς Δεδομένων MOV Rd Rr Αντιγραφή καταχωρητή Rd Rr Καμία LDI Rd K Φόρτωση με σταθερά Rd K Καμία LD Rd X Έμμεση φόρτωση Rd (X) Καμία 2 LD Rd Y Έμμεση φόρτωση Rd (Υ) Καμία 2 LD Rd Z Έμμεση φόρτωση Rd (Ζ) Καμία 2 LDD Rd X+q Έμμεση φόρτωση με μετατόπιση Rd (X+q) Καμία 2 LDD Rd Y+q Έμμεση φόρτωση με μετατόπιση Rd (Υ+q) Καμία 2 LDD Rd Z+q Έμμεση φόρτωση με μετατόπιση Rd (Ζ+q) Καμία 2 ST X Rr Έμμεση αποθήκευση (X) Rr Καμία ST Y Rr Έμμεση αποθήκευση (Y) Rr Καμία 53

60 ST Z Rr Έμμεση αποθήκευση (Z) Rr Καμία STD X+q Rr Έμμεση αποθήκευση με μετατόπιση (X+q) Rr Καμία STD Y+q Rr Έμμεση αποθήκευση με μετατόπιση (Y+q) Rr Καμία STD Z+q Rr Έμμεση αποθήκευση με μετατόπιση (Z+q) Rr Καμία IN Rd IA Φόρτωση από είσοδο Καμία 2 OUT OA Rr Φόρτωση σε έξοδο Καμία C,Z,N,V,S C,Z,N,V,S C,Z,N,V,S Rd (IA) (OA) Rr Εντολές Επιπέδου Bit Rd(n+) Rd(n), Rd(), C Rd(7) LSL Rd Λογική ολίσθηση αριστερά LSR Rd Λογική ολίσθηση δεξιά ROL Rd Περιστροφή αριστερά μέσω κρατουμένου ROR Rd Περιστροφή δεξιά μέσω κρατουμένου Rd(7) C, Rd(n) Rd(n+), C Rd() C,Z,N,V,S ASR Rd Αριθμητική ολίσθηση δεξιά Rd(n) Rd(n+),n=...6 C,Z,N,V,S C Rd() SWAP Rd Αντιμετάθεση nibbles Rd(n) Rd(n+), Rd(7), C Rd() Rd() C, Rd(n+) Rd(n), C Rd(7) Rd(3..) Rd(7..4), Rd(7..4) Rd(3..) Καμία Εντολές ελέγχου εκτέλεσης NOP Καμία λειτουργία Καμία HALT Τερματισμός λειτουργίας Καμία Πίνακας 3.3- Το σύνολο εντολών του ASM Στον Πίνακα 3.3- παρατηρούνται οι εξής διαφοροποιήσεις σε σχέση με το σύνολο εντολών του AVR Υλοποιήθηκε η εντολή ADI. Ο τελεστέος K είναι ένας ακέραιος στο διάστημα [,255]. Η εντολή MUL υλοποιήθηκε με τις εντολές MULL και MULH, η καθεμία από τις οποίες υλοποιεί πλήρως τον πολλαπλασιασμό, αλλά η MULL αποθηκεύει το LSB (Least Significant Byte) του αποτελέσματος στον καταχωρητή R και η MULH αποθηκεύει το MSB (Most Significant Byte) του αποτελέσματος στον καταχωρητή R. Ο τελεστέος k στην εντολή JMP είναι ένας ακέραιος στο διάστημα [,495] ακολουθούμενος από (π.χ. JMP 5 για άλμα στην διεύθυνση 5 της μνήμης προγράμματος). Το διάστημα [,495] ορίζει το εύρος διευθύνσεων της μνήμης προγράμματος (Program Memory PM). Οι εντολές CALL και RET υλοποιήθηκαν με την χρήση στοίβας υλικού. Με η κορυφή της στοίβας (Top Of Stack). Ο τελεστέος s, όπου s ακέραιος στο διάστημα [,7], στις εντολές BRBS και BRBC ορίζει τo 54 TOS συμβολίζεται

61 bit (σημαία) του SREG που θα ελεγχθεί για την εκτέλεση ή μη του άλματος. Ο SREG στον ASM ορίζεται όπως φαίνεται στο Σχήμα Έτσι η εντολή BRBS 2 θα κάνει άλμα στην διεύθυνση 2 της PM, εφόσον το bit μηδέν του SREG έχει τη λογική τιμή '' (SREG() = ). Οι σημαίες K, L και M δεν έχουν καμία ιδιαίτερη σημασία και μπορούν να καλύψουν ανάγκες των προγραμμάτων του χρήστη. Σχήμα 3.3- Ο καταχωρητής SREG του ASM Ο τελεστέος k στις εντολές BRBS και BRBC είναι ένας ακέραιος στο διάστημα [,495] ακολουθούμενος από, ο οποίος όμως πρέπει να διαφέρει από την τιμή που έχει ο PC, όταν ο PC είναι ίσος με την διεύθυνση της μνήμης προγράμματος που αφορά την συγκεκριμένη BRBS ή BRBC, το πολύ κατά μία τιμή στο διάστημα [-59,54] = [52+3,5+3] ή στο διάστημα [-5,53] = [-52+2,5+2]. Ο λόγος είναι ότι στις εντολές BRBS και BRBC αποθηκεύεται στο αντίστοιχο πεδίο, έστω πεδίο m, η διαφορά του k και της τιμής που έχει ο PC όταν εκτελείται η BRBS ή BRBC, ως προσημασμένος αριθμός των bits στην μορφή του συμπληρώματος ως προς 2, δηλαδή το πεδίο m λαμβάνει τιμές στο διάστημα [-52,5]. Λαμβάνοντας ως τιμή αναφοράς του PC την διεύθυνση της μνήμης προγράμματος που αφορά την συγκεκριμένη BRBS ή BRBC, η τιμή του μετρητή προγράμματος, κατά την εκτέλεση της BRBS ή BRBC, είναι PC = PC + n, n =, 2, 3.., αναλόγως σε ποιο στάδιο της γραμμής διοχέτευσης εκτελείται η συγκεκριμένη BRBS ή BRBC. Σύμφωνα με τα προηγούμενα θα έπρεπε ο k να διαφέρει από την τιμή αναφοράς PC, το πολύ κατά μία τιμή στο διάστημα [-52+,5+], στην περίπτωση που οι εντολές άλματος υπό συνθήκη εκτελούνται όταν βρεθούν στον IR (η τιμή του μετρητή προγράμματος PC σε σχέση με την διεύθυνση PC της υπό εκτέλεση εντολής άλματος υπό συνθήκη είναι PC+, δηλαδή m = k PC <=> m = k (PC + ) <=> k - PC = (m + )). Υλοποιήθηκαν οι εντολές LDD Rd X+q και STD X+q Rr, οι οποίες λειτουργούν όμοια με τις υπόλοιπες εντολές που ορίζονται με τον ίδιο τρόπο. Οι τελεστέοι IA και OA, οι οποίοι λαμβάνουν ακέραιες τιμές στο διάστημα [,7], των εντολών IN και OUT, συμβολίζουν τις διευθύνσεις των εισόδων και των εξόδων αντίστοιχα. Ο λόγος διαφορετικού συμβολισμού των διευθύνσεων των εισόδων από αυτές των εξόδων οφείλεται στο ότι ο ASM έχει ξεχωριστές διευθύνσεις μόνο για είσοδο και ξεχωριστές διευθύνσεις μόνο για έξοδο. Η εντολή HALT τερματίζει την λειτουργία του ASM διακόπτοντας την λειτουργία της γραμμής διοχέτευσης. Παρόλο που δεν μπορεί να εξαχθεί από τον Πίνακα 3.3-, αναφέρεται ότι σε όλες τις εντολές οι τελεστέοι Rd και Rr μπορεί να είναι οποιοιδήποτε από τους 32 καταχωρητές γενικής χρήσης, σε αντίθεση με το σύνολο εντολών του AVR όπου στις εντολές SUBI, ANDI, ORI και LDI μπορούν να χρησιμοποιηθούν μόνο οι καταχωρητές R6-R3. 55

62 3.4 Κωδικοποίηση του συνόλου εντολών του ASM Για την υλοποίηση του συνόλου εντολών του ASM (βλέπε Πίνακα 3.3-) θα πρέπει να γίνουν κάποιες επιλογές, ώστε να καταστεί δυνατή η κωδικοποίηση των εντολών. Δηλαδή η υλοποίηση του συνόλου εντολών απαιτεί μια περιγραφή των εντολών που να είναι απόλυτη. Αυτό επιτυγχάνεται με την κωδικοποίηση. Βέβαια η κωδικοποίηση ενός συνόλου εντολών δεν γίνεται σχεδόν ποτέ άμεσα γιατί συχνά πολλοί από τους περιορισμούς που πρέπει να ικανοποιούνται είναι αντικρουόμενοι και γιατί μερικοί περιορισμοί εμφανίζονται σε διάφορα στάδια της διαδικασίας υλοποίησης. Στην παρούσα παράγραφο δεν θα παρουσιαστεί η πλήρης κωδικοποίηση των εντολών, αλλά θα γίνει παρουσίαση της μορφής των εντολών, η οποία κρίνεται ως ικανοποιητική περιγραφή για την υλοποίηση των εντολών σε επόμενο στάδιο. Εφόσον επιλεγεί RF με 32 καταχωρητές, τα πεδία Rd και Rr απαιτούν 5 bits. Έτσι μία εντολή που χρησιμοποιεί 2 καταχωρητές ως τελεστέους (Rd και Rr) απαιτεί για τον ορισμό της τα bits για τον κωδικό εντολής (opcode) συν bits. Εάν επιλεγεί οpcode των 6 bits, τότε για τον ορισμό των εντολών που χρησιμοποιούν 2 καταχωρητές απαιτούνται 6 bits. Επίσης για τον ορισμό των εντολών που χρησιμοποιούν έναν καταχωρητή και μία σταθερά απαιτούνται 9 bits, εφόσον είναι επιθυμητό οι εντολές αυτές να αφορούν όλους τους καταχωρητές του RF (6 bits (opcode) + 5 bits (Rd) + 8 bits (K)). Έτσι μπορεί να οριστεί το μήκος της εντολής με 9 bits. Εφόσον έχει επιλεγεί PM με εύρος διευθύνσεων 2 bits ([, 495]) και απαιτούνται 6 bits για opcode, τα 9 bits επαρκούν για τον ορισμό της εντολής JMP. Σύμφωνα με τα παραπάνω ορίζεται ότι το μήκος εντολής θα είναι σταθερό (9 bits) στις διάφορες κατηγορίες εντολών με διατήρηση στην ίδια θέση των όμοιων πεδίων των τελεστέων ανάμεσα στις κατηγορίες, για γίνει σχετικά απλούτερη η αποκωδικοποίηση. Αυτό το είδος κωδικοποίησης αναφέρεται ως κωδικοποίηση με σταθερό μήκος εντολής (fixed instruction encoding) [2] και αποτελεί είδος κωδικοποίησης με την μικρότερη αξιοποίηση της μνήμης προγράμματος [2], [22]. Βέβαια αυξάνοντας τις κατηγορίες εντολών σε αυτό το είδος κωδικοποίησης, αυξάνεται η επικάλυψη των πεδίων των τελεστέων ανάμεσα στις διαφορετικές κατηγορίες με αποτέλεσμα την καλύτερη αξιοποίηση της μνήμης προγράμματος σε βάρος της απλούστερης λογικής αποκωδικοποίησης. Επειδή ο ASM προορίζεται για ενσωματωμένες εφαρμογές (embedded applications), η αξιοποίηση της μνήμης προγράμματος είναι αρκετά σημαντική. Έτσι γίνεται μία προσπάθεια για σχετικά απλή αποκωδικοποίηση με καλή αξιοποίηση της μνήμης προγράμματος. Στο Σχήμα 3.4- φαίνεται η κωδικοποίηση του συνόλου εντολών του ASM. Υπάρχουν 8 κατηγορίες εντολών ανάμεσα στις οποίες τα πεδία των τελεστέων opcode, Rd και Rr διατηρούνται στις ίδιες θέσεις. Τα σκιασμένα πεδία δεν χρησιμοποιούνται. Τα πεδία opcode, Rd, Rr, K, k και m έχουν οριστεί στα προηγούμενα για την κάθε εντολή. Το πεδίο ενός bit c χρησιμοποιείται για την διαφοροποίηση της εντολής CALL από την εντολή RET. Οι εντολές CALL και RET χρησιμοποιούν τον ίδιο κωδικό εντολής (opcode) και ξεχωρίζουν μέσω του πεδίου c. Οι εντολές JMP, CALL και RET έχουν την ίδια μορφή, αλλά στην JMP χρησιμοποιούνται μόνο τα πεδία opcode και k, στην CALL χρησιμοποιούνται όλα τα πεδία (opcode, c και k) και στην RET τα πεδία opcode και c. Το πεδίο s αποτελείται από 3 bits και υποδεικνύει το bit του SREG που πρέπει να ελεγχθεί κατά την εκτέλεση των εντολών άλματος υπό συνθήκη. Το πεδίο q αποτελείται από 6 bits και είναι ένας ακέραιος αριθμός στο διάστημα [,63], ο οποίος προστίθεται στο περιεχόμενο ενός εκ των καταχωρητών X, Υ και Ζ κατά την εκτέλεση των εντολών LD/LDD και ST/STD. Κατά την εκτέλεση των εντολών LD και ST το πεδίο q θεωρείται μηδέν. Το πεδίο XYZ αποτελείται από 2 bits και υποδεικνύει ποιος εκ των X, Y και Ζ θα χρησιμοποιηθεί κατά την εκτέλεση των εντολών LD/LDD και ST/STD. Το πεδίο ΙΟ αποτελείται από 3 bits και υποδεικνύει την διεύθυνση εισόδου/εξόδου κατά την εκτέλεση των 56

63 εντολών IN/OUT. Σχήμα 3.4- Η κωδικοποίηση του συνόλου εντολών του ASM 57

64 3.5 Υλοποίηση των εντολών του ASM 3.5. ASM_ Υλοποίηση Αριθμητικών, Λογικών και Επιπέδου bit εντολών Για να καταστεί δυνατή η υλοποίηση των αριθμητικών, λογικών και επιπέδου bit εντολών απαιτείται μία αριθμητική λογική μονάδα (Arithmetic Logic Unit ALU) με αντίστοιχες δυνατότητες. Από το σύνολο εντολών του AVR [2], εξάγεται το συμπέρασμα ότι κατά την εκτέλεση των εντολών, στο δεύτερο στάδιο της γραμμής διοχέτευσης του AVR (βλέπε Σχήμα ), εκτός από το αποτέλεσμα της πράξης που αντιστοιχεί στην εκάστοτε εντολή, στον ίδιο κύκλο του σήματος ρολογιού, υπολογίζονται και οι σημαίες, οι οποίες αποθηκεύονται στον SREG (διαφορετικά δεν θα μπορούσε μέσα σε έναν κύκλο του σήματος ρολογιού να ελεγχθεί η κατάσταση μίας συγκεκριμένης σημαίας κατά την εκτέλεση των εντολών BRBS και BRBC). Ο υπολογισμός των σημαιών όμως κατά την εκτέλεση των αριθμητικών, λογικών και επιπέδου bit εντολών απαιτεί την ύπαρξη του αποτελέσματος της αντίστοιχης πράξης που ορίζεται από την εκάστοτε εντολή (δηλαδή το αποτέλεσμα της ALU είναι είσοδος στο συνδυαστικό κύκλωμα που υπολογίζει τις τιμές των σημαιών). Έτσι εξάγεται το συμπέρασμα ότι ο μικροελεγκτής AVR υπολογίζει αποτελέσματα πράξεων και τιμές σημαιών με την χρήση ενός μεγάλου τμήματος συνδυαστικής λογικής. Επειδή ο ASM προορίζεται για υλοποίηση σε ψηφιακά ολοκληρωμένα κυκλώματα με προγραμματιζόμενη λογική, όπως τα FPGAs, τα οποία περιέχουν πολύ μεγάλο αριθμό flip-flop και δεν ενδείκνυνται για υλοποίηση μεγάλων τμημάτων συνδυαστικής λογικής (βλέπε Κεφάλαιο ), θα πρέπει ο υπολογισμός των πράξεων και των σημαιών του να γίνεται σε δύο στάδια της γραμμής διοχέτευσης. Θα ήταν βολικό σε ένα στάδιο της γραμμής διοχέτευσης να υπολογίζεται το αποτέλεσμα της πράξης της εκάστοτε εντολής και στο επόμενο να υπολογίζονται οι τιμές των σημαιών, αλλά αυτό καθίσταται αδύνατο τουλάχιστον για την σημαία κρατουμένου C. Όπως φαίνεται από τον Πίνακα 3.3-, οι εντολές ADC, LSL, LSR, ROL, ROR και ASR χρησιμοποιούν την τιμή της σημαίας C, όπως αυτή διαμορφώθηκε από την προηγούμενη εντολή που την μετέβαλε, για τον υπολογισμό του αποτελέσματός τους. Για να καταστεί δυνατή μία γραμμή διοχέτευσης που να εκτελεί σε έναν κύκλο του σήματος ρολογιού τις εντολές αυτές, καθώς αρκετές εντολές μεταβάλλουν κατά την εκτέλεσή τους την σημαία C, θα πρέπει οπωσδήποτε σε ένα στάδιο της γραμμής διοχέτευσης να υπολογίζεται το αποτέλεσμα της πράξης της εντολής και ταυτόχρονα η σημαία C και στο επόμενο στάδιο της γραμμής διοχέτευσης να υπολογίζονται οι υπόλοιπες σημαίες, ώστε τελικά να αποθηκευτούν όλες στον SREG. Ο υπολογισμός των σημαιών για την κάθε εντολή γίνεται σύμφωνα με την περιγραφή του συνόλου εντολών του AVR [2]. Στο Σχήμα φαίνεται το μπλοκ διάγραμμα του επεξεργαστή ASM_, στο οποίο παραλείπονται οι διασυνδέσεις μεταξύ των μπλοκ για πρακτικούς λόγους. Ο ASM_ είναι ένας μικροεπεξεργαστής με γραμμή διοχέτευσης τεσσάρων σταδίων (FETCH, DECODE, EXECUTE, WRITE BACK) που υλοποιεί τις αριθμητικές, λογικές και επιπέδου bit εντολές του επεξεργαστή ASM. Ο ASM_ είναι επιπλέον σε θέση να εκτελεί τις εντολές MOV, LDI και NOP, αφού αυτές δεν χρειάζονται κάποια επιπρόσθετη σε αυτήν του σχήματος λογική. Επίσης για να γίνει πιο ρεαλιστική η υλοποίηση του ASM_, θεωρείται ότι η εκτέλεση οποιασδήποτε εντολής που δεν ανήκει στο σύνολο εντολών του σταματά την προσκόμιση εντολών και αποτρέπει την περαιτέρω εγγραφή αποτελεσμάτων στο RF (HALT). Όλα τα σύγχρονα ακολουθιακά κυκλώματα που αναφέρονται παρακάτω μεταβάλλουν την κατάστασή τους με την θετική ακμή του σήματος ρολογιού και με την θετική ακμή του σήματος ρολογιού κατά την οποία το εξωτερικό σήμα MRSET (Master RESET) έχει τη λογική τιμή '' αρχικοποιούνται κατάλληλα. [Το σήμα MRSET είναι ένα ασύγχρονο εξωτερικό σήμα που καθορίζεται μέσω ενός διακόπτη (push button) από τον χρήστη.] 58

65 Σχήμα Το μπλοκ διάγραμμα του επεξεργαστή ASM_ Ο PC είναι ένας μετρητής προς τα πάνω, ο οποίος μετράει από το μέχρι και το 495 (2-bit μετρητής). Ο PC διαθέτει το σύγχρονο σήμα εισόδου PC_EN, το οποίο όταν λαμβάνει τη λογική τιμή '' δεν επιτρέπει την αύξηση της τιμής του PC κατά την θετική ακμή του σήματος ρολογιού (η τιμή του PC παραμένει αναλλοίωτη). H αρχική τιμή του PC είναι. Η PM είναι μία μνήμη 496x9-bit (2-bit είσοδος διεύθυνσης), στην οποία βρίσκεται αποθηκευμένο το πρόγραμμα, το οποίο αποτελείται από αριθμητικές, λογικές και επιπέδου bit εντολές, καθώς και τις εντολές MOV, LDI και NOP. Η έξοδος του PC συνδέεται στους ακροδέκτες διεύθυνσης της PM. Ο IR είναι ένας καταχωρητής των 9 bits, στον οποίο αποθηκεύεται η έξοδος της PM. Όλα τα bits του IR παίρνουν τη λογική τιμή '' κατά την αρχικοποίηση. Το RF είναι μία μνήμη 32x8-bit (5-bit είσοδοι διευθύνσεων) στην οποία μπορούν να διαβάζονται ασύγχρονα τα περιεχόμενα δύο διευθύνσεων και, ταυτόχρονα, σε μια τρίτη διεύθυνση να γράφεται σύγχρονα μία 8-bit τιμή (three-ported register file) [3]. Στις διευθύνσεις ανάγνωσης του RF είναι συνδεδεμένοι οι ακροδέκτες εξόδου του IR που αντιστοιχούν στα πεδία Rd και Rr. [Το RF που φαίνεται με διακεκομμένη γραμμή στο τέλος του μπλοκ διαγράμματος του σχήματος είναι το RF που φαίνεται στο στάδιο DECODE απλά επαναλαμβάνεται για λόγους καλύτερης αναπαράστασης της λειτουργίας της γραμμής διοχέτευσης.] O MUX SEL RD είναι ένας 4 5-bit πολυπλέκτης, του οποίου η είσοδος με σήμα επιλογής είναι συνδεδεμένη στους ακροδέκτες εξόδου του IR που αντιστοιχούν στο πεδίο Rd και οι άλλες είσοδοι (,, ) είναι συνδεδεμένες στις τιμές, και, αντίστοιχα. Ο λόγος ύπαρξης του πολυπλέκτη αυτού αφορά την υλοποίηση (αποκωδικοποίηση) των εντολών MULL και MULH. Η έξοδος του πολυπλέκτη αυτού είναι το σήμα mux_sel_rd_out. Ο MUX A είναι ένας 2 8-bit πολυπλέκτης, του οποίου η είσοδος με σήμα επιλογής '' είναι συνδεδεμένη στην έξοδο του RF που αντιστοιχεί στα δεδομένα της διεύθυνσης Rd και η άλλη 59

66 είσοδος είναι συνδεδεμένη στην τιμή. Η έξοδος του πολυπλέκτη αυτού είναι το σήμα mux_a_out. Ο MUX Β είναι ένας 4 8-bit πολυπλέκτης, του οποίου η είσοδος με σήμα επιλογής είναι συνδεδεμένη στην έξοδο του RF που αντιστοιχεί στα δεδομένα της διεύθυνσης Rr, η δεύτερη είσοδος, με σήμα επιλογής, είναι συνδεδεμένη στους ακροδέκτες εξόδου του IR που αντιστοιχούν στο πεδίο K και οι υπόλοιπες είναι συνδεδεμένες στην τιμή. Η έξοδος του πολυπλέκτη αυτού είναι το σήμα mux_b_out. Η DU (Decode Unit) είναι μία μνήμη για ανάγνωση μόνο (ROM) και το πεδίο διεύθυνσής της είναι συνδεδεμένο με τους ακροδέκτες εξόδου του IR που αντιστοιχούν στο πεδίο opcode. Στην έξοδό της περιλαμβάνει όλα τα σήματα που απαιτούνται για την αποκωδικοποίηση της κάθε εντολής καθώς και όλα τα σήματα ελέγχου που απαιτούνται από τις μονάδες των υπολοίπων σταδίων της γραμμής διοχέτευσης. Στον Πίνακα φαίνεται ο πίνακας αλήθειας της μονάδας DU και ορίζεται (σε συνδυασμό με το Σχήμα 3.4-) η πλήρης κωδικοποίηση των εντολών που υλοποιούνται. Εντολή Είσοδος Έξοδος opcode SEL_RD SEL_A SEL_B N_A N_B SEL_FUNC SEL_OP RF_W_EN PC_EN ADD ADC ADI SUB SUBI AND ANDI OR ORI EOR COM NEG MULL MULH MOV LDI LSL LSR ROL ROR ASR SWAP NOP OTHERS OTHERS (HALT) Πίνακας Ο πίνακας αλήθειας της μονάδας DU του ASM_ 6

67 Το σήμα SEL_RD είναι το σήμα επιλογής του πολυπλέκτη MUX SEL RD και επιλέγει την διεύθυνση του RF στην οποία θα γραφτεί τελικά το αποτέλεσμα που προκύπτει από την εκτέλεση της εκάστοτε εντολής. Τα σήματα SEL_A και SEL_B επιλέγουν τους τελεστέους που θα χρησιμοποιηθούν στο επόμενο στάδιο της γραμμής διοχέτευσης (EXECUTE) από την ALU. Τα σήματα N_A, N_B, SEL_FUNC και SEL_OP χρησιμοποιούνται από την ALU στο στάδιο EXECUTE ώστε να εκτελεστεί η πράξη που υπαγορεύεται από την εκάστοτε εντολή. Το σήμα RF_W_EN ελέγχει την εγγραφή δεδομένων στο RF στο τελευταίο στάδιο (WRITE BACK) της γραμμής διοχέτευσης (με '' επιτρέπεται η εγγραφή και με '' δεν επιτρέπεται). Στον καταχωρητή DEC_EXE αποθηκεύονται τα εξής σήματα, τα οποία απαιτούνται από τα επόμενα στάδια της γραμμής διοχέτευσης opcode (του IR), mux_sel_rd_out, mux_a_out, mux_b_out, N_A, N_B, SEL_FUNC, SEL_OP και RF_W_EN. Όλα τα bits του DEC_EXE παίρνουν τη λογική τιμή '' κατά την αρχικοποίηση. Η μονάδα FLAG EN ROM είναι μία μνήμη για ανάγνωση μόνο (ROM) και οι ακροδέκτες διεύθυνσής της συνδέονται με τους ακροδέκτες εξόδου του καταχωρητή DEC_EXE που αντιστοιχούν στο σήμα opcode (ή σήμα DEC_EXEllopcode, ll = LL πεζά). Σκοπός ύπαρξης αυτής της μονάδας είναι η απλούστευση της πολυπλοκότητας της μονάδας FLAG COMP LOGIC, η οποία βρίσκεται στο επόμενο στάδιο της γραμμής διοχέτευσης (WRITE BACK) και η οποία υπολογίζει τις σημαίες για την εντολή που εκτελέστηκε στο στάδιο EXECUTE. Η μονάδα FLAG EN ROM έχει ως έξοδο το σήμα EN (μήκους 8 bits), το οποίο καθορίζει ποια bits επιτρέπεται να μεταβληθούν στον SREG. Όταν για παράδειγμα EN() = '', τότε η σημαία με δείκτη μηδέν (η σημαία κρατουμένου C) του καταχωρητή SREG γίνεται enable και επιτρέπεται να μεταβληθεί (δηλαδή το κάθε flip-flop του καταχωρητή SREG είναι ενεργό (enabled) στο μηδέν). Ο πίνακας αλήθειας της FLAG COMP LOGIC μπορεί να εξαχθεί πολύ εύκολα από το πεδίο Μεταβολή Σημαιών του Πίνακα Η ALU είναι το συνδυαστικό κύκλωμα που υπολογίζει το αποτέλεσμα της πράξης που επιβάλλει η εκάστοτε εντολή. Οι είσοδοί της είναι τα σήματα DEC_EXEllmux_a_out, DEC_EXEllmux_b_out, DEC_EXEllN_A, DEC_EXEllN_B, DEC_EXEllSEL_FUNC, DEC_EXEllSEL_OP και c_tmp. To σήμα c_tmp είναι η έξοδος του flip-flop C FLAG TMP, του οποίου η αρχική τιμή είναι '' και το οποίο αποθηκεύει κάθε φορά την σημαία C, όπως αυτή μεταβάλλεται από την εκτέλεση της εκάστοτε εντολής. Οι έξοδοι της ALU είναι τα σήματα c_out, v_out και alu_out. Τα -bit σήματα c_out και v_out είναι αντίστοιχα το κρατούμενο εξόδου και το σήμα υπερχείλισης στην αριθμητική του συμπληρώματος ως προς δύο (two s complement overflow indicator) του αθροιστή που περιλαμβάνεται στην ALU. Το 8-bit σήμα alu_out είναι το αποτέλεσμα που παράγεται από την εκτέλεση της εκάστοτε εντολής. Τα σήματα DEC_EXEllN_A και DEC_EXEllΝ_Β χρησιμοποιούνται για την αντιστροφή (λογική πράξη not) των τελεστέων πριν την πρόσθεσή τους. Το σήμα DEC_EXEllSEL_FUNC είναι σήμα επιλογής σε εσωτερικό στην ALU πολυπλέκτη, το οποίο επιλέγει μεταξύ των τιμών '', '' και c_tmp. H έξοδος αυτού του πολυπλέκτη συνδέεται στην είσοδο κρατουμένου του αθροιστή που περιλαμβάνεται στην ALU, ώστε να γίνεται δυνατή η εκτέλεση των πράξεων πρόσθεσης, αφαίρεσης και πρόσθεσης με κρατούμενο. 6

68 Το σήμα DEC_EXEllSEL_OP είναι σήμα επιλογής σε εσωτερικό στην ALU πολυπλέκτη, ο οποίος επιλέγει ποιο θα είναι το αποτέλεσμα στην έξοδο της ALU. Στο εσωτερικό της ALU εκτελούνται παράλληλα (ταυτόχρονα) πράξεις όπως πρόσθεση, πολλαπλασιασμός, λογικό and, or, xor, ολισθήσεις, περιστροφές και εναλλαγή των nibbles. Παρόλο που οι εντολές SUB, COM και NEG υλοποιούνται με την χρήση του ίδιου αθροιστή, το σήμα SEL_OP λαμβάνει διαφορετική τιμή από αυτήν που ορίζεται για την εντολή ADD. Η διαφοροποίηση αυτή αφορά τον υπολογισμό των σημαιών των εντολών αυτών, ο οποίος ορίζεται διαφορετικά για την κάθε εντολή [2]. Ο υπολογισμός των σημαιών γίνεται με βάση το σήμα SEL_OP, όπως αυτό ορίζεται για την εκάστοτε εντολή. [Θα μπορούσε αντί του σήματος SEL_OP να χρησιμοποιηθεί το σήμα opcode, όπως αυτό ορίζεται για την εκάστοτε εντολή, αλλά το κύκλωμα υπολογισμού σημαιών θα γινόταν πολυπλοκότερο χωρίς ουσιαστική απλοποίηση της ALU. Επίσης με την χρήση του σήματος SEL_OP επιτυγχάνεται ανεξαρτησία του κωδικού εντολής (opcode) από την λειτουργία (μεταβολή σημαιών) που επιτελεί η εκάστοτε εντολή, καθιστώντας την μεταβολή του συνόλου εντολών ευκολότερη.] Η μονάδα C FLAG LOGIC είναι ένα συνδυαστικό κύκλωμα, το οποίο υπολογίζει την σημαία κρατουμένου C και γράφει το αποτέλεσμα στο flip-flop C FLAG TMP. Η σημαία κρατουμένου υπολογίζεται μόνο για τις εντολές που την μεταβάλλουν και μένει αμετάβλητη για τις υπόλοιπες εντολές. Ο τρόπος υπολογισμού της σημαίας κρατουμένου C περιγράφεται για κάθε εντολή που την μεταβάλλει στο 8-bit AVR Instruction Set [2]. Στον Πίνακα το σήμα SEL_OP πρέπει για όλους τους κωδικούς εντολής που δεν ανήκουν στις αριθμητικές, λογικές και επιπέδου bit εντολές να έχει την τιμή, που αντιστοιχεί στην πράξη λογικό OR της ALU. Ο λόγος είναι ότι η μονάδα C FLAG LOGIC μεταβάλλει το περιεχόμενο του flip-flop C FLAG TMP με βάση το σήμα SEL_OP. Χρησιμοποιώντας την πράξη του λογικού OR, το περιεχόμενο του flip-flop C FLAG TMP παραμένει αμετάβλητο κατά την εκτέλεση εντολών που δεν ανήκουν στις αριθμητικές, λογικές και επιπέδου bit εντολές (βλέπε εντολές LDI και MOV στον Πίνακα οι οποίες εκτελούνται χρησιμοποιώντας την πράξη του λογικού OR). [Κάποιες από τις εντολές που δεν ανήκουν στο σύνολο εντολών του ASM_ και θα υλοποιηθούν στην συνέχεια, χρησιμοποιούν την ALU (πράξη λογικό OR) για να περνούν τους τελεστέους τους στο επόμενο στάδιο της γραμμής διοχέτευσης.] Στον καταχωρητή EXE_WB γράφονται τα εξής σήματα DEC_EXEllmux_sel_rd_out, DEC_EXEllmux_a_out, DEC_EXEllmux_b_out, DEC_EXEllSEL_OP και DEC_EXEllRF_W_EN, η έξοδος flag_en της μονάδας FLAG EN ROM και οι έξοδοι alu_out και v_out της ALU. Όλα τα bits του καταχωρητή EXE_WB παίρνουν τη λογική τιμή '' κατά την αρχικοποίηση. Η μονάδα FLAG COMP LOGIC είναι ένα συνδυαστικό κύκλωμα, το οποίο υπολογίζει όλες τις σημαίες που θα γραφτούν στον καταχωρητή SREG. Οι είσοδοί της είναι τα σήματα EXE_WBllflag_en, EXE_WBllmux_a_out, EXE_WBllmux_b_out, EXE_WBllSEL_OP, EXE_WBllalu_out, EXE_WBllv_out και η έξοδος c_tmp του flip-flop C FLAG TMP. Τέλος τα σήματα EXE_WBllmux_sel_rd_out, EXE_WBllalu_out και EXE_WBllRF_W_EN είναι οι είσοδοι στο RF για την εγγραφή του αποτελέσματος που προκύπτει από την εκτέλεση της εκάστοτε εντολής. Σύμφωνα με τα παραπάνω το πρόγραμμα 62

69 LDI R 5 LDI R2 2 ADD R R2 θα εκτελεστεί με τον εξής τρόπο Με την πρώτη θετική ακμή του σήματος ρολογιού (μετά την θετική ακμή αρχικοποίησης των σύγχρονων κυκλωμάτων) το περιεχόμενο της διεύθυνσης της PM γράφεται στον IR (εντολή LDI R 5). Με την δεύτερη θετική ακμή του σήματος ρολογιού το περιεχόμενο της διεύθυνσης της PM γράφεται στον IR (εντολή LDI R2 ) και το περιεχόμενο του IR (εντολή LDI R 5) αποκωδικοποιείται και γράφεται στον καταχωρητή DEC_EXE. Με την τρίτη θετική ακμή του σήματος ρολογιού το περιεχόμενο της διεύθυνσης 2 της PM γράφεται στον IR (εντολή ADD R R2), το περιεχόμενο του IR (εντολή LDI R2 ) αποκωδικοποιείται και γράφεται στον καταχωρητή DEC_EXE και το περιεχόμενο του DEC_EXE (αποκωδικοποιημένη μορφή της εντολής LDI R 5) εκτελείται και τα αποτελέσματα γράφονται στον καταχωρητή EXE_WB. Με την τέταρτη θετική ακμή του σήματος ρολογιού το περιεχόμενο της διεύθυνσης 3 της PM γράφεται στον IR (στις θέσεις της PM που υπάρχει εντολή που δεν ανήκει στο σύνολο εντολών του ASM_ θεωρείται ως εντολή HALT (βλέπε Πίνακα 3.5.-)), αλλά το περιεχόμενο του IR (εντολή ADD R R2) δεν αποκωδικοποιείται σωστά. Για την σωστή αποκωδικοποίηση της εντολής ADD R R2 απαιτείται η ύπαρξη των τιμών των R και R2, όπως αυτά διαμορφώθηκαν από τις προηγούμενες εντολές, στο RF. Αλλά στην τέταρτη θετική ακμή του σήματος ρολογιού το αποτέλεσμα της εντολής LDI R 5 γράφεται στο RF και έτσι η τιμή του R κατά την αποκωδικοποίηση της εντολής ADD R R2 στην ίδια θετική ακμή του σήματος ρολογιού θα είναι απροσδιόριστη. Επίσης η σωστή τιμή του καταχωρητή R2 γράφεται στον καταχωρητή EXE_WB στην τέταρτη θετική ακμή του σήματος ρολογιού. Έτσι κατά την αποκωδικοποίηση της εντολής ADD R R2 τα περιεχόμενα του καταχωρητή R2 του RF θα έχουν μία λανθασμένη και απροσδιόριστη τιμή, στην περίπτωση που τα περιεχόμενα του RF δεν αρχικοποιούνται. Το πρόβλημα που περιγράφηκε παραπάνω ονομάζεται data hazards [2] και μπορεί να λυθεί με δύο τρόπους. Ο πρώτος αφορά παύση της προσκόμισης εντολών (του σταδίου FETCH) έως ότου υπάρχουν στο RF τα έγκυρα απαιτούμενα δεδομένα (instruction stall). O δεύτερος τρόπος αφορά την διαβίβαση των έγκυρων δεδομένων στην εντολή που εμφανίζονται data hazards όταν τα δεδομένα αυτά είναι απαραίτητα (forwarding) [3], [2], [23] ASM_2 Forwarding στον ASM_ Στο Σχήμα φαίνεται το μπλοκ διάγραμμα του ASM_2, το οποίο αποτελείται από τον ASM_, τροποποιημένο όπου απαιτείται ώστε να υποστηρίζεται η FU (Forwarding Unit). Οι τροποποιήσεις που έγιναν στον ASM_ αφορούν την DU, την ALU, τον καταχωρητή EXE_WB και την μονάδα FLAG COMP LOGIC. 63

70 Σχήμα Το μπλοκ διάγραμμα του ASM_2 Εντολή Είσοδος Έξοδος opcode SEL_RD SEL_A SEL_B N_A N_B SEL_FUNC SEL_OP RF_W_EN PC_EN ADI SUBI ANDI ORI COM NEG LSL LSR ROL ROR ASR SWAP ADD ADC SUB AND OR EOR MULL MULH MOV LDI NOP OTHERS OTHERS (HALT) Πίνακας Ο πίνακας αλήθειας της DU του ASM_2 για απλούστερη υλοποίηση της FU 64

71 Για να γίνει απλούστερη η λογική που αφορά την FU, θα πρέπει το πεδίο opcode των εντολών να κωδικοποιηθεί με διαφορετικό τρόπο απ' ό,τι στον Πίνακα Συγκεκριμένα οι εντολές χωρίζονται στις εξής κατηγορίες Εντολές που διαβάζουν διεύθυνση Rd του RF Σε αυτήν την κατηγορία ανήκουν όλες οι εντολές του ASM_2 εκτός από τις MOV, LDI και NOP. Εντολές που διαβάζουν διεύθυνση Rr του RF Σε αυτήν την κατηγορία ανήκουν οι εντολές ADD, ADC, SUB, AND, OR, EOR, MULL, MULH και MOV. Εντολές που γράφουν σε διεύθυνση Rd στο RF Σε αυτήν την κατηγορία ανήκουν όλες οι εντολές του ASM_2 εκτός της NOP (και OTHERS). Έτσι η κωδικοποίηση του πεδίου opcode στον πίνακα αλήθειας της DU του ASM_ (Πίνακας 3.5.) αλλάζει για τον ASM_2 όπως φαίνεται στον Πίνακα [Η επιλογή διατήρησης σταθερών των πεδίων opcode, Rd και Rr διαμέσου των κατηγοριών εντολών (βλέπε παράγραφο 3.4), εκτός από την απλούστερη αποκωδικοποίηση, αποβλέπει και σε απλούστερη υλοποίηση της FU.] Η ALU περιλαμβάνει επιπλέον bit πολυπλέκτες, τον MUX FA και τον MUX FB. Ο MUX FA έχει στην είσοδο το σήμα DEC_EXEllmux_a_out, στην είσοδο το σήμα EXE_WBllalu_out και στις υπόλοιπες το σήμα FUllalu_out, το οποίο είναι το τελευταίο αποτέλεσμα που γράφτηκε στο RF (γράφεται κάθε φορά σε εσωτερικό στην μονάδα FU καταχωρητή (με αρχική τιμή ) γραμμές του σχήματος ). Αντίστοιχα ο MUX FB έχει στην είσοδο το σήμα DEC_EXEllmux_b_out, στην είσοδο το σήμα EXE_WBllalu_out και στις υπόλοιπες το σήμα FUllalu_out. Έτσι στην ALU υπάρχουν επιπλέον, σε σχέση με την ALU του ASM_, οι είσοδοι EXE_WBllalu_out, FUllalu_out, FU_SEL_A και FU_SEL_B (τα σήματα FU_SEL_A και FU_SEL_B είναι τα σήματα επιλογής των πολυπλεκτών MUX FA και MUX FB αντίστοιχα). Επίσης οι έξοδοι των MUX FA και MUX FB, τα σήματα fa και fb αντίστοιχα, χρησιμοποιούνται πλέον ως τελεστέοι για την εκτέλεση της πράξης που αφορά την εκάστοτε εντολή. Ο αλγόριθμος που συνοψίζει την λειτουργία της FU του ASM_2 σε μορφή δηλώσεων κώδικα VHDL που βρίσκονται στο σώμα της αρχιτεκτονικής της οντότητας FU (βλέπε Κεφάλαιο 2) είναι IRllopcode_reads_Rd <= '' when (IRllopcode < ) else ''; IRllopcode_reads_Rr <= '' when ((IRllopcode > ) and (IRllopcode < )) else ''; DEC_EXEllopcode_writes_Rd <= '' when (DEC_EXEllopcode < ) else ''; EXE_WBllopcode_writes_Rd <= '' when (EXE_WBllopcode < ) else ''; case_a <= '' when ((IRllopcode_reads_Rd = '') and (DEC_EXEllopcode_writes_Rd = '') and (IRllRd = DEC_EXEllmux_sel_rd_out)) else ''; case_a2 <= '' when ((IRllopcode_reads_Rd = '') and (EXE_WBllopcode_writes_Rd = '') and (IRllRd = EXE_WBllmux_sel_rd_out)) else ''; case_a <= case_a2 & case_a; process process(case_a,fu_sel_a_tmp) begin case case_a is when "" => fu_sel_a_tmp when "" => fu_sel_a_tmp when "" => fu_sel_a_tmp when OTHERS => fu_sel_a_tmp end case; end process process; <= <= <= <= ""; ""; ""; ""; case_b <= '' when ((IRllopcode_reads_Rr = '') and (DEC_EXEllopcode_writes_Rd = '') and 65

72 (IRllRr = DEC_EXEllmux_sel_rd_out)) else ''; case_b2 <= '' when ((IRllopcode_reads_Rr = '') and (EXE_WBllopcode_writes_Rd = '') and (IRllRr = EXE_WBllmux_sel_rd_out)) else ''; case_b <= case_b2 & case_b; process2 process(case_b,fu_sel_b_tmp) begin case case_b is when "" => fu_sel_b_tmp when "" => fu_sel_b_tmp when "" => fu_sel_b_tmp when OTHERS => fu_sel_b_tmp end case; end process process2; <= <= <= <= ""; ""; ""; ""; part_fu_sel_a_reg reg_rset generic map (N => 2) port map(fu_sel_a_tmp,clk,rset,fu_sel_a); part2_fu_sel_b_reg reg_rset generic map (N => 2) port map(fu_sel_b_tmp,clk,rset,fu_sel_b); part3_alu_out_reg reg_rset generic map (N => 8) port map(εχε_wbllalu_out,clk,rset,fullalu_out); Σημείωση Η αρίθμηση δεν είναι μέρος του κώδικα, χρησιμοποιείται για σκοπούς αναφοράς. Σχήμα Ο αλγόριθμος λειτουργίας της FU του ASM_2 σε μορφή δηλώσεων κώδικα VHDL Ο λόγος αλλαγής της κωδικοποίησης του πεδίου opcode των εντολών του ASM_ αφορά την ελαχιστοποίηση του αριθμού των συγκριτών κατά την περιγραφή της λειτουργίας της μονάδας FU (γραμμές -4 στο Σχήμα ). Στις γραμμές 6-7 γίνεται έλεγχος εάν ο κωδικός εντολής που βρίσκεται στον καταχωρητή IR διαβάζει τα δεδομένα του RF που αντιστοιχούν στο πεδίο Rd και εάν ο κωδικός εντολής που βρίσκεται στον καταχωρητή DEC_EXE γράφει δεδομένα στο RF στην ίδια διεύθυνση με αυτήν του πεδίου Rd της εντολής που βρίσκεται στον IR. Εάν ισχύουν οι προηγούμενες προϋποθέσεις τότε το σήμα case_a παίρνει τη λογική τιμή '', διαφορετικά τη λογική τιμή ''. Η ίδια ενέργεια γίνεται στις γραμμές 9-, όπου αντί του DEC_EXE χρησιμοποιείται ο EXE_WB και το σήμα case_a2 παίρνει αναλόγως τη λογική τιμή '' ή ''. Στις γραμμές 3-22 περιγράφεται ένας αποκωδικοποιητής του οποίου το σήμα εξόδου fu_sel_a_tmp είναι ίσο με εάν δεν ισχύει καμία από τις δύο συνθήκες, με εάν ισχύει μόνο η πρώτη συνθήκη, με εάν ισχύει μόνο η δεύτερη συνθήκη και με εάν ισχύουν και οι δύο συνθήκες (δηλαδή δίνεται προτεραιότητα στην πρώτη συνθήκη στο αποτέλεσμα της εντολής που άλλαξε πιο πρόσφατα το περιεχόμενο που θα έπρεπε να έχει μία συγκεκριμένη διεύθυνση του RF). Το σήμα fu_sel_a_tmp γράφεται σε έναν καταχωρητή (με αρχική τιμή ) με την θετική ακμή του σήματος ρολογιού (γραμμές 4243), η έξοδος του οποίου είναι το σήμα FU_SEL_A το σήμα επιλογής του πολυπλέκτη MUX FA της ALU. Αντίστοιχα στις γραμμές γίνεται έλεγχος εάν ο κωδικός εντολής που βρίσκεται στον καταχωρητή IR διαβάζει τα δεδομένα του RF που αντιστοιχούν στο πεδίο Rr και εάν ο κωδικός εντολής που βρίσκεται στον καταχωρητή DEC_EXE γράφει δεδομένα στο RF στην ίδια διεύθυνση με αυτήν του πεδίου Rr της εντολής που βρίσκεται στον IR. Εάν ισχύουν οι προηγούμενες προϋποθέσεις τότε το σήμα case_b παίρνει τη λογική τιμή '', διαφορετικά τη λογική τιμή ''. Η ίδια ενέργεια γίνεται στις γραμμές 27-28, όπου αντί του DEC_EXE χρησιμοποιείται ο EXE_WB και το σήμα case_b2 παίρνει αναλόγως τη λογική τιμή '' ή ''. Στις γραμμές 3-4 περιγράφεται ένας αποκωδικοποιητής του οποίου το σήμα εξόδου fu_sel_b_tmp είναι ίσο με εάν δεν ισχύει καμία από τις δύο συνθήκες, με εάν ισχύει μόνο η πρώτη συνθήκη, με εάν ισχύει μόνο η δεύτερη συνθήκη και με εάν ισχύουν και οι δύο συνθήκες (δηλαδή δίνεται προτεραιότητα 66

73 στην πρώτη συνθήκη στο αποτέλεσμα της εντολής που άλλαξε πιο πρόσφατα το περιεχόμενο που θα έπρεπε να έχει μία συγκεκριμένη διεύθυνση του RF). Το σήμα fu_sel_b_tmp γράφεται σε έναν καταχωρητή (με αρχική τιμή ) με την θετική ακμή του σήματος ρολογιού (γραμμές 4546), η έξοδος του οποίου είναι το σήμα FU_SEL_B το σήμα επιλογής του πολυπλέκτη MUX FB της ALU. Τα σήματα DEC_EXEllmux_a_out και DEC_EXEllmux_b_out αντικαθίστανται με τα fa και fb στην περιγραφή των εισόδων του καταχωρητή EXE_WB και τα EXE_WBllmux_a_out και EXE_WBllmux_b_out με τα EXE_WBllfa και EXE_WBllfb στην μονάδα FLAG COMP LOGIC. Για να γίνει πιο κατανοητή η λειτουργία της FU ας θεωρηθεί και πάλι ο κώδικας (βλέπε παράγραφο 3.5.) LDI R 5 LDI R2 2 ADD R R2 και ότι ο ASM_2 βρίσκεται στην κατάσταση όπου με την τρίτη θετική ακμή του σήματος ρολογιού (μετά την θετική ακμή αρχικοποίησης των σύγχρονων κυκλωμάτων) το περιεχόμενο της διεύθυνσης 2 της PM γράφεται στον IR (εντολή ADD R R2), το περιεχόμενο του IR (εντολή LDI R2 ) αποκωδικοποιείται και γράφεται στον καταχωρητή DEC_EXE και το περιεχόμενο του DEC_EXE (αποκωδικοποιημένη μορφή της εντολής LDI R 5) εκτελείται και τα αποτελέσματα γράφονται στον καταχωρητή EXE_WB. Σε αυτήν την κατάσταση ισχύουν οι συνθήκες των γραμμών 9- και του σχήματος Έτσι, με την τέταρτη θετική ακμή του σήματος ρολογιού, τα flip-flop της FU θα έχουν τις τιμές (FU_SEL_A) και (FU_SEL_B). Με την τέταρτη θετική ακμή του σήματος ρολογιού η εντολή ADD R R2 βρίσκεται στον καταχωρητή DEC_EXE. Μπορεί να έχει αποκωδικοποιηθεί λανθασμένα, αλλά με τους καταχωρητές MUX FA και MUX FB να επιλέγουν τις σωστές τιμές για τα περιεχόμενα που θα έπρεπε να έχουν οι διευθύνσεις R και R2 του RF, η εντολή ADD R R2 εκτελείται σωστά και τα αποτελέσματα γράφονται στον καταχωρητή EXE_WB με την πέμπτη θετική ακμή του σήματος ρολογιού ASM_3 Τροποποίηση του ASM_2 Υλοποίηση εντολών Μεταφοράς Δεδομένων Στο Σχήμα φαίνεται το μπλοκ διάγραμμα του επεξεργαστή ASM_3, ο οποίος αποτελεί μία τροποποίηση-επέκταση του επεξεργαστή ASM_2, ώστε να είναι σε θέση να εκτελεί επιπλέον τις εντολές Μεταφοράς Δεδομένων. Ο ASM_3 διαθέτει ένα επιπλέον στάδιο στην γραμμή διοχέτευσης (MEMORY), το οποίο είναι απαραίτητο για την υλοποίηση των εντολών LD/LDD, ST/STD, IN και OUT. Στην συνέχεια θα αναφερθούν οι υπόλοιπες τροποποιήσεις-προσθήκες που έγιναν στον ASM_2 ώστε να προκύψει ο ASM_3. Ο IR έχει επιπλέον ένα σύγχρονο σήμα, το IR_SET, το οποίο όταν έχει τη λογική τιμή '' θέτει τον IR (κάνει όλα τα bits του '') με την θετική ακμή του σήματος ρολογιού. [Το σήμα IR_SET χρησιμοποιείται και κατά την αρχικοποίηση του καταχωρητή IR.] Ο MUX RF είναι ένας 4 -bit πολυπλέκτης και αφορά την αποκωδικοποίηση των εντολών LD/LDD και ST/STD. Συγκεκριμένα χρησιμοποιείται για την επιλογή (το σήμα επιλογής είναι σήμα εξόδου της DU) μεταξύ των εισόδων {IRllRd & IRllRr}, X, Y και Ζ. Τα Χ, Υ και Z είναι οι τιμές 67

74 , και αντίστοιχα. Σχήμα Το μπλοκ διάγραμμα του ASM_3 Το RF έχει τροποποιηθεί έτσι ώστε να μπορούν να διαβάζονται τα περιεχόμενα τριών διευθύνσεων ασύγχρονα. Ο λόγος αυτής της τροποποίησης αφορά την αποκωδικοποίηση των εντολών ST και STD (βλέπε Σχήμα ). Επειδή η προσπέλαση της μνήμης δεδομένων DM (Data Memory) γίνεται με έμμεση διευθυνσιοδότηση, μέσω των X, Y και Z, και επειδή εκτός από τα περιεχόμενα ενός εκ των X, Y και Z απαιτούνται και τα περιεχόμενα του καταχωρητή Rr, απαιτούνται τρεις διευθύνσεις ανάγνωσης στο RF, ώστε οι εντολές ST και STD να αποκωδικοποιούνται μέσα σε ένα κύκλο του σήματος ρολογιού. Στις πρώτες δύο διευθύνσεις για ανάγνωση του RF συνδέεται η έξοδος του πολυπλέκτη MUX RF. Στην τρίτη συνδέεται το σήμα IRllRr. Έτσι για παράδειγμα κατά την αποκωδικοποίηση της εντολής ST X R3 οι πρώτες δύο διευθύνσεις ανάγνωσης του RF παίρνουν τις διευθύνσεις των καταχωρητών που ορίζουν τον X (η έξοδος του MUX RF θα είναι ) και η τρίτη την διεύθυνση που αντιστοιχεί στον καταχωρητή R3 ( ). Σχήμα Η μορφή των εντολών LD/LDD, ST/STD, IN και OUT O MUX Q είναι ένας 2 6-bit πολυπλέκτης και αφορά την επιλογή (το σήμα επιλογής είναι σήμα εξόδου της DU) ενός εκ των δύο πιθανών σημάτων IRllq κατά την αποκωδικοποίηση των εντολών LD/LDD και ST/STD (βλέπε Σχήμα ). 68

75 Στον Πίνακα φαίνεται ο πίνακας αλήθειας της DU του ASM_3. Η DU είναι ένα συνδυαστικό κύκλωμα που δέχεται ως εισόδους τα σήματα IRllopcode και IRllXYZ. Στην έξοδό της περιλαμβάνει όλα τα σήματα που απαιτούνται για την αποκωδικοποίηση της κάθε εντολής καθώς και όλα τα σήματα ελέγχου που απαιτούνται από τις μονάδες των υπολοίπων σταδίων της γραμμής διοχέτευσης. SEL_RD SEL_Q SEL_A SEL_B N_A N_B DM_W_EN RF_WB_SEL RF_W_EN PC_EN IR_SET -- ADC -- SUB -- AND -- OR -- EOR -- MULL -- MULH -- ADI -- SUBI -- ANDI -- ORI -- COM -- NEG -- LSL -- LSR -- ROL -- ROR -- ASR -- SWAP -- LDI -- LD/LDD XYZ XYZ SEL_OP SEL_RF_A ADD SEL_FUNC Εντολή XYZ Έξοδος opcode Είσοδος IN -- MOV -- ST/STD XYZ XYZ OUT -- NOP -- OTHERS OTHERS (HALT) -- Πίνακας Ο πίνακας αλήθειας της DU του ASM_3 Το σήμα SEL_RF_A είναι το σήμα επιλογής του πολυπλέκτη MUX RF. Το σήμα αυτό παίρνει την τιμή του σήματος XYZ μόνο όταν εκτελούνται οι εντολές LD/LDD και ST/STD, 69

76 διαφορετικά παίρνει την τιμή. Βέβαια θα μπορούσε η πληροφορία που μεταφέρει το σήμα XYZ να ενσωματωθεί στο πεδίο opcode της κάθε εντολής με αποτέλεσμα την χρήση 6 διαφορετικών κωδικοποιήσεων του πεδίου opcode για τις εντολές LD/LDD και ST/STD, αντί για 2 που χρησιμοποιούνται τώρα (βλέπε Σχήμα ). [Με τον τρόπο που υλοποιούνται τώρα οι εντολές αυτές υπάρχει η δυνατότητα, μετά από την υλοποίηση όλου του συνόλου εντολών του ASM, να χρησιμοποιηθούν 5 bits για την κωδικοποίηση του πεδίου opcode αντί για 6 που προτάθηκε στην παράγραφο 3.4. Έτσι με την παρούσα προτεινόμενη υλοποίηση είναι δυνατόν είτε να εξοικονομηθούν bits στην μνήμη προγράμματος, είτε να εξοικονομηθούν κωδικοί εντολών, ώστε να είναι εφικτή η επέκταση του συνόλου εντολών εξειδικεύοντας το τελικό σύνολο εντολών με τέτοιο τρόπο ώστε να αφορά περισσότερο μία συγκεκριμένη εφαρμογή.] Το σήμα SEL_Q είναι το σήμα επιλογής του πολυπλέκτη MUX Q. Το σήμα DM_W_EN είναι το σήμα που επιτρέπει την εγγραφή στην DM. Η εγγραφή επιτρέπεται στην DM όταν το σήμα DM_W_EN παίρνει τη λογική τιμή ''. Το σήμα RF_WB_SEL είναι το σήμα επιλογής του πολυπλέκτη WB MUX. Ο ορισμός των σημάτων PC_EN και IR_SET έχει γίνει πιο πάνω. Αυτά τα σήματα καθυστερούν την προσκόμιση της εντολής που ακολουθεί τις εντολές IN και LD/LDD (instruction stall) κατά ένα κύκλο του σήματος ρολογιού εισάγοντας μία εντολή NOP (βλέπε Πίνακα ). Αυτό γίνεται γιατί οι εντολές IN και LD/LDD στον ASM_3 εκτελούνται στο στάδιο MEMORY της γραμμής διοχέτευσης (βλέπε Σχήμα ). Εάν δεν γινόταν η εισαγωγή της εντολής NOP μετά τις εντολές IN και LD/LDD και εάν η εντολή που ακολουθούσε την IN ή LD/LDD έκανε χρήση των αποτελεσμάτων της εκτέλεσης της εντολής IN ή LD/LDD, θα παρουσιαζόταν data hazard. Ο λόγος εμφάνισης του data hazard σε αυτήν την περίπτωση είναι ότι όταν το αποτέλεσμα της εντολής IN ή LD/LDD βρίσκεται στον καταχωρητή MEM_WB, η εντολή που ακολουθεί την IN ή LD/LDD (και χρησιμοποιεί το αποτέλεσμα της IN ή LD/LDD) έχει ήδη εκτελεστεί και το λανθασμένο αποτέλεσμά της βρίσκεται στον καταχωρητή EXE_MEM. Σε αυτήν την περίπτωση η FU δεν μπορεί να επέμβει. Εάν όμως γίνει εισαγωγή μιας καθυστέρησης ενός κύκλου του σήματος ρολογιού, τότε όταν εκτελεστεί η εντολή IN ή LD/LDD το αποτέλεσμά της θα βρίσκεται στον καταχωρητή MEM_WB και η εντολή που ακολουθεί (και χρησιμοποιεί το αποτέλεσμα της IN ή LD/LDD) θα βρίσκεται στον καταχωρητή DEC_EXE. Σε αυτήν την περίπτωση η FU είναι σε θέση να διορθώσει το data hazard. Αυτός είναι ο λόγος που οι εντολές IN και LD/LDD απαιτούν 2 κύκλους του σήματος ρολογιού για την εκτέλεσή τους (βλέπε Πίνακα 3.3-). Το data hazard της κατάστασης που περιγράφηκε πιο πάνω απαιτεί συνδυασμό των μεθόδων instruction stall και forwarding για την αποδοτικότερη επίλυσή του. [Ο τρόπος εισαγωγής της εντολής NOP με την χρήση των σημάτων PC_EN και IR_SET αποβλέπει στην καλύτερη αξιοποίηση της μνήμης προγράμματος σε βάρος της απλούστερης αποκωδικοποίησης. Το σήμα IR_SET θα μπορούσε να παραληφθεί εντελώς από την DU και η εντολή NOP να γράφεται κάθε φορά (εφόσον απαιτείται δηλαδή εφόσον η εντολή που ακολουθεί χρησιμοποιεί το αποτέλεσμα της IN ή LD/LDD) στην μνήμη προγράμματος μετά την εντολή IN ή LD/LDD, η οποία θα εκτελείται σε έναν κύκλο του σήματος ρολογιού. Σε αυτήν την περίπτωση μπορεί είτε ο χρήστης, είτε ο assembler να αποφασίζει πότε απαιτείται η εισαγωγή της εντολής NOP, ώστε να γίνεται όσο το δυνατόν καλύτερη αξιοποίηση της μνήμης προγράμματος και ταυτόχρονα μια προσπάθεια βελτίωσης της απόδοσης.] 7

77 Η κωδικοποίηση του πεδίου opcode των εντολών έχει αλλάξει στον Πίνακα σε σχέση με τον Πίνακα Οι λόγοι είναι η προσθήκη των νέων εντολών σε σχέση με το σύνολο εντολών του ASM_2 και η υλοποίηση της FU του ASM_3 λαμβάνοντας υπόψη την ελαχιστοποίηση του αριθμού των συγκριτών (βλέπε παράγραφο 3.5.2). Στον καταχωρητή DEC_EXE, με το τέλος της αποκωδικοποίησης της εκάστοτε εντολής, γράφονται επιπλέον (σε σχέση με τον καταχωρητή DEC_EXE του ASM_2) τα εξής σήματα IRllIO (βλέπε Σχήμα ), DM_W_EN, RFllrr_dm_dat (η έξοδος που προκύπτει από την ασύγχρονη ανάγνωση της τρίτης διεύθυνσης του RF) και RF_WB_SEL. Το σήμα RFllrr_dm_dat μεταφέρει τα δεδομένα που θα γραφτούν στην DM κατά την εκτέλεση των εντολών ST/STD. Ο ρόλος της μονάδας DM ADDR-DATA CALC είναι διπλός και αφορά τον υπολογισμό της τελικής διεύθυνσης των εντολών LD/LDD και ST/STD (effective address calculation) καθώς και τον υπολογισμό των δεδομένων που θα γραφτούν τελικά στην DM. Στην μονάδα αυτή υπάρχουν οι απαιτούμενοι πολυπλέκτες ώστε η FU (η τροποποιημένη έκδοσή της για τον ASM_3) να διορθώνει, εφόσον απαιτείται, τόσο τα δεδομένα της διεύθυνσης X ή Y ή Z, όσο και τα δεδομένα που πρόκειται να γραφτούν στην DM. Ο υπολογισμός της διεύθυνσης γίνεται με την πρόσθεση των 2 πιο σημαντικών bits των διορθωμένων (εφόσον απαιτείται) από την FU δεδομένων του X ή Y ή Z με την μετατόπιση (displacement) q. Τα 2 πιο σημαντικά bits του X ή Y ή Z παρέχονται στην μονάδα DM ADDR-DATA CALC μέσω των 2 πιο σημαντικών bits του σήματος {DEC_EXEllmux_a_out & DEC_EXEllmux_b_out}. Το σήμα που παρέχει στην μονάδα DM ADDRDATA CALC τα δεδομένα που πρόκειται να γραφτούν στην DM κατά την εκτέλεση των εντολών ST/STD είναι το DEC_EXEllrr_dm_dat. Έτσι τελικά, μετά τις ενδεχόμενες διορθώσεις της FU, οι έξοδοι της μονάδας DM ADDR-DATA CALC είναι τα σήματα dm_a (2 bits) και dm_dat (8 bits). Από τα παραπάνω το μέγεθος της μνήμης DM προκύπτει 496x8-bit. Στον καταχωρητή EXE_MEM γράφονται επιπλέον (σε σχέση με τον καταχωρητή EXE_WB του ASM_2) τα εξής σήματα τα σήματα εξόδου dm_a και dm_dat της μονάδας DM ADDR-DATA CALC, DEC_EXEllDM_W_EN, DEC_EXEllIO και DEC_EXEllRF_WB_SEL. Η DM είναι μία μνήμη RAM μεγέθους 496x8-bit στην οποία γράφονται και διαβάζονται σύγχρονα 8-bit δεδομένα. Οι είσοδοί της είναι τα σήματα EXE_MEMlldm_a, EXE_MEMlldm_dat και EXE_MEMllDM_W_EN. Όταν το σήμα EXE_MEMllDM_W_EN παίρνει τη λογική τιμή '' τότε με την θετική ακμή του σήματος ρολογιού στην έξοδο παράγονται τα δεδομένα που αντιστοιχούν στην διεύθυνση EXE_MEMlldm_a, ενώ όταν το σήμα EXE_MEMllDM_W_EN παίρνει τη λογική τιμή '' τότε με την θετική ακμή του σήματος ρολογιού γράφονται στην διεύθυνση EXE_MEMlldm_a τα δεδομένα που αντιστοιχούν στο σήμα EXE_MEMlldm_dat. Το σήμα εξόδου της DM είναι το dm_dat_out. Με INPUTS συμβολίζεται η ομάδα καταχωρητών που αντιστοιχεί στις εισόδους του ASM_3. Επειδή το σήμα EXE_WBllIO αποτελείται από 3 bits, είναι δυνατή η ύπαρξη μέχρι και 8 τέτοιων καταχωρητών. Η διεύθυνση εισόδου (IA) με τιμή (το σήμα EXE_WBllIO έχει την τιμή ) είναι δεσμευμένη από τον καταχωρητή SREG. Αυτό γίνεται για να υπάρχει η δυνατότητα αποθήκευσης της κατάστασης του επεξεργαστή πριν ή μετά την κλήση υπορουτινών (εντολή CALL) καθώς και για την δυνατότητα μεταβολής του SREG από τον χρήστη. Αυτός είναι και ο λόγος που οι είσοδοι τοποθετήθηκαν στο στάδιο MEMORY της γραμμής διοχέτευσης για να είναι δυνατή η αποθήκευση των δεδομένων του καταχωρητή SREG (εντολή IN) όπως αυτά έχουν διαμορφωθεί από την εκτέλεση της τελευταίας αριθμητικής, λογικής και επιπέδου bit εντολής. Στις υπόλοιπες διευθύνσεις εισόδου αντιστοιχούν 8-bit καταχωρητές που διαβάζουν τους αντίστοιχους 7

78 ακροδέκτες εισόδου σε κάθε θετική ακμή του σήματος ρολογιού. Ο πολυπλέκτης INPUT MUX με σήμα επιλογής το EXE_MEMllIO επιλέγει την έξοδο ενός εκ των καταχωρητών εισόδου, η οποία γράφεται στον καταχωρητή MEM_WB, στο πεδίο MEM_WBllinput, με την θετική ακμή του σήματος ρολογιού. Η μονάδα OUTPUT DEC έχει ως εισόδους τα σήματα EXE_MEMllopcode και EXE_MEMllIO ενεργοποιώντας τον αντίστοιχο καταχωρητή εξόδου για εγγραφή κατά την εκτέλεση της εντολής OUT. Ο κάθε καταχωρητής εξόδου καθίσταται ενεργός για εγγραφή με τη λογική τιμή ''. [Η μονάδα OUTPUT DEC ουσιαστικά επιτελεί λειτουργία αποκωδικοποίησης, η οποία θα μπορούσε να γίνεται στο στάδιο DECODE της γραμμής διοχέτευσης. Αυτό όμως δεν γίνεται γιατί θα απαιτούνταν 8 επιπλέον flip-flop σε κάθε καταχωρητή της γραμμής διοχέτευσης που προηγείται του σταδίου MEMORY (καταχωρητές DEC_EXE και EXE_MEM - βλέπε Σχήμα ) και τo σήμα IO (DEC_EXEllIO και EXE_MEMllIO) θα αφορούσε πλέον μόνο την εντολή IN.] Η διεύθυνση εξόδου (OA) με τιμή (το σήμα EXE_WBllIO έχει την τιμή ) είναι δεσμευμένη από τον καταχωρητή SREG για να υπάρχει η δυνατότητα επαναφοράς της κατάστασης του επεξεργαστή (εντολή OUT) πριν ή μετά την επιστροφή από υπορουτίνες (εντολή RET) και μεταβολή του SREG από τον χρήστη (χρήση των εντολών IN και OUT). Σε αυτό το σημείο πρέπει να αναφερθεί μία διαφοροποίηση που υπάρχει ανάμεσα στην μονάδα C FLAG LOGIC του ASM_2 και στην αντίστοιχη του ASM_3. Στην μονάδα C FLAG LOGIC του ASM_3 έχει ληφθεί πρόνοια ώστε να ενημερώνεται το flip-flop C FLAG TMP κατά την εκτέλεση εντολής OUT που αφορά τον καταχωρητή SREG, γιατί η κατάσταση του flip-flop C FLAG TMP αποτελεί μέρος της κατάστασης του επεξεργαστή. Με OUTPUTS στο Σχήμα συμβολίζονται όλοι οι καταχωρητές εξόδου, σε έναν εκ των οποίων γίνεται εγγραφή στην θετική ακμή του σήματος ρολογιού κατά την εκτέλεση της εντολής OUT, εφόσον το αντίστοιχο σήμα ενεργοποίησης του συγκεκριμένου καταχωρητή εξόδου έχει τη λογική τιμή ''. Στον καταχωρητή MEM_WB γράφονται τα EXE_MEMllmux_sel_rd_out, EXE_MEMllalu_out, EXE_MEMllRF_W_ΕΝ. εξής σήματα EXE_MEMllopcode, input, EXE_MEMllRF_WB_SEL και Ο 4 8-bit πολυπλέκτης WB MUX με σήμα επιλογής MEM_WBllRF_WB_SEL επιλέγει ένα εκ των σημάτων MEM_WBllalu_out, dm_dat_out και MEM_WBllinput, το οποίο οδηγείται στην είσοδο εγγραφής δεδομένων του RF. Επίσης η έξοδος του πολυπλέκτη WB MUX είναι το σήμα που θα αποθηκεύσει η FU σε καταχωρητή της (αντίστοιχο των γραμμών του σχήματος ). Η μονάδα FU ακολουθεί την ίδια λογική με αυτήν της μονάδας FU του ASM_2 με την διαφορά ότι επειδή τώρα η γραμμή διοχέτευσης αποτελείται από 5 στάδια απαιτούνται τρεις συνθήκες σε κάθε περίπτωση ανάλογες των γραμμών 6-7 και του σχήματος και ανάλογη μετατροπή των αποκωδικοποιητών ώστε να δίνεται και πάλι προτεραιότητα στην εντολή που άλλαξε πιο πρόσφατα τα δεδομένα που αντιστοιχούν σε μία συγκεκριμένη διεύθυνση του RF. Επίσης η FU του ASM_3 χρησιμοποιεί παρόμοια λογική για να εξασφαλίζεται ότι τόσο τα δεδομένα που θα χρησιμοποιηθούν ως διεύθυνση ανάγνωσης ή εγγραφής κατά την εκτέλεση των εντολών LD/LDD και ST/STD, όσο και τα δεδομένα που πρόκειται να γραφτούν στην DM κατά την εκτέλεση των εντολών ST/STD, είναι έγκυρα. 72

79 3.5.4 ASM και ASMA Υλοποίηση ολόκληρου του συνόλου εντολών ASM Στο Σχήμα φαίνεται το μπλοκ διάγραμμα του επεξεργαστή ASM, ο οποίος αποτελεί μία τροποποίηση-επέκταση του επεξεργαστή ASM_3, ώστε να είναι σε θέση να εκτελεί επιπλέον τις εντολές άλματος, με την βοήθεια του ASMA (ASM Assembler). Οι διαφοροποιήσεις του ASM σε σχέση με τον ASM_3 σκιάζονται στο Σχήμα Σχήμα Το μπλοκ διάγραμμα του ASM Η STACK είναι η στοίβα που χρησιμοποιείται για την υλοποίηση των εντολών CALL και RET. Πρόκειται για ένα σύγχρονο ακολουθιακό κύκλωμα το οποίο δέχεται ως εισόδους το σήμα RSET (-bit), το οποίο μηδενίζει τα περιεχόμενα της, το σήμα STACK_EN (-bit), το οποίο όταν έχει την λογική τιμή '' επιτρέπει την μεταβολή της κατάστασης της, το σήμα POP_PUSH (-bit), το οποίο όταν το σήμα STACK_EN έχει την λογική τιμή '' καθορίζει την λειτουργία που θα επιτελέσει η στοίβα (όταν το σήμα POP_PUSH έχει την λογική τιμή '' επιτελεί λειτουργία POP, διαφορετικά την λειτουργία PUSH) και το σήμα PC_OUT (την έξοδο του PC). Στην έξοδό της υπάρχει το 2-bit σήμα 73

80 TOS (Top Of Stack), το οποίο έχει ως τιμή την τελευταία τιμή του PC που σπρώχτηκε (λειτουργία PUSH) στην στοίβα, διαφορετικά την αρχική τιμή που δίνεται στα στοιχεία μνήμης που περιλαμβάνει η στοίβα (όταν το σύγχρονο σήμα RSET λαμβάνει την λογική τιμή '', όλα τα στοιχεία μνήμης που περιλαμβάνονται στην στοίβα παίρνουν την λογική τιμή ''). Το βάθος της στοίβας (stack depth) είναι 8, αλλά η VHDL περιγραφή της έχει γίνει με τρόπο ώστε το βάθος να μπορεί να καθορίζεται μέσω παραμέτρου, ώστε να δίνεται ευελιξία όσον αφορά τις ανάγκες του εκάστοτε χρήστη. Τονίζεται ότι η στοίβα δεν μπορεί να χρησιμοποιηθεί για να αποθηκευτούν άλλα δεδομένα εκτός της τιμής της εξόδου του PC. SEL_RD SEL_Q SEL_A SEL_B N_A N_B DM_W_EN RF_WB_SEL RF_W_EN -- ADC -- SUB -- AND -- OR -- EOR -- MULL -- MULH -- ADI -- SUBI -- ANDI -- ORI -- COM -- NEG -- LSL -- LSR -- ROL -- ROR -- ASR -- SWAP -- LDI -- LD/LDD XYZ XYZ SEL_OP SEL_RF_A ADD SEL_FUNC Εντολή XYZ Έξοδος opcode Είσοδος IN -- MOV -- ST/STD XYZ XYZ OUT -- OTHERS OTHERS (NOP) -- Πίνακας Ο πίνακας αλήθειας της DU του ASM Η DU του ASM φαίνεται στον Πίνακα Έχουν αφαιρεθεί από την έξοδό της, σε σχέση με 74

81 τον ASM_3, τα σήματα PC_EN και IR_EN (τα σήματα αυτά είναι πλέον έξοδοι της μονάδας ελέγχου (Control Unit CU). Οι εντολές των οποίων οι κωδικοί χαρακτηρίζονται ως OTHERS αποκωδικοποιούνται ως NOP και δεν μεταβάλλουν την κατάσταση του ASM. Οι υπόλοιπες τροποποιήσεις που έγιναν στον ASM_3 ώστε να προκύψει ο ASM παρουσιάζονται μέσω της περιγραφής της CU. Στο Σχήμα φαίνεται ο κώδικας VHDL που περιγράφει την μονάδα CU του ASM CONTROL UNIT. library IEEE; use IEEE.STD_LOGIC_64.ALL; use IEEE.NUMERIC_STD.ALL; entity cu is port(clk MRSET PC_OUT TOS IRllopcode CALL_RET DEC_EXEllopcode EXE_MEMllopcode JMP_k BRANCH_k BRANCH_s SREG RSET PC_EN PC_L_EN PC_L_DAT STACK_EN POP_PUSH IR_SET IR_EN FLUSH C_TMP_EN ); end cu; in std_logic; in std_logic; in std_logic_vector( downto ); in std_logic_vector( downto ); in std_logic_vector(5 downto ); in std_logic; in std_logic_vector(4 downto ); -- 5 MSb of DEC_EXEllopcode. in std_logic_vector(5 downto ); in std_logic_vector( downto ); in std_logic_vector(9 downto ); in std_logic_vector(2 downto ); in std_logic_vector(7 downto ); out std_logic; out std_logic; out std_logic; out std_logic_vector( downto ); out std_logic; out std_logic; out std_logic; out std_logic; out std_logic; out std_logic architecture behavioral of cu is signal state std_logic_vector(3 downto ); constant constant constant constant arset run jmp_branch halt constant constant constant constant constant constant constant constant op29 op28 op26_27 op26 op27 op62 op2 op22 std_logic_vector(3 std_logic_vector(3 std_logic_vector(3 std_logic_vector(3 unsigned(5 unsigned(5 unsigned(4 unsigned(5 unsigned(5 unsigned(5 unsigned(5 unsigned(5 downto downto downto downto downto downto downto downto ) ) ) ) ) ) ) ) = = = = = = = = downto downto downto downto ) ) ) ) ""; ""; ""; ""; ""; ""; ""; ""; = = = = ""; ""; ""; ""; CALL, RET. JMP. BRBS, BRBC. BRBS. BRBC. HALT. LDD. IN. begin process process(clk,mrset) begin if (MRSET = '') then state <= arset; elsif rising_edge(clk) then case state is when arset => state <= run; when run => if ((unsigned(irllopcode) = op28) and (unsigned(dec_exellopcode) /= op26_27) and (unsigned(exe_memllopcode(5 downto )) /= op26_27)) then state <= jmp_branch; elsif ((unsigned(irllopcode) = op29) and (unsigned(dec_exellopcode) /= op26_27) and (unsigned(exe_memllopcode(5 downto )) /= op26_27)) then state <= jmp_branch; elsif ((unsigned(irllopcode) = op28) and (unsigned(exe_memllopcode) = op26) 75

82 and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then state <= jmp_branch; elsif ((unsigned(irllopcode) = op29) and (unsigned(exe_memllopcode) = op26) and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then state <= jmp_branch; elsif ((unsigned(irllopcode) = op28) and (unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then state <= jmp_branch; elsif ((unsigned(irllopcode) = op29) and (unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then state <= jmp_branch; elsif ((unsigned(exe_memllopcode) = op26) and (SREG(to_integer(unsigned(BRANCH_s))) = '')) then state <= jmp_branch; elsif ((unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) = '')) then state <= jmp_branch; elsif (unsigned(exe_memllopcode) = op62) then state <= halt; else state <= run; end if; when jmp_branch => state <= run; when halt => state <= halt; when OTHERS => state <= halt; end case; end if; end process process; process2 process(state,pc_out,tos,irllopcode,dec_exellopcode,exe_memllopcode,call_ret,jmp_k,branch_k,br ANCH_s,SREG) begin RSET <= ''; PC_EN <= ''; PC_L_EN <= ''; PC_L_DAT <= (OTHERS => ''); STACK_EN <= ''; POP_PUSH <= ''; IR_EN <= ''; IR_SET <= ''; FLUSH <= ''; C_TMP_EN <= ''; case state is when arset => RSET <= ''; IR_SET <= ''; when run => if ((unsigned(irllopcode) = op28) and (unsigned(dec_exellopcode) /= op26_27) and (unsigned(exe_memllopcode(5 downto )) /= op26_27)) then PC_L_EN <= ''; PC_L_DAT <= JMP_k; IR_EN <= ''; elsif ((unsigned(irllopcode) = op29) and (unsigned(dec_exellopcode) /= op26_27) and (unsigned(exe_memllopcode(5 downto )) /= op26_27)) then PC_L_EN <= ''; PC_L_DAT <= JMP_k; IR_EN <= ''; STACK_EN <= ''; if (CALL_RET = '') then POP_PUSH <= ''; -- PUSH. PC_L_DAT <= JMP_k; else POP_PUSH <= ''; -- POP. PC_L_DAT <= TOS; end if; elsif ((unsigned(irllopcode) = op28) and (unsigned(dec_exellopcode) = op26_27) and (unsigned(exe_memllopcode(5 downto )) /= op26_27)) then PC_EN <= ''; IR_EN <= ''; elsif ((unsigned(irllopcode) = op29) and (unsigned(dec_exellopcode) = op26_27) and (unsigned(exe_memllopcode(5 downto )) /= op26_27)) then PC_EN <= ''; IR_EN <= ''; elsif ((unsigned(irllopcode) = op28) and (unsigned(exe_memllopcode) = op26) and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then PC_L_EN <= ''; 76

83 PC_L_DAT <= JMP_k; IR_EN <= ''; elsif ((unsigned(irllopcode) = op29) and (unsigned(exe_memllopcode) = op26) and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then PC_L_EN <= ''; IR_EN <= ''; STACK_EN <= ''; if (CALL_RET = '') then POP_PUSH <= ''; -- PUSH. PC_L_DAT <= JMP_k; else POP_PUSH <= ''; -- POP. PC_L_DAT <= TOS; end if; elsif ((unsigned(irllopcode) = op28) and (unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then PC_L_EN <= ''; PC_L_DAT <= JMP_k; IR_EN <= ''; elsif ((unsigned(irllopcode) = op29) and (unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) /= '')) then PC_L_EN <= ''; IR_EN <= ''; STACK_EN <= ''; if (CALL_RET = '') then POP_PUSH <= ''; -- PUSH. PC_L_DAT <= JMP_k; else POP_PUSH <= ''; -- POP. PC_L_DAT <= TOS; end if; elsif ((unsigned(exe_memllopcode) = op26) and (SREG(to_integer(unsigned(BRANCH_s))) = '')) then PC_L_EN <= ''; if BRANCH_k(9) = '' then -- SIGN EXTENSION. PC_L_DAT <= std_logic_vector(unsigned(pc_out) + unsigned("" & BRANCH_k)); else PC_L_DAT <= std_logic_vector(unsigned(pc_out) + unsigned("" & BRANCH_k)); end if; IR_SET <= ''; FLUSH <= ''; C_TMP_EN <= ''; elsif ((unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) = '')) then PC_L_EN <= ''; if BRANCH_k(9) = '' then -- SIGN EXTENSION. PC_L_DAT <= std_logic_vector(unsigned(pc_out) + unsigned("" & BRANCH_k)); else PC_L_DAT <= std_logic_vector(unsigned(pc_out) + unsigned("" & BRANCH_k)); end if; IR_SET <= ''; FLUSH <= ''; C_TMP_EN <= ''; elsif ((unsigned(irllopcode) = op2) or (unsigned(irllopcode) = op22)) then PC_EN <= ''; PC_L_EN <= ''; PC_L_DAT <= (OTHERS => ''); IR_EN <= ''; IR_SET <= ''; FLUSH <= ''; C_TMP_EN <= ''; elsif (unsigned(exe_memllopcode) = op62) then PC_EN <= ''; IR_EN <= ''; FLUSH <= ''; C_TMP_EN <= ''; else PC_EN <= ''; PC_L_EN <= ''; PC_L_DAT <= (OTHERS => ''); IR_EN <= ''; FLUSH <= ''; C_TMP_EN <= ''; end if; when jmp_branch => PC_EN <= ''; PC_L_EN <= ''; PC_L_DAT <= (OTHERS => ''); IR_EN <= ''; FLUSH <= ''; 77

84 226 C_TMP_EN <= ''; 227 when halt => 228 PC_EN <= ''; 229 PC_L_EN <= ''; 23 PC_L_DAT <= (OTHERS => ''); 23 IR_EN <= ''; 232 FLUSH <= ''; 233 C_TMP_EN <= ''; 234 when OTHERS => 235 PC_EN <= ''; 236 PC_L_EN <= ''; 237 PC_L_DAT <= (OTHERS => ''); 238 IR_EN <= ''; 239 FLUSH <= ''; 24 C_TMP_EN <= ''; 24 end case; 242 end process process2; 243end behavioral; Σημείωση Η αρίθμηση δεν είναι μέρος του κώδικα, χρησιμοποιείται για σκοπούς αναφοράς. Σχήμα Ο κώδικας VHDL της CU του ASM Η CU είναι μία μηχανή πεπερασμένων καταστάσεων (βλέπε Κεφάλαιο 2, παράγραφο 2.5.3), η οποία ακολουθεί το μοντέλο Mealy. Σχήμα Γενική μορφή μιας FSM που ακολουθεί το μοντέλο Mealy Μέσα στο ορθογώνιο με την διακεκομμένη γραμμή, στο Σχήμα , φαίνεται το αποτέλεσμα της περιγραφής της process περιγράφεται η συνδυαστική λογική υπολογισμού επόμενης κατάστασης και ο καταχωρητής κατάστασης της μονάδας CU (γραμμές 5-97 στο Σχήμα ). Η process μπορεί να θεωρηθεί ότι περιγράφει μία μηχανή πεπερασμένων καταστάσεων που ακολουθεί το μοντέλο Moore, η λειτουργία της οποίας φαίνεται στο Σχήμα Με τους αριθμούς -9 στο Σχήμα περιγράφεται η προτεραιότητα των συνθηκών μετάβασης (στα δεξιά του σχήματος φαίνεται αναλυτικά το περιεχόμενό τους). 78

85 Σχήμα Η λειτουργία του μοντέλου Moore της process του σχήματος H process2 στο Σχήμα περιγράφει το συνδυαστικό κύκλωμα υπολογισμού εξόδου του σχήματος , το οποίο έχει ως εισόδους την παρούσα κατάσταση state (η οποία καθορίζεται από την process) και όλες τις εισόδους της CU, εκτός των σημάτων CLK και MRSET. Όταν το ασύγχρονο σήμα MRSET πάρει την λογική τιμή '' τότε η CU μεταβαίνει ασύγχρονα στην κατάσταση arset (process), κατά την οποία τα σήματα RSET και IR_SET παίρνουν την λογική τιμή '' (process2) αρχικοποιώντας όλα τα σύγχρονα στοιχεία του ASM με την θετική ακμή του σήματος ρολογιού. Στην ίδια θετική ακμή του σήματος ρολογιού η CU μεταβαίνει στην κατάσταση run κατά την οποία αναλόγως των τιμών εισόδων (εκτός των σημάτων CLK και MRSET) της CU διαμορφώνονται και οι τιμές των εξόδων. Εάν ισχύει κάποια από τις συνθήκες του σχήματος τότε με την θετική ακμή του σήματος ρολογιού η CU μεταβαίνει στην αντίστοιχη κατάσταση. Όταν η CU βρίσκεται στην κατάσταση run και ισχύει η συνθήκη (unsigned(irllopcode)=op28) and (unsigned(dec_exellopcode)/=op26_27) (unsigned(exe_memllopcode(5 DOWNTO ))/=op26_27) and,τότε τα σήματα PC_L_EN, PC_L_DAT, IR_EN λαμβάνουν αυτόματα (η process2 είναι το συνδυαστικό κύκλωμα υπολογισμού εξόδου) τις τιμές '', JMP_k και '' αντίστοιχα και με την θετική ακμή του σήματος ρολογιού η CU μεταβαίνει στην κατάσταση jmp_branch. Η συνθήκη σημαίνει ότι στον IR βρίσκεται η εντολή JMP (κωδικός εντολής 28) και οι δύο εντολές που προηγήθηκαν δεν είναι κάποια από τις BRBS και BRBC (κωδικοί εντολής 26 και 27 αντίστοιχα). Η συνθήκη έχει αυτή την μορφή γιατί οι εντολές BRBS και BRBC εκτελούνται αφού φτάσουν στον καταχωρητή ΕΧΕ_ΜΕΜ, δηλαδή αφού η εντολή που προηγείται της BRBS ή BRBC έχει προλάβει να μεταβάλει το περιεχόμενο του καταχωρητή SREG (στην περίπτωση βέβαια που τον μεταβάλλει). Έτσι εάν προηγείται της JMP μία εκ των εντολών BRBS και BRBC δεν πρέπει να εκτελεστεί η JMP, γιατί η BRBS ή BRBC δεν έχει φτάσει ακόμα στον καταχωρητή EXE_MEM. Τα σήματα PC_EN, PC_L_EN και PC_L_DAT είναι σύγχρονα σήματα εισόδου στον PC. Το σήμα PC_EN είναι το σήμα 79

86 ενεργοποίησης του PC. Εάν το σήμα PC_EN πάρει την λογική τιμή '' τότε δεν επιτρέπεται καμία μεταβολή στον PC. Εάν το σήμα PC_EN έχει την λογική τιμή '' και το σήμα PC_L_EN έχει την λογική τιμή '' τότε με την θετική ακμή του σήματος ρολογιού αυξάνεται κατά η τιμή του PC. Εάν όμως το σήμα PC_L_EN έχει την λογική τιμή '', καθώς το σήμα PC_EN έχει την λογική τιμή '', τότε με την θετική ακμή του σήματος ρολογιού φορτώνεται στον PC η τιμή του σήματος PC_L_DAT. Έτσι στην περίπτωση που εξετάζεται, εφόσον ισχύει η πιο πάνω συνθήκη, με την θετική ακμή του σήματος ρολογιού ο PC φορτώνεται με το σήμα PC_L_DAT, το οποίο έχει την τιμή IRllJMP_k, ο IR έχει ήδη απενεργοποιηθεί για να αποτραπεί η προσκόμιση της επόμενης εντολής (IR_EN <= '') και η CU μεταβαίνει στην κατάσταση jmp_branch, η οποία χρησιμοποιείται ώστε να εισαχθεί στον IR η εντολή με διεύθυνση JMP_k κατά την επόμενη θετική ακμή του σήματος ρολογιού. Μετά την εκτέλεση της JMP, στους καταχωρητές DEC_EXE και EXE_MEM υπάρχουν αποτελέσματα που αφορούν την εντολή JMP, τα οποία όμως δεν επηρεάζουν την κατάσταση του ASM, αφού η JMP αποκωδικοποιείται ως NOP (βλέπε Πίνακα ). Η πιο πάνω περιγραφή δικαιολογεί την εκτέλεση της εντολή JMP σε 2 κύκλους (βλέπε Πίνακα 3.3-). [Οι εντολές CALL και RET υλοποιούνται όμοια με την εντολή JMP, με την διαφορά ότι κατά την εκτέλεση της CALL η κορυφή της στοίβας (TOS) φορτώνεται (λειτουργία PUSH) με την τιμή του PC (ο PC φορτώνεται και πάλι με το σήμα PC_L_DAT, το οποίο έχει την τιμή IRllJMP_k) και κατά την εκτέλεση της RET ο PC φορτώνεται με την κορυφή της στοίβας (σήμα TOS ταυτόχρονα επιτελείται λειτουργία POP). Στα επόμενα δεν θα γίνει αναφορά στα τμήματα της CU που αφορούν τις εντολές CALL και RET αφού ακολουθούν την ίδια ακριβώς λογική με τα τμήματα της CU που αφορούν την εντολή JMP.] Όταν στον IR βρίσκεται η εντολή JMP αλλά δεν ισχύει η συνθήκη (unsigned(irllopcode)=op28) and (unsigned(dec_exellopcode)/=op26_27) (unsigned(exe_memllopcode(5 DOWNTO ))/=op26_27) and, γίνεται έλεγχος από το συνδυαστικό κύκλωμα υπολογισμού εξόδου ( process2) εάν ισχύει η συνθήκη (unsigned(irllopcode) = op28) and (unsigned(dec_exellopcode) (unsigned(exe_memllopcode(5 downto )) /= op26_27). = op26_27) and Εάν ισχύει, τότε ακριβώς πριν από την JMP εισήλθε στην γραμμή διοχέτευσης μία BRBS ή BRBC και έτσι το συνδυαστικό κύκλωμα υπολογισμού εξόδου αποτρέπει την προσκόμιση της επόμενης εντολής (γραμμή 38, Σχήμα ) γιατί η συνθήκη (έλεγχος σημαίας του SREG) της BRBS ή BRBC μπορεί να μην ισχύει, με αποτέλεσμα να εκτελεστεί τελικά η εντολή JMP. Έτσι στον επόμενο κύκλο του σήματος ρολογιού η JMP βρίσκεται στον IR, η αποκωδικοποιημένη μορφή της JMP στον καταχωρητή DEC_EXE και η BRBS ή BRBC στον καταχωρητή EXE_MEM. Σ' αυτήν την περίπτωση η CU βρίσκεται ακόμα στην κατάσταση run και το συνδυαστικό κύκλωμα υπολογισμού εξόδου κάνει τους εξής διαδοχικούς ελέγχους (unsigned(irllopcode) = op28) and (unsigned(exe_memllopcode) (SREG(to_integer(unsigned(BRANCH_s))) /= '') = op26) and = op27) and και (unsigned(irllopcode) = op28) and (unsigned(exe_memllopcode) (SREG(to_integer(unsigned(BRANCH_s))) /= ''). Εάν ισχύει κάποια από τις δύο συνθήκες τότε το συνδυαστικό κύκλωμα υπολογισμού εξόδου προετοιμάζει τα σήματα εξόδου (γραμμές και αντίστοιχα στο Σχήμα ) ώστε με την θετική ακμή του σήματος ρολογιού να εκτελεστεί η εντολή JMP, με καθυστέρηση 8

87 ενός κύκλου (έτσι η JMP εκτελείται σε 3 κύκλους, βλέπε Πίνακα 3.3-). Εάν δεν ισχύει κάποια από τις προηγούμενες συνθήκες, στον ίδιο κύκλο ρολογιού, γίνονται οι εξής διαδοχικοί έλεγχοι από το συνδυαστικό κύκλωμα υπολογισμού εξόδου (unsigned(exe_memllopcode) = op26) and (SREG(to_integer(unsigned(BRANCH_s))) = '') και (unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) = ''). Κάποια από τις δύο συνθήκες αναγκαστικά θα ισχύει και το συνδυαστικό κύκλωμα υπολογισμού εξόδου προετοιμάζει τα σήματα εξόδου κατάλληλα (γραμμές και 9-98 αντίστοιχα στο Σχήμα ) ώστε να εκτελεστεί είτε η BRBS, είτε η BRBC (με την επόμενη θετική ακμή του σήματος ρολογιού η CU μεταβαίνει στην κατάσταση jmp_branch). Στην περίπτωση που η CU βρίσκεται στην κατάσταση run και ισχύει μία από τις συνθήκες (unsigned(exe_memllopcode) = op26) and (SREG(to_integer(unsigned(BRANCH_s))) = '') και (unsigned(exe_memllopcode) = op27) and (SREG(to_integer(unsigned(BRANCH_s))) = ''), το συνδυαστικό κύκλωμα υπολογισμού εξόδου προετοιμάζει τα σήματα εξόδου για παράλληλη φόρτωση του PC, καθαρίζει την γραμμή διοχέτευσης, αφού οι εντολές που ακολουθούν την BRBS ή BRBC δεν πρέπει να εκτελεστούν, και αποτρέπει την αλλαγή της κατάστασης του flip-flop C FLAG TMP. Στις γραμμές ή 9-97 του σχήματος το σήμα PC_L_EN λαμβάνει την λογική τιμή '', το σήμα PC_L_DAT λαμβάνει την τιμή του αθροίσματος της παρούσας τιμής του PC (σήμα PC_OUT) με το σήμα EXE_MEMllBRANCH_m (σήμα BRANCH_m), στο οποίο έχει γίνει πρώτα επέκταση προσήμου, και τα σήματα IR_SET και FLUSH λαμβάνουν την λογική τιμή '' ώστε με την θετική ακμή του σήματος ρολογιού οι εντολές που βρίσκονται στους καταχωρητές IR, DEC_EXE και EXE_WB να μετατραπούν σε NOP, ώστε να μην αλλάξει η κατάσταση του ASM. Βέβαια εάν η εντολή που βρίσκεται στον καταχωρητή DEC_EXE μεταβάλλει την σημαία C θα αλλάξει, εάν δεν ληφθεί πρόνοια για το αντίθετο, την κατάσταση του flip-flop C FLAG TMP με την θετική ακμή του σήματος ρολογιού. Το σήμα C_TMP_EN παίρνοντας την λογική τιμή '' αποτρέπει την αλλαγή της κατάστασης του flip-flop C FLAG TMP (γραμμή 87 ή 98 του σχήματος ). Το σήμα BRANCH_m είναι ένας προσημασμένος αριθμός των bits στην αριθμητική του συμπληρώματος ως προς 2, ο οποίος διαμορφώνεται κατάλληλα από τον assembler ASMA κατά την μετάφραση ώστε όταν προστεθεί στο περιεχόμενο του PC (σήμα PC_OUT) να προκύψει η διεύθυνση στην οποία θα γίνει το άλμα. [Το περιεχόμενο του PC όταν εκτελείται η εντολή άλματος υπό συνθήκη είναι αυξημένο κατά 3 σε σχέση με την διεύθυνση της προς εκτέλεση εντολής άλματος υπό συνθήκη. Έτσι η διεύθυνση στην οποία θα γίνει το άλμα δεν μπορεί να διαφέρει από την διεύθυνση της προς εκτέλεση εντολής άλματος υπό συνθήκη περισσότερο από μία τιμή στο διάστημα [-52+3, 5+3] ή στο διάστημα [-52+2, 5+2] στην περίπτωση που αμέσως μετά την προς εκτέλεση εντολή άλματος υπό συνθήκη ακολουθεί μία εκ των εντολών LD/LDD, ΙΝ, JMP, CALL και RET. Στην περίπτωση των εντολών LD/LDD και ΙΝ εισάγεται εντολή NOP στον IR χωρίς να μεταβάλλεται η τιμή του PC (γραμμές 2-26 του σχήματος ) και στην περίπτωση των εντολών JMP, CALL και RET ο PC δεν μεταβάλλεται έως ότου η εντολή BRBS ή 8

88 BRBC που προηγείται φτάσει στον καταχωρητή ΕΧΕ_ΜΕΜ.] Επειδή οι εντολές άλματος υπό συνθήκη εκτελούνται όταν βρίσκονται στο καταχωρητή EXE_MEM, όταν ισχύει η συνθήκη απαιτούν έναν επιπλέον κύκλο για να εκτελεστούν χρησιμοποιώντας 4 κύκλους του σήματος ρολογιού (2 κύκλους για εντολές που προσκομίστηκαν αλλά τελικά δεν θα εκτελεστούν συν 2 κύκλους για την εκτέλεση της BRBS ή BRBC). Όταν όμως δεν ισχύει η συνθήκη κοστίζουν μόνο έναν κύκλο του σήματος ρολογιού στην γραμμή διοχέτευσης (βλέπε Πίνακα 3.3-). Οι καταχωρητές DEC_EXE και EXE_MEM έχουν τροποποιηθεί κατάλληλα ώστε να αποθηκεύεται σ' αυτούς ολόκληρο το περιεχόμενο του καταχωρητή IR (αντί του πεδίου Rd αποθηκεύεται το σήμα mux_sel_rd_out, το οποίο δεν συμπίπτει με την τιμή του IRllRd μόνο κατά την αποκωδικοποίηση των εντολών MULL και MULH). Έτσι μεταφέρονται τα απαιτούμενα σήματα για την εκτέλεση των εντολών άλματος υπό συνθήκη. Στην περίπτωση που η CU βρίσκεται στην κατάσταση run και στον IR βρίσκεται η εντολή LD/LDD ή IN (κωδικός εντολής 2 και 22 αντίστοιχα) τότε στο συνδυαστικό κύκλωμα υπολογισμού εξόδου ισχύει η συνθήκη (unsigned(irllopcode) = op2) or (unsigned(irllopcode) = op22) και παράγονται κατάλληλα σήματα εξόδου (γραμμές 2-26 του σχήματος ) ώστε να γίνει εισαγωγή μίας εντολής NOP μετά την IN ή LD/LDD (για τους λόγους που αναφέρθηκαν στην παράγραφο 3.5.3, στην περιγραφή των σημάτων εξόδου PC_EN και IR_SET της DU του ASM_3). Στην περίπτωση που η CU βρίσκεται στην κατάσταση run και στον καταχωρητή EXE_MEM βρίσκεται η εντολή με κωδικό 62 (HALT) τότε στο συνδυαστικό κύκλωμα υπολογισμού εξόδου οι έξοδοι της CU λαμβάνουν τις κατάλληλες τιμές (γραμμές 28-2 του σχήματος ) και η CU μεταβαίνει στην κατάσταση halt με την θετική ακμή του σήματος ρολογιού διακόπτοντας την προσκόμιση εντολών και εμποδίζοντας την μεταβολή της κατάστασης του ASM. Η πλήρης VHDL περιγραφή του ASM υπάρχει στο Παράρτημα Α. Στον Πίνακα συνοψίζονται τα βασικά χαρακτηριστικά του μικροεπεξεργαστή ASM. Αρχιτεκτονική 8-bit RISC Γραμμή Διοχέτευσης 5 σταδίων Αριθμός κύκλων εκτέλεσης εντολών 3 από 43 εντολές εκτελούνται σε κύκλο Υποστήριξη πολλαπλασιασμού Μέσω των εντολών MULL και MULH Μέγεθος PM Register File 496x9 bits 32 καταχωρητές γενικής χρήσης καταχωρητές X, Y και Z για προσπέλαση της DM Μέγεθος DM Υποστήριξη στοίβας 496x8 bits Για την υλοποίηση των εντολών CALL και RET Βάθος στοίβας Παραμετροποιήσιμο Πίνακας Tα βασικά χαρακτηριστικά του μικροεπεξεργαστή ASM 82

89 ASMA ASM's Assembler Ο ASMA είναι ένα πρόγραμμα γραμμένο σε JAVA, το οποίο διαβάζει ένα αρχείο κειμένου (αρχείο εισόδου) με εντολές του ASM και παράγει ένα άλλο αρχείο κειμένου (αρχείο εξόδου), το οποίο περιγράφει σε δυαδική μορφή (με την χρήση των χαρακτήρων και ) την κάθε εντολή. Το αρχείο εξόδου χρησιμοποιείται από την VHDL περιγραφή της μνήμης προγράμματος για τον καθορισμό του προγράμματος που αποθηκεύει. Οι λόγοι χρήσης της JAVA για τον ASMA είναι η ανεξαρτησία της γλώσσας από τον συνδυασμό υλικού-λειτουργικού συστήματος (portability) και η μεγάλη βιβλιοθήκη της γλώσσας, η οποία καθιστά εύκολη την διαχείριση των συμβολοσειρών (strings). Ο ASMA είναι ένας συμβολομεταφραστής ενός περάσματος και η λειτουργία του αλγορίθμου του συνοψίζεται στα εξής βασικά βήματα. Διαβάζεται η πρώτη γραμμή του αρχείου εισόδου. 2. Καλείται η συνάρτηση String translate(), η οποία με την χρήση regex (regular expressions, βλέπε γραμμή στο Σχήμα ) [24] ελέγχει εάν η σύνταξη της εντολής είναι σωστή (για την χρήση των regex απαιτείται η δήλωση import java.util.*; στην αρχή του κώδικα του ASMA). Εάν η σύνταξη είναι σωστή παράγεται η αντίστοιχη συμβολοσειρά, που αποτελείται από 9 χαρακτήρες και (όσα τα bits μίας εντολής), η οποία γράφεται στο αρχείο εξόδου, καταλαμβάνοντας μία γραμμή. [Σε κάθε γραμμή του αρχείου εισόδου μπορεί να υπάρχει μία το πολύ εντολή και σε κάθε γραμμή του αρχείου εξόδου μπορεί να υπάρχει η μετάφραση μόνο μιας εντολής. Έτσι η μετάφραση της πρώτης εντολής του αρχείου εισόδου γράφεται στην πρώτη γραμμή του αρχείου εξόδου, η μετάφραση της δεύτερης εντολής του αρχείου εισόδου γράφεται στην δεύτερη γραμμή του αρχείου εξόδου κ.ο.κ. (η πρώτη γραμμή του αρχείου εξόδου είναι η εντολή που αντιστοιχεί στην διεύθυνση της μνήμης προγράμματος, η δεύτερη γραμμή του αρχείου εξόδου είναι η εντολή που αντιστοιχεί στην διεύθυνση της μνήμης προγράμματος κ.ο.κ.).] Στην περίπτωση που η γραμμή (του αρχείου εισόδου) που διαβάστηκε είναι κενή ή είναι σχόλιο, δεν γράφεται τίποτα στο αρχείο εξόδου. Εάν η σύνταξη της εντολής που διαβάστηκε από το αρχείο εισόδου δεν είναι σωστή, τότε δεν γράφεται τίποτα στο αρχείο εξόδου και στην γραμμή εκτέλεσης εντολών παράγεται μήνυμα σφάλματος που υποδεικνύει στον χρήστη τον αριθμό της γραμμής του αρχείου εισόδου όπου παρουσιάστηκε το σφάλμα. 3. Διαβάζεται η δεύτερη γραμμή του αρχείου εισόδου και επαναλαμβάνεται το βήμα 2. Η ίδια διαδικασία επαναλαμβάνεται μέχρι να διαβαστούν όλες οι γραμμές του αρχείου εισόδου. 4. Εφόσον όλες οι γραμμές του αρχείου εισόδου έχουν μεταφραστεί, συμπληρώνονται οι γραμμές του αρχείου εξόδου με συμβολοσειρές 9 χαρακτήρων (εντολές NOP), μέχρι να φτάσει τις 496 γραμμές. Εάν οι μεταφρασμένες γραμμές του αρχείου εισόδου ξεπερνούν το μέγεθος της μνήμης προγράμματος (496) παράγεται στην γραμμή εκτέλεσης εντολών αντίστοιχο μήνυμα σφάλματος. Η σύνταξη της assembly γλώσσας του ASM συμβαδίζει με την περιγραφή που έγινε στην παράγραφο 3.3 ένα αρκετά περιεκτικό παράδειγμα φαίνεται στο Σχήμα

90 Σχήμα Η μετάφραση ενός απλού προγράμματος του ASM με την χρήση του ASMA Το μοναδικό νέο στοιχείο σε σχέση με την περιγραφή της παραγράφου 3.3 είναι η υποχρεωτική ετικέτα (label) πριν από την κάθε εντολή. Η ετικέτα περιγράφει την διεύθυνση της μνήμης προγράμματος στην οποία αποθηκεύεται η εκάστοτε εντολή, αναλόγως της προτεραιότητας της εκάστοτε εντολής στο αρχείο εισόδου (δηλαδή η γραμμή της πρώτης εντολής, διαβάζοντας το αρχείο εισόδου από πάνω προς τα κάτω, πρέπει να αρχίζει με την ετικέτα, η γραμμή της δεύτερης εντολής θα πρέπει να αρχίζει με την ετικέτα κ.ο.κ.). Το παράδειγμα αυτό προκύπτει από την εκτέλεση της εντολής java ASMA in.txt pm.data στην γραμμή εκτέλεσης εντολών. Τα αρχεία in.txt και pm.data είναι τα αρχεία εισόδου και εξόδου αντίστοιχα. Τα ονόματα των αρχείων μπορούν να είναι οποιαδήποτε έγκυρα ονόματα αναλόγως λειτουργικού συστήματος, αλλά το όνομα του αρχείου εξόδου θα πρέπει να συμβαδίζει με το αντίστοιχο όνομα του αρχείου που δίνεται στην VHDL περιγραφή της μνήμης προγράμματος. Στα δεξιά του σχήματος φαίνεται μέρος του αρχείου εξόδου για πρακτικούς λόγους το πλήρες αρχείο περιλαμβάνει 496 γραμμές, όσο είναι το μέγεθος της μνήμης προγράμματος. Στο Σχήμα φαίνεται τμήμα της συνάρτησης String translate() που αφορά τον έλεγχο της σύνταξης και την μετάφραση της εντολής BRBS. } else if (line.matches("^"+k+"\\s*(brbs)\\s+"+s+"\\s+"+k+"\\s*(\\s+;.*)?$")){ 2 3 BufferedReader inputstream = null; 4 String tmp = null; 5 6 try { 7 8 inputstream = new BufferedReader(new FileReader(inFile)); 9 while ((tmp = inputstream.readline())!= null) { if (tmp.matches(line)){ 2 break; 3 } 4 } 5 6 while ((tmp = inputstream.readline())!= null) { 84

91 } if (tmp.matches("^"+k+"\\s*.+$")){ break; } if (tmp.matches("^"+k+"\\s*(ld)\\s+"+r+"\\s+"+xyz+"\\s*(\\s+;.*)?$")){ binarycommand.replace(9,9,convdstrtobstr(integer.tostring(integer.parseint(commandfiel ds[2].substring(,4)) - codelinenumber - 2),)); } else if (tmp.matches("^"+k+"\\s*(ldd)\\s+"+r+"\\s+"+xyz+"\\+"+q+"\\s*(\\s+;.*)?$")){ binarycommand.replace(9,9,convdstrtobstr(integer.tostring(integer.parseint(commandfiel ds[2].substring(,4)) - codelinenumber - 2),)); } else if (tmp.matches("^"+k+"\\s*(in)\\s+"+r+"\\s+"+a+"\\s*(\\s+;.*)?$")){ binarycommand.replace(9,9,convdstrtobstr(integer.tostring(integer.parseint(commandfiel ds[2].substring(,4)) - codelinenumber - 2),)); } else if (tmp.matches("^"+k+"\\s*(jmp)\\s+"+k+"\\s*(\\s+;.*)?$")){ binarycommand.replace(9,9,convdstrtobstr(integer.tostring(integer.parseint(commandfiel ds[2].substring(,4)) - codelinenumber - 2),)); } else if (tmp.matches("^"+k+"\\s*(call)\\s+"+k+"\\s*(\\s+;.*)?$")){ binarycommand.replace(9,9,convdstrtobstr(integer.tostring(integer.parseint(commandfiel ds[2].substring(,4)) - codelinenumber - 2),)); } else if (tmp.matches("^"+k+"\\s*(ret)\\s*(\\s+;.*)?$")){ binarycommand.replace(9,9,convdstrtobstr(integer.tostring(integer.parseint(commandfiel ds[2].substring(,4)) - codelinenumber - 2),)); } else { binarycommand.replace(9,9,convdstrtobstr(integer.tostring(integer.parseint(commandfiel ds[2].substring(,4)) - codelinenumber - 3),)); } } finally { if (inputstream!= null) { inputstream.close(); } } binarycommand.replace(,6,""); binarycommand.replace(6,9,convdstrtobstr(commandfields[],3)); return binarycommand.tostring(); } Σημείωση Η αρίθμηση δεν είναι μέρος του κώδικα, χρησιμοποιείται για σκοπούς αναφοράς. Σχήμα Τμήμα της συνάρτησης String translate() που αφορά την εντολή BRBS Στις γραμμές 3-38 του σχήματος φαίνεται ο έλεγχος που γίνεται όσον αφορά την εντολή που ακολουθεί την BRBS. Στην περίπτωση που η εντολή που ακολουθεί την BRBS είναι μία εκ των LD/LDD, ΙΝ, JMP, CALL και RET το πεδίο m θα είναι ίσο με την διαφορά της διεύθυνσης όπου θα γίνει το άλμα και της διεύθυνσης που βρίσκεται αποθηκευμένη η εντολή άλματος υπό συνθήκη μείον 2 (γραμμές 23, 25, 27, 29, 3 και 33), ενώ για κάθε άλλη εντολή που ακολουθεί την BRBS το πεδίο m θα είναι ίσο με την διαφορά της διεύθυνσης όπου θα γίνει το άλμα και της διεύθυνσης που βρίσκεται αποθηκευμένη η BRBS μείον 3 (γραμμή 35). Ο λόγος αυτής της διαφοροποίησης οφείλεται στην υλοποίηση των εντολών LD/LDD, ΙΝ, JMP, CALL και RET (βλέπε παραγράφους και ). Με τον ίδιο τρόπο μεταφράζεται και η εντολή BRBC. Υπολογίζοντας το πεδίο m των εντολών άλματος υπό συνθήκη μέσω του assembler, η μονάδα ελέγχου CU καθίσταται απλούστερη, γιατί δεν απαιτείται η χρήση των αθροιστών καθώς και λοιπών συνδυαστικών κυκλωμάτων τα οποία θα υπολόγιζαν το πεδίο m της εντολής BRBS ή BRBC αναλόγως της εντολής που ακολουθούσε (γραμμές του σχήματος ). O πλήρης κώδικας JAVA του ASMA υπάρχει στο Παράρτημα Β. 85

92 Κεφάλαιο 4 Υλοποίηση του ASM στο Xilinx Virtex-II ProTM Evaluation Kit της εταιρείας Avnet 4. Το Xilinx Virtex-II ProTM Evaluation Kit της εταιρείας Avnet Το κουτί εξαρτημάτων (kit) Xilinx Virtex-II ProTM Evaluation της εταιρείας Avnet (με κωδικό (part number) ADS-XLX-V2PRO-EVLP7-5) περιλαμβάνει μία πλακέτα (board), καλώδιο τροφοδοσίας (power supply), σύντομες οδηγίες χρήσης με παραδείγματα (User's Guide) [25], κατάλογο εξαρτημάτων (Bill of Materials) [26] και σχηματικά διαγράμματα του κυκλώματος της πλακέτας (Schematics) [27]. Τα κύρια χαρακτηριστικά του kit φαίνονται στο Σχήμα 4.-. Σχήμα 4.- Τα κύρια χαρακτηριστικά του Xilinx Virtex-II ProTM Evaluation Kit (Λήφθηκε από το [25] της βιβλιογραφίας) Στο Σχήμα 4.-2 φαίνεται η πάνω πλευρά (top view) της πλακέτας Virtex-II Pro Evaluation. Σχήμα 4.-2 Η πλακέτα Virtex-II Pro Evaluation (top view) (Λήφθηκε από το [25] της βιβλιογραφίας) 86

93 Στο Σχήμα 4.-3 φαίνεται η διαμόρφωση των βασικών εξαρτημάτων που βρίσκονται στην πάνω πλευρά της πλακέτας Virtex-II Pro Evaluation. Στο Σχήμα 4.-4 φαίνονται οι δύο μνήμες PROM XC8V4 τεχνολογίας FLASH της εταιρείας Xilinx [28] που βρίσκονται στην κάτω πλευρά της πλακέτας. Η κάθε μνήμη αποθηκεύει μέχρι και bits δεδομένων διαμόρφωσης. Σχήμα 4.-3 Η διαμόρφωση των βασικών εξαρτημάτων της πλακέτας Virtex-II Pro Evaluation Σχήμα 4.-4 Οι δύο μνήμες PROM XC8V4 τεχνολογίας FLASH 87

94 Τα χαρακτηριστικά-εξαρτήματα του Xilinx Virtex-II ProTM Evaluation Κit που χρησιμοποιήθηκαν στην παρούσα διπλωματική και δεν αφορούν τον προγραμματισμό του FPGA (αυτά θα αναφερθούν παρακάτω) είναι (βλέπε Σχήμα 4.-3) Το FPGA Virtex-II Pro XC2VP7-5-FF896. O ταλαντωτής των MHz (oscillator). Ένα push button (ένα από τα δύο που υπάρχουν στην κάτω αριστερή γωνία της πλακέτας στο Σχήμα 4.-3). Τα leds και το dip switch. Το 5-pin header. Τα I/O voltage selectors για τις ομάδες (banks) Ι/Ο του FPGA (βλέπε Κεφάλαιο, παράγραφο.2.4.5). Μία σειριακή θύρα (RS-232 DB9 connector). Τα εξαρτήματα που αφορούν την τροφοδοσία της πλακέτας (το καλώδιο 22.5 Watt AC/DC +5.V power supply, το barrel socket και οι regulators). Στο Σχήμα 4.-5 φαίνεται η οργάνωση του υλικού της πλακέτας Virtex-II Pro Evaluation. Σχήμα 4.-5 Η οργάνωση του υλικού της πλακέτας Virtex-II Pro Evaluation (Λήφθηκε από το [25] της βιβλιογραφίας) Στο Σχήμα 4.-6 φαίνονται τα κύρια χαρακτηριστικά των FPGAs της οικογένειας Virtex-II Pro / Virtex-II Pro X [5] και σημειώνονται τα χαρακτηριστικά του Virtex-II Pro XC2VP7 (περιγραφή του κάθε χαρακτηριστικού γίνεται στο Κεφάλαιο ). 88

95 Σχήμα 4.-6 Τα κύρια χαρακτηριστικά των FPGAs της οικογένειας Virtex-II Pro / Virtex-II Pro X (Λήφθηκε από το [5] της βιβλιογραφίας) Στο Σχήμα 4.-7 φαίνονται οι ακροδέκτες (pins) του FPGA XC2VP7-5-FF896 (και η οργάνωση των εισόδων/εξόδων χρήστη (user I/O) σε ομάδες (banks)) μέσω του προγράμματος Xilinx PACE (Pinout and Area Constraints Editor), του οποίου η χρησιμότητα θα περιγραφεί αναλυτικότερα σε επόμενη παράγραφο. Σχήμα 4.-7 Οι ακροδέκτες (pins) του FPGA XC2VP7-5-FF896 89

96 Η πλακέτα διαθέτει τρία κυκλώματα χρονισμού, των οποίων οι έξοδοι συνδέονται στους ακροδέκτες (pins) του FPGA όπως υποδεικνύεται στον Πίνακα 4.- [27]. Έξοδος Κυκλώματος Χρονισμού Pin του FPGA CLK_25MHz_N G6 CLK_25MHz_P F6 CLK_MHz C6 CLK_SOCKET (4MHz) F5 Πίνακας 4.- Διασύνδεση των εξόδων των κυκλωμάτων χρονισμού με τα pins του FPGA Η πλακέτα διαθέτει για τον χρήστη δύο κυκλώματα διακοπτών (push buttons βρίσκονται στην κάτω αριστερή γωνία της πλακέτας στο Σχήμα 4.-3), των οποίων οι έξοδοι συνδέονται στους ακροδέκτες (pins) του FPGA όπως υποδεικνύεται στον Πίνακα 4.-2 [27]. Όταν ένας διακόπτης (push button) πιέζεται προς τα κάτω, το αντίστοιχο κύκλωμα παράγει στην έξοδό του την λογική τιμή '', διαφορετικά η έξοδος του συγκεκριμένου κυκλώματος διακόπτη έχει την λογική τιμή ''. Έξοδος Κυκλώματος Διακόπτη Pin του FPGA SWITCH_PB (SW) AG5 SWITCH_PB2 (SW2) AH5 Πίνακας 4.-2 Διασύνδεση των εξόδων των κυκλωμάτων διακοπτών με τα pins του FPGA Τα leds και το dip switch (βλέπε Σχήμα 4.-3) συνδέονται με τους ακροδέκτες του FPGA όπως φαίνεται στους Πίνακες 4.-3 και 4.-4 αντίστοιχα [27]. Τα leds είναι κοινής καθόδου. Έτσι όταν στην έξοδο του FPGA, που συνδέεται με ένα led, υπάρχει η λογική τιμή '', το led ανάβει, διαφορετικά μένει σβηστό. Όταν ένας από τους διακόπτες του dip switch είναι στην κατάσταση OFF το σήμα που συνδέεται στο αντίστοιχο pin του FPGA έχει την λογική τιμή '', διαφορετικά έχει την λογική τιμή ''. Είσοδος LED LED (D) LED (D2) LED2 (D3) LED3 (D4) LED4 (D5) LED5 (D6) LED6 (D7) LED7 (D8) Pin του FPGA AE5 AD5 AC5 AB5 AG4 AF4 AD4 AE4 Πίνακας 4.-3 Διασύνδεση των εισόδων των leds με τα pins του FPGA Έξοδος του dip switch SWITCH () SWITCH (2) SWITCH2 (3) SWITCH3 (4) SWITCH4 (5) SWITCH5 (6) SWITCH6 (7) SWITCH7 (8) Pin του FPGA J8 J7 G6 G5 D5 C5 C4 C Πίνακας 4.-4 Διασύνδεση των εξόδων του dip switch με τα pins του FPGA Στον Πίνακα 4.-5 φαίνεται η διασύνδεση του FPGA με το 5-pin header [25]. 9

97 Πίνακας 4.-5 Η διασύνδεση του FPGA με το 5-pin header (Λήφθηκε από το [25] της βιβλιογραφίας) Στο Σχήμα 4.-8 φαίνεται η επιλογή επιπέδου τάσης στις ομάδες ακροδεκτών χρήστη (user I/O banks) -5 του FPGA με κατάλληλη βραχυκύκλωση, με jumpers, των ακροδεκτών των I/O voltage selectors (βλέπε και Σχήμα 4.-3). [Όλα τα βραχυκυκλώματα με την χρήση jumpers γίνονται πάντα πριν δοθεί τροφοδοσία στην πλακέτα.] Σχήμα 4.-8 Επιλογή επιπέδου τάσης στις ομάδες ακροδεκτών χρήστη -5 (Λήφθηκε από το [25] της βιβλιογραφίας) Η πλακέτα διαθέτει, κάτω από το 32-Segment LED Module (βλέπε Σχήμα 4.-3), έναν Low Power, 3.3 V, RS-232 Line Driver/Receiver, το κύκλωμα ADM3222 της εταιρείας ANALOG DEVICES [29], το οποίο αποτελεί την διεπαφή (interface) μεταξύ των σημάτων του FPGA και αυτών που απαιτούνται για την επικοινωνία με το πρότυπο RS-232. Στο Σχήμα 4.-9 φαίνεται η λειτουργία του κυκλώματος ADM3222 ως διεπαφή. 9

98 Σχήμα 4.-9 Η λειτουργία του κυκλώματος ADM3222 ως διεπαφή (Λήφθηκε από το [27] της βιβλιογραφίας) Τα σήματα RS232_TX, RS232_RX, RS232_TX2 και RS232_RX2 που φαίνονται στο Σχήμα 4.-9 ανήκουν στην ομάδα ακροδεκτών (bank) 5 του FPGA (βλέπε Σχήμα 4.-7). Επειδή το ελάχιστο κατώφλι τάσης για το λογικό '' του κυκλώματος ADM3222 είναι τα 2V, θα πρέπει η ομάδα ακροδεκτών 5 να λειτουργεί είτε στα 2.5V, είτε στα 3.3V, στην περίπτωση που θα γίνει χρήση ενός από τα δύο διαθέσιμα κανάλια σειριακής επικοινωνίας [25]. Η επιλογή της τάσης λειτουργίας της ομάδας ακροδεκτών 5 γίνεται με την βοήθεια των I/O voltage selectors. Στον Πίνακα 4.-6 φαίνονται τα pins του FPGA που αντιστοιχούν στα σήματα RS232_TX, RS232_RX, RS232_TX2 και RS232_RX2. Πίνακας 4.-6 Τα pins του FPGA που αντιστοιχούν στα δύο κανάλια σειριακής επικοινωνίας (Λήφθηκε από το [25] της βιβλιογραφίας) Τα χαρακτηριστικά-εξαρτήματα του Xilinx Virtex-II Pro TM Evaluation Κit που χρησιμοποιήθηκαν στην παρούσα διπλωματική και αφορούν τον προγραμματισμό του FPGA είναι (βλέπε Σχήμα 4.3) Τα pins που αφορούν τον καθορισμό της αλυσίδας JTAG (JTAG Chain configuration). Τα pins που αφορούν την επιλογή Boundary Scan Mode. Οι υπό προγραμματισμό συσκευές (FPGA, PROMs). Τα pins στα οποία συνδέεται το JTAG καλώδιο MultiLINX της εταιρείας Xilinx. Το καλώδιο MultiLINX της εταιρείας Xilinx. 92

99 Στο Σχήμα 4.- φαίνεται η αλυσίδα JTAG (JTAG Chain ή Boundary-scan Chain) για 3 συσκευές, οι οποίες διαθέτουν εσωτερικά την κατάλληλη λογική για την υποστήριξη του προτύπου JTAG. Σχήμα 4.- H αλυσίδα JTAG τριών συσκευών Στο Σχήμα 4.- φαίνεται η απαιτούμενη λογική που πρέπει να διαθέτει μία συσκευή ώστε να υποστηρίζει το πρότυπο JTAG. Σχήμα 4.- Συσκευή με απαιτούμενη λογική για υποστήριξη του προτύπου JTAG Το μείγμα δεδομένων και εντολών διαμόρφωσης (βλέπε Κεφάλαιο, παράγραφο.3) στο Σχήμα 4.- μεταφέρεται μέσω των συσκευών που αποτελούν την αλυσίδα JTAG, μέσω των ακροδεκτών TDI (Test Data In) και TDO (Test Data Out). Το ποια συσκευή προγραμματίζεται κάθε φορά υποδεικνύεται από το μείγμα των δεδομένων και εντολών διαμόρφωσης. Όπως φαίνεται στο Σχήμα 4.- είναι δυνατόν να παρακαμφθούν μία ή περισσότερες συσκευές που ανήκουν στην αλυσίδα JTAG (BYPASS Register), με αποτέλεσμα τον προγραμματισμό συγκεκριμένων συσκευών. Τα pins που αφορούν τον καθορισμό της αλυσίδας JTAG φαίνονται στο Σχήμα Στο Σχήμα 4.-2 δίνονται επιπλέον οι συνδυασμοί συσκευών που αποτελούν την αλυσίδα JTAG αναλόγως των pins που βραχυκυκλώνονται με jumpers. Βραχυκυκλώνοντας τα pins 2 και 3 επιλέγεται το Standalone Mode, που σημαίνει ότι η αλυσίδα JTAG θα αποτελείται από το FPGA και τις δύο μνήμες PROM. 93

100 Σχήμα 4.-2 Καθορισμός της αλυσίδας JTAG Τα pins που αφορούν την επιλογή Boundary Scan Mode φαίνονται στο Σχήμα Τα pins αυτά αφορούν την επιλογή μεθόδου προγραμματισμού του FPGA. Τόσο το FPGA, όσο και οι μνήμες PROM μπορούν να προγραμματιστούν μέσω της αλυσίδας JTAG. Το FPGA μπορεί επιπλέον να προγραμματίζεται κάθε φορά που παρέχεται τροφοδοσία στην πλακέτα από τις μνήμες PROM με τους τρόπους που περιγράφηκαν στο Κεφάλαιο, στην παράγραφο.3.2, αφού όμως προηγουμένως οι μνήμες PROM έχουν προγραμματιστεί μέσω JTAG ώστε να περιέχουν τα επιθυμητά δεδομένα διαμόρφωσης. Στο Σχήμα 4.-3 φαίνονται τα pins που αφορούν την επιλογή μεθόδου προγραμματισμού του FPGA (Config Mode). Βέβαια εάν γίνει επιλογή της μεθόδου Boundary Scan είναι δυνατό να προγραμματιστεί οποιαδήποτε συσκευή ανήκει στην αλυσίδα JTAG. Σχήμα 4.-3 Επιλογή μεθόδου προγραμματισμού του FPGA (Λήφθηκε από το [25] της βιβλιογραφίας) Όπως φαίνεται στο Σχήμα 4.-3 βραχυκυκλώνοντας με jumpers τα pins -2 και 5-6, το FPGA μπορεί να προγραμματιστεί μέσω της αλυσίδας JTAG (Boundary Scan mode). Έτσι είναι δυνατόν, παρακάμπτοντας τις μνήμες PROM, να προγραμματιστεί μόνο το FPGA μέσω JTAG. [Ο προγραμματισμός μόνο του FPGA μέσω JTAG χρησιμοποιείται κυρίως κατά την επαλήθευση σωστής λειτουργίας κάποιας σχεδίασης μετά από μικρές αλλαγές που έγιναν σ' αυτή. Ο λόγος χρήσης αυτής της μεθόδου στην συγκεκριμένη περίπτωση είναι ο σχετικά μικρός χρόνος προγραμματισμού του FPGA περίπου λεπτό.] Επειδή όμως το FPGA χρησιμοποιεί τεχνολογία SRAM, με την διακοπή της τροφοδοσίας χάνονται τα δεδομένα διαμόρφωσης και απαιτείται ο επαναπρογραμματισμός του. Εάν είναι επιθυμητό να μην χάνονται τα δεδομένα διαμόρφωσης με την διακοπή της τροφοδοσίας, θα πρέπει να προγραμματιστούν μέσω JTAG οι PROMs παρακάμπτοντας το FPGA και έπειτα να διακοπεί η τροφοδοσία ώστε να βραχυκυκλωθούν κατάλληλα τα pins επιλογής προγραμματισμού του FPGA, ώστε το FPGA να προγραμματιστεί από τις μνήμες PROM όταν δοθεί τροφοδοσία (θα μπορούσε να χρησιμοποιηθεί μία από τις μεθόδους Master Serial μη βραχυκυκλώνοντας κανένα ζεύγος pins ή Master SelectMAP βραχυκυκλώνοντας τα pins -2 και 3-4). Στο Σχήμα 4.-4 φαίνονται τα pins της πλακέτας όπου συνδέεται το JTAG καλώδιο MultiLINX καθώς και η αντιστοιχία των pins της πλακέτας με τα σήματα που προέρχονται από το καλώδιο MultiLINX. 94

101 Σχήμα 4.-4 Τα pins της πλακέτας όπου συνδέεται το JTAG καλώδιο MultiLINX Στο Σχήμα 4.-5 φαίνεται το JTAG καλώδιο MultiLINX της εταιρείας Xilinx μαζί με τα παρελκόμενα του. Σχήμα 4.-5 Το JTAG καλώδιο MultiLINX της εταιρείας Xilinx μαζί με τα παρελκόμενα του (Λήφθηκε από το [3] της βιβλιογραφίας) Στο Σχήμα 4.-6 φαίνονται τα χαρακτηριστικά του καλωδίου MultiLINX. Σχήμα 4.-6 Τα χαρακτηριστικά του καλωδίου MultiLINX (Λήφθηκε από το [3] της βιβλιογραφίας) 95

102 Για τους σκοπούς της παρούσας διπλωματικής χρησιμοποιήθηκαν τα εξής εξαρτήματα του καλωδίου MultiLINX Οι δύο από τις τέσσερις ομάδες μικρών καλωδίων (Flying Wires). Το καλώδιο USB. Στο Σχήμα 4.-7 φαίνονται οι τέσσερις ομάδες μικρών καλωδίων που έρχονται μαζί με το καλώδιο MultiLINX καθώς και η συνδεσμολογία τους με αυτό. Σχήμα 4.-7 Η συνδεσμολογία του καλωδίου MultiLINX με τα Flying Wires (Λήφθηκε από το [3] της βιβλιογραφίας) 96

103 Από τις τέσσερις ομάδες μικρών καλωδίων του σχήματος 4.-7 χρησιμοποιήθηκαν οι δύο πρώτες. Από την πρώτη ομάδα χρησιμοποιούνται μόνο τα μικρά καλώδια PWR και GND για την τροφοδοσία του καλωδίου MultiLINX από την πλακέτα (βλέπε και Σχήμα 4.-4). Από την δεύτερη ομάδα χρησιμοποιήθηκαν τα μικρά καλώδια RD(TDO), TDI, TCK και TMS για τον προγραμματισμό των συσκευών (FPGA, PROMs) μέσω JTAG. Η μία άκρη του καλωδίου USB συνδέεται με το καλώδιο MultiLINX όπως φαίνεται στο Σχήμα 4.5 και η άλλη άκρη στον υπολογιστή που διαθέτει τους οδηγούς (drivers) για το καλώδιο MultiLINX καθώς και το πρόγραμμα το οποίο χρησιμοποιείται για τον προγραμματισμό κάποιας ή κάποιων από τις συσκευές που αποτελούν την αλυσίδα JTAG. Στο Σχήμα 4.-8 φαίνεται η συνδεσμολογία της πλακέτας και του υπολογιστή μέσω του καλωδίου MultiLINX για τον προγραμματισμό του FPGA μέσω JTAG. Σχήμα 4.-8 H συνδεσμολογία της πλακέτας και του υπολογιστή μέσω του καλωδίου MultiLINX για τον προγραμματισμό του FPGA μέσω JTAG Στο Σχήμα 4.-9 φαίνεται η διαμόρφωση της JTAG αλυσίδας που ανιχνεύτηκε από το πρόγραμμα impact της εταιρείας Xilinx καθώς και η επιλογή προγραμματισμού μόνο του FPGA (παράκαμψη των μνημών PROM). Σχήμα 4.-9 Προγραμματισμός του FPGA μέσω JTAG 97

104 4.2 Λογισμικό Σχεδίασης (Design Entry), Σύνθεσης (Synthesis), Προσομοίωσης (Simulation), Υλοποίησης (Implementation) και Προγραμματισμού Συσκευών (Device Programming) Τα πακέτα λογισμικού που χρησιμοποιήθηκαν για την υλοποίηση του ASM στο Xilinx Virtex-II ProTM Evaluation Kit της εταιρείας Avnet είναι Το Xilinx ISE Foundation WebPACK.. Το ModelSim PE Student Edition.c. Το impact 7.i της εταιρείας Xilinx. Η πιο πρόσφατη έκδοση του προγράμματος Xilinx ISE Foundation WebPACK, όσον αφορά την παρούσα διπλωματική εργασία, είναι η 3.2. Χρησιμοποιήθηκε η έκδοση. γιατί είναι η τελευταία που παρέχει υποστήριξη για το FPGA Virtex-II Pro. Το πρόγραμμα Xilinx ISE Foundation WebPACK. είναι μία δωρεάν αλλά περιορισμένων δυνατοτήτων έκδοση του προγράμματος Xilinx ISE Foundation. και περιλαμβάνει εργαλεία σχεδίασης, σύνθεσης, προσομοίωσης, υλοποίησης και προγραμματισμού συσκευών. Το πρόγραμμα Xilinx ISE Foundation WebPACK., σε σχέση με το Xilinx ISE Foundation., παρέχει μειωμένη υποστήριξη λειτουργικών συστημάτων, μειωμένη υποστήριξη συσκευών FPGA, υποστήριξη μικρών και μεσαίου μεγέθους projects και μειωμένων δυνατοτήτων εργαλείο προσομοίωσης. Το πρόγραμμα ModelSim PE Student Edition.c είναι ένα δωρεάν πρόγραμμα προσομοίωσης γλωσσών περιγραφής υλικού (HDL Simulation) από την εταιρεία Mentor Graphics. Στο Σχήμα 4.2- φαίνονται πληροφορίες που αφορούν το πρόγραμμα ModelSim PE Student Edition.c. Σχήμα 4.2- Πληροφορίες που αφορούν το πρόγραμμα ModelSim PE Student Edition.c (Λήφθηκε από την ιστοσελίδα http//model.com) 98

105 Οι περιορισμοί που υπάρχουν στο πρόγραμμα ModelSim PE Student Edition.c αφορούν Την διάρκεια χρήσης του (8 ημέρες από την ενεργοποίηση της άδειας του προγράμματος με δυνατότητα επανεγκατάστασης του προγράμματος και ανανέωση της άδειας). Την υποστήριξη project που περιλαμβάνει μείγμα περιγραφών των γλωσσών VHDL και Verilog (υποστηρίζονται projects που χρησιμοποιούν μόνο μία από τις δύο γλώσσες περιγραφής υλικού). Την απόδοση (performance) του προγράμματος. Την υποστήριξη λειτουργικών συστημάτων (x86/windows platforms only). Αντί του περιορισμένων δυνατοτήτων εργαλείου προσομοίωσης ISim Lite που περιλαμβάνεται στο πρόγραμμα Xilinx ISE Foundation WebPACK. χρησιμοποιήθηκε το πρόγραμμα ModelSim PE Student Edition.c γιατί η VHDL περιγραφή του ASM είναι σχετικά μικρή και η απόδοση του ModelSim PE Student Edition.c είναι πολύ μεγαλύτερη από αυτήν του ISim Lite, ιδιαίτερα όταν γίνονται μεγάλες προσομοιώσεις της τάξης του ms. Το πρόγραμμα Xilinx ISE Foundation WebPACK. συνεργάζεται πλήρως με το πρόγραμμα ModelSim PE Student Edition.c καλώντας το όποτε δίνεται εντολή από τον χρήστη για εκτέλεση προσομοίωσης. Το πρόγραμμα impact 7.i της εταιρείας Xilinx αφορά τον προγραμματισμό συσκευών (FPGAs, PROMs) της εταιρείας Xilinx με την χρήση των καλωδίων προγραμματισμού της εταιρείας Xilinx ή άλλων συμβατών καλωδίων. Στο πρόγραμμα Xilinx ISE Foundation WebPACK. υπάρχει ενσωματωμένη η έκδοση. του προγράμματος impact. Ο λόγος χρήσης της έκδοσης 7.i αφορά την υποστήριξη του JTAG καλωδίου MultiLINX. Η έκδοση 7.i του προγράμματος impact είναι η τελευταία που παρέχει υποστήριξη για τον προγραμματισμό συσκευών μέσω του JTAG καλωδίου MultiLINX, το οποίο χρησιμοποιήθηκε στην παρούσα διπλωματική. Στα επόμενα θεωρείται ότι η χρήση των πιο πάνω προγραμμάτων είναι γνωστή [32-35]. 4.3 Διάγραμμα Ροής Σχεδίασης με FPGA (FPGA Design Flow) Στο Σχήμα 4.3- φαίνεται το διάγραμμα ροής σχεδίασης με FPGA (FPGA Design Flow) με την χρήση του λογισμικού που περιγράφηκε στην παράγραφο 4.2. Σχήμα 4.3- FPGA Design Flow με την χρήση του λογισμικού της παραγράφου

106 4.3. Σχεδίαση (Design Entry) Η σχεδίαση του ASM έγινε με την χρήση της γλώσσας περιγραφής υλικού VHDL. Όλες οι περιγραφές των επιμέρους τμημάτων του ASM χρησιμοποιούν μόνο πακέτα που αποτελούν τμήμα των προτύπων της IEEE, που αφορούν την γλώσσα VHDL (βλέπε Κεφάλαιο 2, παράγραφο 2.5.2). Ο λόγος χρήσης μόνο πακέτων που αποτελούν τμήματα προτύπων της IEEE σχετίζεται με την φορητότητα (portability) του κώδικα VHDL του ASM, η οποία καθιστά τον ASM ανεξάρτητο από το υλικό (FPGAs, FPGA vendor) και το λογισμικό (CAD tools, CAD tool vendor) που θα χρησιμοποιηθεί για την υλοποίησή του. Το πλεονέκτημα της φορητότητας δημιουργεί όμως δυσκολίες όσον αφορά την περιγραφή διαφόρων τμημάτων του ASM, γιατί χωρίς τη χρήση των πακέτων των εταιρειών συγγραφής λογισμικού CAD, η περιγραφή πολλών βασικών ψηφιακών κυκλωμάτων καθίσταται πολυπλοκότερη, καθώς οι προτεινόμενες περιγραφές των εν λόγω βασικών κυκλωμάτων από το εργαλείο σύνθεσης του λογισμικού CAD κάνουν χρήση πακέτων που δεν αποτελούν τμήμα των προτύπων της IEEE. Στο Σχήμα φαίνεται η VHDL περιγραφή ενός unsigned 7-bit αθροιστή ( adder7) με την χρήση του πακέτου NUMERIC_STD της IEEE και στο Σχήμα φαίνεται η VHDL περιγραφή ενός unsigned 7-bit αθροιστή ( adder7_xst) με την χρήση των πακέτων std_logic_arith και std_logic_unsigned της εταιρείας Synopsys. [Η περιγραφή adder7_xst (Σχήμα ) προτείνεται από το εργαλείο σύνθεσης της Xilinx, XST (Xilinx Synthesis Technology) [36], το οποίο περιλαμβάνεται στο πρόγραμμα Xilinx ISE Foundation WebPACK.. Τα πακέτα std_logic_arith και std_logic_unsigned δεν αποτελούν τμήμα των προτύπων της IEEE που αφορούν την γλώσσα VHDL, παρόλο που στην περιγραφή του adder7_xst περιλαμβάνονται στην βιβλιοθήκη IEEE του προγράμματος Xilinx ISE Foundation WebPACK..] Σχήμα H VHDL περιγραφή του unsigned 7-bit αθροιστή adder7

107 Σχήμα H VHDL περιγραφή του unsigned 7-bit αθροιστή adder7_xst Στο Σχήμα φαίνεται τμήμα της αναφοράς σύνθεσης για τον αθροιστή adder7 και στο Σχήμα φαίνεται τμήμα της αναφοράς σύνθεσης για τον αθροιστή adder7_xst. ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name adder7.ngr Top Level Output File Name adder7 Output Format NGC Optimization Goal Speed Keep Hierarchy NO Design Statistics # IOs 23 Cell Usage # BELS 2 # LUT2 7 # MUXCY 7 # XORCY 7 # IO Buffers 23 # IBUF 5 # OBUF 8 ========================================================================= Device utilization summary Selected Device 2vp7ff896-5 Number Number Number Number of of of of Slices 4 input LUTs IOs bonded IOBs out of out of % % out of 396 5% Partition Resource Summary No Partitions were found in this design ========================================================================= TIMING REPORT

108 NOTE THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT GENERATED AFTER PLACE-and-ROUTE. Clock Information No clock signals found in this design Asynchronous Control Signals Information No asynchronous control signals found in this design Timing Summary Speed Grade -5 Minimum Minimum Maximum Maximum period No path found input arrival time before clock No path found output required time after clock No path found combinational path delay 7.22ns Timing Detail All values displayed in nanoseconds (ns) ========================================================================= Timing constraint Default path analysis Total number of paths / destination ports 6 / Delay 7.22ns (Levels of Logic = ) Source A<> (PAD) Destination SUM<6> (PAD) Data Path A<> to SUM<6> Gate Net Cellin->out fanout Delay Delay Logical Name (Net Name) IBUFI->O A IBUF (A IBUF) LUT2I->O.35. Madd_tmp_Madd_lut<> (Madd_tmp_Madd_lut<>) MUXCYS->O.422. Madd_tmp_Madd_cy<> (Madd_tmp_Madd_cy<>) MUXCYCI->O.44. Madd_tmp_Madd_cy<> (Madd_tmp_Madd_cy<>) MUXCYCI->O.44. Madd_tmp_Madd_cy<2> (Madd_tmp_Madd_cy<2>) MUXCYCI->O.44. Madd_tmp_Madd_cy<3> (Madd_tmp_Madd_cy<3>) MUXCYCI->O.44. Madd_tmp_Madd_cy<4> (Madd_tmp_Madd_cy<4>) MUXCYCI->O.44. Madd_tmp_Madd_cy<5> (Madd_tmp_Madd_cy<5>) XORCYCI->O Madd_tmp_Madd_xor<6> (tmp<6>) OBUFI->O 3.3 SUM_6_OBUF (SUM<6>) Total 7.22ns (6.65ns logic,.57ns route) (85.2% logic, 4.8% route) ========================================================================= Σχήμα Τμήμα της αναφοράς σύνθεσης για τον αθροιστή adder7 ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name adder7_xst.ngr Top Level Output File Name adder7_xst Output Format NGC Optimization Goal Speed Keep Hierarchy NO Design Statistics # IOs 23 Cell Usage # BELS 2 # LUT2 7 # MUXCY 7 # XORCY 7 # IO Buffers 23 # IBUF 5 # OBUF 8 ========================================================================= Device utilization summary

109 Selected Device 2vp7ff896-5 Number Number Number Number of of of of Slices 4 input LUTs IOs bonded IOBs out of out of % % out of 396 5% Partition Resource Summary No Partitions were found in this design ========================================================================= TIMING REPORT NOTE THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT GENERATED AFTER PLACE-and-ROUTE. Clock Information No clock signals found in this design Asynchronous Control Signals Information No asynchronous control signals found in this design Timing Summary Speed Grade -5 Minimum Minimum Maximum Maximum period No path found input arrival time before clock No path found output required time after clock No path found combinational path delay 7.22ns Timing Detail All values displayed in nanoseconds (ns) ========================================================================= Timing constraint Default path analysis Total number of paths / destination ports 6 / Delay 7.22ns (Levels of Logic = ) Source A<> (PAD) Destination SUM<6> (PAD) Data Path A<> to SUM<6> Gate Net Cellin->out fanout Delay Delay Logical Name (Net Name) IBUFI->O A IBUF (A IBUF) LUT2I->O.35. Madd_tmp_addsub_lut<> (Madd_tmp_addsub_lut<>) MUXCYS->O.422. Madd_tmp_addsub_cy<> (Madd_tmp_addsub_cy<>) MUXCYCI->O.44. Madd_tmp_addsub_cy<> (Madd_tmp_addsub_cy<>) MUXCYCI->O.44. Madd_tmp_addsub_cy<2> (Madd_tmp_addsub_cy<2>) MUXCYCI->O.44. Madd_tmp_addsub_cy<3> (Madd_tmp_addsub_cy<3>) MUXCYCI->O.44. Madd_tmp_addsub_cy<4> (Madd_tmp_addsub_cy<4>) MUXCYCI->O.44. Madd_tmp_addsub_cy<5> (Madd_tmp_addsub_cy<5>) XORCYCI->O Madd_tmp_addsub_xor<6> (tmp<6>) OBUFI->O 3.3 SUM_6_OBUF (SUM<6>) Total 7.22ns (6.65ns logic,.57ns route) (85.2% logic, 4.8% route) ========================================================================= Σχήμα Τμήμα της αναφοράς σύνθεσης για τον αθροιστή adder7_xst Παρόλο που η παρούσα παράγραφος δεν αφορά την σύνθεση, εντούτοις τα σχήματα και είναι χρήσιμα γιατί αποδεικνύουν την ισοδυναμία των VHDL περιγραφών των σχημάτων και Όσον αφορά την σχεδίαση, η περιγραφή του σχήματος είναι και απλούστερη και πιο κατανοητή από αυτήν του σχήματος 4.3.-, η οποία χρησιμοποιεί μόνο πακέτα που αποτελούν τμήμα των προτύπων που αφορούν την γλώσσα VHDL. 3

110 Στο Σχήμα φαίνεται η ιεραρχική δομή του κώδικα VHDL του ASM. Η ιεραρχική δομή προκύπτει λόγω της χρήσης ψηφιακών κυκλωμάτων ως υποκυκλώματα (components) σε μεγαλύτερα ψηφιακά κυκλώματα που περιλαμβάνουν τα πρώτα (βλέπε Κεφάλαιο 2, παράγραφο 2.6). Λόγω της κανονικότητας που παρουσιάζουν τα ψηφιακά συστήματα και της ανάγκης επαναχρησιμοποίησης βασικών ψηφιακών μονάδων (όπως πολυπλέκτες, flip-flop, καταχωρητές κ.α.) αυτού του είδους η ιεραρχική δομή είναι απαραίτητη. Υπάρχουν δύο αρχεία κώδικα VHDL που δεν φαίνονται στο Σχήμα γιατί δεν περιγράφουν κάποιο τμήμα του ASM, αλλά χρησιμοποιούνται ως πακέτα (packages βλέπε Κεφάλαιο 2, παράγραφο 2.6). Τα πακέτα αυτά περιγράφονται στα αρχεία asm_p.vhd και asm_top_p.vhd και ορίζουν δύο βασικά επίπεδα ιεραρχίας. Το asm_p.vhd αφορά το πρώτο βασικό επίπεδο ιεραρχίας στο οποίο ορίζονται όλα τα κυκλώματα που χρησιμοποιούνται ως εξαρτήματα από την διαδρομή δεδομένων (αρχείο datapath.vhd) και την Forwarding Unit (αρχείο fu.vhd), καθώς και από κάποια υποκυκλώματα της διαδρομής δεδομένων (αρχεία dm_a_calc.vhd, alu.vhd, sreg.vhd, fc_sreg.vhd, at.vhd βλέπε Παράρτημα Α). Το asm_top_p.vhd αφορά το δεύτερο βασικό επίπεδο ιεραρχίας στο οποίο ορίζονται ως εξαρτήματα τα βασικά τμήματα του ASM (η Forwarding Unit (αρχείο fu.vhd), η Decode Unit (αρχείο du.vhd), η Control Unit (αρχείο cu.vhd) και η Datapath (αρχείο datapath.vhd)). Στην συνέχεια θα γίνει αναφορά σε VHDL περιγραφές τμημάτων του ASM οι οποίες παρουσιάζουν σχεδιαστικά κάποια αξιόλογα σημεία. Όπως φαίνεται στο Σχήμα ο αθροιστής adder (αρχείο adder.vhd) υλοποιήθηκε χρησιμοποιώντας ως υποκυκλώματα τα adder7 (7-bit αθροιστής) και adder (-bit αθροιστής) (αρχεία adder7.vhd και adder.vhd αντίστοιχα). Αυτό έγινε ώστε στον αθροιστή adder να είναι δυνατός ο υπολογισμός του του σήματος υπερχείλισης στην αριθμητική του συμπληρώματος ως προς δύο (βλέπε Παράρτημα Α). 4

111 Σχήμα Η ιεραρχική δομή του VHDL κώδικα του ASM 5

112 Στον Πίνακα περιγράφονται, αναλόγως οικογένειας FPGA, τα μέγιστα μεγέθη μνημών που υλοποιούνται αυτόματα από το εργαλείο σύνθεσης XST με διανεμημένη λογική (LUTs) και πάνω από τα οποία υλοποιούνται αυτόματα με μπλοκ RAM. Πίνακας Τα μεγέθη μνημών που υλοποιούνται αυτόματα με LUTs από το XST (Λήφθηκε από το [36] της βιβλιογραφίας) Στο Σχήμα φαίνεται ο κώδικας VHDL που περιγράφει τον συνδυασμό της μνήμης προγράμματος (Program Memory PM) και του καταχωρητή εντολών (Instruction Register IR) (αρχείο pm_ir.vhd) ως μία σύγχρονη μνήμη (PARAMETERIZED ADDRESS) PROGRAM MEMORY (PM) AND INSTRUCTION REGISTER (IR). -- ROM (PM) WITH REGISTERED OUTPUT (IR). -- ROM IS INITIALIZED FROM "pm.data" FILE. library IEEE; use IEEE.STD_LOGIC_64.ALL; use IEEE.NUMERIC_STD.ALL; use STD.TEXTIO.ALL; entity pm_ir generic(n port(clk RSET EN we ADDR di IR end pm_ir; is integer = 2); in std_logic; in std_logic; in std_logic; in std_logic; in std_logic_vector(n- downto ); in std_logic_vector(8 downto ); out std_logic_vector(8 downto )); architecture behavioral of pm_ir is -- RomType DEFINITION. type RomType is array ( to (2**N - )) of bit_vector(8 downto ); -- FUNCTION "InitRomFromFile". impure function InitRomFromFile(RomFileName in string) return RomType is file RomFile text is in RomFileName; variable RomFileLine line; variable rom RomType; begin for I in RomType'range loop readline(romfile, RomFileLine); read(romfileline, rom(i)); end loop; return rom; end function; -- USE OF FUNCTION "InitRomFromFile". signal rom RomType = InitRomFromFile("pm.data"); begin process(clk) begin if rising_edge(clk) then if (EN = '') then if we = '' then rom(to_integer(unsigned(addr))) <= to_bitvector(di); end if; if (RSET = '') then IR <= (OTHERS => ''); else IR <= to_stdlogicvector(rom(to_integer(unsigned(addr)))); end if; 6

113 5 end if; 52 end if; 53 end process; 54 end behavioral; Σημείωση Η αρίθμηση δεν είναι μέρος του κώδικα, χρησιμοποιείται για σκοπούς αναφοράς. Σχήμα VHDL κώδικας για την PM και τον IR Στην γραμμή 37 του σχήματος γίνεται η αρχικοποίηση της μνήμης που περιγράφει τον συνδυασμό των PM και IR, χρησιμοποιώντας τα περιεχόμενα του αρχείου pm.data. Επειδή στις γραμμές περιγράφεται μία σύγχρονη μνήμη και επειδή το αρχείο pm.data περιέχει 496 γραμμές x 9 χαρακτήρες, η μνήμη αυτή υλοποιείται με μπλοκ RAM με συνολικό μέγεθος 496x9 bits. Εάν η PM υλοποιούταν ως PROM και ο IR ως ξεχωριστός καταχωρητής, τότε αναλόγως των περιεχομένων του αρχείου pm.data θα διαμορφωνόταν η υλοποίηση της PM (ως PROM) με βάση τον Πίνακα Έτσι η υλοποίηση του ASM θα μεταβαλλόταν αναλόγως των περιεχομένων του αρχείου pm.data. Παρόμοια περιγραφή-σχεδίαση με αυτήν του σχήματος έχει και η μνήμη δεδομένων (Data Memory DΜ, βλέπε Παράρτημα Α). Η αρχικοποίηση μνήμης μέσω αρχείου έγινε και για το Register File (RF) μέσω του αρχείου rf.data και για την μνήμη δεδομένων (DM) μέσω του αρχείου dm.data. Με αυτόν τον τρόπο η εισαγωγή δεδομένων προς επεξεργασία στον ASM καθίσταται εύκολη. Για την αποστολή δεδομένων από τον ASM στον υπολογιστή σχεδιάστηκε ένα περιφερειακό (αρχεία at.vhd, at_count_up_to_867.vhd και at_sr.vhd βλέπε Σχήμα και Παράρτημα Α), το οποίο υλοποιεί το πρότυπο ασύγχρονης σειριακής επικοινωνίας RS232 για αποστολή, με baud rate περίπου 52, start bit, 8 data bits και stop bit. Ο επιθυμητός ρυθμός αποστολής επιτυγχάνεται με την χρήση ενός σύγχρονου μετρητή που μετράει από το μέχρι και το 867 συνεχώς (δηλαδή μετράει 868 κύκλους), χρησιμοποιώντας το ρολόι των MHz (ρολόι συστήματος). Όταν ο μετρητής φτάσει στο 867 επιτρέπεται στον καταχωρητή ολίσθησης να λάβει την επόμενη θετική ακμή του σήματος ρολογιού των MHz, αποστέλλοντας έτσι ένα bit (δηλαδή ο καταχωρητής ολίσθησης δέχεται, στην είσοδο ρολογιού του, ρολόι με συχνότητα MΗz/868 = 527,3732 Hz, το οποίο είναι πολύ κοντά στα 52 bps). Η έναρξη της αποστολής δεδομένων και ο συγχρονισμός του μετρητή at_count_up_to_867 και του καταχωρητή ολίσθησης at_sr γίνεται με το bit ενεργοποίησης του περιφερειακού (λογικό ''), το οποίο γράφεται στον καταχωρητή ολίσθησης (ως πρώτο bit αποστολής). [Το bit ενεργοποίησης του περιφερειακού (λογικό '') χρησιμοποιείται ως σύγχρονο σήμα μηδενισμού του μετρητή at_count_up_to_867, ως σύγχρονο σήμα παράλληλης φόρτωσης του καταχωρητή ολίσθησης at_sr και ως start bit της ασύγχρονης επικοινωνίας (φορτώνεται στον καταχωρητή ολίσθησης at_sr ως το λιγότερο σημαντικό bit). Το πώς η συχνότητα του ρολογιού συστήματος προκύπτει ίση με MHz θα αναφερθεί σε επόμενη παράγραφο.] Έχοντας δημιουργήσει το project και προσθέσει σε αυτό όλα τα αρχεία κώδικα που αφορούν τον ASM δίνεται από το πρόγραμμα Xilinx ISE Foundation WebPACK. η δυνατότητα συντακτικού ελέγχου (Check Syntax) είτε ενός τμήματος του ASM, είτε ολόκληρου του ASM. Στο Σχήμα φαίνονται οι επιλογές δημιουργίας του project ( New Project) που αφορούν τον ASM και στο Σχήμα φαίνεται η αναφορά δημιουργίας του project, όπου έχουν προστεθεί ( Project Add Source...) όλα τα αρχεία κώδικα που αφορούν τον ASM. 7

114 Σχήμα Οι επιλογές δημιουργίας του project που αφορούν τον ASM Project Project Name ASM Project Path C\ASM Top Level Source Type HDL Device Device Family Device Package Speed Virtex2P xc2vp7 ff896-5 Synthesis Tool XST (VHDL/Verilog) Simulator Modelsim-PE VHDL Preferred Language VHDL Enhanced Design Summary enabled Message Filtering disabled Display Incremental Messages disabled Existing Sources adder.vhd adder7.vhd adder.vhd alu.vhd asm.vhd asm_p.vhd asm_top_p.vhd at.vhd at_count_up_to_867.vhd at_ff.vhd at_sr.vhd cu.vhd datapath.vhd dm.vhd dm_a_calc.vhd du.vhd fc_sreg.vhd ff_re.vhd ff_rne.vhd flag_c.vhd flag_en_rom.vhd fu.vhd mux_2_.vhd mux_4_.vhd mux_8_.vhd out_a_dec.vhd pc.vhd pm_ir.vhd reg_re.vhd reg_rset.vhd reg_set.vhd rf.vhd 8

115 shift_reg.vhd sreg.vhd stack.vhd Σχήμα Η αναφορά δημιουργίας του project του ASM Σε αυτό το σημείο θα πρέπει να επισημανθεί ότι η διαδρομή της τοποθεσίας που περιλαμβάνει τα αρχεία του project δεν θα πρέπει να περιλαμβάνει διαστήματα (ονόματα φακέλων που περιλαμβάνουν διαστήματα). Ο λόγος είναι ότι κάποια εργαλεία του προγράμματος Xilinx ISE Foundation WebPACK. δεν λειτουργούν εάν η διαδρομή της τοποθεσίας που περιλαμβάνει τα αρχεία του project περιλαμβάνει διαστήματα (γι' αυτό τον λόγο η διαδρομή των αρχείων του project που αφορά τον ASM ορίστηκε ως C\ASM) Προσομοίωση Συμπεριφοράς-Λειτουργίας (Behavioral Simulation) Μετά την διόρθωση των πιθανών σφαλμάτων στον κώδικα ακολουθεί η προσομοίωση της συμπεριφοράς-λειτουργίας, είτε του ASM συνολικά, είτε επιμέρους τμημάτων του, αναλόγως για ποια οντότητα (entity) του ASM δημιουργεί ο σχεδιαστής αρχείο προσομοίωσης (testbench file) [3], [37]. Το αρχείο προσομοίωσης είναι αρχείο κώδικα VHDL που αφορά μόνο την προσομοίωση. Ένα αρχείο προσομοίωσης (testbench file) περιλαμβάνει ως εξάρτημα (σε αυτήν την περίπτωση αναφέρεται ως Design Under Test DUT ή Unit Under Test UUT) την οντότητα (entity), της οποίας την συμπεριφορά-λειτουργία επιθυμεί να εξετάσει ο σχεδιαστής. Στο Σχήμα φαίνεται το γενικό διάγραμμα ροής επαλήθευσης της λειτουργίας ψηφιακών κυκλωμάτων με την χρήση των HDLs (Testbench Verification Flow). Σχήμα Testbench Verification Flow (Λήφθηκε από το [37] της βιβλιογραφίας) Όπως φαίνεται από το Σχήμα , αφού οριστεί το DUT, υπάρχουν τρεις βασικοί τρόποι για την επαλήθευση της λειτουργίας της υπό εξέταση οντότητας. Επιβάλλοντας σήματα με συγκεκριμένη τιμή στις εισόδους του DUT (Stimulus) μέσα στο αρχείο προσομοίωσης, είναι δυνατό με την χρήση ενός προγράμματος προσομοίωσης (όπως το ModelSim PE Student Edition.c) να εξεταστούν τα αποτελέσματα στις κυματομορφές που προκύπτουν και αφορούν τις εισόδους και τις εξόδους (Verify Result on Waveform). [Με την χρήση του προγράμματος ModelSim PE Student Edition.c είναι επίσης δυνατό με την χρήση ενός αρχείου προσομοίωσης που αφορά μόνο εισόδους/εξόδους του DUT και χωρίς καμία αλλαγή στην 9

116 σχεδίαση να ελεγχθούν οι τιμές των εσωτερικών σημάτων του DUT.] Στο Σχήμα φαίνεται ο κώδικας του αρχείου προσομοίωσης pc_tb.vhd για την επαλήθευση της λειτουργίας του μετρητή προγράμματος (Program Counter PC) του ASM Testbench for PC. LIBRARY ieee; USE ieee.std_logic_64.all; use IEEE.NUMERIC_STD.all; ENTITY pc_tb IS END pc_tb; ARCHITECTURE behavior OF pc_tb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT pc PORT( CLK IN std_logic; RSET IN std_logic; EN IN std_logic; SLD IN std_logic; L IN std_logic_vector( downto ); Q OUT std_logic_vector( downto ) ); END COMPONENT; --Inputs signal CLK signal RSET signal EN signal SLD signal L std_logic = ''; std_logic = ''; std_logic = ''; std_logic = ''; std_logic_vector( downto ) = (others => ''); --Outputs signal Q std_logic_vector( downto ); --Clock Period constant CLK_period time = ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut pc PORT MAP ( CLK => CLK, RSET => RSET, EN => EN, SLD => SLD, L => L, Q => Q ); CLK_process process begin CLK <= ''; wait for CLK_period/2; CLK <= ''; wait for CLK_period/2; end process; -- Stimulus process stim_proc process begin RSET <= ''; EN <= ''; SLD <= ''; L <= (OTHERS => ''); wait for ns; RSET <= ''; EN <= ''; SLD <= ''; L <= (OTHERS => ''); wait for ns; RSET <= ''; EN <= ''; SLD <= ''; L <= std_logic_vector(to_unsigned(,2));

117 74 wait for ns; 75 RSET <= ''; 76 EN <= ''; 77 SLD <= ''; 78 L <= (OTHERS => ''); 79 wait for 9 ns; 8 end process; 8 END; Σημείωση Η αρίθμηση δεν είναι μέρος του κώδικα, χρησιμοποιείται για σκοπούς αναφοράς. Σχήμα Ο κώδικας VHDL του αρχείου pc_tb.vhd Στο Σχήμα , στις γραμμές 7-8, η δήλωση οντότητας είναι κενή, γιατί το αρχείο αυτό δεν αφορά την σύνθεση, αλλά την προσομοίωση. Στις γραμμές 3-22 γίνεται η δήλωση της οντότητας που θα χρησιμοποιηθεί ως DUT (είναι όμοια με το component declaration, βλέπε Κεφάλαιο 2, παράγραφο 2.6), στις γραμμές γίνεται η δήλωση των σημάτων που θα συνδεθούν στις εισόδους/εξόδους του στιγμιοτύπου του DUT και στην γραμμή 35 γίνεται η δήλωση της περιόδου του σήματος ρολογιού. Στις γραμμές 4-47 γίνεται η δήλωση στιγμιοτύπου (instantiation statement) του DUT και στις γραμμές 49-8 γίνεται εισαγωγή τιμών στα σήματα που συνδέονται στις εισόδους του στιγμιοτύπου του DUT. Οι δηλώσεις process που εμφανίζονται στις γραμμές και 58-8 εκτελούνται παράλληλα. Ο χρόνος της προσομοίωσης καθορίζεται από τον συνολικό χρόνο των δηλώσεων wait for της process stim_proc (4ns). Εάν στο πρόγραμμα προσομοίωσης ModelSim PE Student Edition.c καθοριστεί χρόνος προσομοίωσης μεγαλύτερος από τον συνολικό χρόνο των δηλώσεων wait for της process stim_proc, τότε μετά τα 4ns η process stim_proc θα αρχίσει να εκτελείται από την αρχή για ακόμη μία φορά. Στο Σχήμα φαίνεται η κυματομορφή που προκύπτει από την προσομοίωση (behavioral simulation) του PC μέσω του αρχείου προσομοίωσης pc_tb.vhd. Σχήμα Προσομοίωση του PC μέσω του αρχείου προσομοίωσης pc_tb.vhd Το αρχείο προσομοίωσης μπορεί είτε να γραφτεί σε έναν οποιονδήποτε text editor και έπειτα να προστεθεί στο project (Project Add Source...) καθορίζοντας ότι το αρχείο αυτό αφορά προσομοίωση (Simulation), είτε να δημιουργηθεί μέσα στο πρόγραμμα Xilinx ISE Foundation WebPACK. (Project New Source... VHDL Test Bench, συσχέτιση με την οντότητα pc και συμπλήρωση του έτοιμου αρχείου που παράγεται). Για την εκτέλεση της προσομοίωσης στο πρόγραμμα ModelSim PE Student Edition.c (το οποίο καλείται μέσα από το πρόγραμμα Xilinx ISE Foundation WebPACK.) επιλέγεται το αρχείο pc_tb.vhd (Sources for Behavioral Simulation) και στο παράθυρο Processes κάτω από την ανεπτυγμένη μορφή του ModelSim Simulator εκτελείται διπλό κλικ στο Simulate Behavioral Model (με δεξί κλικ στο Simulate Behavioral Model μπορούν να καθοριστούν διάφοροι παράμετροι της προσομοίωσης, όπως ο χρόνος προσομοίωσης Simulation Run Time).

118 Για την προσομοίωση ολόκληρου του ASM ακολουθήθηκε η εξής διαδικασία. Συγγραφή προγράμματος σε assembly, του οποίου η μετάφραση μέσω ASMA θα αποτελεί το περιεχόμενο της μνήμης προγράμματος του ASM. 2. Δημιουργία αρχείου προσομοίωσης για τον ASM. Οι τιμές που θα επιβληθούν στις εισόδους του ASM στο αρχείο προσομοίωσης καθώς και τα περιεχόμενα της μνήμης προγράμματος θεωρούνται ως είσοδος δοκιμής (Stimulus). 3. Χρήση του αρχείου προσομοίωσης για εκτέλεση προσομοίωσης στο πρόγραμμα ModelSim PE Student Edition.c και επαλήθευση σωστής λειτουργίας της σχεδίασης μέσω εξέτασης της κυμματομορφής που περιλαμβάνει τις εισόδους, τις εξόδους και εσωτερικά σήματα του ASM. Στο Σχήμα φαίνεται το πρόγραμμα test program σε assembly και τμήμα του αποτελέσματος της μετάφρασης (μέσω του ASMA), το οποίο θα αποτελέσει το περιεχόμενο της μνήμης προγράμματος του ASM. Σχήμα Το πρόγραμμα που θα χρησιμοποιηθεί για προσομοίωση του ASM Το πρόγραμμα test program υπολογίζει την τιμή m k2, m [,57 ] ℤ k = και στέλνει το LSB (Least Significant Byte) του αποτελέσματος στην έξοδο (leds) και το MSB (Most Significant Byte) του αποτελέσματος στην έξοδο 2 (έξοδος ασύγχρονης αποστολής). To m εισάγεται μέσω του dip switch και είναι ένας ακέραιος αριθμός στο διάστημα [,57], γιατί για την αποθήκευση του αποτελέσματος χρησιμοποιούνται 2 Bytes, ο συνδυασμός των οποίων μπορεί να αποθηκεύσει αποτέλεσμα μικρότερο ή ίσο με (για m=58, το πιο πάνω άθροισμα δίνει 66729, ενώ για m=57, το πιο πάνω άθροισμα δίνει 63365). Στο Σχήμα φαίνεται το αρχείο προσομοίωσης του ASM (asm_tb.vhd) που αφορά το πρόγραμμα test program. 2

119 ASM's Testbench File. LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY asm_tb IS END asm_tb; ARCHITECTURE behavior OF asm_tb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT asm PORT( CLK IN std_logic; MRSET IN std_logic; INP IN std_logic_vector(7 downto ); INP2 IN std_logic_vector(7 downto ); INP3 IN std_logic_vector(7 downto ); INP4 IN std_logic_vector(7 downto ); OUTP OUT std_logic_vector(7 downto ); OUTP2 OUT std_logic; OUTP3 OUT std_logic_vector(7 downto ); OUTP4 OUT std_logic_vector(7 downto ) ); END COMPONENT; --Inputs signal CLK signal MRSET signal INP signal INP2 signal INP3 signal INP4 std_logic = ''; std_logic = ''; std_logic_vector(7 std_logic_vector(7 std_logic_vector(7 std_logic_vector(7 --Outputs signal OUTP signal OUTP2 signal OUTP3 signal OUTP4 std_logic_vector(7 downto ); std_logic; std_logic_vector(7 downto ); std_logic_vector(7 downto ); downto downto downto downto ) ) ) ) = = = = --Clock constant CLK_period time = ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut asm PORT MAP ( CLK => CLK, MRSET => MRSET, INP => INP, INP2 => INP2, INP3 => INP3, INP4 => INP4, OUTP => OUTP, OUTP2 => OUTP2, OUTP3 => OUTP3, OUTP4 => OUTP4 ); CLK_process process begin CLK <= ''; wait for CLK_period/2; CLK <= ''; wait for CLK_period/2; end process; -- Stimulus process stim_proc process begin -- hold reset state for 5ns. MRSET <= ''; wait for 5 ns; MRSET <= ''; INP <= ""; wait; end process; 3 (others (others (others (others => => => => ''); ''); ''); '');

120 79 8 END; Σημείωση Η αρίθμηση δεν είναι μέρος του κώδικα, χρησιμοποιείται για σκοπούς αναφοράς. Σχήμα Περιεχόμενο του αρχείου προσομοίωσης asm_tb.vhd Στην γραμμή 76 του σχήματος δηλώνεται ότι στην είσοδο (dip switch) θα υπάρχει ο αριθμός 55 ("") με αυτή τιμή ορίζεται ο αριθμός m της παράστασης που υλοποιεί το πρόγραμμα test program. Στην γραμμή 77 του σχήματος η δήλωση wait σημαίνει ότι η διαδικασία stim_proc δεν πρόκειται να τελειώσει ποτέ. Επειδή το πρόγραμμα του σχήματος περιλαμβάνει ασύγχρονη σειριακή αποστολή ( start bit, 8 data bits και ένα stop bit) και επειδή για την αποστολή κάθε bit απαιτούνται 868ns (868 περίοδοι του ρολογιού συστήματος (MHz) ή ισοδύναμα 868 περίοδοι των ns), απαιτούνται συνολικά 868ns για την αποστολή μίας λέξης του ASM. Θεωρώντας ότι το υπόλοιπο τμήμα του προγράμματος απαιτεί περίπου ns επιλέγεται χρόνος προσομοίωσης 95ns. Στο Σχήμα φαίνεται το αποτέλεσμα της προσομοίωσης του ASM, ο οποίος έχει αποθηκευμένο στην μνήμη προγράμματος το πρόγραμμα test program (η προσομοίωση έγινε με χρήση του αρχείου asm_tb.vhd και του προγράμματος ModelSim PE Student Edition.c, το οποίο κλήθηκε μέσα από το πρόγραμμα Xilinx ISE Foundation WebPACK.). Η έξοδος των leds (OUT το LSB του αποτελέσματος) είναι. Τα bits που αποστέλλονται μέσω της ασύγχρονης σειριακής επικοινωνίας είναι '', '', '', '', '', '', '', '', '', '' (με αυτήν την σειρά). Στην ασύγχρονη σειριακή επικοινωνία πρώτα στέλνεται το start bit, μετά τα data bits ξεκινώντας από το λιγότερο σημαντικό bit και τέλος το stop bit. Έτσι η λέξη που θα λάβει τελικά ο υπολογιστής, ο οποίος είναι συνδεδεμένος με τον ASM, στο τερματικό σειριακής επικοινωνίας (όπου πρώτα θα έχουν ρυθμιστεί οι παράμετροι 52 bps, start bit, 8 data bits και stop bit) θα είναι. Το τελικό αποτέλεσμα της παράστασης 55 k2 k = μέσω της προσομοίωσης είναι, το οποίο σε δεκαδική μορφή είναι ίσο με 5698 και ίσο με το πραγματικό αποτέλεσμα. [Παρόλο που η λειτουργία της γραμμής διοχέτευσης σταματάει με την εντολή HALT, ο καταχωρητής ολίσθησης at_sr της μονάδας ασύγχρονης αποστολής δεδομένων at συνεχίζει την αποστολή δεδομένων έως ότου αποστείλει και το stop bit (βλέπε Σχήμα και Παράρτημα Α).] Στο Σχήμα φαίνεται το αποτέλεσμα προσομοίωσης της CU (συμπεριλαμβανομένων και των εσωτερικών σημάτων της) του ASM, ο οποίος τρέχει το πρόγραμμα test program. Ο χρόνος προσομοίωσης τέθηκε, για πρακτικούς λόγους, στα 4ns. [Για την προσομοίωση της CU χρησιμοποιήθηκε και πάλι το αρχείο asm_tb.vhd και το πρόγραμμα ModelSim PE Student Edition.c. Το πρόγραμμα ModelSim PE Student Edition.c δίνει την δυνατότητα επανάληψης της προσομοίωσης για οποιαδήποτε σήματα του ASM.] Έχει γίνει επιλογή, για λόγους ευκρίνειας, οι τιμές κάποιων σημάτων να παριστάνονται με θετικούς ακεραίους. Στα πρώτα 4ns εκτέλεσης του προγράμματος test program η ροή εκτέλεσης μπαίνει και παραμένει στον βρόχο που ορίζεται από τις εντολές που βρίσκονται στις διευθύνσεις 4 μέχρι 2 της μνήμης προγράμματος. Στα Σχήματα και φαίνονται τα αποτελέσματα προσομοίωσης της DU και της FU αντίστοιχα (συμπεριλαμβανομένου και των εσωτερικών σημάτων τους) για τα πρώτα 4ns εκτέλεσης του προγράμματος test program. 4

121 Στο Σχήμα φαίνεται, μέσω των τιμών των σημάτων της CU, η έξοδος της ροής εκτέλεσης από τον βρόχο που ορίζεται από τις εντολές που βρίσκονται στις διευθύνσεις 4 μέχρι 2 της μνήμης προγράμματος και η εκτέλεση των υπολοίπων εντολών του προγράμματος test program (στα 6275ns γίνεται άλμα στην εντολή που βρίσκεται στην διεύθυνση 3 της μνήμης προγράμματος). 5

122 6 Σχήμα Το αποτέλεσμα προσομοίωσης του ASM

123 7 Σχήμα Το αποτέλεσμα προσομοίωσης της CU

124 8 Σχήμα Το αποτέλεσμα προσομοίωσης της DU

125 9 Σχήμα Το αποτέλεσμα προσομοίωσης της FU

126 2 Σχήμα Έξοδος της ροής εκτέλεσης από τον βρόχο του προγράμματος test program

127 4.3.3 Σύνθεση (Synthesis) Η σύνθεση υλοποιείται με την χρήση του εργαλείου σύνθεσης XST της Xilinx, το οποίο περιλαμβάνεται στο πρόγραμμα Xilinx ISE Foundation WebPACK.. [Το πρόγραμμα Xilinx ISE Foundation WebPACK. δίνει επιπλέον την δυνατότητα χρήσης και άλλων εμπορικών εργαλείων σύνθεσης, εφόσον αυτά υπάρχουν.] Το XST παίρνει ως είσοδο HDL περιγραφές και παράγει αρχεία NGC (αρχεία που έχουν κατάληξη.ngc), αρχεία NGR και αρχεία LOG. Τα αρχεία NGC περιέχουν δεδομένα που αφορούν την ψηφιακή σχεδίαση (Xilinx-specific netlist files) καθώς και κάποιους περιορισμούς (synthesis constraints) που αφορούν την σύνθεση [34]. Τα αρχεία NGR αφορούν την RTL υλοποίηση των HDL περιγραφών, ενώ τα αρχεία NGC αφορούν την υλοποίηση των HDL περιγραφών στην συγκεκριμένη τεχνολογία (συγκεκριμένο FPGA). Στο Σχήμα φαίνεται αναλυτικά η λειτουργία του εργαλείου σύνθεσης XST. Σχήμα H λειτουργία του εργαλείου σύνθεσης XST Στο Σχήμα φαίνεται τμήμα της αναφοράς σύνθεσης του ASM για τους προεπιλεγμένους από το πρόγραμμα Xilinx ISE Foundation WebPACK. περιορισμούς σύνθεσης. [Eπιλέγεται Sources for Implementation, επιλέγεται ο asm ως Top Module (δεξί κλικ στον asm και εκτέλεση Set as Top Module) και εκτελείται διπλό κλικ στο Synthesize XST ή δεξί κλικ στο Synthesize XST και εκτέλεση Run. Έπειτα εκτελείται διπλό κλικ στο View Synthesis Report ή δεξί κλικ στο View Synthesis Report και εκτέλεση Run.] ========================================================================= * Synthesis Options Summary * ========================================================================= ---- Source Parameters Input File Name "asm.prj" Input Format mixed Ignore Synthesis Constraint File NO ---- Target Parameters Output File Name Output Format Target Device "asm" NGC xc2vp7-5-ff Source Options Top Module Name asm 2

128 Automatic FSM Extraction FSM Encoding Algorithm Safe Implementation FSM Style RAM Extraction RAM Style ROM Extraction Mux Style Decoder Extraction Priority Encoder Extraction Shift Register Extraction Logical Shifter Extraction XOR Collapsing ROM Style Mux Extraction Resource Sharing Asynchronous To Synchronous Multiplier Style Automatic Register Balancing YES Auto No lut Yes Auto Yes Auto YES YES YES YES YES Auto YES YES NO auto No ---- Target Options Add IO Buffers Global Maximum Fanout Add Generic Clock Buffer(BUFG) Register Duplication Slice Packing Optimize Instantiated Primitives Convert Tristates To Logic Use Clock Enable Use Synchronous Set Use Synchronous Reset Pack IO Registers into IOBs Equivalent register Removal YES 5 6 YES YES NO Yes Yes Yes Yes auto YES ---- General Options Optimization Goal Optimization Effort Library Search Order Keep Hierarchy Netlist Hierarchy RTL Output Global Optimization Read Cores Write Timing Constraints Cross Clock Analysis Hierarchy Separator Bus Delimiter Case Specifier Slice Utilization Ratio BRAM Utilization Ratio Verilog 2 Auto BRAM Packing Slice Utilization Ratio Delta Speed asm.lso NO as_optimized Yes AllClockNets YES NO NO / <> maintain YES NO 5 ========================================================================= ========================================================================= * HDL Synthesis * ========================================================================= Performing bidirectional port resolution... Synthesizing Unit <du>. Related source file is "C/ASM/du.vhd". Found 32x5-bit ROM for signal <$rom>. Summary inferred ROM(s). Unit <du> synthesized. Synthesizing Unit <cu>. Related source file is "C/ASM/cu.vhd". Found finite state machine <FSM_> for signal <state> States 4 Transitions 27 Inputs 8 Outputs 3 Clock CLK (rising_edge) Reset MRSET (positive) Reset type asynchronous Reset State Encoding automatic Implementation LUT 22

129 Found 2-bit adder for signal <PC_L_DAT$mux> created at line 92. Found -bit 8-to- multiplexer for signal <SREG$mux> created at line 66. Summary inferred Finite State Machine(s). inferred Adder/Subtractor(s). inferred Multiplexer(s). Unit <cu> synthesized. Synthesizing Unit <reg_rset_>. Related source file is "C/ASM/reg_rset.vhd". Found 2-bit register for signal <Q>. Summary inferred 2 D-type flip-flop(s). Unit <reg_rset_> synthesized. Synthesizing Unit <reg_rset_2>. Related source file is "C/ASM/reg_rset.vhd". Found 8-bit register for signal <Q>. Summary inferred 8 D-type flip-flop(s). Unit <reg_rset_2> synthesized. Synthesizing Unit <pc>. Related source file is "C/ASM/pc.vhd". Found 2-bit up counter for signal <tmp>. Summary inferred Counter(s). Unit <pc> synthesized. Synthesizing Unit <pm_ir>. Related source file is "C/ASM/pm_ir.vhd". Found 496x9-bit single-port RAM <Mram_rom> for signal <rom>. Found 9-bit register for signal <IR>. Summary inferred RAM(s). inferred 9 D-type flip-flop(s). Unit <pm_ir> synthesized. Synthesizing Unit <mux_4 >. Related source file is "C/ASM/mux_4_.vhd". Found 5-bit 4-to- multiplexer for signal <OUTP>. Summary inferred 5 Multiplexer(s). Unit <mux_4 > synthesized. Synthesizing Unit <mux_4 2>. Related source file is "C/ASM/mux_4_.vhd". Found -bit 4-to- multiplexer for signal <OUTP>. Summary inferred Multiplexer(s). Unit <mux_4 2> synthesized. Synthesizing Unit <rf>. Related source file is "C/ASM/rf.vhd". Found 32x8-bit dual-port RAM <Mram_mem> for signal <mem>. Found 32x8-bit dual-port RAM <Mram_mem_ren> for signal <mem>. Found 32x8-bit dual-port RAM <Mram_mem_ren_> for signal <mem>. Summary inferred 3 RAM(s). Unit <rf> synthesized. Synthesizing Unit <mux_2 >. Related source file is "C/ASM/mux_2_.vhd". Unit <mux_2 > synthesized. Synthesizing Unit <mux_4 3>. Related source file is "C/ASM/mux_4_.vhd". Found 8-bit 4-to- multiplexer for signal <OUTP>. Summary inferred 8 Multiplexer(s). Unit <mux_4 3> synthesized. Synthesizing Unit <mux_2 2>. Related source file is "C/ASM/mux_2_.vhd". 23

130 Unit <mux_2 2> synthesized. Synthesizing Unit <reg_set_>. Related source file is "C/ASM/reg_set.vhd". Found 64-bit register for signal <Q>. Summary inferred 64 D-type flip-flop(s). Unit <reg_set_> synthesized. Synthesizing Unit <flag_en_rom>. Related source file is "C/ASM/flag_en_rom.vhd". Found 32x5-bit ROM for signal <FLAG_EN$mux>. Summary inferred ROM(s). Unit <flag_en_rom> synthesized. Synthesizing Unit <reg_set_2>. Related source file is "C/ASM/reg_set.vhd". Found 8-bit register for signal <Q>. Summary inferred 8 D-type flip-flop(s). Unit <reg_set_2> synthesized. Synthesizing Unit <dm>. Related source file is "C/ASM/dm.vhd". Found 496x8-bit single-port RAM <Mram_mem> for signal <mem>. Found 8-bit register for signal <R_D>. Summary inferred RAM(s). inferred 8 D-type flip-flop(s). Unit <dm> synthesized. Synthesizing Unit <mux_8_>. Related source file is "C/ASM/mux_8_.vhd". Found 8-bit 8-to- multiplexer for signal <OUTP>. Summary inferred 8 Multiplexer(s). Unit <mux_8_> synthesized. Synthesizing Unit <out_a_dec>. Related source file is "C/ASM/out_a_dec.vhd". Unit <out_a_dec> synthesized. Synthesizing Unit <reg_re>. Related source file is "C/ASM/reg_re.vhd". Found 8-bit register for signal <Q>. Summary inferred 8 D-type flip-flop(s). Unit <reg_re> synthesized. Synthesizing Unit <reg_set_3>. Related source file is "C/ASM/reg_set.vhd". Found 27-bit register for signal <Q>. Summary inferred 27 D-type flip-flop(s). Unit <reg_set_3> synthesized. Synthesizing Unit <shift_reg>. Related source file is "C/ASM/shift_reg.vhd". Found 8-bit register for signal <tmp>. Summary inferred 8 D-type flip-flop(s). Unit <shift_reg> synthesized. Synthesizing Unit <mux_4 4>. Related source file is "C/ASM/mux_4_.vhd". Found 4-bit 4-to- multiplexer for signal <OUTP>. Summary inferred 4 Multiplexer(s). Unit <mux_4 4> synthesized. Synthesizing Unit <mux_4 5>. Related source file is "C/ASM/mux_4_.vhd". Found 8-bit 4-to- multiplexer for signal <OUTP>. 24

131 Summary inferred 8 Multiplexer(s). Unit <mux_4 5> synthesized. Synthesizing Unit <flag_c>. Related source file is "C/ASM/flag_c.vhd". Found 8-bit comparator greater for signal <cmp_ba$cmp_gt> created at line 25. Found 8-bit comparator greater for signal <tmp$cmp_gt> created at line 24. Summary inferred 2 Comparator(s). Unit <flag_c> synthesized. Synthesizing Unit <ff_re>. Related source file is "C/ASM/ff_re.vhd". Found -bit register for signal <Q>. Summary inferred D-type flip-flop(s). Unit <ff_re> synthesized. Synthesizing Unit <adder7>. Related source file is "C/ASM/adder7.vhd". Found 8-bit adder for signal <tmp>. Found 8-bit adder for signal <tmp$addsub> created at line 9. Summary inferred 2 Adder/Subtractor(s). Unit <adder7> synthesized. Synthesizing Unit <adder>. Related source file is "C/ASM/adder.vhd". Found -bit xor2 for signal <SUM>. Found -bit xor2 for signal <CO$xor> created at line 4. Unit <adder> synthesized. Synthesizing Unit <ff_rne>. Related source file is "C/ASM/ff_rne.vhd". Found -bit register for signal <Q>. Summary inferred D-type flip-flop(s). Unit <ff_rne> synthesized. Synthesizing Unit <at_count_up_to_867>. Related source file is "C/ASM/at_count_up_to_867.vhd". Found -bit up counter for signal <tmp>. Summary inferred Counter(s). Unit <at_count_up_to_867> synthesized. Synthesizing Unit <at_sr>. Related source file is "C/ASM/at_sr.vhd". Found 9-bit register for signal <tmp>. Summary inferred 9 D-type flip-flop(s). Unit <at_sr> synthesized. Synthesizing Unit <fu>. Related source file is "C/ASM/fu.vhd". Found 5-bit comparator equal for signal <case_$cmp_eq2> created at line 4. Found 5-bit comparator equal for signal <case_2$cmp_eq> created at line 45. Found 5-bit comparator equal for signal <case_3$cmp_eq> created at line 49. Found 5-bit comparator equal for signal <case_2$cmp_eq> created at line 7. Found 5-bit comparator equal for signal <case_22$cmp_eq> created at line 74. Found 5-bit comparator equal for signal <case_23$cmp_eq> created at line 78. Found 5-bit comparator equal for signal <case_a$cmp_eq> created at line 79. Found 5-bit comparator equal for signal <case_a2$cmp_eq> created at line 82. Found 5-bit comparator equal for signal <case_a3$cmp_eq> created at line 85. Found 5-bit comparator equal for signal <case_b$cmp_eq> created at line 5. Found 5-bit comparator equal for signal <case_b2$cmp_eq> created at line 8. Found 5-bit comparator equal for signal <case_b3$cmp_eq> created at line. Found 3-bit comparator less for signal <DEC_EXEllopcode_writes_Rd$cmp_lt> created at line 73. Found 3-bit comparator less for signal <EXE_MEMllopcode_writes_Rd$cmp_lt> created at line 75. Found 6-bit comparator less for signal <IRllopcode_reads_Rd$cmp_lt> created at line 66. Found 6-bit comparator greater for signal <IRllopcode_reads_Rr$cmp_gt> created at line 68. Found 6-bit comparator less for signal <IRllopcode_reads_Rr$cmp_lt> created at line 68. Found 6-bit comparator less for signal <IRllopcode_reads_Rr$cmp_lt> created at line 68. Found 3-bit comparator less for signal <MEM_WBllopcode_writes_Rd$cmp_lt> created at line 77. Summary inferred 9 Comparator(s). 25

132 Unit <fu> synthesized. Synthesizing Unit <stack>. Related source file is "C/ASM/stack.vhd". Unit <stack> synthesized. Synthesizing Unit <dm_a_calc>. Related source file is "C/ASM/dm_a_calc.vhd". Found 2-bit adder for signal <DM_A>. Summary inferred Adder/Subtractor(s). Unit <dm_a_calc> synthesized. Synthesizing Unit <at>. Related source file is "C/ASM/at.vhd". Unit <at> synthesized. Synthesizing Unit <adder>. Related source file is "C/ASM/adder.vhd". Found -bit xor2 for signal <V>. Unit <adder> synthesized. Synthesizing Unit <sreg>. Related source file is "C/ASM/sreg.vhd". Unit <sreg> synthesized. Synthesizing Unit <alu>. Related source file is "C/ASM/alu.vhd". Found 8x8-bit multiplier for signal <mulo>. Found 8-bit xor2 for signal <xoro>. Summary inferred Multiplier(s). Unit <alu> synthesized. Synthesizing Unit <fc_sreg>. Related source file is "C/ASM/fc_sreg.vhd". Found -bit xor2 for signal <s_flag>. Found -bit xor2 for signal <tmp3>. Unit <fc_sreg> synthesized. Synthesizing Unit <datapath>. Related source file is "C/ASM/datapath.vhd". WARNINGXst646 - Signal <outp_w_en<75>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. Unit <datapath> synthesized. Synthesizing Unit <asm>. Related source file is "C/ASM/asm.vhd". Unit <asm> synthesized. INFOXst767 - HDL ADVISOR - Resource sharing has identified that some arithmetic operations in this design can share the same physical resources for reduced device utilization. For improved clock frequency you may try to disable resource sharing. ========================================================================= HDL Synthesis Report Macro Statistics # RAMs 32x8-bit dual-port RAM 496x9-bit single-port RAM 496x8-bit single-port RAM # ROMs 32x5-bit ROM # Multipliers 8x8-bit multiplier # Adders/Subtractors 2-bit adder 8-bit adder # Counters -bit up counter 2-bit up counter # Registers -bit register 9-bit register 2-bit register

133 27-bit register 64-bit register 8-bit register 8-bit register 9-bit register # Comparators 3-bit comparator less 5-bit comparator equal 6-bit comparator greater 6-bit comparator less 8-bit comparator greater # Multiplexers -bit 8-to- multiplexer -bit 4-to- multiplexer 4-bit 4-to- multiplexer 5-bit 4-to- multiplexer 8-bit 4-to- multiplexer 8-bit 8-to- multiplexer # Xors -bit xor2 8-bit xor ========================================================================= ========================================================================= * Advanced HDL Synthesis * ========================================================================= Analyzing FSM <FSM_> for best encoding. Optimizing FSM <part3_cu/state/fsm> on signal <state[4]> with one-hot encoding State Encoding Loading device for application Rf_Device from file '2vp7.nph' in environment C\Xilinx\.\ISE. Synthesizing (advanced) Unit <alu>. INFOXst HDL ADVISOR - You can improve the performance of the multiplier Mmult_mulo by adding register level(s). Unit <alu> synthesized (advanced). Synthesizing (advanced) Unit <dm>. INFOXst - The RAM <Mram_mem> will be implemented as a BLOCK RAM, absorbing the following register(s) <R_D> ram_type Block Port A aspect ratio 496-word x 8-bit mode read-first clka connected to signal <CLK> rise wea connected to signal <W_EN> low addra connected to signal <ADDR> dia connected to signal <W_D> doa connected to signal <R_D> optimization speed Unit <dm> synthesized (advanced). Synthesizing (advanced) Unit <pm_ir>. INFOXst - The RAM <Mram_rom> appears to be read-only. If that was not your intent please check the write enable description. INFOXst - The RAM <Mram_rom> will be implemented as a BLOCK RAM, absorbing the following register(s) <IR> ram_type Block Port A aspect ratio 496-word x 9-bit mode read-first clka connected to signal <CLK> rise ena connected to signal <EN> high wea connected to signal <GND> high addra connected to signal <ADDR> dia connected to signal <GND> doa connected to signal <IR> dorsta connected to signal <RSET> high reset value optimization speed

134 Unit <pm_ir> synthesized (advanced). Synthesizing (advanced) Unit <rf>. INFOXst - The small RAM <Mram_mem> will be implemented on LUTs in order to maximize performance and save block RAM resources. If you want to force its implementation on block, use option/constraint ram_style ram_type Distributed Port A aspect ratio 32-word x 8-bit clka connected to signal <CLK> rise wea connected to signal <W_EN> low addra connected to signal <W_ADDR> dia connected to signal <W_D> Port B aspect ratio 32-word x 8-bit addrb connected to signal <R_ADDR> dob connected to signal <R_D> INFOXst - The small RAM <Mram_mem_ren_> will be implemented on LUTs in order to maximize performance and save block RAM resources. If you want to force its implementation on block, use option/constraint ram_style ram_type Distributed Port A aspect ratio 32-word x 8-bit clka connected to signal <CLK> rise wea connected to signal <W_EN> low addra connected to signal <W_ADDR> dia connected to signal <W_D> Port B aspect ratio 32-word x 8-bit addrb connected to signal <R_ADDR3> dob connected to signal <R_D3> INFOXst - HDL ADVISOR - The RAM <Mram_mem_ren> will be implemented on LUTs either because you have described an asynchronous read or because of currently unsupported block RAM features. If you have described an asynchronous read, making it synchronous would allow you to take advantage of available block RAM resources, for optimized device usage and improved timings. Please refer to your documentation for coding guidelines ram_type Distributed Port A aspect ratio 32-word x 8-bit clka connected to signal <CLK> rise wea connected to signal <W_EN> low addra connected to signal <W_ADDR> dia connected to signal <W_D> Port B aspect ratio 32-word x 8-bit addrb connected to signal <R_ADDR2> dob connected to signal <R_D2> Unit <rf> synthesized (advanced). ========================================================================= Advanced HDL Synthesis Report Macro Statistics # RAMs 32x8-bit dual-port distributed RAM 496x9-bit single-port block RAM 496x8-bit single-port block RAM # ROMs 32x5-bit ROM # Multipliers 8x8-bit multiplier # Adders/Subtractors 2-bit adder 8-bit adder carry in # Counters -bit up counter 2-bit up counter # Registers Flip-Flops # Comparators 3-bit comparator less 5-bit comparator equal 6-bit comparator greater 6-bit comparator less

135 8-bit comparator greater # Multiplexers -bit 8-to- multiplexer -bit 4-to- multiplexer 4-bit 4-to- multiplexer 5-bit 4-to- multiplexer 8-bit 4-to- multiplexer 8-bit 8-to- multiplexer # Xors -bit xor2 8-bit xor ========================================================================= ========================================================================= * Low Level Synthesis * ========================================================================= INFOXst226 - The FF/Latch <Q_3> in Unit <reg_set_> is equivalent to the following FF/Latch, which will be removed <Q_45> INFOXst226 - The FF/Latch <Q_4> in Unit <reg_set_> is equivalent to the following FF/Latch, which will be removed <Q_46> INFOXst226 - The FF/Latch <Q_5> in Unit <reg_set_> is equivalent to the following FF/Latch, which will be removed <Q_47> Optimizing unit <asm>... Optimizing unit <cu>... Optimizing unit <reg_set_>... Optimizing unit <reg_set_2>... Optimizing unit <reg_set_3>... Optimizing unit <flag_c>... Optimizing unit <at_sr>... Optimizing unit <fu>... Optimizing unit <alu>... Optimizing unit <datapath>... Mapping all equations... Building and optimizing final netlist... INFOXst226 - The FF/Latch <part4_datapath/part5_exe_mem_reg/q_4> in Unit <asm> is equivalent to the following FF/Latch, which will be removed <part4_datapath/part5_exe_mem_reg/q_62> INFOXst226 - The FF/Latch <part4_datapath/part5_exe_mem_reg/q_58> in Unit <asm> is equivalent to the following 2 FFs/Latches, which will be removed <part4_datapath/part5_exe_mem_reg/q_59> <part4_datapath/part5_exe_mem_reg/q_6> INFOXst226 - The FF/Latch <part4_datapath/part5_exe_mem_reg/q_3> in Unit <asm> is equivalent to the following FF/Latch, which will be removed <part4_datapath/part5_exe_mem_reg/q_6> INFOXst226 - The FF/Latch <part4_datapath/part5_exe_mem_reg/q_5> in Unit <asm> is equivalent to the following FF/Latch, which will be removed <part4_datapath/part5_exe_mem_reg/q_63> INFOXst226 - The FF/Latch <part4_datapath/part_dec_exe_reg/q_5> in Unit <asm> is equivalent to the following FF/Latch, which will be removed <part4_datapath/part_dec_exe_reg/q_5> Found area constraint ratio of (+ 5) on block asm, actual ratio is 9. Final Macro Processing... ========================================================================= Final Register Report Macro Statistics # Registers Flip-Flops ========================================================================= ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name asm.ngr Top Level Output File Name asm Output Format NGC Optimization Goal Speed Keep Hierarchy NO Design Statistics # IOs 59 Cell Usage 29

136 # BELS 836 # GND # INV # LUT 2 # LUT2 54 # LUT2_L 3 # LUT3 229 # LUT3_D 2 # LUT3_L 3 # LUT4 296 # LUT4_D 2 # LUT4_L 26 # MUXCY 57 # MUXF5 67 # MUXF6 # VCC # XORCY 53 # FlipFlops/Latches 373 # FDC 2 # FDE 9 # FDP # FDR 54 # FDRE 4 # FDRS 4 # FDS 62 # RAMS 3 # RAM32XD 24 # RAMB6_S4 7 # Clock Buffers # BUFGP # IO Buffers 58 # IBUF 33 # OBUF 25 # MULTs # MULT8X8 ========================================================================= Device utilization summary Selected Device 2vp7ff896-5 Number of Number of Number of Number Number Number of Number of Number of Number of Number of Slices Slice Flip Flops 4 input LUTs used as logic used as RAMs IOs bonded IOBs BRAMs MULT8X8s GCLKs out of out of out of out out out out of of of of % 3% 7% % 5% 2% 6% Partition Resource Summary No Partitions were found in this design ========================================================================= TIMING REPORT NOTE THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT GENERATED AFTER PLACE-and-ROUTE. Clock Information Clock Signal Clock buffer(ff name) Load CLK BUFGP Asynchronous Control Signals Information Control Signal Buffer(FF name) Load MRSET IBUF

137 Timing Summary Speed Grade -5 Minimum Minimum Maximum Maximum period 9.85ns (Maximum Frequency.89MHz) input arrival time before clock.68ns output required time after clock 3.997ns combinational path delay No path found Number of errors Number of warnings Number of infos ( ( 6 ( filtered) filtered) filtered) Σχήμα Τμήμα της αναφοράς σύνθεσης του ASM για τους προεπιλεγμένους περιορισμούς σύνθεσης To WARNINGXst646 - Signal <outp_w_en<75>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. που παρουσιάζεται στο Σχήμα αφορά το σήμα ενεργοποίησης των εξόδων του ASM. Επειδή έχουν υλοποιηθεί μόνο 5 από τις 8 εξόδους (βλέπε Παράρτημα Α), τα bits 7-5 του σήματος ενεργοποίησης outp_w_en που αντιστοιχούν στις υπόλοιπες 3 εξόδους δεν χρησιμοποιούνται και κατά την διαδικασία σύνθεσης παραλείπονται ( trimmed). Στο τέλος της αναφοράς σύνθεσης του σχήματος (Final Report) γίνεται μία εκτίμηση τόσο για τους πόρους του FPGA που πρόκειται να χρησιμοποιηθούν (Device utilization summary) για την συγκεκριμένη σχεδίαση, όσο και για τις χρονικές προδιαγραφές (Timing Summary) που πρέπει να πληρεί η συγκεκριμένη σχεδίαση. [Οι πληροφορίες αυτές είναι χρήσιμες για την ικανοποίηση των προδιαγραφών που πρέπει να πληρεί τελικά η σχεδίαση. Εάν οι εκτιμήσεις απέχουν από τις τελικές προδιαγραφές (ταχύτητα λειτουργίας (speed), χρήση συγκεκριμένου αριθμού πόρων (area)) που πρέπει να πληρεί η σχεδίαση, θα πρέπει να μεταβληθούν οι περιορισμοί σύνθεσης προς την επιθυμητή κατεύθυνση.] Μετά από την επιτυχημένη σύνθεση της σχεδίασης δίνεται η δυνατότητα προβολής του RTL σχηματικού (RTL schematic) του ASM και του σχηματικού του ASM το οποίο αφορά το συγκεκριμένο FPGA (Technology schematic) και τους συγκεκριμένους περιορισμούς σύνθεσης. Τα σχηματικά αυτά παράγονται κάνοντας χρήση των αρχείων NGR (RTL schematic) και NGC (Technology schematic). Στο Σχήμα φαίνεται το RTL σχηματικό (RTL schematic) του ASM η διασύνδεση των βασικών του μονάδων (Forwarding Unit, Control Unit, Decode Unit, DataPath η σήμανση των βασικών μονάδων δεν έγινε από το πρόγραμμα Xilinx ISE Foundation WebPACK., αλλά εκ των υστέρων, για λόγους καλύτερης παρουσίασης). Έστω ότι ο σχεδιαστής επιθυμεί την αύξηση της επιτρεπόμενης συχνότητας λειτουργίας του ASM, χωρίς να υπάρχει περιορισμός στην χρήση πόρων του FPGA (γιατί ο ASM απαιτεί σχετικά λίγους πόρους βλέπε Device utilization summary στο Σχήμα ), αλλά χωρίς να μεταβληθεί η σχεδίαση ο κώδικας VHDL. Αυτό είναι δυνατό να γίνει με την μεταβολή των περιορισμών σύνθεσης. Εάν για παράδειγμα μεταβληθεί το Optimization Effort από Normal σε High (δεξί κλικ στο Synthesize XST, εκτέλεση Properties..., (επιλογή Property display level Advanced) και μεταβολή του Optimization Effort (Synthesis Options) από Normal σε High) και το Register Balancing από No σε Yes (δεξί κλικ στο Synthesize XST, εκτέλεση Properties..., και μεταβολή του Register Balancing (Xilinx Specific Options) από No σε Yes) τότε η εκτιμώμενη μέγιστη συχνότητα λειτουργίας του ASM αυξάνεται, χωρίς να αυξάνεται η εκτιμώμενη χρήση πόρων του FPGA, όπως φαίνεται στο Σχήμα (βλέπε και Σχήμα ). 3

138 Σχήμα Το RTL σχηματικό του ASM διασύνδεση των βασικών μονάδων Device utilization summary Selected Device 2vp7ff896-5 Number of Number of Number of Number Number Number of Number of Number of Number of Number of Slices Slice Flip Flops 4 input LUTs used as logic used as RAMs IOs bonded IOBs BRAMs MULT8X8s GCLKs out of out of out of out out out out of of of of % 4% 7% % 5% 2% 6% Timing Summary Speed Grade -5 Minimum Minimum Maximum Maximum period 8.336ns (Maximum Frequency 9.962MHz) input arrival time before clock.68ns output required time after clock 3.997ns combinational path delay No path found Σχήμα Τμήμα της αναφοράς σύνθεσης του ASM μετά από μεταβολή των προεπιλεγμένων περιορισμών σύνθεσης 32

139 Το Register Balancing αφορά την μετακίνηση των flip-flop διαμέσου της συνδυαστικής λογικής με την οποία εμπλέκονται, με σκοπό την ίση καθυστέρηση σήματος διαμέσου των τμημάτων συνδυαστικής λογικής που αφορούν μία συγκεκριμένη διαδρομή. Η δυνατότητα αυτή σε συνδυασμό με την γραμμή διοχέτευσης αυξάνει την συχνότητα λειτουργίας της σχεδίασης. Βέβαια το ότι αυξάνεται η μέγιστη εκτιμώμενη συχνότητα λειτουργίας του ASM κατά σχεδόν 2% (συγκρίνοντας τα σχήματα και ) μετά την μεταβολή των περιορισμών σύνθεσης δεν σημαίνει ότι στην πραγματικότητα θα υπάρξει αυτή η αύξηση. Οι πραγματικές τιμές τόσο της μέγιστης επιτρεπόμενης συχνότητας λειτουργίας, όσο και της χρήσης πόρων του FPGA θα προκύψουν μετά την υλοποίηση (Implementation) Περιορισμοί (Constraints) Πριν την διαδικασία υλοποίησης προηγείται η εισαγωγή περιορισμών. Οι περιορισμοί αναφέρονται σε χρονικούς περιορισμούς (όπως η επιθυμητή συχνότητα λειτουργίας) και σε περιορισμούς που αφορούν τους ακροδέκτες του FPGA που πρόκειται να χρησιμοποιηθούν για την συγκεκριμένη σχεδίαση. [Στα επόμενα θεωρείται ότι η σύνθεση έχει εκτελεστεί με την μεταβολή των περιορισμών σύνθεσης που αναφέρθηκε στην προηγούμενη παράγραφο (Optimization Effort High και Register Balancing Yes).] Ο χρονικός περιορισμός που θα εισαχθεί για τον ASM αφορά την επιθυμητή συχνότητα λειτουργίας. Επειδή πρόκειται να χρησιμοποιηθεί ως ρολόι του συστήματος το ρολόι των MHz, είναι επιθυμητό η περίοδος του ρολογιού της σχεδίασης να είναι μικρότερη από ns. Έτσι αναπτύσσοντας το User Constrains εκτελείται διπλό κλικ στο Create Timing Constrains ή δεξί κλικ στο Create Timing Constrains και εκτέλεση Run. [Στην συγκεκριμένη περίπτωση καθώς και στις επόμενες θεωρείται ότι ο asm είναι Top Module και ότι οι εργασίες που αναφέρονται επιτελούνται στο παράθυρο Processes. Σε περίπτωση διαφοροποίησης θα γίνεται ρητή αναφορά.] Με την εκτέλεση του Create Timing Constrains το πρόγραμμα Xilinx ISE Foundation WebPACK. ειδοποιεί ότι είτε θα δημιουργήσει το ίδιο ένα αρχείο περιορισμών UCF, είτε θα πρέπει να προστεθεί στο project από τον χρήστη ένα έτοιμο αρχείο περιορισμών UCF. Επιλέγοντας την δημιουργία ενός νέου αρχείου UCF, δίνεται η δυνατότητα εισαγωγής της επιθυμητής περιόδου για το σήμα ρολογιού CLK. Έτσι εισάγεται η τιμή 8.34ns κάτω από το πεδίο period, η οποία αντιστοιχεί σε συχνότητα ελάχιστα μικρότερη από την μέγιστη (εκτιμώμενη) επιτρεπόμενη συχνότητα λειτουργίας (βλέπε Σχήμα ). Οι ακροδέκτες του FPGA που χρησιμοποιούνται από τον ASM αφορούν το ρολόι των MHz, το push button, τα leds, το dip switch, το 5-pin header και τον ακροδέκτη ασύγχρονης αποστολής που καταλήγει στον DB9 connector (βλέπε παράγραφο 4.). Αναπτύσσοντας το User Constrains εκτελείται διπλό κλικ στο Floorplan Area / IO / Logic - Post-Synthesis ή δεξί κλικ στο Floorplan Area / IO / Logic - Post-Synthesis και εκτέλεση Run. Χρησιμοποιώντας την λειτουργία drag and drop όλα τα εξωτερικά στον ASM σήματα αντιστοιχίζονται με τα pins του FPGA σύμφωνα με τους πίνακες της παραγράφου 4.. Οι περιορισμοί που αφορούν τόσο την περίοδο του σήματος ρολογιού του ASM, όσο και τα εξωτερικά στον ASM σήματα τελικά γράφονται σε ένα UCF αρχείο, στην συγκεκριμένη περίπτωση το αρχείο asm.ucf. Στο Σχήμα φαίνονται τα περιεχόμενα του αρχείου asm.ucf. NET "CLK" TNM_NET = CLK; TIMESPEC TS_CLK = PERIOD "CLK" 8.34 ns HIGH 5%; 33

140 #PACE Start of Constraints generated by PACE #PACE Start of PACE I/O Pin Assignments NET "CLK" LOC = "C6" ; NET "INP<>" LOC = "J8" ; NET "INP<>" LOC = "J7" ; NET "INP<2>" LOC = "G6" ; NET "INP<3>" LOC = "G5" ; NET "INP<4>" LOC = "D5" ; NET "INP<5>" LOC = "C5" ; NET "INP<6>" LOC = "C4" ; NET "INP<7>" LOC = "C" ; NET "INP2<>" LOC = "AE22" ; NET "INP2<>" LOC = "AF23" ; NET "INP2<2>" LOC = "AE23" ; NET "INP2<3>" LOC = "AE24" ; NET "INP2<4>" LOC = "AD23" ; NET "INP2<5>" LOC = "AA25" ; NET "INP2<6>" LOC = "AG26" ; NET "INP2<7>" LOC = "AH26" ; NET "INP3<>" LOC = "AH27" ; NET "INP3<>" LOC = "AC27" ; NET "INP3<2>" LOC = "AD25" ; NET "INP3<3>" LOC = "AB27" ; NET "INP3<4>" LOC = "AD26" ; NET "INP3<5>" LOC = "AG28" ; NET "INP3<6>" LOC = "AC28" ; NET "INP3<7>" LOC = "AA26" ; NET "INP4<>" LOC = "AG29" ; NET "INP4<>" LOC = "AH29" ; NET "INP4<2>" LOC = "AC29" ; NET "INP4<3>" LOC = "AA28" ; NET "INP4<4>" LOC = "AG3" ; NET "INP4<5>" LOC = "AB3" ; NET "INP4<6>" LOC = "AB28" ; NET "INP4<7>" LOC = "W23" ; NET "MRSET" LOC = "AG5" ; NET "OUTP<>" LOC = "AE5" ; NET "OUTP<>" LOC = "AD5" ; NET "OUTP<2>" LOC = "AC5" ; NET "OUTP<3>" LOC = "AB5" ; NET "OUTP<4>" LOC = "AG4" ; NET "OUTP<5>" LOC = "AF4" ; NET "OUTP<6>" LOC = "AD4" ; NET "OUTP<7>" LOC = "AE4" ; NET "OUTP2" LOC = "AC6" ; NET "OUTP3<>" LOC = "AD9" ; NET "OUTP3<>" LOC = "AC9" ; NET "OUTP3<2>" LOC = "AD2" ; NET "OUTP3<3>" LOC = "AC2" ; NET "OUTP3<4>" LOC = "AE2" ; NET "OUTP3<5>" LOC = "AC2" ; NET "OUTP3<6>" LOC = "AG2" ; NET "OUTP3<7>" LOC = "AF2" ; NET "OUTP4<>" LOC = "AD2" ; NET "OUTP4<>" LOC = "AF22" ; NET "OUTP4<2>" LOC = "AJ22" ; NET "OUTP4<3>" LOC = "AH22" ; NET "OUTP4<4>" LOC = "AH23" ; NET "OUTP4<5>" LOC = "AG23" ; NET "OUTP4<6>" LOC = "AJ23" ; NET "OUTP4<7>" LOC = "AK23" ; #PACE Start of PACE Area Constraints #PACE Start of PACE Prohibit Constraints #PACE End of Constraints generated by PACE Σχήμα Τα περιεχόμενα του αρχείου asm.ucf Υλοποίηση (Implemantation) Πριν την εκτέλεση της διαδικασίας υλοποίησης θα χρησιμοποιηθεί ένα εργαλείο του προγράμματος Xilinx ISE Foundation WebPACK., το οποίο λέγεται Xplorer [34]. Το εργαλείο αυτό χρησιμοποιείται για τον καθορισμό των απαιτούμενων παραμέτρων της διαδικασίας υλοποίησης, ώστε ο σχεδιαστής να επιτύχει υλοποίηση σύμφωνη με τους περιορισμούς (βλέπε 34

141 παράγραφο 4.3.4), χωρίς να εμπλακεί στην εξαιρετικά χρονοβόρα διαδικασία δοκιμής διαφόρων συνδυασμών παραμέτρων υλοποίησης. Για την χρήση του εργαλείου Xplorer εκτελείται δεξί κλικ στο Implement Design και επιλέγεται Properties... Έπειτα επιλέγεται Xplorer Properties και σε αυτό μεταβάλλεται η παράμετρος Xplorer Mode σε Timing Closure. Tο εργαλείο Xplorer τρέχει επαναληπτικές διαδικασίες αντιστοίχισης της σχεδίασης στο FPGA (map) και τοποθέτησηςδιασύνδεσης (place and route), με διαφορετικούς συνδυασμούς παραμέτρων για την κάθε διαδικασία στην κάθε επανάληψη, με σκοπό την εύρεση παραμέτρων αντιστοίχισης και τοποθέτησης-διασύνδεσης που να καθιστούν την υλοποίηση της αρχικής σχεδίασης σύμφωνη με τους περιορισμούς της παραγράφου Στο Σχήμα φαίνεται η αναφορά εκτέλεσης του εργαλείου Xplorer (αρχείο asm_xplorer.rpt) μετά την εκτέλεση της υλοποίησης (διπλό κλικ στο Implement Design ή δεξί κλικ στο Implement Design και εκτέλεση Run) Release..3+ (DEFAULT) Xplorer Copyright(c) Xilinx, Inc. All rights reserved WARNINGXplorer - Xplorer is being replaced by SmartXplorer in the next software release. Please evaluate SmartXplorer. See the Development Systems Reference Guide for how to use SmartXplorer. Command xplorer -ise=asm.ise asm.ngc -wd=c/asm -sd=. -uc=asm.ucf -p=xc2vp7-ff Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high -xe n Achieved Timing Score 526 Current Best (Lowest) Timing Score 526. Current Best Run Run Map options -p xc2vp7-ff timing -logic_opt on Par options -w -ol high -xe n Achieved Timing Score 526 Current Best (Lowest) Timing Score 526. Current Best Run Run Map options -p xc2vp7-ff896-5 Par options -w -ol high -xe n Achieved Timing Score 266 Current Best (Lowest) Timing Score 526. Current Best Run Run Map options -p xc2vp7-ff896-5 Par options -w -ol high -t 9 Achieved Timing Score 342 Current Best (Lowest) Timing Score 526. Current Best Run Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high Achieved Timing Score 763 Current Best (Lowest) Timing Score 763. Current Best Run Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high 35 -max_runs= -intstyle=ise high -xe n -ol high -xe n -register_duplication high -t 7 high

142 Achieved Timing Score 925 Current Best (Lowest) Timing Score 763. Current Best Run Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high Achieved Timing Score 68 Current Best (Lowest) Timing Score 68. Current Best Run Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high Achieved Timing Score 5 Current Best (Lowest) Timing Score 68. Current Best Run Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high Achieved Timing Score 2598 Current Best (Lowest) Timing Score 68. Current Best Run Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high Achieved Timing Score 975 Current Best (Lowest) Timing Score 68. Current Best Run BestRun Run Map options -p xc2vp7-ff timing -ol Par options -w -ol high Achieved Timing Score high -pr b high -pr b -t high -pr b -t 2 high -pr b -t 3 high -pr b Σχήμα Η αναφορά εκτέλεσης του εργαλείου Xplorer Σύμφωνα με το Σχήμα η επανάληψη 7 (Run 7) είναι η βέλτιστη (BestRun). Οι απαιτούμενοι παράμετροι αντιστοίχισης (Map options) είναι -p xc2vp7-ff timing -ol high -pr b και οι απαιτούμενοι παράμετροι τοποθέτησης-διασύνδεσης ( Par) είναι -w -ol high -xe n. Βέβαια από το Σχήμα δεν γίνεται αντιληπτό εάν η τελική υλοποίηση που προέκυψε ανταποκρίνεται στους περιορισμούς του σχήματος Έτσι στα επόμενα θα γίνει μία πιο αναλυτική περιγραφή της διαδικασίας υλοποίησης με έμφαση στα αποτελέσματα που προέκυψαν από την χρήση του εργαλείου Xplorer. Η διαδικασία υλοποίησης περιλαμβάνει την μετάφραση (translate), την αντιστοίχιση (map) και την τοποθέτηση-διασύνδεση (place and route). Η μετάφραση είναι υπεύθυνη για την συγχώνευση του αρχείου που περιλαμβάνει δεδομένα που αφορούν την σχεδίαση για την συγκεκριμένη τεχνολογία (netlist αρχείο NGC) και του αρχείου περιορισμών (αρχείο UCF) που πρέπει να πληρεί η σχεδίαση (constraints) σε ένα αρχείο NGD. Η αντιστοίχιση παίρνει ως είσοδο το αρχείο NGD και παράγει τα αρχεία NCD και PCF, τα οποία περιγράφουν την σχεδίαση με συγκεκριμένα στοιχεία (CLBs Configurable Logic Blocks, IOBs Input-Output Blocks) του συγκεκριμένου FPGA που χρησιμοποιείται (στην συγκεκριμένη περίπτωση του FPGA Virtex-II Pro XC2VP7-5FF896). Τέλος η τοποθέτηση-διασύνδεση λαμβάνει το αρχείο NCD από την αντιστοίχιση, τοποθετεί και διασυνδέει την σχεδίαση και παράγει ένα νέο αρχείο NCD το οποίο θα χρησιμοποιηθεί ως είσοδο στο εργαλείο που θα παράξει το αρχείο προγραμματισμού του FPGA. [Στα στάδια της διαδικασίας 36

143 υλοποίησης που αναφέρθηκαν προηγουμένως, παράγονται και άλλα αρχεία για διάφορους σκοπούς. Δεν αναφέρονται όμως γιατί δεν προσφέρουν τίποτα στην κατανόηση της λειτουργίας της διαδικασίας.] Αναπτύσσοντας το Implement Design, το Place & Route και έπειτα το Generate Post-Place & Route Static Timing και εκτελώντας με διπλό κλικ το Analyze Post-Place & Route Static Timing είναι δυνατό να ελεγχθεί εάν η υλοποίηση που προέκυψε με την χρήση του εργαλείου Xplorer ανταποκρίνεται στον χρονικό περιορισμό που αφορά την περίοδο του σήματος ρολογιού. Στο Σχήμα φαίνεται η αναφορά που παράγεται από την εκτέλεση της λειτουργίας Analyze Post-Place & Route Static Timing. Σχήμα Αναφορά Analyze Post-Place & Route Static Timing Από το Σχήμα φαίνεται ότι δεν ικανοποιείται ο χρονικός περιορισμός που αφορά την περίοδο του σήματος ρολογιού του ASM, αλλά επίσης αναφέρεται ότι η συγκεκριμένη υλοποίηση έχει ελάχιστη περίοδο τα 8.423ns. Αυτό το αποτέλεσμα όμως είναι ικανοποιητικό γιατί η περίοδος είναι τελικά μικρότερη από ns και μπορεί να χρησιμοποιηθεί ως ρολόι συστήματος το ρολόι των MHz. Όσον αφορά την συνδυαστική διαδρομή που αναφέρεται στο Σχήμα , παρόλο που το Register Balancing και το Resource Sharing (προεπιλεγμένος περιορισμός σύνθεσης) μεταβάλλουν την αρχική σχεδίαση, αυτή πρέπει να αναφέρεται στην εξής συνδυαστική διαδρομή έξοδος DM WB MUX MUX FB (forwarding στον τελεστέο Β της ALU) 37

144 αποτέλεσμα πολλαπλασιασμού είσοδος στο flip-flop C FLAG TMP (βλέπε Κεφάλαιο 3, παράγραφο 3.5). Αναπτύσσοντας το Implement Design και το Place & Route και εκτελώντας με διπλό κλικ το Pad Report εμφανίζεται η αναφορά που επαληθεύει την υλοποίηση των περιορισμών που αναφέρονται στους ακροδέκτες του FPGA που χρησιμοποιούνται από τον ASM. Επίσης ναπτύσσοντας το Implement Design και το Map και εκτελώντας με διπλό κλικ το Map Report εμφανίζεται η αναφορά αντιστοίχισης, η οποία δίνει την πραγματική χρήση πόρων του FPGA από τον ASM Σχήμα Design Summary Number of errors Number of warnings 2 Logic Utilization Number of Slice Flip Flops 368 out of 9,856 3% Number of 4 input LUTs 74 out of 9,856 7% Logic Distribution Number of occupied Slices 462 out of 4,928 9% Number of Slices containing only related logic 462 out of 462 % Number of Slices containing unrelated logic out of 462 % *See NOTES below for an explanation of the effects of unrelated logic. Total Number of 4 input LUTs 76 out of 9,856 7% Number used as logic 644 Number used as a route-thru 2 Number used for Dual Port RAMs 96 (Two LUTs used per Dual Port RAM) Number of bonded IOBs 59 out of 396 4% IOB Flip Flops 57 Number of RAMB6s 7 out of 44 5% Number of MULT8X8s out of 44 2% Number of BUFGMUXs out of 6 6% Σχήμα Η πραγματική χρήση πόρων του FPGA από τον ASM Στο Σχήμα φαίνεται ο ASM τοποθετημένος-διασυνδεδεμένος στο FPGA. To Σχήμα προκύπτει αναπτύσσοντας το Implement Design και το Place & Route και εκτελώντας με διπλό κλικ το View/Edit Routed Design (FPGA Editor). Σχήμα Ο ASM τοποθετημένος-διασυνδεδεμένος στο FPGA 38

145 Στο Σχήμα φαίνεται η προσομοίωση της υλοποίησης του ASM. Αναπτύσσοντας το Implement Design και το Place & Route και εκτελώντας με διπλό κλικ το Generate PostPlace & Route Simulation Model δημιουργείται το μοντέλο προσομοίωσης της υλοποίησης του ASM. Έπειτα επιλέγοντας Sources for Post-Route Simulation και αναπτύσσοντας στο παράθυρο Processes το ModelSim Simulator εκτελείται δεξί κλικ και Properties... για να καθοριστεί ο χρόνος προσομοίωσης στα 95ns. Τελικά εκτελείται διπλό κλικ στο Simulate Post-Place & Route Model για να εκτελεστεί η προσομοίωση. [Για την εκτέλεση αυτής της προσομοίωσης θα πρέπει πρώτα να γίνουν compile οι βιβλιοθήκες της Xilinx. Αυτό γίνεται επιλέγοντας το xc2vp7-5ff896 κάτω από το Sources for Post-Route Simulation και αναπτύσσοντας το Design Utilities εκτελείται διπλό κλικ στο Compile HDL Simulation Libraries.] Από το Σχήμα παρατηρείται ότι η προσομοίωση της υλοποίησης δεν παρουσιάζει καμία ουσιαστική διαφορά σε σχέση με αυτήν του σχήματος Στον Πίνακα συνοψίζονται τα βασικά χαρακτηριστικά του μικροεπεξεργαστή ASM, όπως αυτά διαμορφώθηκαν μετά την επιτυχημένη διαδικασία υλοποίησης. Αρχιτεκτονική 8-bit RISC Γραμμή Διοχέτευσης 5 σταδίων Μέγιστη συχνότητα λειτουργίας 8.72MHz Αριθμός κύκλων εκτέλεσης εντολών Υποστήριξη πολλαπλασιασμού 3 από 43 εντολές εκτελούνται σε κύκλο Μέσω των εντολών MULL και MULH χρησιμοποιήθηκε hard-wired πολλαπλασιαστής του FPGA Virtex-II Pro Μέγεθος PM Register File 496x9 bits 5 μπλοκ RAM 32 καταχωρητές γενικής χρήσης καταχωρητές X, Y και Z για προσπέλαση της DM 97 LUT Μέγεθος DM Υποστήριξη στοίβας 496x8 bits 2 μπλοκ RAM Για την υλοποίηση των εντολών CALL και RET Βάθος στοίβας Παραμετροποιήσιμο Πίνακας Tα βασικά χαρακτηριστικά του μικροεπεξεργαστή ASM μετά την επιτυχημένη διαδικασία υλοποίησης 39

146 4 Σχήμα Η προσομοίωση της υλοποίησης του ASM

147 4.3.6 Προγραμματισμός Συσκευής (Device Programming) Επιλέγοντας Sources for Implementation και εκτελώντας διπλό κλικ στο Generate Programming File στο παράθυρο Processes, δημιουργείται το BIT αρχείο asm.bit, το οποίο μπορεί να χρησιμοποιηθεί για τον καθορισμό των δεδομένων των δύο PROM xc8v4, οι οποίες αφού προγραμματιστούν μέσω JTAG θα προγραμματίζουν το FPGA με την χρήση της μεθόδου Master Serial (εφόσον ρυθμιστούν κατάλληλα τα jumpers της πλακέτας βλέπε παράγραφο 4.). Για τον σκοπό αυτό αναπτύσσεται το Configure Target Device και εκτελείται διπλό κλικ στο Generate Target PROM/ACE File. Έπειτα επιλέγεται Prepare a PROM File και Next Next Next στο Select a PROM επιλέγεται xc8v και δίπλα το xc8v4, εκτελείται 2 φορές κλικ στο Add και Next Finish OK επιλογή του αρχείου asm.bit -> Νο -> ΟΚ. Στο Σχήμα φαίνεται το αποτέλεσμα της μέχρι τώρα διαδικασίας. Σχήμα Διαδικασία δημιουργίας δεδομένων προγραμματισμού των 2 PROM xc8v4 Εκτελώντας διπλό κλικ στο Generate File δημιουργούνται τα αρχεία που θα χρησιμοποιηθούν για τον προγραμματισμό των 2 PROM xc8v4 ( PROM File Generation Succeeded). Επειδή όμως το καλώδιο MultiLINX δεν υποστηρίζεται από το impact. θα χρησιμοποιηθεί το πρόγραμμα impact 7.i για τον προγραμματισμό των 2 PROM. Συνδέεται το καλώδιο MultiLINX με την πλακέτα Virtex-II Pro Evaluation και τον υπολογιστή και δίδεται τροφοδοσία στην πλακέτα (έχουν ρυθμιστεί πριν δοθεί τροφοδοσία στην πλακέτα τα jumpers κατάλληλα, ώστε οι 2 PROM να προγραμματιστούν μέσω JTAG). Έπειτα εκτελείται το πρόγραμμα impact 7.i, εκτελείται File Initialize Chain, επιλέγονται τα αρχεία που δημιουργήθηκαν προηγουμένως για τον προγραμματισμό των 2 PROM (αρχεία MCS) και BYPASS για το FPGA βλέπε Σχήμα Στην συνέχεια εκτελείται δεξί κλικ πάνω στην κάθε PROM και επιλέγεται Program... OK. 4

148 Σχήμα Προγραμματισμός των 2 PROM xc8v4 Αφού έχουν προγραμματιστεί και οι 2 PROM διακόπτεται η τροφοδοσία στην πλακέτα ώστε ο προγραμματισμός του FPGA να ρυθμιστεί σε Master Serial με την αφαίρεση των κατάλληλων jumpers. Συνδέεται η σειριακή θύρα μέσω καλωδίου στον υπολογιστή και δίνεται τροφοδοσία στην πλακέτα. Τέλος εκτελείται ένα πρόγραμμα-τερματικό σειριακής επικοινωνίας για να ληφθεί το MSB του αποτελέσματος του προγράμματος test program μετά από την χρήση του push-button SW (σήμα RSET). Έτσι με την εισαγωγή του (49) στο dip-switch το τερματικό δίνει αποτέλεσμα και τα leds δίνουν. Το σε δεκαδικό είναι το 4425 και ίσο με το πραγματικό αποτέλεσμα της πράξης 49 k2 k = Στο Σχήμα παρουσιάζονται τα αποτελέσματα της εκτέλεσης του προγράμματος test program στο FPGA Virtex-II Pro xc2vp7. 42

149 Σχήμα Τα αποτελέσματα της εκτέλεσης του προγράμματος test program στο FPGA 43

Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών Field Programmable Gate Arrays (FPGAs)

Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών Field Programmable Gate Arrays (FPGAs) Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών Field Programmable Gate Arrays (FPGAs) Οι προγραμματιζόμενες λογικές διατάξεις (PLDs Programmable Logic Devices) είναι ψηφιακά ολοκληρωμένα κυκλώματα (ICs) που

Διαβάστε περισσότερα

Κυκλωμάτων» Χειμερινό εξάμηνο

Κυκλωμάτων» Χειμερινό εξάμηνο «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Εισαγωγή στα Συστήματα Ολοκληρωμένων Κυκλωμάτων Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής http://diceslab.cied.teiwest.gr E-mail: pkitsos@teimes.gr

Διαβάστε περισσότερα

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 4 η :

Διαβάστε περισσότερα

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 5 η :

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2018-2019 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα ολοκληρωμένα κυκλώματα

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2017-2018 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Γιώργος Καλοκαιρινός & Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα

Διαβάστε περισσότερα

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 3 η :

Διαβάστε περισσότερα

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 1 η :

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... XI. Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA Κεφάλαιο 2. Τεχνολογία VLSI Εισαγωγή Βασικές Αρχές...

Περιεχόμενα. Πρόλογος... XI. Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA Κεφάλαιο 2. Τεχνολογία VLSI Εισαγωγή Βασικές Αρχές... Περιεχόμενα Πρόλογος... XI Κεφάλαιο 1. Συστήματα Βασισμένα σε FPGA... 1 1.1 Εισαγωγή... 1 1.2 Βασικές Αρχές... 1 1.2.1 Boolean Άλγεβρα... 1 1.2.2 Σχηματικά και Λογικά Σύμβολα... 6 1.3 Ψηφιακή Σχεδίαση

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ ΕΘΝΙΚΟΝ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟΝ ΠΑΝΕΠΙΣΤΗΜΙΟΝ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΥΛΙΚΟ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΠΣ Πληροφορικής και Τηλεπικοινωνιών, E Εξάμηνο

Διαβάστε περισσότερα

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers)

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers) ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers) ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy) Περίληψη q Καταχωρητές Παράλληλης

Διαβάστε περισσότερα

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI Ε.Μ.Π. - ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ VLSI

Διαβάστε περισσότερα

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1 ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Καταχωρητές Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Περίληψη Καταχωρητές Παράλληλης Φόρτωσης Καταχωρητές

Διαβάστε περισσότερα

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Παράδειγµα: Καταχωρητής 2-bit. Καταχωρητής 4-bit. Μνήµη Καταχωρητών

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Παράδειγµα: Καταχωρητής 2-bit. Καταχωρητής 4-bit. Μνήµη Καταχωρητών ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Κεφάλαιο 7 i: Καταχωρητές Περίληψη Καταχωρητές Παράλληλης Φόρτωσης Καταχωρητές Ολίσθησης Σειριακή Φόρτωση Σειριακή Ολίσθηση Καταχωρητές Ολίσθησης Παράλληλης Φόρτωσης

Διαβάστε περισσότερα

K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops

K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops K24 Ψηφιακά Ηλεκτρονικά 9: TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΧΝΟΛΟΓΙΚΟ Περιεχόμενα 1 2 3 Γενικά Ύστερα από τη μελέτη συνδυαστικών ψηφιακών κυκλωμάτων, θα μελετήσουμε

Διαβάστε περισσότερα

Πτυχιακή Εργασία Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές πλακέτες LP-2900 και DE2.

Πτυχιακή Εργασία Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές πλακέτες LP-2900 και DE2. ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Πτυχιακή Εργασία Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές

Διαβάστε περισσότερα

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

Διαβάστε περισσότερα

5 η Θεµατική Ενότητα : Μνήµη & Προγραµµατιζόµενη Λογική. Επιµέλεια διαφανειών: Χρ. Καβουσιανός

5 η Θεµατική Ενότητα : Μνήµη & Προγραµµατιζόµενη Λογική. Επιµέλεια διαφανειών: Χρ. Καβουσιανός 5 η Θεµατική Ενότητα : Μνήµη & Προγραµµατιζόµενη Λογική Επιµέλεια διαφανειών: Χρ. Καβουσιανός Μνήµη Η µνήµη καταλαµβάνει το µεγαλύτερο µέρος ενός υπολογιστικού συστήµατος Δύο τύποι: ROM - RAM RΟΜs CPU

Διαβάστε περισσότερα

Περιεχόμενα. Πρώτο Κεφάλαιο. Εισαγωγή στα Ψηφιακά Συστήματα. Δεύτερο Κεφάλαιο. Αριθμητικά Συστήματα Κώδικες

Περιεχόμενα. Πρώτο Κεφάλαιο. Εισαγωγή στα Ψηφιακά Συστήματα. Δεύτερο Κεφάλαιο. Αριθμητικά Συστήματα Κώδικες Πρώτο Κεφάλαιο Εισαγωγή στα Ψηφιακά Συστήματα 1.1 Αναλογικά και Ψηφιακά Σήματα και Συστήματα... 1 1.2 Βασικά Ψηφιακά Κυκλώματα... 3 1.3 Ολοκληρωμένα κυκλώματα... 4 1.4 Τυπωμένα κυκλώματα... 7 1.5 Εργαλεία

Διαβάστε περισσότερα

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

Διαβάστε περισσότερα

26-Nov-09. ΗΜΥ 210: Λογικός Σχεδιασμός, Χειμερινό Εξάμηνο Καταχωρητές 1. Διδάσκουσα: Μαρία Κ. Μιχαήλ

26-Nov-09. ΗΜΥ 210: Λογικός Σχεδιασμός, Χειμερινό Εξάμηνο Καταχωρητές 1. Διδάσκουσα: Μαρία Κ. Μιχαήλ ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Χειμερινό Εξάμηνο 2009 Καταχωρητές Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Περίληψη Καταχωρητές Παράλληλης

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΕΣ ΥΛΟΠΟΙΗΣΗΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΤΕΧΝΟΛΟΓΙΕΣ ΥΛΟΠΟΙΗΣΗΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΧΝΟΛΟΓΙΕΣ ΥΛΟΠΟΙΗΣΗΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Υλοποίηση ΥΛΟΠΟΙΗΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΚΡΙΤΑ ΣΤΟΙΧΕΙΑ ΟΛΟΚΛΗΡΩΜΕΝΑ ΚΥΚΛΩΜΑΤΑ ΑΝΑΔΙΑΜΟΡΦΩΣΙΜΟ ΥΛΙΚΟ Ο.Κ. ΕΙΔΙΚΟΥ ΣΚΟΠΟΥ (VLSI) FULL CUSTOM (Reconfigurable

Διαβάστε περισσότερα

Ψηφιακά Κυκλώματα (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Ψηφιακά Κυκλώματα (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ψηφιακά Κυκλώματα ( ο μέρος) ΜΥΥ-6 Εισαγωγή στους Η/Υ και στην Πληροφορική Ψηφιακά κυκλώματα Οι δύο λογικές τιμές, αντιστοιχούν σε ηλεκτρικές τάσεις Υλοποιούνται με τρανζίστορ ή διόδους: ελεγχόμενοι διακόπτες

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ᄃ Σχεδίαση Ψηφιακών Συστημάτων Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών

Διαβάστε περισσότερα

Άσκηση 3 Ένα νέο είδος flip flop έχει τον ακόλουθο πίνακα αληθείας : I 1 I 0 Q (t+1) Q (t) 1 0 ~Q (t) Κατασκευάστε τον πίνακα

Άσκηση 3 Ένα νέο είδος flip flop έχει τον ακόλουθο πίνακα αληθείας : I 1 I 0 Q (t+1) Q (t) 1 0 ~Q (t) Κατασκευάστε τον πίνακα Άσκηση Δίδονται οι ακόλουθες κυματομορφές ρολογιού και εισόδου D που είναι κοινή σε ένα D latch και ένα D flip flop. Το latch είναι θετικά ενεργό, ενώ το ff θετικά ακμοπυροδοτούμενο. Σχεδιάστε τις κυματομορφές

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019 Γ ΕΠΑΛ 14 / 04 / 2019 ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΘΕΜΑ 1 ο 1. Να γράψετε στο τετράδιό σας το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή ή τη λέξη ΛΑΘΟΣ, αν είναι λανθασμένη.

Διαβάστε περισσότερα

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Μονάδες Μνήμης και Διατάξεις Προγραμματιζόμενης Λογικής

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Μονάδες Μνήμης και Διατάξεις Προγραμματιζόμενης Λογικής Πανεπιστήμιο Πατρών Τμήμα Φυσικής Ψηφιακά Ηλεκτρονικά Μονάδες Μνήμης και Επιμέλεια Διαφανειών: Δ. Μπακάλης Πάτρα, Φεβρουάριος 2009 Μονάδες Μνήμης - Προγραμματιζόμενη Λογική Μια μονάδα μνήμης είναι ένα

Διαβάστε περισσότερα

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2 Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου Ενότητα 2 Τι είναι το PLC ΠΕΡΙΕΧΟΜΕΝΑ 2 Τι είναι το PLC. 2.1 Πλεονεκτήματα των PLC. 2.2 Η δομή ενός PLC. 2.3 Τα PLC της αγοράς. 2.4 Αρχή λειτουργίας ενός PLC.

Διαβάστε περισσότερα

Κεφάλαιο 14 ο. Γ. Τσιατούχας. VLSI Systems and Computer Architecture Lab. Σχεδιαστικές Μεθοδολογίες 2

Κεφάλαιο 14 ο. Γ. Τσιατούχας. VLSI Systems and Computer Architecture Lab. Σχεδιαστικές Μεθοδολογίες 2 ΚΥΚΛΩΜΑΤΑ VLSI Πανεπιστήμιο Ιωαννίνων Σχεδιαστικές Μεθοδολογίες VLSI Κυκλωμάτων Κεφάλαιο 14 ο Τμήμα Μηχανικών Η/Υ και Πληροφορικής Γ. Τσιατούχας ΚΥΚΛΩΜΑΤΑ VLSI Διάρθρωση VLSI Systems and Computer Architecture

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ 1.1 Εισαγωγή...11 1.2 Τα κύρια αριθμητικά Συστήματα...12 1.3 Μετατροπή αριθμών μεταξύ των αριθμητικών συστημάτων...13 1.3.1 Μετατροπή ακέραιων

Διαβάστε περισσότερα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

Διαβάστε περισσότερα

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο Διάλεξη 8 η : Μηχανές Πεπερασμένων Κaταστάσεων σε FPGAs

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο Διάλεξη 8 η : Μηχανές Πεπερασμένων Κaταστάσεων σε FPGAs ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 8 η :

Διαβάστε περισσότερα

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα καταστάσεων,

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 201 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17 ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ Μνήμες (Memory) - Είναι ημιαγώγιμα κυκλώματα που μπορούν να αποθηκεύσουν ένα σύνολο από δυαδικά ψηφία (bit). - Μια μνήμη αποθηκεύει λέξεις (σειρές από bit). - Σε κάθε

Διαβάστε περισσότερα

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ ΣΧΟΛΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ 1) Το παρακάτω κύκλωμα του σχήματος 1 είναι ένας καταχωρητής-ολισθητής

Διαβάστε περισσότερα

Σχεδίαση CMOS Ψηφιακών Ολοκληρωμένων Κυκλωμάτων

Σχεδίαση CMOS Ψηφιακών Ολοκληρωμένων Κυκλωμάτων Σχεδίαση CMOS Ψηφιακών Ολοκληρωμένων Κυκλωμάτων Αγγελική Αραπογιάννη Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Η λειτουργία RESET R IN OUT Εάν το σήμα R είναι λογικό «1» στην έξοδο

Διαβάστε περισσότερα

Παράδειγμα αντιστοίχισης κυκλώματος σε FPGA

Παράδειγμα αντιστοίχισης κυκλώματος σε FPGA Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών Παράδειγμα αντιστοίχισης κυκλώματος σε FPGA Γιώργος Δημητρακόπουλος με τη βοήθεια του Βασίλη Παπαευσταθίου Στο παράδειγμα αυτό χρησιμοποιώντας μια πολύ μικρή

Διαβάστε περισσότερα

Ψηφιακή Λογική και Σχεδίαση

Ψηφιακή Λογική και Σχεδίαση Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 26-7 Ψηφιακή Λογική και Σχεδίαση (σχεδίαση συνδυαστικών κυκλωμάτων) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Το τρανζίστορ

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 9. Tα Flip-Flop

ΑΣΚΗΣΗ 9. Tα Flip-Flop ΑΣΚΗΣΗ 9 Tα Flip-Flop 9.1. ΣΚΟΠΟΣ Η κατανόηση της λειτουργίας των στοιχείων μνήμης των ψηφιακών κυκλωμάτων. Τα δομικά στοιχεία μνήμης είναι οι μανδαλωτές (latches) και τα Flip-Flop. 9.2. ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ

Διαβάστε περισσότερα

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή 6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή Εισαγωγή Η σχεδίαση ενός ψηφιακού συστήµατος ως ακολουθιακή µηχανή είναι εξαιρετικά δύσκολη Τµηµατοποίηση σε υποσυστήµατα µε δοµικές µονάδες:

Διαβάστε περισσότερα

Μνήμη και Προγραμματίσιμη Λογική

Μνήμη και Προγραμματίσιμη Λογική Μνήμη και Προγραμματίσιμη Λογική Η μονάδα μνήμης είναι ένα στοιχείο κυκλώματος στο οποίο μεταφέρονται ψηφιακές πληροφορίες προς αποθήκευση και από το οποίο μπορούμε να εξάγουμε αποθηκευμένες πληροφορίες

Διαβάστε περισσότερα

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

Διαβάστε περισσότερα

ε. Ένα κύκλωμα το οποίο παράγει τετραγωνικούς παλμούς και απαιτείται εξωτερική διέγερση ονομάζεται ασταθής πολυδονητής Λ

ε. Ένα κύκλωμα το οποίο παράγει τετραγωνικούς παλμούς και απαιτείται εξωτερική διέγερση ονομάζεται ασταθής πολυδονητής Λ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΣΑΒΒΑΤΟ 16/04/2016 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ (ΣΥΣΤΗΜΑΤΑ ΨΗΦΙΑΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ) ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΠΕΝΤΕ (5) ΕΝΔΕΙΚΤΙΚΕΣ

Διαβάστε περισσότερα

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Καταχωρητές και Μετρητές 2. Επιμέλεια Διαφανειών: Δ.

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Καταχωρητές και Μετρητές 2. Επιμέλεια Διαφανειών: Δ. Πανεπιστήμιο Πατρών Τμήμα Φυσικής Ψηφιακά Ηλεκτρονικά Καταχωρητές και Μετρητές Επιμέλεια Διαφανειών: Δ. Μπακάλης Πάτρα, Φεβρουάριος 2009 Εισαγωγή Καταχωρητής: είναι μία ομάδα από δυαδικά κύτταρα αποθήκευσης

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 3/02/2019 ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ ΘΕΜΑ 1 ο 1. Να γράψετε στο τετράδιό σας το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή ή τη λέξη ΛΑΘΟΣ, αν είναι

Διαβάστε περισσότερα

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα επαναληπτικής εξέτασης 2016 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα καταστάσεων,

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 Τεχνολογία Ι Θεωρητικής Κατεύθυνσης Τεχνικών Σχολών Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Ακολουθιακός Κώδικας Παρασκευάς Κίτσος http://diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Tμήμα Μηχανικών Πληροφορικής ΤΕ E-mail: pkitsos@teimes.gr

Διαβάστε περισσότερα

7 η διάλεξη Ακολουθιακά Κυκλώματα

7 η διάλεξη Ακολουθιακά Κυκλώματα 7 η διάλεξη Ακολουθιακά Κυκλώματα 1 2 3 4 5 6 7 Παραπάνω βλέπουμε ακολουθιακό κύκλωμα σχεδιασμένο με μανταλωτές διαφορετικής φάσης. Παρατηρούμε ότι συνδυαστική λογική μπορεί να προστεθεί μεταξύ και των

Διαβάστε περισσότερα

Δομή Ηλεκτρονικού υπολογιστή

Δομή Ηλεκτρονικού υπολογιστή Δομή Ηλεκτρονικού υπολογιστή Η κλασσική δομή του μοντέλου που πρότεινε το 1948 ο Von Neumann Κεντρική Μονάδα Επεξεργασίας Είσοδος Αποθήκη Αποθήκη - Έξοδος Εντολών Δεδομένων Κλασσικό μοντέλο Von Neumann

Διαβάστε περισσότερα

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 121 ΕΡΓΑΣΤΗΡΙΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΝΗΜΗ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΖΟΜΕΝΗ ΛΟΓΙΚΗ ΥΠΕΥΘΥΝΟΣ ΕΡΓΑΣΤΗΡΙΩΝ: ΧΡΥΣΟΣΤΟΜΟΣ ΧΡΥΣΟΣΤΟΜΟΥ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2001 ΕΠΛ 121 ΕΡΓΑΣΤΗΡΙΑ ΨΗΦΙΑΚΩΝ

Διαβάστε περισσότερα

Κεφάλαιο 6. Σύγχρονα και ασύγχρονα ακολουθιακά κυκλώματα

Κεφάλαιο 6. Σύγχρονα και ασύγχρονα ακολουθιακά κυκλώματα Κεφάλαιο 6 Σύγχρονα και ασύγχρονα ακολουθιακά κυκλώματα 6.1 Εισαγωγή Η εκτέλεση διαδοχικών λειτουργιών απαιτεί τη δημιουργία κυκλωμάτων που μπορούν να αποθηκεύουν πληροφορίες, στα ενδιάμεσα στάδια των

Διαβάστε περισσότερα

Κεφάλαιο 7 ο. Γ. Τσιατούχας. VLSI Technology and Computer Architecture Lab. Ακολουθιακή Λογική 2

Κεφάλαιο 7 ο. Γ. Τσιατούχας. VLSI Technology and Computer Architecture Lab. Ακολουθιακή Λογική 2 ΚΥΚΛΩΜΑΤΑ VLSI Ακολουθιακή Λογική Κεφάλαιο 7 ο Γ. Τσιατούχας ΚΥΚΛΩΜΑΤΑ VLSI Διάρθρωση 1. Δισταθή κυκλώματα Μεταστάθεια 2. Μανδαλωτές 3. Flip Flops Flops 4. Δομές διοχέτευσης 5. Διανομή ρολογιού 6. Συγχρονισμός

Διαβάστε περισσότερα

Ψηφιακά Συστήματα. 8. Καταχωρητές

Ψηφιακά Συστήματα. 8. Καταχωρητές Ψηφιακά Συστήματα 8. Καταχωρητές Βιβλιογραφία 1. Φανουράκης Κ., Πάτσης Γ., Τσακιρίδης Ο., Θεωρία και Ασκήσεις Ψηφιακών Ηλεκτρονικών, ΜΑΡΙΑ ΠΑΡΙΚΟΥ & ΣΙΑ ΕΠΕ, 2016. [59382199] 2. Floyd Thomas L., Ψηφιακά

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ ΚΑΙ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α A ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ ΟΜΑ Α Β ) ΤΡΙΤΗ 28 ΙΟΥΝΙΟΥ 2016

Διαβάστε περισσότερα

, PAL PA, ΜΝΗΜΕΣ ROM)

, PAL PA, ΜΝΗΜΕΣ ROM) 10 Εό Ενότητα ΔΙΑΤΑΞΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΖΟΜΕΝΗΣ ΛΟΓΙΚΗΣ (PLA, PAL, ΜΝΗΜΕΣ ROM) Γενικές Γραμμές PLA PAL Μνήμες ROM Βλέπε: Βιβλίο Wakerly Παράγραφοι 5.3.1, 5.3.2, 10.1, 10.1.1, 10.1.4 Βιβλίο Mano Παράγραφοι 7.5,

Διαβάστε περισσότερα

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Προγραμματιζόμενη Λογική Γιατί;

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Προγραμματιζόμενη Λογική Γιατί; ΗΜΥ 20: Σχεδιασμός Ψηφιακών Συστημάτων Αυγ- ΗΜΥ-20: Σχεδιασμός Ψηφιακών Συστημάτων Συνδυαστικές Λογικές ιατάξεις Διδάσκουσα: Μαρία Κ. Μιχαήλ Περίληψη Λογικές ιατάξεις (Programmable Logic Devices PLDs)

Διαβάστε περισσότερα

Ψηφιακή Σχεδίαση Ενότητα 11:

Ψηφιακή Σχεδίαση Ενότητα 11: Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ψηφιακή Σχεδίαση Ενότητα 11: Μνήμη και Προγραμματίσιμη Λογική Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

ΘΕΜΑ : ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ. ΔΙΑΡΚΕΙΑ: 1 περίοδος

ΘΕΜΑ : ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ. ΔΙΑΡΚΕΙΑ: 1 περίοδος ΘΕΜΑ : ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΔΙΑΡΚΕΙΑ: 1 περίοδος Σε αυτό το μάθημα θα μάθετε να: 1. Αναφέρετε τα διάφορα είδη μνήμης και συσκευές που τις περιέχουν. 2. Περιγράφετε τα σημαντικά χαρακτηριστικά

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2017-2018 Λογικές Πύλες, Στοιχεία Μνήμης, Συνδυαστική Λογική και Κυματομορφές ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 1 Τα βασικά της

Διαβάστε περισσότερα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

Διαβάστε περισσότερα

Κυκλώματα αποθήκευσης με ρολόι

Κυκλώματα αποθήκευσης με ρολόι Κυκλώματα αποθήκευσης με ρολόι Latches και Flip-Flops Γιώργος Δημητρακόπουλος Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης 1 Γιατί χρειαζόμαστε τα ρολόγια Συνδιαστική λογική Η έξοδος εξαρτάται μόνο

Διαβάστε περισσότερα

Αρχιτεκτονική Μνήμης

Αρχιτεκτονική Μνήμης ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Αρχιτεκτονική Μνήμης Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter

Διαβάστε περισσότερα

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 17: Αναδιατασσόµενη Λογική Προγραµµατιζόµενο Υλικό

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 17: Αναδιατασσόµενη Λογική Προγραµµατιζόµενο Υλικό ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 17: Αναδιατασσόµενη Λογική Προγραµµατιζόµενο Υλικό ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy) Προγραµµατιζόµενες

Διαβάστε περισσότερα

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος Κλήμης Νταλιάνης Λέκτορας Π.Δ.407/80 Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Αρχιτεκτονική

Διαβάστε περισσότερα

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ 100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ 1) Να μετατρέψετε τον δεκαδικό αριθμό (60,25) 10, στον αντίστοιχο δυαδικό 11111,11 111001,01 111100,01 100111,1 111100,01 2)

Διαβάστε περισσότερα

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

Διαβάστε περισσότερα

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 6 η :

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΜΙΚΡΟΗΛΕΚΤΡΟΝΙΚΗ - VLSI Ενότητα: Συνδιαστικά κυκλώματα, βασικές στατικές λογικές πύλες, σύνθετες και δυναμικές πύλες Κυριάκης

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 3 : Μια άποψη του κορυφαίου επιπέδου λειτουργίας και διασύνδεσης του υπολογιστή Καρβούνης Ευάγγελος Η έννοια

Διαβάστε περισσότερα

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΕΦΑΡΜΟΓΕΣ ΚΑΤΑΧΩΡΗΤΩΝ ΟΛΙΣΘΗΣΗΣ

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΕΦΑΡΜΟΓΕΣ ΚΑΤΑΧΩΡΗΤΩΝ ΟΛΙΣΘΗΣΗΣ ΣΧΟΛΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΕΦΑΡΜΟΓΕΣ ΚΑΤΑΧΩΡΗΤΩΝ ΟΛΙΣΘΗΣΗΣ ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ Στο διπλανό σχήμα φαίνεται το διάγραμμα ακροδεκτών

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ασύγχρονη σειριακή

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016 ΤΕΧΝΟΛΟΓΙΑ (ΙΙ) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΠΡΑΚΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Τεχνολογία και

Διαβάστε περισσότερα

Σχεδιασμός Ψηφιακών Συστημάτων

Σχεδιασμός Ψηφιακών Συστημάτων ΗΜΥ 2: Σχεδιασμό Ψηφιακών Συστημάτων, Χειμερινό Εξάμηνο 27 Νοε-7 ΗΜΥ-2: Σχεδιασμός Ψηφιακών Συστημάτων Χειμερινό Εξάμηνο 27 Ακολουθιακά Κυκλώματα: Μανδαλωτές (Latches) και Flip-Flops Flops Διδάσκουσα:

Διαβάστε περισσότερα

Τεχνικές σχεδιασμού μονοπατιών ολίσθησης

Τεχνικές σχεδιασμού μονοπατιών ολίσθησης Τεχνικές σχεδιασμού μονοπατιών ολίσθησης (Scan Path Design Techniques) Περίγραμμα παρουσίασης Προβλήματα ελέγχου ορθής λειτουργίας ακολουθιακών κυκλωμάτων Μονοπάτι ολίσθησης (scan path) Στοιχεία μνήμης

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στην πληροφορική Ενότητα 4: Ψηφιακή Λογική, Άλγεβρα Boole, Πίνακες Αλήθειας (Μέρος B) Αγγελίδης Παντελής Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Διαβάστε περισσότερα

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

Διαβάστε περισσότερα

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET)

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 25-6 Το τρανζίστορ MOS(FET) πύλη (gate) Ψηφιακή και Σχεδίαση πηγή (source) καταβόθρα (drai) (σχεδίαση συνδυαστικών κυκλωμάτων) http://di.ioio.gr/~mistral/tp/comparch/

Διαβάστε περισσότερα

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης Θέμα 1ο (3 μονάδες)

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης Θέμα 1ο (3 μονάδες) Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2016 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το ανωτέρω διάγραμμα καταστάσεων,

Διαβάστε περισσότερα

Ενότητα ΑΡΧΕΣ ΑΚΟΛΟΥΘΙΑΚΗΣ ΛΟΓΙΚΗΣ LATCHES & FLIP-FLOPS

Ενότητα ΑΡΧΕΣ ΑΚΟΛΟΥΘΙΑΚΗΣ ΛΟΓΙΚΗΣ LATCHES & FLIP-FLOPS Ενότητα ΑΡΧΕΣ ΑΚΟΛΟΥΘΙΑΚΗΣ ΛΟΓΙΚΗΣ LATCHES & FLIP-FLOPS Γενικές Γραμμές Ακολουθιακή Λογική Μεταστάθεια S-R RLatch h( (active high h&l low) S-R Latch with Enable Latch Flip-Flop Ασύγχρονοι είσοδοι PRESET

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Στην 4 η εργαστηριακή άσκηση θα ασχοληθούμε με την ιεραρχική σχεδίαση. Συγκεκριμένα θα μάθουμε να σχεδιάζουμε απλές οντότητες τις οποίες

Διαβάστε περισσότερα

4.1 Θεωρητική εισαγωγή

4.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΥΑ ΙΚΟΣ ΑΘΡΟΙΣΤΗΣ-ΑΦΑΙΡΕΤΗΣ Σκοπός: Να µελετηθούν αριθµητικά κυκλώµατα δυαδικής πρόσθεσης και αφαίρεσης. Να σχεδιαστούν τα κυκλώµατα από τους πίνακες αληθείας

Διαβάστε περισσότερα

Εργαστήριο Ψηφιακών Κυκλωμάτων

Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD Χειμερινό Εξάμηνο 2009 2010 Design flow? ΗΥ220 University of Crete 2 Ροή Σχεδίασης (Design Flow) Requirements Verilog, VHDL

Διαβάστε περισσότερα

15 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

15 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α A ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΤΕΤΑΡΤΗ 18 ΙΟΥΝΙΟΥ 2014 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών 1 Οργάνωση υπολογιστών ΚΜΕ Κύρια Μνήμη Υποσύστημα εισόδου/εξόδου 2 Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) R1 R2 ΑΛΜ

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 1 : Οργάνωση και Αρχιτεκτονική υπολογιστών Καρβούνης Ευάγγελος Εισαγωγή Τεράστια ποικιλία προϊόντων ως προς

Διαβάστε περισσότερα

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές Εισαγωγή στο Arduino Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών Τι είναι Μικροελεγκτής; Ηλεκτρονική συσκευή που διαχειρίζεται ηλεκτρονικά

Διαβάστε περισσότερα

Κεφάλαιο 10 ο. Γ. Τσιατούχας. VLSI Systems and Computer Architecture Lab. Ακολουθιακή Λογική 2

Κεφάλαιο 10 ο. Γ. Τσιατούχας. VLSI Systems and Computer Architecture Lab. Ακολουθιακή Λογική 2 ΚΥΚΛΩΜΑΤΑ VLSI Πανεπιστήμιο Ιωαννίνων Ακολουθιακή Λογική Κεφάλαιο 10 ο Τμήμα Μηχανικών Η/Υ και Πληροφορικής Γ. Τσιατούχας ΚΥΚΛΩΜΑΤΑ VLSI Διάρθρωση 1. Δισταθή κυκλώματα Μεταευστάθεια 2. Μανδαλωτές 3. Flip

Διαβάστε περισσότερα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης i Στα σύγχρονα

Διαβάστε περισσότερα

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ & ΗΛΕΚΤΡΟΝΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ & μ-υπολογιστων ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ Θεωρητικό Μέρος Οι σειριακές λειτουργίες είναι πιο

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL 3.1 Εισαγωγή στα FLIP FLOP 3.1.1 Θεωρητικό Υπόβαθρο Τα σύγχρονα ακολουθιακά κυκλώματα με τα οποία θα ασχοληθούμε στο εργαστήριο των Ψηφιακών συστημάτων

Διαβάστε περισσότερα