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

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

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

Transcript

1 ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ ΣΧΕΔΙΑΣΗΣ ΚΑΙ ΑΝΑΛΥΣΗΣ ΣΥΝΔΥΑΣΤΙΚΩΝ ΚΑΙ ΑΚΟΛΟΥΘΙΑΚΩΝ ΣΥΓΧΡΟΝΩΝ ΚΑΙ ΑΣΥΓΧΡΟΝΩΝ ΨΗΦΙΑΚΩΝ ΚΥΚΛΩΜΑΤΩΝ Πτυχιακή Εργασία Αντώνιου Γ. Βαλαή. Επιβλέπων Καθηγητής: Δρ. Σπυρίδων Καζαρλής.

2 Περιεχόμενα 1. Εισαγωγή - Σκοπός Εργασίας Βασικά Ψηφιακών Κυκλωμάτων Ανάλυση πυλών Οικογένειες Ψηφιακών Κυκλωμάτων Συνδυαστικά Λογικά Κυκλώματα Ακολουθιακά Λογικά Κυκλώματα Ο ΠΡΟΣΟΜΟΙΩΤΗΣ Λειτουργία του Πυρήνα της Προσομοίωσης Εύρεση της Συνδεσμολογίας των πυλών Ο Πίνακας Προσομοίωσης Υπολογισμός των εξόδων του κυκλώματος Βήμα προς βήμα προσομοίωση Μετρήσεις και Στατιστικά της Απόδοσης του Πυρήνα Προσομοίωσης Το Γραφικό Περιβάλλον Χρήση της εφαρμογής Τεχνική περιγραφή του γραφικού περιβάλλοντός Πως δημιουργούνται τα γραφικά στην εφαρμογή Διαχείριση γεγονότων ( event handling ) Ο χειριστής (controller) του UI Το μοντέλο ( Doc ) της εφαρμογής Τα δεδομένα της εφαρμογής Συμπεράσματα Προοπτικές Επέκτασης Κυκλώματα που προσομοιώθηκαν για τον έλεγχο της ορθότητας της εφαρμογής Βιβλιογραφία Παράρτημα Πηγαίος κώδικας της εφαρμογής / 146

3 1. Εισαγωγή - Σκοπός Εργασίας Η εργασία δημιουργήθηκε από τον Αντώνιο Βαλαή, με επιβλέποντα καθηγητή τον Δρ. Σπυρίδων Καζαρλή, με σκοπό την δημιουργία οπτικού περιβάλλοντος για την βιβλιοθήκη προσομοιωτή ψηφιακών κυκλωμάτων, η οποία υλοποιήθηκε από τους Δρ. Σπυρίδων Καζαρλή, Δρ. Ιωάννη Καλόμοιρο, Δρ. Αναστάσιο Μπαλουκτσή, Δρ. Πάρι Μαστοροκώστα, Δρ. Βασίλειο Πετρίδη, Βασίλειο Καλαϊτζή και Αντώνιο Βαλαή, στα πλαίσια του ερευνητικού έργου ΑΡΧΙΜΗΔΗΣ ΙΙΙ, υποέργο 10, του Τεχνολογικού Εκπαιδευτικού Ιδρύματος Κεντρικής Μακεδονίας, συγχρηματοδοτούμενο από την Ευρωπαϊκή Ένωση. Ο προσομοιωτής χρησιμοποιήθηκε ως συνάρτηση ποιότητας ( fitness function ) σε γενετικό αλγόριθμο, για την εύρεση και εξέλιξη βέλτιστων ψηφιακών διατάξεων. Τα αποτελέσματα της έρευνας, οδήγησαν την ομάδα στην δημιουργία έξι (6) δημοσιεύσεων, σε επιστημονικά συνέδρια και περιοδικά με κριτές. Στο παράρτημα 1 του εγγράφου, υπάρχουν οι αναφορές στις δημοσιεύσεις. Το λογισμικό που παρουσιάζεται στο παρόν έγγραφο, έχει ως στόχο να παρέχει την ευκολία στον χρήστη, να σχεδιάζει συνδυαστικά καθώς και ακολουθιακά σύγχρονα και ασύγχρονα ψηφιακά κυκλώματα, μικρού και μεγάλου μεγέθους. Επίσης να μπορεί να προσομοιώνει την συμπεριφορά των κυκλωμάτων σε πραγματικό χρόνο και σε διακριτά βήματα, καθώς και να μπορεί να αποθηκεύει και να ανακτά τα κυκλώματα που σχεδιάζονται σε μορφή εύκολα επεξεργάσιμη από τον χρήστη. Το λογισμικό της εργασίας, υλοποιήθηκε μέσω του ολοκληρωμένου περιβάλλον ανάπτυξης Microsoft Visual Studio 2010 [1] και η συγγραφή του πηγαίου κώδικα έγινε με τη γλώσσα προγραμματισμού C++ [2] και την βιβλιοθήκη Microsoft Foundation Classes (MFC) [1]. Το παρών έγγραφο και η παρουσίαση του συντάχθηκε με την βοήθεια των εργαλείων της σουίτας Microsoft Office [3]. 2 / 146

4 Ευχαριστίες Θα ήθελα να εκφράσω την μεγάλη ευγνωμοσύνη που νιώθω απέναντι στην οικογένεια μου και συγκεκριμένα στον Γεώργιο Βαλαή, στη Στυλιανή Βατάλη-Βαλαή και Παναγιώτα Βαλαή για την μεγάλη ψυχολογική υποστήριξη που με παρείχαν κατά τα έτη των σπουδών μου, καθώς χωρίς αυτή δεν θα τα είχα καταφέρει ποτέ. Ένα μεγάλο ευχαριστώ σε όλο το διδακτικό προσωπικό του τμήματος Μηχανικών Πληροφορικής του ΤΕΙΚΜ και συγκεκριμένα στον Δρ. Σπυρίδων Καζαρλή και Δρ. Ιωάννη Καλόμοιρο, οι οποίοι με βοηθήσαν σε μεγάλο βαθμό να πλησιάσω τον υπέροχο κόσμο της επιστήμης μας κατά ένα βήμα πιο κοντά. 3 / 146

5 2. Βασικά Ψηφιακών Κυκλωμάτων Ένα ψηφιακό σήμα είναι μία συνάρτηση που μπορεί να πάρει μόνο διακριτές τιμές. Οι διακριτές καταστάσεις των ψηφιακών σημάτων εκφράζονται σαν το καρτεσιανό γινόμενο ενός πεπερασμένου πλήθους ανεξαρτήτων συνιστωσών η κάθε μία από τις οποίες παίρνει μόνο δύο τιμές : υψηλή και χαμηλή. Η μαθηματική μας παιδεία και ο φυσικός κόσμος μας παρέχουν εξοικείωση με τις συνεχείς μεταβλητές και τον αλγεβρικό - υπολογιστικό χειρισμό τους. Όμως ο ψηφιακός κόσμος είναι ιδιαίτερα πρόσφορος για ένα πρακτικό λόγο: οι αλγεβρικές πράξεις αναλογικών ποσοτήτων μπορούν να υλοποιηθούν μέσω λογικών πράξεων των αντιστοίχων ψηφιακών προσεγγίσεών τους. Επίσης οι διατάξεις που υλοποιούν τις λογικές πράξεις είναι εύκολα και φθηνά υλοποιήσιμες. Τα ψηφιακά κυκλώματα είναι ένα σύνολο από ψηφιακές ( λογικές ) πύλες, συνδεδεμένες μεταξύ τους με τέτοιο τρόπο ώστε να παράγουν το επιθυμητό αποτέλεσμα του σχεδιαστή. Οι λογικές πύλες είναι ηλεκτρονικά κυκλώματα που επιτελούν διάφορες λογικές πράξεις. Οι λογικές πράξεις και η άλγεβρα που διέπει αυτές μελετήθηκε από τον Άγγλο μαθηματικό George Boole που εισήγε την αρχή: «όλες ο προτάσεις μπορούν να αποδειχθούν με σωστές απαντήσεις σε πεπερασμένο αριθμό ερωτήσεων τύπου αληθές - ψευδές». Τα ψηφιακά κυκλώματα αποτελούν έναν ταχέως εξελισσόμενο τομέα της τεχνολογίας και χρησιμοποιούνται στα περισσότερα νέα καταναλωτικά προϊόντα, το βιομηχανικό εξοπλισμό, τις εφαρμογές ελέγχου, τη διαχείριση γραφείου και τον ιατρικό, στρατιωτικό και επικοινωνιακό εξοπλισμό. Η αυξανόμενη χρήση των ψηφιακών κυκλωμάτων είναι αποτέλεσμα της ανάπτυξης φθηνών ολοκληρωμένων κυκλωμάτων και της εξάπλωσης των εφαρμογών της τεχνολογίας των υπολογιστών. Οι λογικές πύλες ( logic gates ) αποτελούν τις βασικές δομικές μονάδες των ψηφιακών συστημάτων. Οι λογικές πύλες λειτουργούν με δυαδικούς αριθμούς και έτσι αναφέρονται ως δυαδικές λογικές πύλες ( binary logic gates ). Οι τάσεις που χρησιμοποιούνται στις λογικές πύλες έχουν είτε μια υψηλή τιμή (HIGH), είτε μία χαμηλή τιμή (LOW). Συνήθως η τάση HIGH αντιστοιχεί στο δυαδικό αριθμό 1 και η τάση LOW στο δυαδικό αριθμό 0. 4 / 146

6 2.1. Ανάλυση πυλών Στη συνέχεια θα αναλύσουμε τις πύλες που είναι ευρέως χρησιμοποιήσιμες από όλους τους σχεδιαστές ψηφιακών κυκλωμάτων και είναι επίσης διαθέσιμες από τον προσομοιωτή που παρουσιάζεται στην εργασία αυτή. Η ΠΥΛΗ AND Η πύλη AND υλοποιεί την πράξη του λογικού ΚΑΙ, που μπορεί να λεχθεί με την έκφραση «όλα ή τίποτα». Το κύκλωμα του Σχήματος δείχνει την ιδέα της πύλης AND. Η έξοδος Ζ, θα παρέχει τάση μόνον όταν ΚΑΙ οι δύο είσοδοι ( X, Υ ) έχουν τάση. Όλοι οι δυνατοί συνδυασμοί των εισόδων Χ και Υ αναγράφονται στο Σχήμα Ο πίνακας αυτού του σχήματος ονομάζεται πίνακας αληθείας ( truth table ). Ο πίνακας αληθείας δείχνει ότι η έξοδος Ζ θα ενεργοποιηθεί ( δηλαδή θα υπάρξει τάση ) μόνος όταν και οι δύο είσοδοι έχουν τάση (δηλαδή στην περίπτωση Χ = 1 και Υ = 1). Το τυπικό σύμβολο της λογικής πύλης AND εικονίζεται στο Σχήμα Το σύμβολο αυτό σημειώνει τις δύο εισόδους ως Χ και Υ. Η έξοδος σημειώνεται ως Ζ. Αυτό είναι το σύμβολο της πύλης AND δύο εισόδων. Σχήμα Σχήμα / 146

7 Η ΠΥΛΗ OR Η πύλη OR υλοποιεί την πράξη του λογικού Η, που μπορεί να λεχθεί με την έκφραση «ένα ή όλα». Το κύκλωμα του Σχήματος δείχνει την ιδέα της πύλης OR. Η έξοδος Ζ, θα παρέχει τάση μόνον όταν υπάρχει τάση είτε στην είσοδο Χ, είτε στην είσοδο Υ. Όλοι οι δυνατοί συνδυασμοί των εισόδων Χ και Υ αναγράφονται στο Σχήμα Ο πίνακας αληθείας επεξηγεί τη λειτουργία της συνάρτησης OR. Το τυπικό σύμβολο της λογικής πύλης OR, εικονίζεται στο Σχήμα Παρατηρούμε το διαφορετικό σχήμα του συμβόλου της πύλης OR. Σχήμα Σχήμα Η ΠΥΛΗ ΝΟΤ Η πύλη NOT έχει την ονομασία αντιστροφέας ( inverter ). Η πύλη αυτή είναι μία ιδιαίτερη πύλη, καθώς έχει μία έξοδο, αλλά μόνο μία είσοδο. Στο Σχήμα εικονίζεται το λογικό σύμβολο της πύλης NOT, καθώς και ο πίνακας αληθείας και στο Σχήμα φαίνεται η ιδέα της πύλης NOT. Η πύλη NOT, παρέχει τάση στην έξοδο της μόνο όταν δεν υπάρχει τάση στην είσοδο της και αντιθέτως, όταν η είσοδο της έχει τάση, τότε η έξοδος της δεν παρουσιάζει τάση. Για αυτό το λόγο ονομάστηκε inverter, δηλαδή εκτελεί την λογική πράξη της αντιστροφής. Σχήμα Σχήμα / 146

8 Η ΠΥΛΗ NAND Η λογική της πύλης NAND, είναι μία πύλη AND όπου στην έξοδο της έχουμε συνδέσει μια πύλη NOT. Έτσι η είσοδοι Χ και Υ, υφίστανται την πράξη AND και το λογικό αυτό γινόμενο αντιστρέφεται στη συνέχεια από την πύλη NOT. Για αυτό η πύλη λέγεται NOT-AND ή NAND. Το τυπικό σύμβολο της πύλης NAND εικονίζεται στο Σχήμα Η ιδέα της πύλης NAND φαίνεται στο Σχήμα Η πύλη NAND αποτελεί παραδοσιακά τη πύλη γενικής χρήσεως ( universal gate ) στα ψηφιακά κυκλώματα και χρησιμοποιείται ευρέως στα περισσότερα ψηφιακά συστήματα, λόγο πως η κατασκευή της είναι η πιο οικονομική από τις άλλες πύλες. Παρατηρούμε στον πίνακα αληθείας της πύλης NAND, ότι η πύλη παρέχει τάση στην έξοδο, μόνο όταν κάποια από τις εισόδους της δεν έχει τάση. Σχήμα Η ΠΥΛΗ NOR Σχήμα Η πύλη NOR, ακολουθεί την ίδια λογική συνδεσμολογία δύο πυλών, με αυτή της πύλης NAND, μόνο που στην περίπτωση της NOR πύλης, η πύλη NOT τροφοδοτείται από μια πύλη OR. Έτσι η πύλη NOR, παρέχει τάση στην έξοδο μόνο στην περίπτωση όπου και οι δύο είσοδοι δεν έχουν τάση, δηλαδή ο πίνακας αληθείας είναι το συμπλήρωμα του πίνακα αληθείας της πύλης OR. Για αυτό τον λόγο η πύλη αυτή λέγεται NOT-OR ή NOR. Το τυπικό σύμβολο της πύλης NOR εικονίζεται στο Σχήμα Η ιδέα της πύλης NOR φαίνεται στο Σχήμα Σχήμα / 146

9 Σχήμα Η ΠΥΛΗ XOR Η πύλη αποκλειστικού OR ( exclusive OR ) μπορεί να λεχθεί ότι εκτελεί τη λειτουργία «μόνον ένα από όλα». Ο όρος αποκλειστικό OR αναφέρεται συντομογραφικά ως XOR ( exclusive -OR ). Ο πίνακας αληθείας της συνάρτησης XOR φαίνεται στο Σχήμα Εάν εξετάσουμε προσεκτικά, θα δούμε ότι ο πίνακας αληθείας είναι παρόμοιος με αυτόν της πύλης OR, με τη διαφορά ότι όταν οι δύο είσοδοι έχουν τάση, η πύλη XOR δεν παρέχει τάση στην έξοδο. Με άλλα λόγια, η πύλη XOR μπορεί να θεωρηθεί ως ένα κύκλωμα που ελέγχει εάν ο αριθμός των μονάδων στις εισόδους είναι περιττός αριθμός. Η πύλη XOR μπορεί να δημιουργηθεί χρησιμοποιώντας πύλες AND, OR, και NOT. Σχήμα Η ΠΥΛΗ XNOR Η έξοδος μίας πύλης XOR, μπορεί να αντιστραφεί με την βοήθεια μίας πύλης NOT. Η έξοδος του αντιστροφέα αποτελεί τη συνάρτηση της πύλης XNOR ( exclusive NOR ). Το τυπικό λογικό σύμβολο μίας πύλης XNOR φαίνεται στο Σχήμα Παρατηρούμε ότι πρόκειται για το λογικό σύμβολο της πύλης XOR, με την προσθήκη ενός κύκλου αντιστροφής Σχήμα στην έξοδο. Η πύλη XNOR, παρέχει τάση στην έξοδο της όταν οι τάσεις στις δύο εισόδους της είναι όμοιες. 8 / 146

10 2.2. Οικογένειες Ψηφιακών Κυκλωμάτων Συνδυαστικά Λογικά Κυκλώματα Τα συνδυαστικά (combinational) λογικά κυκλώματα αποτελούνται από λογικές πύλες και οι τάσεις στις εξόδους των κυκλωμάτων αυτών, εξαρτώνται από την παρούσα κατάσταση και μόνο, των τάσεων στις εισόδους του κυκλώματος. Είναι γνωστό ότι οι είσοδοι και η έξοδος στα λογικά κυκλώματα είναι ηλεκτρικά σήματα με δύο στάθμες, την υψηλή (HIGH) και τη χαμηλή (LOW), οι οποίες συμβολίζονται με τα δυαδικά ψηφία (bits) 1 και 0 αντίστοιχα. Ένα από τα πιο διαδεδομένα συνδυαστικά κυκλώματα είναι αυτό του πλήρη αθροιστή ( full adder ) το οποίο κύκλωμα βλέπουμε στο Σχήμα Παρατηρούμε πως αποτελείται από δύο κυκλώματα ημιαθροιστών ( half adder ) ( σκιαγραφημένες περιοχές του σχήματος ) των οποίων οι έξοδοι των κρατουμένων τροφοδοτούν μία πύλη OR. Η λογική του πλήρη αθροιστή, είναι πως έχοντας δύο ψηφία ( Α, Β ) και ένα ενδεχομένως κρατούμενο ( C ), εκτελούμε την πράξη της πρόσθεσης στα δύο αυτά ψηφία με τους κανόνες του δυαδικού Σχήμα συστήματος αρίθμησης [2]. Ο πίνακας αληθείας του κυκλώματος φαίνεται στο Σχήμα Είναι εύκολα αντιληπτό, πως στο συγκεκριμένο κύκλωμα οι έξοδοι εξαρτώνται μόνο από την παρούσα κατάσταση των εισόδων του κυκλώματος. Για αυτό τον λόγο το κύκλωμα χαρακτηρίζεται ως συνδυαστικό κύκλωμα. Σχήμα / 146

11 Εδώ να αναφέρουμε πως, το πλήθος των δυαδικών ψηφίων που παράγει το κύκλωμα του πλήρη αθροιστή είναι 16. Αυτό βγαίνει από την συνάρτηση : Π = 2 Ε ε Π, πλήθος ψηφίων που παρήχθησαν Ε, πλήθος ψηφίων στην είσοδο ε, πλήθος ψηφίων στην έξοδο Ακολουθιακά Λογικά Κυκλώματα Ακολουθιακό κύκλωμα είναι αυτό που η επόμενη κατάσταση του (η έξοδός του) εξαρτάται από τις εισόδους του και την παρούσα έξοδο του. Αυτό είναι αποτέλεσμα των αναδράσεων στις εξόδους κάποιων πυλών που περιέχει το κύκλωμα. Τα ακολουθιακά κυκλώματα «θυμούνται» μέσω της σύνδεσης της ανάδρασης. Δύο είναι οι κύριες κατηγορίες των ακολουθιακών κυκλωμάτων: Ασύγχρονα: Αλλάζουν κατάσταση σύμφωνα με τις αλλαγές των εισόδων τους. Απαιτούνται ειδικές τεχνικές σχεδιασμού. Σύγχρονα: Τα σήματα ανάδρασης διακόπτονται από καταχωρητές που σκανδαλίζονται από παλμούς ρολογιού. Συνεπώς η κατάστασή του κυκλώματος αλλάζει σύμφωνα με τους παλμούς του ρολογιού. Η κατάσταση του κυκλώματος ορίζεται από το περιεχόμενο των στοιχείων της μνήμης. Το πιο διαδεδομένο και απλό ακολουθιακό κύκλωμα είναι αυτό του μανδαλωτή ( Latch ). Ο μανδαλωτής είναι ένα ασύγχρονο ακολουθιακό κύκλωμα και υλοποιείται με δύο πύλες NAND ή NOR και κατάλληλη ανάδραση. Η έξοδός του μπορεί να λάβει δύο καταστάσεις (0 ή 1) και μπορεί να αποθηκεύσει 1 bit δεδομένα. To Σχήμα μας δείχνει το κύκλωμα του μανδαλωτή με πύλες NOR. Στο Σχήμα φαίνεται ο πίνακας αληθείας του κυκλώματος. Σχήμα Σχήμα O μανδαλωτής ή αλλιώς το SR-Latch, είναι η βάση για τα περισσότερα ακολουθιακά κυκλώματα, σύγχρονων και ασύγχρονων. Η υλοποίηση του με πύλες NAND ή NOR, είναι επιλογή του σχεδιαστή. Μερικά από τα κυκλώματα που 10 / 146

12 ενθυλακώνουν το SR-Latch είναι: το σύγχρονο SR flip flop, το D flip flop, το T flip flop, το JK flip flop. Λόγο πως η έξοδος του κυκλώματος εξαρτάται από την προηγούμενη κατάσταση του, στην πράξη ο μανδαλωτής περιέχει και μία ακόμα είσοδο (PRE-SET), η οποία ορίζει την αρχική κατάσταση των εξόδων του κυκλώματος, πριν αυτό τεθεί σε λειτουργία. 3. Ο ΠΡΟΣΟΜΟΙΩΤΗΣ Ο προσομοιωτής χωρίζεται σε τρία στάδια ( Σχήμα 3.1 ). Στο πρώτο στάδιο ο χρήστης σχεδιάζει το κύκλωμα που επιθυμεί μέσω του γραφικού περιβάλλοντος της εφαρμογής. Στο δεύτερο στάδιο, εφόσον ο χρήστης έχει ολοκληρώσει την σχεδίαση του και δώσει την εντολή να ξεκινήσει η προσομοίωση, ο πυρήνας της προσομοίωσης αναλύει τη σχεδίαση του χρήστη, εκτελεί την προσομοίωση και έπειτα ενημερώνει το γραφικό περιβάλλον με τα αποτελέσματα. Στο τρίτο και τελευταίο στάδιο, το γραφικό περιβάλλον ενημερώνει την έξοδο του προσομοιωτή στον καμβά σχεδίασης και έτσι ο χρήστης μπορεί και βλέπει το αποτέλεσμα της προσομοίωσης. Το δεύτερο και τρίτο στάδιο, εκτελούνται συνεχόμενα, με αποτέλεσμα το πρόγραμμα να παρέχει την πραγματικού χρόνου αλληλεπίδραση με το χρήστη, ακόμα και εάν ο χρήστης τροποποιήσει κατά την προσομοίωση κάποια επιτρεπόμενα στοιχεία του κυκλώματος, π.χ μία από τις εισόδους του κυκλώματος. Σχήμα 3.1 Η ανάλυση των τριών αυτών σταδίων, για λόγους καλύτερης κατανόησης από τον αναγνώστη, θα ξεκινήσει από το δεύτερο στάδιο, αυτό του πυρήνα του προσομοιωτή ( back-end ) και έπειτα θα σχολιασθεί η λειτουργία του γραφικού περιβάλλοντος ( UI ). 11 / 146

13 3.1. Λειτουργία του Πυρήνα της Προσομοίωσης Ο αλγόριθμος της προσομοίωσης των ψηφιακών κυκλωμάτων, που υλοποιεί η παρούσα εργασία, μπορεί να κατηγοριοποιηθεί ως προσομοίωση διακριτού χρόνου. Ο αλγόριθμος είναι εμπνευσμένος από τις αρχές διάδοσης των ψηφιακών σημάτων που διαπερνούν τις λογικές πύλες και έτσι η διάδοση των σημάτων, προσομοιώνεται βήμαβήμα, χρησιμοποιώντας διακριτού χρόνου κβάντα. Τα χρονικά βήματα, παίζουν το ρόλο των συνεπών περιόδων ενός άτυπου εσωτερικού ρολογιού κατάστασης με την κάθε περίοδο του ιδανικού αυτού ρολογιού, να συμπίπτει με την χρονική καθυστέρηση μίας πύλης, που απαιτείται για να παραχθεί η έξοδος της, ενώ η μετάδοση των σημάτων μεταξύ των διασυνδέσεων των πυλών, θεωρείται ακαριαία Εύρεση της Συνδεσμολογίας των πυλών. O προσομοιωτής διαθέτει τα ακόλουθα, πέντε ειδών στοιχεία, με τον συνδυασμό τους να οδηγεί σε ένα ψηφιακό κύκλωμα. Ψηφιακή πύλη ( AND, OR, NOT ) Ψηφιακή παλμό-γεννήτρια Ψηφιακή είσοδος κυκλώματος ( Μπορεί να τεθεί σε κατάσταση High/Low ) Ψηφιακή έξοδος κυκλώματος ( Εμφανίζει την παρούσα τάση ενός στοιχείου ) Καλώδιο διασύνδεσης στοιχείων Καθώς ο χρήστης μπορεί να τοποθετήσει σε οποιοδήποτε σημείο του καμβά κάποιο στοιχείο, είναι απαραίτητη η ύπαρξη ενός αλγόριθμου που θα ανιχνεύει με ποιο τρόπο όρισε ο χρήστης την συνδεσμολογία των πυλών, των εισόδων και των εξόδων του κυκλώματος. Ο αλγόριθμος αυτός θα περιγράφει προτού γίνει αναφορά στον τρόπο που υπολογίζονται τα αποτελέσματα της προσομοίωσης. Το πρώτο βήμα στον αλγόριθμο εύρεσης συνδεσμολογίας, είναι να διαγράψει οποιαδήποτε άλλη σύνδεση έχει δημιουργηθεί σε προηγούμενο χρόνο, μεταξύ των πυλών, έτσι ώστε η ανίχνευση της συνδεσμολογίας να ξεκινήσει από το μηδέν. Στη συνέχεια ανιχνεύονται ποια καλώδια έχουν συνδεθεί, είτε άμεσα, είτε έμμεσα, σε εξόδους πυλών ( Έμμεση σύνδεση θεωρούμε όταν ένα καλώδιο συνδέετε με ένα άλλο καλώδιο, όπου το δεύτερο συνδέεται με μία πύλη. Το βάθος της έμμεσης σύνδεσης είναι απεριόριστο ). Τεχνικά, ο αλγόριθμος υλοποιείται ψάχνοντας ποια καλώδια έχουν την άκρη τους, δηλαδή τις συντεταγμένες ΚΧ, ΚΥ, πάνω στην άκρη της εξόδου της πύλης, δηλαδή τη συντεταγμένη ΠΧ, ΠΥ, με μία μικρή ανοχή. Έπειτα, ανιχνεύονται τα επόμενα καλώδια που είναι συνδεδεμένα σε σειρά με αυτό που έχει ήδη ανιχνευτεί, συνεχίζοντας την επανάληψη για όλα τα καλώδια. Εδώ να σημειωθεί πως η φύση του αλγορίθμου, μας ενημερώνει και για το εάν υπάρχει βραχυκύκλωμα στην συνδεσμολογία μας. Ας το αναλύσουμε με ένα μικρό παράδειγμα. 12 / 146

14 Έστω μία πύλη και τρία καλώδια όπως φαίνονται στο Σχήμα Ο αλγόριθμος αρχικά θα αναγνωρίσει πως το καλώδιο Κ1 και το καλώδιο Κ3, συνδέονται με την πύλη και έτσι το Κ1 και Κ3, περιέχουν πλέον την πληροφορία πως τροφοδοτούνται με τάση από την πύλη, καθώς και οι πρέπουσες άκρες ορίζονται συνδεδεμένες. Στο επόμενο βήμα, για το Κ1, θα διατρέξουμε όλα τα καλώδια, για να δούμε ποια από αυτά συνδέονται με το Κ1 στην μη συνδεδεμένη του άκρη και θα αναγνωριστεί πως το Κ2 συνδέετε με το Κ1, άρα το Κ2 τροφοδοτείται και αυτό από την πύλη, οπότε ορίζεται συνδεδεμένη η αντίστοιχη του άκρη. Στο τελευταίο βήμα για το παράδειγμα, θα γίνει η επόμενη επανάληψη, αλλά τώρα για το καλώδιο Κ2 και την δικιά του μη συνδεδεμένη άκρη. Ο αλγόριθμος θα ανακαλύψει πως το καλώδιο Κ2 συνδέεται με το Κ3, αλλά όταν θα πάμε να μαρκάρουμε το καλώδιο Κ3, να τροφοδοτείται και αυτό με τον ίδιο πάροχο τάσης του Κ2, διαπιστώνουμε πως το καλώδιο Κ3, τροφοδοτείται ήδη. (μαρκαρίστηκε στο 1 ο βήμα ) Οπότε υπάρχει βραχυκύκλωμα στην σχεδίαση. Σχήμα Έπειτα αναγνωρίζονται τα καλώδια που τροφοδοτούνται από τις εισόδους του κυκλώματος, πάλι είτε άμεσα είτε έμμεσα. Στο τέταρτο βήμα, βρίσκουμε για κάθε είσοδο της εκάστοτε πύλης, ποια καλώδια βρίσκονται σε επαφή με αυτή. Οπότε μετά το πέρας αυτού του σημείου, έχουμε παράγει την πληροφορία για το πώς είναι συνδεδεμένες οι πύλες μεταξύ τους, αλλά και πως είναι συνδεδεμένες με τις εισόδους του κυκλώματος. Ο τρόπος με τον οποίο μπορούμε και βγάζουμε το αυτό το πόρισμα, είναι πως κατά τα βήματα 2 & 3, τα καλώδια που έχουν ανιχνευτεί, μαρκάρονται και κουβαλάνε πλέον την πληροφορία για το ποιο στοιχείο ( πύλη ή είσοδος κυκλώματος ) τους παρέχει τάση. Οπότε κατά το τέταρτο βήμα του αλγόριθμου, εντοπίζοντας τα καλώδια που βρίσκονται πάνω σε κάποια είσοδο πύλης, γνωρίζουμε και ποιο στοιχείο θα παρέχει τάση στην εκάστοτε πύλη. Το τελευταίο βήμα του αλγόριθμου, ακολουθεί την ίδια λογική με το τέταρτο βήμα, αλλά εφαρμόζεται στα στοιχεία έξοδοι κυκλώματος. 13 / 146

15 3.3. Ο Πίνακας Προσομοίωσης Για λόγους βελτιστοποίησης της εκτέλεσης του προσομοιωτή, πρέπει να κατορθώσουμε, χαμηλή πολυπλοκότητα και ταχύτατη επεξεργασία των δεδομένων της προσομοίωσης. Για το λόγο αυτό, δημιουργούμε μία δομή πίνακα, δύο διαστάσεων, για να αποθηκεύουμε και να ανακτούμε όλη την πληροφορία που παράγεται κατά την προσομοίωση. Για να μπορέσουμε να αποθηκεύσουμε όλη την πληροφορία του κυκλώματος που σχεδιάστηκε από τον χρήστη, πάνω στον δυσδιάστατο πίνακα, πρέπει να γίνει μία κωδικοποίηση των αντικειμένων που διοχετεύει το γραφικό περιβάλλον στον πυρήνα του προσομοιωτή. Εφόσον η συνδεσμολογία των πυλών έχει ήδη αναγνωρισθεί και την πληροφορία για το πώς συνδέονται μεταξύ τους οι πύλες, την κουβαλάνε πλέον τα αντικείμενα των πυλών, σε αυτό το στάδιο από τα στοιχεία που προαναφέρθηκαν στο προηγούμενο κεφάλαιο, χρειαζόμαστε μόνο τις ψηφιακές πύλες. Το πρώτο βήμα είναι να μαρκαριστούν όλες οι πύλες με ένα κωδικό. Ο κωδικός αυτός εξυπηρετεί την γρήγορη αναζήτηση της πύλης πάνω στον πίνακα προσομοίωσης, καθώς ταυτίζεται με την θέση που θα κατέχει η πύλη, όπως θα αναλυθεί παρακάτω, στον πίνακα προσομοίωσης. Για τον αλγόριθμο, δεν έχει σημασία με ποια σειρά θα πάρουν οι πύλες τον κωδικό αυτό ή με ποια σειρά θα είναι ταξινομημένη η συλλογή των πυλών που θα λάβει ο πυρήνας από το γραφικό περιβάλλον, έκτος την περίπτωση των σύγχρονων κυκλωμάτων, όπου για λόγους υπολογιστικού κόστους, το ρολόι τοποθετείται πάντα στην πρώτη θέση του πίνακα και έτσι του δίδεται πάντα ο κωδικός μηδέν ( 0 ). Στην συνέχεια τοποθετούμε την πληροφορία των πυλών πάνω στον πίνακα. Ο δυσδιάστατος πίνακας, όπως φαίνεται στο Σχήμα 3.3.1, κατέχει τόσες γραμμές ως είναι και οι πύλες του κυκλώματος, ενώ οι στήλες του είναι σταθερού πλήθους, με την κάθε μία να κατέχει πληροφορία για την εκάστοτε πύλη. 1 η Είσοδος / Παροχέας 1 η Είσοδος/ Μέτρο Τάσης 2 η Είσοδος / Παροχέας 2 η Είσοδος/ Μέτρο Τάσης Τύπος Πύλης Μέτρο Τάσης Εξόδου 1 η Πύλη 2 η Πύλη... Σχήμα / 146

16 Η πρώτη στήλη περιέχει τον κωδικό της πύλης που τροφοδοτεί την 1 η είσοδο της πύλης. Η τιμή της παραμένει αμετάβλητη κατά την διάρκεια της προσομοίωσης. Για την περίπτωση όπου έχει ανιχνευτεί πως η πύλη τροφοδοτείται από είσοδο του κυκλώματος, τότε μια σταθερή κωδικό-τιμή τοποθετείτε σε οποιαδήποτε πύλη καλύπτει το κριτήριο. Αυτό μας επιτρέπει για ακόμα μια φορά, την γρήγορη ενημέρωση του πίνακα, όταν ο χρήστης τροποποιήσει μία από τις εισόδους του κυκλώματος. Η δεύτερη στήλη περιέχει την τάση που έχει στην έξοδο του το στοιχείο που τοποθετείτε στην πρώτη στήλη. Λαμβάνει τιμές 1, 0. Το πεδίο αυτό ενημερώνεται συνεχόμενα κατά την προσομοίωση. Η επόμενη στήλη έχει ανάλογη πληροφορία με την πρώτη, αλλά αναφέρεται στην 2 η είσοδο της πύλης. Να σημειωθεί πως για τις πύλες με μία μόνο είσοδο, το πεδίο δεν λαμβάνεται υπόψιν. Η τέταρτη στήλη έχει ανάλογη πληροφορία με τη δεύτερη για τον παροχέα της 2 ης εισόδου της πύλης. Να σημειωθεί πως για τις πύλες με μία μόνο είσοδο, το πεδίο δεν λαμβάνεται υπόψιν. Η Προτελευταία στήλη, περιέχει την πληροφορία για τον τύπο της πύλης, π.χ για τον κωδικό: 3 -> NAND πύλη. Τέλος, η έκτη στήλη, ενημερώνεται συνεχόμενα κατά την προσομοίωση, και εκφράζει την τάση στην έξοδο της πύλης. Εφόσον έχουμε εξάγει όλη την πληροφορία πάνω στον πίνακα, επόμενο βήμα είναι να ξεκινήσουμε τον βρόχο επανάληψης, ο οποίος θα παράγει σε πραγματικό χρόνο τις τάσεις στις εξόδους των πυλών. 15 / 146

17 3.4. Υπολογισμός των εξόδων του κυκλώματος Εφόσον έχει εγκατασταθεί το κύκλωμα πάνω στον πίνακα προσομοίωσης, ο χειριστής (controller) της εφαρμογής, ενεργοποιεί ένα εσωτερικό ρολόι στην εφαρμογή, όπου σε κάθε περίοδο του, ζητάει από τον πυρήνα του προσομοιωτή να υπολογίσει την επόμενη έξοδο των πυλών. Το ρολόι με την διαδικασία που εκτελεί, λειτουργεί ως ένας βρόχος επανάληψης. Ο βρόχος επανάληψης, εκτελεί δύο διαδικασίες. Την ενημέρωση των εισόδων του κυκλώματος, για την περίπτωση όπου ο χρήστης από το γραφικό περιβάλλον έχει αλλάξει την κατάσταση ενός διακόπτη είσοδο του κυκλώματος. Τον υπολογισμό της εξόδου της κάθε πύλης, με βάση την παρούσα κατάσταση στις εισόδους της. Η πρώτη διαδικασία είναι σχετικά απλή, για κάθε πύλη που τροφοδοτείται από είσοδο του κυκλώματος, ζήτησε από το γραφικό περιβάλλον να σου δώσει την παρούσα τάση της εισόδου του κυκλώματος και ενημέρωσε την τιμή στον πίνακα προσομοίωσης. Η δεύτερη διαδικασία έχει δύο βήματα. Αρχικά, για κάθε εγγραφή (πύλη) στον πίνακα προσομοίωσης, υπολόγισε την έξοδο της πύλης, για τις παρούσες τιμές στις εισόδους της, με βάση τον τύπο της πύλης ( 5 η στήλη στον πίνακα ) και αποθήκευσε το αποτέλεσμα στον πίνακα ( 6 η στήλη στον πίνακα ) Έπειτα, για κάθε εγγραφή (πύλη) στον πίνακα προσομοίωσης, μεταφέρονται οι τιμές των εξόδων των πυλών, στις εισόδους των πυλών που τροφοδοτούνται από αυτές και έτσι στον επόμενο βρόχο επανάληψης, κατά το πρώτο βήμα της δεύτερης διαδικασίας, οι τιμές θα είναι ενημερωμένες. Ολοκληρώνοντας τις δύο αυτές διαδικασίες, σε κάθε επανάληψη, ο προσομοιωτής παράγει σε πραγματικό χρόνο τα αποτελέσματα για την προσομοίωση του κυκλώματος και έπειτα τροφοδοτούνται οι αλλαγές των τιμών στο γραφικό περιβάλλον. Η ενημέρωση στο γραφικό περιβάλλον, δηλαδή αυτό που βλέπει ο χρήστης, δεν γίνεται άμεσα από τον πυρήνα του προσομοιωτή. Αυτό που γίνεται είναι να ενημερώνονται οι τιμές που θα απεικονίσει το γραφικό περιβάλλον και έτσι όταν το γραφικό περιβάλλον «αποφασίσει» να απεικονίσει τις τιμές, τότε θα προσπελάσει αυτές που παρήγαγε ο πυρήνας. Η αρχιτεκτονική αυτή έχει ως σκοπό την βελτιστοποίηση της επίδοσης του γραφικού περιβάλλοντος, ώστε να μην χρειάζεται απαραίτητα η συχνότητα που «ζωγραφίζονται» τα στοιχεία στην οθόνη, να ταυτίζεται και με την συχνότητα που παράγει ο πυρήνας τα αποτελέσματα, παρόλο που έχει δοθεί μεγάλη βαρύτητα οι δύο αυτοί χρόνοι να συγκλίνουν. 16 / 146

18 Βήμα προς βήμα προσομοίωση Σε αυτή την ενότητα θα περιγράψουμε με εικόνες την λειτουργεία του πυρήνα, ώστε να γίνει πιο εύκολα αντιληπτή από τον αναγνώστη. Στο παράδειγμα μας θα προσομοιώσουμε το κύκλωμα του πλήρη αθροιστή ( full adder ). Η περιγραφή θα ξεκινήσει με την προϋπόθεση πως ο πίνακας προσομοίωσης έχει ήδη περάσει την αρχικοποίηση και βρισκόμαστε στην πρώτη επανάληψη υπολογισμού των εξόδων. Αρχικοποίηση του πίνακα Αρχικά βλέπουμε την «εικόνα» που έχει ο πίνακας αληθείας, με βάση το κύκλωμα που έχουμε σχεδιάσει στο γραφικό περιβάλλον. Αυτή είναι η κατάσταση του πίνακα, τη χρονική στιγμή που έχουμε ξεκινήσει την προσομοίωση. Στο Σχήμα βλέπουμε την αρχική εικόνα του κυκλώματος, που μόλις έχουμε σχεδιάσει. Π1: Πύλη 1, Ε1 : Είσοδος Κυκλώματος 1 1 η Είσοδος / Παροχέας 1 η Είσοδος/ Μέτρο Τάσης 2 η Είσοδος / Παροχέας 2 η Είσοδος/ Μέτρο Τάσης Τύπος Πύλης Μέτρο Τάσης Εξόδου 1 η Πύλη Ε1 1 Ε2 0 XOR 0 2 η Πύλη Ε2 0 Ε1 1 AND 0 3 η Πύλη Π1 0 Ε3 1 XOR 0 4 η Πύλη Π1 0 Ε3 1 AND 0 5 η Πύλη Π4 0 Π2 0 OR 0 Σχήμα / 146

19 Επανάληψη 1 Εισερχόμαστε στην πρώτη επανάληψη για τον υπολογισμό των εξόδων του κυκλώματος. Βλέπουμε πως για την πρώτη πύλη, η παρούσα κατάσταση των εισόδων της, είναι 1 για την πρώτη είσοδο και 0 για την δεύτερη και ο τύπος της πύλης είναι XOR. Οπότε στο πέρας της διαδικασίας, η έξοδος θα μετατραπεί σε 1. Ακολουθώντας την ίδια πρακτική για όλες τις πύλες, θα έχουμε το εξής αποτέλεσμα στον πίνακα. 1 η Είσοδος / Παροχέας 1 η Είσοδος/ Μέτρο Τάσης 2 η Είσοδος / Παροχέας 2 η Είσοδος/ Μέτρο Τάσης Τύπος Πύλης Μέτρο Τάσης Εξόδου 1 η Πύλη Ε1 1 Ε2 0 XOR 1 2 η Πύλη Ε2 0 Ε1 1 AND 0 3 η Πύλη Π1 0 Ε3 1 XOR 1 4 η Πύλη Π1 0 Ε3 1 AND 0 5 η Πύλη Π4 0 Π2 0 OR 0 Πριν το τέλος της επανάληψης, οι έξοδοι των πυλών θα τροφοδοτήσουν τις εισόδους των πυλών που δέχονται τάση από αυτές, όποτε ο πίνακας θα έχει τις εξής τιμές. 1 η Είσοδος / Παροχέας 1 η Είσοδος/ Μέτρο Τάσης 2 η Είσοδος / Παροχέας 2 η Είσοδος/ Μέτρο Τάσης Τύπος Πύλης Μέτρο Τάσης Εξόδου 1 η Πύλη Ε1 1 Ε2 0 XOR 1 2 η Πύλη Ε2 0 Ε1 1 AND 0 3 η Πύλη Π1 1 Ε3 1 XOR 1 4 η Πύλη Π1 1 Ε3 1 AND 0 5 η Πύλη Π4 0 Π2 0 OR 0 18 / 146

20 Στο Σχήμα βλέπουμε την εικόνα που σχεδιάζει το γραφικό περιβάλλον με βάση τον πίνακα προσομοίωσης. Σχήμα Επανάληψη 2 Στην επόμενη επανάληψη, ο προσομοιωτής θα υπολογίσει τώρα εκ νέου τις τιμές για τις εξόδους των πυλών, η διαφορά με την προηγούμενη κατάσταση, είναι πως στην 3 η και 4 η πύλη πρέπει η έξοδος να αλλάξει. Το αποτέλεσμα θα είναι το εξής: 1 η Είσοδος / Παροχέας 1 η Είσοδος/ Μέτρο Τάσης 2 η Είσοδος / Παροχέας 2 η Είσοδος/ Μέτρο Τάσης Τύπος Πύλης Μέτρο Τάσης Εξόδου 1 η Πύλη Ε1 1 Ε2 0 XOR 1 2 η Πύλη Ε2 0 Ε1 1 AND 0 3 η Πύλη Π1 1 Ε3 1 XOR 0 4 η Πύλη Π1 1 Ε3 1 AND 1 5 η Πύλη Π4 0 Π2 0 OR 0 19 / 146

21 Το επόμενο βήμα είναι να ενημερωθούν ξανά οι είσοδοι των πυλών. Ο πίνακας θα τροποποιηθεί ως εξής: 1 η Είσοδος / Παροχέας 1 η Είσοδος/ Μέτρο Τάσης 2 η Είσοδος / Παροχέας 2 η Είσοδος/ Μέτρο Τάσης Τύπος Πύλης Μέτρο Τάσης Εξόδου 1 η Πύλη Ε1 1 Ε2 0 XOR 1 2 η Πύλη Ε2 0 Ε1 1 AND 0 3 η Πύλη Π1 1 Ε3 1 XOR 0 4 η Πύλη Π1 1 Ε3 1 AND 1 5 η Πύλη Π4 1 Π2 0 OR 0 Στο Σχήμα βλέπουμε την εικόνα που σχεδιάζει το γραφικό περιβάλλον με βάση τον πίνακα προσομοίωσης. Σχήμα / 146

22 Επανάληψη 3 Στην τρίτη και τελευταία επανάληψη, θα υπάρξει μόνο μία αλλαγή, αυτή της ενημέρωσης της εξόδου της 5 ης πύλης. Η πύλη είναι τύπου OR και δεδομένου πως στην είσοδο της έχει 1, 0 η έξοδος της θα αλλάξει σε 1. 1 η Είσοδος / Παροχέας 1 η Είσοδος/ Μέτρο Τάσης 2 η Είσοδος / Παροχέας 2 η Είσοδος/ Μέτρο Τάσης Τύπος Πύλης Μέτρο Τάσης Εξόδου 1 η Πύλη Ε1 1 Ε2 0 XOR 1 2 η Πύλη Ε2 0 Ε1 1 AND 0 3 η Πύλη Π1 1 Ε3 1 XOR 0 4 η Πύλη Π1 1 Ε3 1 AND 1 5 η Πύλη Π4 1 Π2 0 OR 1 Κατά το βήμα ενημέρωσης των εισόδων των πυλών στην 3 η επανάληψη, δεν θα υπάρξει κάποια αλλαγή στον πίνακα, διότι καμία πύλη δεν τροφοδοτείται από την 5 η πύλη, η οποία είναι και η μοναδική που άλλαξε κατάσταση. Στο Σχήμα βλέπουμε την εικόνα που σχεδιάζει το γραφικό περιβάλλον με βάση τον πίνακα προσομοίωσης. Σχήμα Σε αυτό το σημείο η προσομοίωση έχει ολοκληρωθεί διότι το κύκλωμα μας έχει έρθει σε κατάσταση ισορροπίας. Φυσικά ο πυρήνας δεν απενεργοποιείται παρά μόνο με ενέργεια του χρήστη, διότι δίδεται στον χρήστη η δυνατότητα οποιαδήποτε χρονική στιγμή, ακόμα και κατά την προσομοίωση, να αλλάξει τις τάσεις των εισόδων του κυκλώματος. 21 / 146

23 No of Iterations Time in μs Δρ. Σπυρίδων Καζαρλής, Αντώνιος Βαλαής 3.5. Μετρήσεις και Στατιστικά της Απόδοσης του Πυρήνα Προσομοίωσης. Όπως αναφέρθηκε στο πρώτο κεφάλαιο, ο προσομοιωτής είναι αποτέλεσμα έρευνας για την υλοποίηση ενός ταχύτατου και μικρής κατανάλωσης πόρων συστήματος εργαλείου για την ορθή αξιολόγηση ψηφιακών κυκλωμάτων που παράγονται ως λύσεις από γενετικό αλγόριθμο με σκοπό την εύρεση και βελτιστοποίηση ψηφιακών διατάξεων. Κατά την ολοκλήρωση της σχεδίασης, ο προσομοιωτής τέθηκε σε αξιολόγηση, πάνω σε γνωστά κυκλώματα της βιβλιογραφίας. Ακολούθως βρίσκεται ο πίνακας με τα αποτελέσματα της αξιολόγησης, τα οποία φανερώνουν και την μεγάλη ικανότητα του προσομοιωτή επάνω στον σκοπό του. Επίσης η γραφική παράσταση των επιδόσεων στο Σχήμα Να σημειωθεί πως οι μετρήσεις αφορούν τον πλήρη υπολογισμό μιας προσομοίωσης και όχι μεμονωμένη επανάληψη του αλγορίθμου. Για τις μετρήσεις, ο προσομοιωτής τέθηκε σε λειτουργία σε προσωπικό υπολογιστή με τις εξής δυνατότητες. CPU: quad-core, 2.83GHz. RAM: DDR2, 4GB, 800MHz, CL Κύκλωμα Χρόνος Ολοκλήρωσης Προσομοίωσης ( μs ) Πόροι στην μνήμη ( Bytes ) Πλήθος Ψηφίων που Παρήχθησαν Ποσοστό Επιτυχίας Half Adder % Full Adder % 2-bit Multiplier % Multiplexer 4 to % Decoder 3 to % 4-bit Adder % 1-bit ALU % Iterations Time No of Gates Σχήμα / 146

24 4. Το Γραφικό Περιβάλλον Το γραφικό περιβάλλον της εφαρμογής Το γραφικό περιβάλλον αποτελείται από μενού, μία μπάρα εργαλείων ( toolbar ) και το πλαίσιο σχεδίασης των κυκλωμάτων. Στο κάτω μέρος της οθόνης υπάρχει μπάρα κατάστασης και επίσης παρέχονται μπάρες κύλισης για το πλαίσιο σχεδίασης. Η διεπαφή σχεδιάστηκε με σκοπό ο χρήστης να εκτελεί τις ενέργειές του με την χρήση του κέρσορα και να γίνει όσο το δυνατών λιγότερο απαραίτητη η χρήση του πληκτρολογίου. Το menu bar παρέχει τέσσερα menu. File, Edit, View και Help. Οι δυνατότητες που προσφέρουν φαίνονται στις παρακάτω εικόνες. File menu Μενού Αρχείου. Μας παρέχει ενέργειες όπως, η δημιουργία καινούργιου αρχείου, το άνοιγμα ενός υπάρχοντος αρχείου-κυκλώματος και την ενέργεια αποθήκευσης του κυκλώματος στην παρούσα σχεδίαση. Edit menu Μενού Επεξεργασίας Μας παρέχει τις βασικές ενέργειες για την τροποποίηση των στοιχείων του κυκλώματος. Όπως αποκοπή, αντιγραφή, επικόλληση και διαγραφή ενός στοιχείου. 23 / 146

25 View menu Μενού Προβολής Μέσω αυτού του μενού, έχουμε επιλογές για την τροποποίηση της όψης της μπάρας εργαλείων, όπως να προσθέσουμε ή να αφαιρέσουμε ένα εικονίδιο από κάποια μπάρα. Να ενεργοποιήσουμε την γραμμή κατάστασης καθώς και επίσης να αλλάξουμε την όψη της εφαρμογής. Για την τελευταία περίπτωση, έχουμε διάφορες επιλογές βασισμένες σε γνωστές εφαρμογές του λειτουργικού συστήματος Windows. Στο help menu, βρίσκονται πληροφορίες για τους δημιουργούς του λογισμικού. To toolbar μας παρέχει αρχικά συντομεύσεις για ορισμένες βασικές επιλογές που μας δίνουν τα προαναφερόμενα μενού, αλλά κυρίως χρησιμεύει διότι επάνω του υπάρχουν τα εικονίδια που μας επιτρέπουν να επιλέγουμε στοιχεία για το κύκλωμα που θέλουμε να σχεδιάσουμε. 24 / 146

26 Επίσης υπάρχουν και τρία εικονίδια για την έναρξη, διακοπή και σταδιακή λειτουργία του προσομοιωτή. Η μπάρα κατάστασης μας παρέχει την πληροφορία για το εάν η προσομοίωση είναι ενεργή, εάν βρισκόμαστε σε κατάσταση σχεδίασης και για λεπτομέρειες του στοιχείου που κάνει hover ο κέρσορας στην μπάρα εργαλείων. Επίσης κατά την αποθήκευση ή το άνοιγμα μίας υπάρχουσας σχεδίασης, το γραφικό περιβάλλον παρέχει το κοινό σε όλες τις εφαρμογές του περιβάλλον windows, παράθυρο διάλογου αρχείου ( File Dialog ). 25 / 146

27 4.1. Χρήση της εφαρμογής Όπως προαναφέρθηκε σε προηγούμενο κεφάλαιο, η εφαρμογή έχει σχεδιαστεί έτσι ώστε να είναι εφικτό ο χρήστης να ολοκληρώνει την εργασία του κάνοντας χρήση κατά 99% μόνο την λειτουργία του ποντικιού. Φυσικά υπάρχει υποστήριξη των γνωστών συντομεύσεων του πληκτρολογίου, όπως για αντιγραφή, αναίρεση, αποθήκευση Σε αυτό το κεφάλαιο θα καθοδηγήσουμε τον αναγνώστη, βήμα-βήμα, ώστε να σχεδιάσει ένα SR Latch και στο τέλος να ξεκινήσει την προσομοίωση και να μπορεί να πάρει τα αποτελέσματα της. Ξεκινώντας την εφαρμογή, μπορούμε άμεσα να αρχίσουμε την σχεδίαση, γνωρίζουμε ότι βρισκόμαστε σε λειτουργία σχεδίασης καθώς μας ενημερώνει για αυτό η μπάρα κατάστασης. Ας ξεκινήσουμε λοιπόν επιλέγοντας τις πύλες που χρειαζόμαστε για να ολοκληρώσουμε ένα κύκλωμα SR. Είναι γνωστό πως το κύκλωμα SR, υλοποιείται και με δύο πύλες NOR, έχοντας ανάδραση των εξόδων τους η μία στην άλλη. Από την μπάρα εργαλείων επιλέγουμε την πύλη NOR, κάνοντας αριστερό κλικ στο εικονίδιο της. Δεν χρειάζεται να σύρουμε με το ποντίκι, η πύλη θα ακολουθεί τον κέρσορα μας. Τοποθετούμε την πύλη σε όποιο σημείο του καμβά επιθυμούμε κάνοντας αριστερό κλικ. Εάν θέλουμε να μετακινήσουμε την πύλη ξανά, τότε κάνοντας αριστερό κλικ πάνω στην πύλη και σέρνοντας τη, τη μετακινούμε στο σημείο που θέλουμε και απελευθερώνουμε το αριστερό κλικ. Έπειτα επιλέγουμε την δεύτερη πύλη NOR από την μπάρα εργαλείων ή αντιγράφουμε την υπάρχουσα πύλη που βρίσκεται στον καμβά κάνοντας είτε δεξί κλικ στην πύλη και αντιγραφή, είτε επιλέγοντας την πύλη και κάνοντας κλικ στο εικονίδιο αντιγραφής του toolbar, είτε επιλέγοντας την πύλη, εισάγουμε την συντόμευση πληκτρολογίου Ctrl-C. Στη συνέχεια με την αντίστοιχη ενέργεια για την επικόλληση τοποθετούμε την πύλη στο σημείο που επιθυμούμε. Να σημειωθεί πως η επικόλληση μέσω του context menu ( δεξί κλικ ) ή μέσω της συντόμευσης Ctrl-V, τοποθετεί το στοιχείο στο σημείο που βρίσκεται ο κέρσορας του ποντικιού. Στην περίπτωση που ενεργήσουμε κάνοντας επικόλληση μέσω της μπάρας εργαλείων, το στοιχείο τοποθετείται στο κέντρο του καμβά σχεδίασης. Στο σημείο αυτό ο καμβάς σχεδίασης θα μπορούσε να έχει την εξής εικόνα. 26 / 146

28 Στο επόμενο βήμα πρέπει να εισάγουμε τα δύο στοιχεία που αντιπροσωπεύουν τις εισόδους στο κύκλωμα SR, καθώς και τα δύο στοιχεία που αντιπροσωπεύουν τις εξόδους του κυκλώματος. Η διαδικασία είναι ακριβώς ίδια, με την διαφορά ότι πρέπει να επιλεχθούν από την μπάρα εργαλείων το στοιχείο εισόδου και το στοιχείο εξόδου. Τα στοιχεία αυτά βρίσκονται στο σημείο που μας δείχνουν οι εικόνες από την εφαρμογή. Έτσι λοιπόν, αφού τοποθετήσουμε και τα προαναφερθέντα στοιχεία στον καμβά, η εικόνα που προβάλλεται θα μπορούσε να είναι η εξής. Να σημειωθεί πως η αρχική κατάσταση των Input έχει ορισθεί να είναι σε υψηλή τάση (1), ενώ η τάση των Output είναι δυναμική ακόμα και κατά την 27 / 146

29 σχεδίαση, δηλαδή εάν δεν τροφοδοτείται με τάση, βρίσκεται στο (0), ειδάλλως στο (1). Τελευταίο βήμα στην σχεδίαση θα είναι να ολοκληρώσουμε την συνδεσμολογία των στοιχείων που έχουν τοποθετηθεί μέχρι στιγμής. Η σύνδεση των στοιχείων γίνεται με το καλώδιο ( wire ) το οποίο βρίσκεται και αυτό στην μπάρα εργαλείων. Κάνοντας κλικ στο εικονίδιο του καλωδίου, δεν βλέπουμε κάτι να ακολουθεί τον κέρσορα, παρόλο αυτά, η διαδικασία εισαγωγής καλωδίου στον καμβά παραμένει απλή. Ο τρόπος είναι ο εξής, εφόσον φυσικά έχουμε επιλέξει σχεδίαση καλωδίου, κάνοντας κλικ σε οποιοδήποτε σημείο του καμβά και έπειτα σέρνοντας το ποντίκι προς την επιθυμητή κατεύθυνση, βλέπουμε πως σχηματίζεται το καλώδιο. Σε αντίθεση με όλες τις άλλες επιλογές από το toolbar, στη σχεδίαση καλωδίου δεν χρειάζεται να επιλέξουμε ξανά το εικονίδιο, απλώς κάνουμε κλικ και σέρνουμε το ποντίκι για όσα καλώδια επιθυμούμε να σχεδιάσουμε. Το καλώδιο επίσης έχει ακόμα μία ιδιαιτερότητα. Σε αντίθεση με τα υπόλοιπα στοιχεία, όπου κάνοντας κλικ σε οποιοδήποτε σημείο της επιφάνειας τους και μετακινώντας το ποντίκι, μετακινούμε το στοιχείο, το καλώδιο λειτουργεί με τον ίδιο τρόπο, εκτός εάν επιλέξουμε μία από τις άκρες του. Σε αυτή την περίπτωση, μπορούμε να αλλάξουμε την θέση τις άκρης που επιλέξαμε, κρατώντας σταθερή την άλλη του άκρη. Για να ολοκληρωθεί λοιπόν το κύκλωμα SR, πρέπει να συνδέσουμε ορθά τα στοιχεία που έχουμε αυτή την στιγμή στον καμβά μεταξύ τους. Η σύνδεση όπως είπαμε γίνεται με τα καλώδια, τοποθετώντας τις άκρες του ( κόκκινες ) πάνω στις άκρες των στοιχείων που θέλουμε να ενώσουμε. Ολοκληρώνοντας η τελική εικόνα του κυκλώματος θα μπορούσε να είναι η εξής. 28 / 146

30 Παρατηρείτε πως η τάση της πρώτης εισόδου έχει αλλάξει; Αυτό επιτυγχάνεται κάνοντας διπλό κλικ πάνω στην είσοδο, εφόσον έχουμε επιλέξει πρώτα το selection από το toolbar, το εικονίδιο αριστερά από το καλώδιο. Το διπλό κλικ, ισχύει και στην περίπτωση που για είσοδο κυκλώματος τοποθετήσουμε παλμό-γεννήτρια. Το τελευταίο μας βήμα είναι να ξεκινήσουμε την προσομοίωση. Η προσομοίωση ελέγχεται από τα τρία κουμπάκια του toolbar που φαίνονται στις ακόλουθες εικόνες. Πατώντας το πράσινο εικονίδιο, προσομοίωση γίνεται πραγματικού χρόνου και για το συγκεκριμένο κύκλωμα θα δούμε την αντίστοιχη έξοδο του κυκλώματος να ενεργοποιείται άμεσα. Σε αυτό το σημείο, ενώ η προσομοίωση είναι ενεργή, μπορούμε να πειραματιστούμε με τις εισόδους του κυκλώματος και να βλέπουμε τα αποτελέσματα μας. Επιλέγοντας το πορτοκαλί εικονίδιο, η προσομοίωση γίνεται σε διακριτά βήματα, προχωρώντας στο επόμενο βήμα κάθε φορά που κάνουμε κλικ στο ίδιο εικονίδιο. Σε κάθε βήμα, υπολογίζεται η έξοδος της εκάστοτε πύλης με βάση την τάση που είχε στα άκρα των εισόδων της πριν πιέσουμε πορτοκαλί εικονίδιο. Στη περίπτωση όπου το κύκλωμα περιέχει παλμό-γεννήτρια, με το κάθε βήμα απεικονίζεται η κατάσταση του κυκλώματος μετά την αλλαγή τις κατάστασης του ρολογιού, δηλαδή σε κάθε βήμα αλλάζει κατάσταση το ρολόι ( παλμόγεννήτρια ) και προσομοιώνεται όλη η συμπεριφορά του κυκλώματος από την ενέργεια αυτή. Τέλος μπορούμε να σταματήσουμε την προσομοίωση, πατώντας το μπλε εικονίδιο. 29 / 146

31 4.2. Τεχνική περιγραφή του γραφικού περιβάλλοντός Έχοντας αναλύσει σε προηγούμενο κεφάλαιο τον τρόπο λειτουργίας του πυρήνα του λογισμικού, όπου εφαρμόζονται οι αλγοριθμικοί μέθοδοι για την εξόρυξη των αποτελεσμάτων της προσομοίωσης, σε αυτό το κεφάλαιο θα πιάσουμε το νήμα από την άλλη του άκρη, αυτή του γραφικού περιβάλλοντος, με σκοπό να καταλήξουμε στην προηγούμενη τεχνική ανάλυση που έγινε για τον προσομοιωτή. Θα μιλήσουμε για τον τρόπο απεικόνισης των γραφικών, τον τρόπο διαχείρισης των συμβάντων ( event ) που δημιουργεί ο χρήστης και γενικότερα με πιο τρόπο δρα πάνω σε όλα αυτά ο χειριστής ( controller ) της εφαρμογής Πως δημιουργούνται τα γραφικά στην εφαρμογή Ξεκινώντας την ενότητα, θα πρέπει να αναφέρουμε αρχικά ποια είναι τα εργαλεία που μας παρέχει η βιβλιοθήκη MFC, για την δημιουργία γραφικών τα οποία χρησιμοποιήθηκαν για το επιθυμητό αποτέλεσμα. Δεν θα γίνει αναφορά για την δημιουργία των menu bar, tool bar και των υπόλοιπων γραφικών που αναλαμβάνει να αποδώσει η σουίτα της Microsoft στην οθόνη μας, διότι σε αυτές τις περιπτώσεις ο προγραμματισμός από τον χρήστη, ναι μεν είναι απαραίτητος, αλλά δεν καταναλώνει μεγάλο κόπο ή χρόνο εκ μέρος του ( Για περισσότερες πληροφορίες όμως, ανατρέξτε το κεφάλαιο με τον πηγαίο κώδικα ). Θα αναλύσουμε τα εργαλεία που χρησιμοποιήθηκαν για την απεικόνιση γραφικών επάνω στον καμβά σχεδίασης. Το κύριο συστατικό σε όλα αυτά, είναι η κλάση που διαχειρίζεται το πλαίσιο της οθόνης ( του παραθύρου ) που προβάλλεται στον χρήση. Το όνομα της κλάσης που μας παρέχει η βιβλιοθήκη, ονομάζεται CDC ( Class Device Context ) [1]. H κλάση παρέχει αρκετές μεθόδους, όμως αρχικά θα σχολιάσουμε τις μεθόδους που χρησιμοποιούμε για τον σχηματισμό καλωδίου στον καμβά, καθώς και τον αλγόριθμο που τις χειρίζεται για το τελικό αποτέλεσμα. Ας δούμε λοιπόν τα βήματα που προσπελάζονται. Αρχικά πρέπει να γίνει η σύνδεση του αντικειμένου της κλάσης CDC με το παράθυρο (device) που θέλουμε να απεικονίζουμε τα γραφικά μας. Έπειτα, επιλέγουμε το χρώμα που θέλουμε να χρησιμοποιήσουμε, μέσω ενός αντικειμένου της κλάσης CPen [1]. Αυτά τα δύο μικρά βήματα είναι απαραίτητα για την αρχικοποίηση του αντικειμένου CDC. Τώρα, φανταστείτε τον καμβά ως ένα δυσδιάστατο πίνακα, με πραγματικά στην εποχή μας, τεράστιο πλήθος θέσεων. Την κάθε θέση αυτού του πίνακα σκεφτείτε την ως ένα πίνακα ζωγραφικής, με την ιδιαιτερότητα όμως, πως μπορούμε να ζωγραφίσουμε σε αυτόν, μόνο ένα χρώμα, μία εικόνα (picture) μονόχρωμη. Αυτή η μονόχρωμη εικόνα, είναι ένα στοιχείο ( element ) από όλες τις υπόλοιπες παρόμοιες εικόνες που μπορεί να έχει ο δισδιάστατος πίνακας. Έτσι λοιπόν, με όρους πληροφορικής, αποδίδεται στην κάθε θέση του δισδιάστατου μας πίνακα η 30 / 146

32 ονομασία Picture Element ( Pel ή Pixel ). Οπότε εάν επιθυμούμε να ζωγραφίσουμε το καλώδιο μας, το οποίο είναι απλώς μία σειρά από pixel με τον ίδιο χρωματισμό, η διεπαφή της κλάσης, μας κάνει σχετικά εύκολη την δουλειά μας, κάνοντας μας δύο μόνο ερωτήσεις. Από ποιο pixel θα ήθελες να ξεκινήσει η γραμμή; Η απάντηση μας είναι οι συντεταγμένες του pixel. Προγραμματιστικά, καλούμε την μέθοδο MoveTo με όρισμα ένα αντικείμενο της κλάσης CPoint το οποίο περιέχει τις συντεταγμένες που επιθυμούμε. Η επόμενη ερώτηση όπως μερικοί σωστά μαντεύσατε είναι Μέχρι ποιο pixel θα ήθελες να φτάνει η γραμμή; Πάλι η απάντηση μας είναι οι συντεταγμένες ενός pixel, αυτή τη φορά όμως το τέλος της γραμμής. Επίσης προγραμματιστικά καλούμε την αντίστοιχη μέθοδο, η οποία είναι LineTo με όρισμα και πάλι ένα ανάλογο αντικείμενο της κλάσης CPoint. Ας δούμε τα δύο αυτά τελευταία βήματα πάνω σε ένα πλέγμα. Ορισμός αρχής της γραμμής. Ορισμός τέλους της γραμμής. 31 / 146

33 Με αυτό το τρόπο μπορούμε και ζωγραφίζουμε μία γραμμή ή για εμάς, καλώδιο, στην οθόνη. Τι γίνεται όμως στην περίπτωση που επιθυμούμε να μετακινήσουμε το καλώδιο; Θα μπορούσε να πει κάποιος πως απλώς ζωγραφίζουμε ξανά τη γραμμή με τις καινούργιες συντεταγμένες. Ας δούμε όμως στην ακόλουθες εικόνες τι αποτέλεσμα θα έχει αυτό μέσω του API της κλάσης CDC. Αρχικά το καλώδιο. Αναφέραμε πως «τσιμπώντας» την άκρη του καλωδίου, μπορούμε μέσω αλγορίθμου που υλοποιήθηκε να μετακινήσουμε την επιλεγμένη άκρη, κρατώντας την άλλη άκρη σταθερή. Ας επιχειρήσουμε την ενέργεια αυτή με μόνο όσα αναφέραμε μέχρι στιγμής, δηλαδή θα ζωγραφίσουμε τόσες γραμμές, όσες και οι κινήσεις που έκανε ο κέρσορας. Μετατόπιση χωρίς διαγραφή Οπότε είναι φανερό πως ο αλγόριθμος δεν έχει ολοκληρωθεί. Αυτό που πρέπει να κάνουμε, διότι από την στιγμή που ζωγραφίσουμε τα pixel, δεν έχουμε κάποια αναφορά πάνω σε αυτά στο περιβάλλον του παραθύρου, πρέπει να αναιρούμε την 32 / 146

34 προηγούμενη σχεδίαση και να ορίσουμε την καινούργια! Δηλαδή σβήνουμε την παλιά γραμμή και σχεδιάζουμε την μετατοπισμένη. Αυτή η διαδικασία, εφαρμόζεται όχι μόνο κατά την απεικόνιση της μετατόπισης ενός καλωδίου, αλλά και κατά την μετατόπιση όλων των στοιχείων που μπορούμε να τοποθετήσουμε στον καμβά. Στις υπόλοιπες αυτές περιπτώσεις, η «ζωγραφική» που κάνουμε είναι σχετικά ευκολότερη, διότι όλα τα υπόλοιπα στοιχεία είναι εικόνες τις οποίες φορτώνει η εφαρμογή και διοχετεύει μέσω του CDC αντικειμένου, στην οθόνη. Τα αρχεία εικόνων, διαχειρίζονται από την κλάση CImage [1] της ίδιας βιβλιοθήκης και ο τρόπος με τον οποίο απεικονίζονται είναι σχετικά απλώς. Η κλάση CImage μας παρέχει την μέθοδο Draw, η οποία παίρνει ως παράμετρο το CDC αντικείμενο μας, καθώς και την συντεταγμένη των pixel όπου η επάνω αριστερή άκρη της εικόνας θα τοποθετηθεί. Επίσης στην περίπτωση της μετατόπισης της εικόνας, θα πρέπει να σβήσουμε την επιφάνεια που κάλυπτε η εικόνα πάνω στον καμβά ( χρησιμοποιώντας το χρώμα του background ) και να απεικονίσουμε την μετατοπισμένη εικόνα σε δεύτερο χρόνο. Στην περίπτωση που επιθυμούμε να σβήσουμε την εικόνα, το αντικείμενο CDC παρέχει μέθοδο για τον σχηματισμό παραλληλογράμμου, ορίζοντας και σε αυτή την διαδικασία το χρώμα που θα θέλαμε ( το χρώμα του background ). Η μέθοδος ονομάζεται Rectangle και παίρνει ως παράμετρο αντικείμενο τύπου CRect [1], το οποίο περιέχει τις συντεταγμένες που επιθυμούμε, στην περίπτωση μας, τις συντεταγμένες της εικόνας που επιθυμούμε να διαγράψουμε. Όπως καταλαβαίνεται, η διαδικασία αυτή, είναι χρονοβόρα και κοστίζει για την ομαλή εκτέλεση του λογισμικού, ειδικά στο σημείο που στο γραφικό περιβάλλον θα απεικονίζονται δεκάδες ή και εκατοντάδες στοιχεία. Ο λόγος είναι πως μετακινώντας ένα στοιχείο, λόγου ότι σβήνουμε την αμέσως προηγούμενη θέση του πριν το μετατοπίσουμε, θα σβηστεί και οποιοδήποτε στοιχείο που περνά από πάνω. Το αποτέλεσμα είναι να εκτελούμε τον σχηματισμό όλων των στοιχείων που βρίσκονται στον καμβά για την αποφυγή αυτού του φαινομένου, δηλαδή να σβηστούν τα υπόλοιπα στοιχεία. Αυτό βέβαια έχει ένα μειονέκτημα, κατά την μετακίνηση ενός στοιχείου ή ειδικά κατά την χρήση των scroll bar του καμβά, όπου πρέπει να σβήνουμε και να απεικονίζουμε όλα τα στοιχεία που εισήγαμε, είναι αισθητό το «τρεμόπαιγμα» της οθόνης και στην περίπτωση μας όπου έχουμε λευκό background, δίνει την εντύπωση πως κάποιος μας βγάζει φωτογραφία! Για την αποφυγή αυτού του φαινομένου, εφαρμόστηκε η τεχνική «double buffering» [1], όπου όλη η προετοιμασία των γραφικών γίνεται στην μνήμη του υπολογιστή και κατά την ολοκλήρωση προωθούνται στην οθόνη μέσω του αντικειμένου CDC που είναι συνδεδεμένο με αυτή. 33 / 146

35 Διαχείριση γεγονότων ( event handling ) Σε μία παραθυρική εφαρμογή, ένα μεγάλο τμήμα του αλγορίθμου της, αφιερώνεται στην διαχείριση γεγονότων που δημιούργησε ο χρήστης μέσω μίας συσκευής εισόδου. Οι εφαρμογές που έχουν την δυνατότητα διαχείρισης τέτοιων γεγονότων ονομάζονται και ως εφαρμογές καθοδηγούμενες από γεγονότα (Event Driven Applications). Σε αυτές τις εφαρμογές, γενικώς υπάρχει κάποιος κεντρικός βρόγχος ο οποίος «ακούει» σε γεγονότα και κατά συνέχεια αφού εντοπίσει ένα από αυτά, εκτελεί την αντίστοιχη διαδικασία που του έχει ορίσει ο προγραμματιστής. Ένα παράδειγμα τις καθημερινότητας μας είναι το κουδούνι της πόρτας του σπιτιού μας. Όταν κάποιος καλεσμένος μας πατήσει το κουδούνι ( event ), τότε εμείς ενεργώντας ως η διαδικασία ανταπόκρισης του γεγονότος, κάνουμε τα «βήματα» μας για να καλωσορίσουμε στο σπίτι μας τον καλεσμένο. Εμείς λοιπόν διαχειριστήκαμε το γεγονός, αφού ο βρόχος επανάληψης που εκτελείται ασταμάτητα ( ολόκληρος ο μηχανισμός στο κουδούνι ) μας ειδοποίησε για το γεγονός. Έτσι λοιπόν, στην εφαρμογή ορίσαμε μία σειρά από ενέργειες για το κάθε γεγονός που επιτρέπουμε στον χρήστη να δημιουργήσει κατά την εκτέλεση, όπως η κίνηση του ποντικιού, το πάτημα του αριστερού κλικ, το πάτημα ενός ή πολλών πλήκτρων από το πληκτρολόγιο. Ευτυχώς, με την βιβλιοθήκη που μας παρέχει το Visual Studio, τα γεγονότα αυτά τα διαχειριζόμαστε μόνο μέσα στο περιβάλλον της εφαρμογής και όχι στο περιβάλλον του λειτουργικού συστήματος, όπου μέσω εκεί δημιουργούνται. Ας αναλύσουμε τον τρόπο με τον οποίο η εφαρμογή διαχειρίζεται τα γεγονότα. Για την διαχείριση των γεγονότων, πρέπει να οριστεί με συγκεκριμένο τρόπο μία κλάση η οποία θα έχει και τον ρόλο για την περίπτωση, της εισαγωγής των γεγονότων στο περιβάλλον της εφαρμογής μας. Ορίσαμε για αυτό τον σκοπό την κλάση CSimulationView. Η κλάση αυτή αντιπροσωπεύει το παράθυρο που απεικονίζεται στον χρήστη και εφόσον σε αυτό το παράθυρο αποσκοπούν τα γεγονότα, ορίσαμε και τον χάρτη μηνυμάτων ( message map ). Το message map, είναι ο τρόπος που έχει ορίσει η Microsoft για να δηλώνουμε ποια γεγονότα θα διαχειρίζεται η εφαρμογή μας. Η διαδικασία γίνεται μέσω μακρό-εντολών που ορίζει ο προγραμματιστής και υπάρχει αντίστοιχη μακρό-εντολή για κάθε περίπτωση. Η μακρό-εντολή στην ουσία, απλά δηλώνει πως η κλάση που κατέχει το message map, θα παρέχει και την αντίστοιχη, με αυστηρά συγκεκριμένη υπογραφή, συνάρτηση. Στην εφαρμογή μας αυτή η αρχιτεκτονική δεν είναι αρκετή για την λειτουργικότητα της. Ο λόγος είναι πως κάνοντας διαχείριση για παράδειγμα του γεγονότος «mouse move», πρέπει να εκτελείται διαφορετική σειρά πράξεων για την περίπτωση που έχουμε επιλέξει να εισάγουμε μία πύλη στον καμβά και διαφορετική σειρά πράξεων όταν και πάλι με «mouse move» μετακινούμε ένα καλώδιο. Σε αυτές τις δύο διαφορετικές περιπτώσεις, το γεγονός που μας ειδοποιεί το λειτουργικό σύστημα ότι δημιουργήθηκε είναι το ίδιο. Οπότε υλοποιήσαμε ένα εσωτερικό διαχειριστή αυτών των υποπεριπτώσεων για να είναι κυρίως πιο ξεκάθαρη η λειτουργία της εφαρμογής 34 / 146

36 μας. Αυτός ο διαχειριστής αντιπροσωπεύεται από την κλάση CSimulationDrawHandler, καθώς το 90% των γεγονότων που διαχειρίζεται η εφαρμογή, αφορούν την σχεδίαση επάνω στον καμβά. Ο «ιδιοκτήτης» του αντικειμένου της κλάσης αυτής, είναι το αντικείμενο της κλάσης CSimulationController για τον ρόλο της οποίας θα μιλήσουμε σε δεύτερο χρόνο. Τα γεγονότα τα οποία διαχειρίζεται ο drawhandler είναι κυρίως γεγονότα της συσκευής του ποντικιού, καθώς και γεγονότα σχετικά με την σχεδίαση στον καμβά με ή χωρίς την δημιουργία ενός γεγονότος. Παραμένοντας λοιπόν στα γεγονότα που δημιουργήθηκαν μέσω της συσκευής εισόδου του ποντικιού, οι μέθοδοι που κατέχει η κλάση για την διαχείριση αυτών είναι τα εξής. Να σημειωθεί πως όλες οι μέθοδοι δέχονται ως όρισμα τις συντεταγμένες που έχει το ποντίκι κατά την πυροδότηση του γεγονότος. mousemove leftmousebuttondown leftmousebuttonup leftmousebuttondoubleclick rightmousebuttonup Στην προηγούμενη παράγραφο, περιγράψαμε το πρόβλημα όπου η ειδοποίηση για ένα από αυτά τα συμβάντα δεν είναι αρκετή. Η λύση είναι η εξής, για κάθε διαφορετική κατάσταση στην σχεδίαση ( προσθήκη πύλης, μετακίνηση καλωδίου, προσθήκη στοιχείου εξόδου ) ο drawhandler να διαθέτει μία κλάση που με κοινή διεπαφή για την κάθε περίπτωση, όπου η κάθε κλάση να έχει ένα συγκεκριμένο σκοπό. Έτσι λοιπόν έχοντας βασική την κλάση CSimulationDrawTool, δημιουργήθηκαν οι εξής απορρέουσες κλάσεις. CSimulationDrawWire, η κλάση διαχειρίζεται τα ίδια γεγονότα για την περίπτωση όπου έχουμε επιλέξει σχεδίαση καλωδίου. CSimulationDrawSelect, η κλάση διαχειρίζεται τα ίδια γεγονότα για την περίπτωση όπου έχουμε επιλέξει την μετακίνηση ή την αλλαγή κατάστασης κάποιου στοιχείου. CSimulationDrawGate, η κλάση διαχειρίζεται τα ίδια γεγονότα για την περίπτωση όπου έχουμε επιλέξει εισαγωγή πύλης. CSimulationDrawInput, η κλάση διαχειρίζεται τα ίδια γεγονότα για την περίπτωση όπου έχουμε επιλέξει εισαγωγή «εισόδου κυκλώματος». CSimulationDrawOutput, η κλάση διαχειρίζεται τα ίδια γεγονότα για την περίπτωση όπου έχουμε επιλέξει εισαγωγή «εξόδου κυκλώματος». Ακολούθως θα κάνουμε την ανάλυση αυτών των κλάσεων σε αλγοριθμικό επίπεδο σημειώνοντας τα δύσκολα σημεία κατά την υλοποίηση. Για κάθε κλάση, θα επικεντρωνόμαστε στα πέντε γεγονότα του χρήστη που προαναφέραμε. 35 / 146

37 CSimulationDrawWire leftmousebuttondown Σε αυτή τη μέθοδο, αρχικά μαρκάρεται πως το αριστερό κλικ του ποντικιού έχει πατηθεί, «σημαία» η οποία είναι απαραίτητη για τις υπόλοιπες μεθόδους της κλάσης και έπειτα ενημερώνουμε το Document της εφαρμογής να δημιουργήσει καινούργιο καλώδιο στο σημείο που έχουμε κάνει το κλικ. Το καλώδιο σε αυτό το σημείο έχει σχεδόν μηδενικό μήκος. Το μέγεθος του καλωδίου μεγαλώνει κατά την κίνηση του ποντικιού, εφόσον έχει πραγματοποιηθεί αριστερό κλικ, εξ ου και η ύπαρξη της «σημαίας». mousemove Στην υλοποίηση αυτής της μεθόδου, απεικονίζουμε το καλώδιο, ενημερώνοντας το παράλληλα, για κάθε ίδιο γεγονός που εισέρχεται, την καινούργια τιμή των συντεταγμένων που πρέπει να έχει η άκρη ή το σώμα του που «σέρνουμε». leftmousebuttonup Εδώ γίνεται έλεγχος και διαγραφή του καλωδίου, για την περίπτωση όπου έχουμε κάνει κλικ, αλλά δεν έχουμε μετακινήσει το ποντίκι ώστε να σχηματιστεί αισθητικά σωστό καλώδιο. leftmousebuttondoubleclick Δεν υπάρχει διαφορετική ενέργεια, παρά αυτή του μονού κλικ για τον σχηματισμό καλωδίου. Η μέθοδος παραμένει κενή. CSimulationDrawSelect leftmousebuttondown Ίσως η διαχείριση του πιο σημαντικού γεγονότος στην εφαρμογή. Εδώ πρέπει να ανιχνεύσουμε εάν έχει επιλεχθεί από τον χρήστη κάποιο στοιχείο του κυκλώματος. Έτσι λοιπόν διατρέχουμε όλα τα στοιχεία που έχει προσθέσει ο χρήστης μέχρι στιγμής στον καμβά για τον εντοπισμό αυτού που έχει τοποθετηθεί ο κέρσορας από πάνω και πατήθηκε το αριστερό κλικ. Κατά την ανίχνευση ότι δεν έχει επιλεχθεί κάποιο στοιχείο, ενεργοποιείται ο μηχανισμός απεικόνισης ενός παραλληλογράμμου, όπου με τον έλεγχο του χρήστη, του δίδεται η δυνατότητα να επιλέξει πολλαπλά στοιχεία. Για τον εντοπισμό στοιχείου, υπάρχουν δύο διαφορετικοί αλγόριθμοι. Ο ένας για τον εντοπισμό αποκλειστικά καλωδίου και ο άλλως των υπόλοιπων στοιχείων που αποτελούν εικόνα για το σύστημα. Καθώς διατρέχουμε την συλλογή καλωδίων για την περίπτωση του καλωδίου, έχουμε δύο υποπεριπτώσεις. Έλεγχος επιλογής μίας άκρης του καλωδίου. Ο έλεγχος πραγματοποιείται ξεχωριστά και για τις δύο άκρες του καλωδίου μέσω της ευκλείδειας 36 / 146

38 απόστασης δύο σημείων. Όπου το ένα σημείο είναι οι συντεταγμένες που εισήλθαν ως παράμετροι στην μέθοδο και αφορούν το σημείο που έκανε αριστερό κλικ ο χρήστης και το δεύτερο σημείο είναι η αποθηκευμένη συντεταγμένη που κατέχει η άκρη του καλωδίου. Ο τύπος είναι ο εξής και τον εφαρμόζουμε με μία μικρή ανοχή. n i=1 (W i C i ) 2 n, οι 2 διαστάσεις του καμβά W, συντεταγμένες του καλωδίου C, συντεταγμένες του κέρσορα Έλεγχος επιλογής του σώματος του καλωδίου. Εδώ ο αλγόριθμος ανεβαίνει ένα μικρό σκαλοπάτι στην πολυπλοκότητα. Καθώς το καλώδιο μπορεί να σχηματίζει οποιαδήποτε γωνία σε σχέση με την αρχή των αξόνων του καμβά. Αρχικά σχηματίζουμε ένα παραλληλόγραμμο με σημείο αναφοράς τις δύο συντεταγμένες του καλωδίου και έπειτα καλούμε την ήδη υπάρχουσα μέθοδο PtInRect που μας παρέχει η κλάση CRect, η οποία μας ενημερώνει για τον σκοπό μας. Στην περίπτωση που το σημείο δεν βρίσκεται στην επιφάνεια του παραλληλογράμμου, ο έλεγχος μπορεί να σταματήσει. Εάν αντιθέτως το σημείο βρίσκεται μέσα στα όρια του παραλληλογράμμου, τότε πρέπει να βεβαιωθούμε πως είναι επίσης στην επιφάνεια του καλωδίου ( ευθυγράμμου τμήματος ). Ο υπολογισμός γίνεται επίσης με γνώστη εξίσωση, την εξίσωση ευθείας η οποία είναι η εξής και εφαρμόζεται επίσης με μία μικρή ανοχή. C y W 1y = ( W 2y W 1y ) ( W 2x W 1x ) (C x W 1x ) [ W1, W2 ], συντεταγμένες αρχής και τέλους του καλωδίου C, συντεταγμένες του κέρσορα Έτσι, αντικαθιστώντας στην εξίσωση τις συντεταγμένες, εάν η διαφορά του αριστερού με δεξιού τμήματος είναι μηδέν ( ή με μικρή ανοχή στην περίπτωση μας ) μας ενημερώνει πως ο κέρσορας βρίσκεται επάνω στην ευθεία. Φυσικά, υπάρχει και η περίπτωση του κάθετου ως προς τον άξονα Χ ευθυγράμμου τμήματος ( καλωδίου ), όπου υλοποιήθηκε μία πιο τεχνική μέθοδος επίλυσης και γίνεται αναφορά της στο κεφάλαιο με τον πηγαίο κώδικα της εφαρμογής. Επίσης ο λόγος που ελέγχουμε πρώτα με την μέθοδο του παραλληλογράμμου και έπειτα με την μέθοδο της εξίσωσης ευθείας είναι πως η δεύτερη εσφαλμένα, για την περίπτωση μας, δέχεται και σημεία στην προέκταση του ευθυγράμμου τμήματος ( καλωδίου ). 37 / 146

39 Τελειώνοντας με τους ελέγχους όπου αφορούν τον εντοπισμό επιλεγμένου καλωδίου, στην συνέχεια, γίνεται έλεγχος για το εάν ο χρήστης έκανε αριστερό κλικ σε κάποιο από τα υπόλοιπα στοιχεία ( πύλη, είσοδος / έξοδος κυκλώματος ) που έχει εισάγει στον καμβά σχεδίασης. Τα στοιχεία αυτά ομαδοποιούνται σε σχέση με τον αλγόριθμο που εκτελείται για την διαβεβαίωση πως έχουν επιλεχθεί με το αριστερό κλικ, διότι όπως προαναφέραμε αποτελούνται όλα από εικόνες. Για αυτό το λόγο, το μόνο που χρειάζεται να κάνουμε είναι να διατρέξουμε την εκάστοτε λίστα που κατέχει αυτά τα στοιχεία και να γίνει έλεγχος εάν ο κέρσορας βρίσκεται επάνω στην επιφάνεια του παραλληλογράμμου που σχηματίζουν οι εικόνες. Γνωρίζοντας τις διαστάσεις τους και τις συντεταγμένες που βρίσκονται, εκτελούμε πάλι την μέθοδο PtInRect της κλάσης CRect και η επιστρεφόμενη λογική τιμή της μεθόδου, μας ενημερώνει για τον σκοπό μας. mousemove Η λειτουργεία της συγκεκριμένης μεθόδου είναι να μετακινήσει με βάση την κίνηση του ποντικιού, το ένα ή τα πολλαπλά επιλεγμένα στοιχεία που όρισε ο χρήστης. Επίσης στην περίπτωση που ο χρήστης έχει επιλέξει μία άκρη ενός καλωδίου, να μετακινηθεί και πάλι με βάση την κίνηση του ποντικιού. Αυτά φυσικά για την περίπτωση που σε προηγούμενο χρόνο, ο χρήστης έχει πιέσει το αριστερό κλικ και έπειτα στην φάση της μεθόδου δημιουργεί την κίνηση. Κατά την συνθήκη όπου η προηγούμενη μέθοδος στην σειρά γεγονότων ( leftmousebuttondown ) δεν έχει ανιχνεύσει κάποιο στοιχείο ως επιλεγμένο, τότε η μέθοδος mousemove, σχηματίζει αναφορικά με το σημείο που έγινε αρχικά το αριστερό κλικ και την τρέχουσα θέση του κέρσορα, ένα παραλληλόγραμμο όπου ο χρήστης μπορεί και επιλέγει πολλαπλά στοιχεία στην επιφάνεια σχεδίασης. Εδώ θα μείνουμε για λίγο στον τρόπο με τον οποίο μετακινούνται το ένα ή τα πολλά στοιχεία που ο χρήστης επιλέγει. Αρχικά να σημειώσουμε πως κατά την ενέργεια του αριστερού κλικ αποθηκεύουμε την συντεταγμένες του σημείου που έχει δημιουργηθεί το συμβάν. Στην υλοποίηση αυτό το σημείο το ονομάζουμε «oldpoint». Κατά την εκτέλεση της μεθόδου mousemove, οι συντεταγμένες που δεχόμαστε ως όρισμα, είναι οι συντεταγμένες όπου μετακινήθηκε ο κέρσορας. Στην υλοποίηση, αυτή τη συντεταγμένη την ονομάζουμε «point». Για την περίπτωση όπου ο χρήστης έχει επιλέξει ένα στοιχείο, όπου στο στάδιο που αναλύουμε έχουμε αναφορά αυτού του στοιχείου και στην συνέχεια το «σέρνει», τότε πρέπει να υπολογίσουμε το διάνυσμα που δημιουργεί ο κέρσορας, αναφορικά με το σημείο oldpoint κατά την κίνηση του. Έπειτα το διάνυσμα αυτό το εφαρμόζουμε στο(α) στοιχείο(α) που έχει επιλέξει ο χρήστης και η μετακίνηση του ολοκληρώνετε. Εδώ θα ασχοληθούμε για λίγο με την αρχή των αξόνων του καμβά σχεδίασης, καθώς και με τις πράξεις διανυσμάτων. Η αρχή των αξόνων ορίζεται ως η πάνω αριστερή γωνία του καμβά. Ο οριζόντιος άξονας είναι ο άξονας του Χ και ο κάθετος άξονας, είναι ο άξονας του Υ. Αυτό μας δείχνει και η ακόλουθη εικόνα. 38 / 146

40 Έτσι, έστω λοιπών ότι έχοντας δύο διανύσματα με αρχή, την αρχή των αξόνων, το διάνυσμα Ο (oldpoint) και το P (point), όπου oldpoint η παλιά θέση του στοιχείου που θα μετακινήσουμε, και point το σημείο που θα βρεθεί ο κέρσορας μετά την κίνηση. Σκοπός μας είναι να βρούμε το διάνυσμα Μ (movement) που έχει δημιουργηθεί με την κίνηση του ποντικιού. Η πράξη είναι απλή και ορίζεται από την διαφορά των διανυσμάτων. Στην εικόνα που ακολουθεί φαίνεται και η πράξη επάνω στο γραφικό περιβάλλον. = M P O 39 / 146

41 Έπειτα του υπολογισμού του διανύσματος Μ, προσθέτουμε το διάνυσμα σε όλα τα διανύσματα που κατέχουν τα στοιχεία που επιλέξαμε, με αποτέλεσμα τη μετατόπιση τους. leftmousebuttonup Κατά την απελευθέρωση του αριστερού κλικ, εάν κατά τα προηγούμενα γεγονότα είχε δημιουργηθεί το παραλληλόγραμμο πολλαπλής επιλογής στοιχείων, επεξεργαζόμαστε όλα τα στοιχεία του καμβά για να συμπεράνουμε ποια στοιχεία έχει επιλέξει ο χρήστης κατά την ενέργεια. Ο αλγόριθμος είναι απλός, για κάθε στοιχείο στην επιφάνεια σχεδίασης, έλεγξε ποια από αυτά έχουν τη συντεταγμένη τους μέσα στην επιφάνεια του παραλληλογράμμου. leftmousebuttondoubleclick Στον τελευταίο για την κλάση διαχειριστή γεγονότος, χειριζόμαστε τις περιπτώσεις όπου ο χρήστης επιθυμεί να αλλάξει κατά την σχεδίαση την αρχική κατάσταση τάσης στην έξοδο των εισόδων ή στην έξοδο των πυλών. Επίσης κατά την περίπτωση διπλού αριστερού κλικ επάνω στην παλμό-γεννήτρια, εμφανίζουμε το παράθυρο διαλόγου με τις ρυθμίσεις της παλμό-γεννήτριας. CSimulationDrawGate, CSimulationDrawInput, CSimulationDrawOutput Οι κλάσεις αυτές θα ομαδοποιηθούν στην περιγραφή τους, καθώς και οι τρείς εφαρμόζουν τους ίδιους αλγόριθμους, αλλά για διαφορετική λίστα στοιχείων. Η διαφοροποίηση τους έγινε περισσότερο για λόγους προέκτασης και αρχιτεκτονικής του λογισμικού, παρά για τεχνικούς λόγους. Για την ακόλουθη περιγραφή, η λέξη «εικόνα» αναφέρεται σε πύλη, παλμό-γεννήτρια, είσοδος κυκλώματος και έξοδος κυκλώματος. leftmousebuttondown Εδώ το μόνο βήμα της μεθόδου είναι να ενεργοποιήσει την «σημαία» πως το αριστερό κλικ έχει πατηθεί. Καθώς η λειτουργικότητα της μεθόδου mousemove, βασίζεται σε αυτή τη πληροφορία. mousemove Εάν δεν έχει πατηθεί το αριστερό κλικ, η μέθοδος μετακινεί την εικόνα στο σημείο που βρίσκεται ο κέρσορας. Καθώς λοιπόν η μέθοδος καλείται κάθε φόρα που ο χρήστης έχει μετατοπίσει τον κέρσορα, η εικόνα τοποθετείται στο ίδιο σημείο. leftmousebuttonup Η μέθοδος είναι κενή, καθώς δεν βρέθηκε κάποιο λογικό αίτημα κατά την ενέργεια leftmousebuttondoubleclick Η μέθοδος είναι κενή, καθώς δεν βρέθηκε κάποιο λογικό αίτημα κατά την ενέργεια 40 / 146

42 Ο χειριστής (controller) του UI Σε αυτή την ενότητα, θα αναλύσουμε την κλάση με την οποία επιτυγχάνετε η επικοινωνία όλων των κλάσεων της εφαρμογής μέσω των διεπαφών τους. Η κλάση ονομάζεται CSimulationController και είναι υπεύθυνη για τη γενικότερη διαχείριση των γεγονότων που ενημερώνεται από την κλάση CSimulationView, την δημιουργία νημάτων (threads) που δημιουργεί η εφαρμογή, καθώς και την ενημέρωση της κλάσης CSimulationDoc, για την αλλαγή κατάστασης του μοντέλου της εφαρμογής ( Document ). Θα επικεντρωθούμε κυρίως στα νήματα που δημιουργεί η κλάση και τον σκοπό τους, καθώς οι υπόλοιπες λειτουργείες είναι περισσότερο μεταβίβαση των μηνυμάτων που δέχεται από το UI, με μερικούς υποχρεωτικούς ελέγχους για την σταθερότητα του συστήματος. Φυσικά στο κεφάλαιο με τον πηγαίο κώδικα, υπάρχει η ανάλυση αυτών των περιπτώσεων. Τα νήματα δημιουργούνται κατά την εκκίνηση της προσομοίωσης. Το πρώτο, το οποίο δημιουργείτε πάντα κατά το πάτημα του εικονιδίου «Start Simulation», ενεργοποιεί ένα ρολόι, με σταθερή περίοδο, όπου σε κάθε περίοδο εκτελούνται τρία βήματα. Αίτηση στο Simulation Kernel να υπολογίσει την επόμενη κατάσταση στις εξόδους των πυλών. Απεικόνιση των αλλαγμένων εξόδων του κυκλώματος. Αλλαγή του χρώματος των καλωδίων, στα οποία έχει αλλάξει η τάση που τα διαρρέει. Το ρολόι υλοποιείται μέσω συνάρτησης που παρέχει η βιβλιοθήκη MFC, είναι του τύπου multimedia timer, και ονομάζεται timesetevent [1]. Αυτή η κατηγορία timer, παρέχει αρκετά μικρές περιόδους, της τάξης του millisecond, αλλά έχει δύο μειονεκτήματα, το πρώτο για προφανείς λόγους, είναι πως διαχειρίζεται αυστηρά μικρού «μεγέθους» διαδικασίες, κυρίως σε θέμα χρόνου, διαφορετικά υπάρχει το 41 / 146

43 ενδεχόμενο υπερχείλισης της στοίβας ή ακόμα και της μη ομαλής εκτέλεσης της διαδικασίας, με απρόβλεπτες συμπεριφορές. Το δεύτερο είναι πως η περίοδος δεν είναι ακριβής. Βασίζεται σε μεγάλο βαθμό στο υλικό του υπολογιστή και στο λειτουργικό σύστημα που το υποστηρίζει. Για αυτό το λόγο, με την κλήση της συνάρτησης, ορίζουμε και ένα «παράθυρο χρόνου» που μέσω αυτού επιτρέπουμε το χρονικό της σφάλμα. Να σημειώσουμε πως όντως μπορούμε να ορίσουμε το παράθυρο να είναι 0. Η Microsoft όμως σε αυτή την περίπτωση δεν εγγυάται την συμπεριφορά του. Το δεύτερο νήμα, δημιουργείται κατά την περίπτωση που έχουμε εισάγει παλμό-γεννήτρια στη σχεδίαση. Παρομοίως και σε αυτή την περίπτωση δημιουργείτε ένα δεύτερο ρολόι, μέσω της ίδιας συνάρτησης, το οποίο έχει ως σκοπό να αλλάζει την τάση στην έξοδο της παλμό-γεννήτριας. Η περίοδος αυτού του ρολογιού ορίζεται από τον χρήστη μέσω των ρυθμίσεων που ορίζει για την παλμό-γεννήτρια. Εδώ να σημειώσουμε πως καθώς σε κάθε περίοδο του ρολογιού, αλλάζουμε την τάση στα άκρα τις εξόδου της παλμό-γεννήτριας, η περίοδος που ορίζουμε στη συνάρτηση για το δεύτερο ρολόι, είναι το 1/2 της περιόδου που ορίζει ο χρήστης στο γραφικό περιβάλλον. Καθώς εκεί ορίζεται η περίοδος του παλμού, και όχι η περίοδος που αλλάζει κατάσταση η παλμό-γεννήτρια. Οι χρόνοι που διαχειρίζεται ο controller, για τα δύο αυτά ρολόγια, είναι αυστηρά 3 millisecond για το πρώτο και ένα παράθυρο επιλογής για το χρήστη από millisecond ( 10 1 Hz αντίστοιχα ) για το δεύτερο, επιλογή που έγινε μετά από πειραματική μελέτη του συστήματος, ώστε να διατηρείται σταθερή η λειτουργία του ακόμα και σε κυκλώματα με εκατοντάδες στοιχεία. Κατά το πάτημα του εικονιδίου «Stop Simulation», εάν υπάρχει ενεργό τουλάχιστον ένα από τα δύο ρολόγια, τότε ο controller σταματάει την λειτουργία του. Ο controller επίσης διαχειρίζεται το γεγονός επιλογής ενός εικονιδίου από την μπάρα εργαλείων του γραφικού περιβάλλοντος. Στην πράξη μεταβιβάζει το ID του εικονιδίου, στο αντικείμενο της κλάσης CSimulationDrawHandler το οποίο δημιουργεί ανάλογος το κατάλληλο αντικείμενο απορρέουσας κλάσης από CSimulationDrawTool. Τέλος, ο controller διαχειρίζεται την διαδικασία αντιγραφής, επικόλλησης, αποκοπής, αναίρεσης και διαγραφής, επικοινωνώντας μεταξύ του αντικειμένου CSimulationDoc και CSimulationDrawHandler. Οι διαδικασίες αυτές από μεριάς του controller είναι απλά ο συντονισμός των μεθόδων που παρέχουν οι αναφερθέντες κλάσεις. 42 / 146

44 5. Το μοντέλο ( Doc ) της εφαρμογής Το μοντέλο ή έγγραφο της εφαρμογής με τον ορισμό της Microsoft αντιπροσωπεύεται από την κλάση CSimulationDoc. Σκοπός της κλάσης είναι να διαχειρίζεται τα δεδομένα της εφαρμογής έχοντας άμεση επικοινωνίας με την κλάση CSimulationDataAccess, επίσης έχοντας άμεση επικοινωνία με τον πυρήνα της προσομοίωσης καλεί τις μεθόδους της κλάσης (CSimulationKernel) ώστε να εκτελείται η προσομοίωση. Θα μπορούσαμε να χαρακτηρίσουμε την κλάση ως μία υλοποίηση η οποία παρέχει μία πιο φιλική διεπαφή στον controller για τον χειρισμό των αντικειμένων των κλάσεων CSimulationDataAccess, CSimulationKernel και CSimulationConnectionHandler ( εύρεση συνδεσμολογίας πυλών / κυκλώματος ). Η κλάση παρομοίως με την κλάση CSimulationController, μεταβιβάζει τα αιτήματα του controller στις τρείς προαναφερθέντες κλάσης, με την ευθύνη της σταθερότητας του συστήματος. Δηλαδή εκτελεί ελέγχους για τις ενέργειες που αναλαμβάνει στον συντονισμό των προαναφερθέντων αντικειμένων όπου κατέχει την «ιδιοκτησία». Καθώς έχουμε ήδη αναλύσει τα δύο τρίτα των κλάσεων που διαχειρίζεται στο κεφάλαιο 3, στην επόμενη ενότητα θα γίνει η ανάλυση της κλάσης CSimulationDataAccess. Οι κλάσεις που αντιπροσωπεύουν τα στοιχεία που εισάγουμε στον καμβά σχεδίασης είναι οι εξής. CSimulationElement, είναι η βασική κλάση όλων των κλάσεων που αντιπροσωπεύουν στοιχεία του κυκλώματος. Παρέχει την διεπαφή των κοινών μεθόδων των στοιχείων. CSimulationGate, είναι η βασική κλάση όλων των κλάσεων που αντιπροσωπεύουν τις πύλες του κυκλώματος. Υλοποιεί το μεγαλύτερος μέρος τις συμπεριφοράς των πυλών στην εφαρμογή. Οι απορρέουσες κλάσεις, απλώς παρέχουν την δική τους υλοποίηση στη μέθοδο adjustbasedongatecoordinate, μέθοδος η οποία ορίζει τις ακριβείς συντεταγμένες των ακροδεκτών εισόδου / εξόδου της πύλης με βάση την εικόνα που τις αντιπροσωπεύει, καθώς η εικόνα είναι διαφορετική για την κάθε μία. Εδώ να σημειώσουμε πως και το στοιχείο της παλμόγεννήτριας υλοποιείται από απορρέουσα κλάση της CSimulationGate. CSimulationInput, είναι η κλάση που αντιπροσωπεύει τις εισόδους ενός κυκλώματος. CSimulationOutput, είναι η κλάση που αντιπροσωπεύει τις εξόδους ενός κυκλώματος. CSimulationWire, είναι η κλάση που αντιπροσωπεύει τα καλώδια στο κύκλωμα. 43 / 146

45 5.1. Τα δεδομένα της εφαρμογής Η διαχείριση των δεδομένων γίνεται μέσω του αντικειμένου της κλάσης CSimulationDataAccess. Η κλάση κατέχει όλη την πληροφορία σχετικά με τα στοιχεία που εισάγουμε στον καμβά σχεδίασης, δηλαδή μέσω αυτής έχουμε αναφορά στις λίστες των στοιχείων ( plistofsimulationgates, plistofsimulationinputs, plistofsimulationwires ) και η κλάση κατέχει και δημιουργεί τους δείκτες των εικόνων που προβάλλονται στον καμβά π.χ. η εικόνα της πύλης AND. Η τελευταία ιδιότητα της κλάσης είναι να διαχειρίζεται στο τελικό στάδιο το «ρεύμα εισόδου» και το «ρεύμα εξόδου» των δεδομένων σε αρχείο κατά το άνοιγμα και την αποθήκευση μίας σχεδίασης. Ακολούθως θα αναλύσουμε τον τρόπο με τον οποίο αποθηκεύουμε και ανακτούμε τα δεδομένα μέσω αρχείου. Η αποθήκευση της σχεδίασης Καθώς ο χρήστης ολοκληρώσει την ενέργεια του για τον προορισμό και την ονομασία του αρχείου που θέλει να αποθηκεύσει το κύκλωμα του, η τελευταία μέθοδος που καλείται σε όλη την επικοινωνία μεταξύ του UI και του μοντέλου της εφαρμογής, είναι η μέθοδος savecircuitonfile της κλάσης CSimulationDataAccess. Η μέθοδος έχει μόνο ένα όρισμα, αυτό της πλήρης διαδρομής του αρχείου. Εφόσον πραγματοποιηθεί ο έλεγχος εγκυρότητας της διαδρομής του αρχείου, κάνοντας έλεγχο πως το αλφαριθμητικό όρισμα που δέχεται η μέθοδος έχει μήκος μεγαλύτερο ή ίσο των οχτώ χαρακτήρων ( 3 χαρακτήρες η διαδρομή του αποθηκευτικού μέσου π.χ C:\, 1 χαρακτήρα τουλάχιστον το όνομα του αρχείου και 4 χαρακτήρες η κατάληξη του αρχείου.cir ) ενεργοποιείται η διαδικασία αποθήκευσης των δεδομένων στο αρχείου που ορίστηκε. Η διαδικασία είναι αρκετά απλή. Το κάθε στοιχείο αντιστοιχίζεται με ένα κωδικό χαρακτήρα ως εξής. G, για το στοιχείο πύλη W, για το στοιχείο καλώδιο I, για το στοιχείο είσοδος O, για το στοιχείο έξοδος Διατρέχοντας την εκάστοτε λίστα στοιχείων του κυκλώματος, αποθηκεύουμε με καθαρά ορισμένο τρόπο την πληροφορία που κατέχει το στοιχείο όσον αφορά την θέση του, τον τύπο πύλης για την αντίστοιχη περίπτωση καθώς και την κατάσταση τάσης εάν υπάρχει στην έξοδο του. Το κάθε στοιχείο κατέχει μία γραμμή στο αρχείο. Έτσι λοιπόν για την κάθε κατηγορία στοιχείου, η μορφή της πληροφορίας που αποθηκεύεται είναι η εξής. 44 / 146

46 Πύλη G ΤΥΠΟΣ_ΠΥΛΗΣ ΣΥΝΤΕΤΑΓΜΕΝΗ_Χ ΣΥΝΤΕΤΑΓΜΕΝΗ_Υ ΤΑΣΗ_ΣΤΗΝ_ΕΞΟΔΟ π.χ. G Καλώδιο W ΣΥΝ/ΕΝΗ_Χ_ΑΡΧΗΣ ΣΥΝ/ΕΝΗ_Υ_ΑΡΧΗΣ ΣΥΝ/ΕΝΗ_Χ_ΤΕΛΟΥΣ ΣΥΝ/ΕΝΗ_Υ_ΤΕΛΟΥΣ π.χ. W Είσοδος I ΣΥΝΤΕΤΑΓΜΕΝΗ_Χ ΣΥΝΤΕΤΑΓΜΕΝΗ_Υ ΤΑΣΗ_ΣΤΗΝ_ΕΞΟΔΟ π.χ. I Έξοδος O ΣΥΝΤΕΤΑΓΜΕΝΗ_Χ ΣΥΝΤΕΤΑΓΜΕΝΗ_Υ π.χ. O Έτσι λοιπόν προωθούμαι τους αντίστοιχους χαρακτήρες μέσω του «ανοιχτού ρεύματος» που έχουμε στο αρχείου και ολοκληρώνεται η αποθήκευση του κυκλώματος. Το άνοιγμα αρχείου Κατά τη φόρτωση αρχείου που περιέχει σχεδίαση κυκλώματος, η διαδικασία είναι η αντίστροφη από αυτή της αποθήκευσης. Αρχικά, γίνεται πάλι ο ίδιος έλεγχος για το μήκος του αρχείου που επιθυμούμε να φορτώσουμε στη μνήμη και έπειτα εάν ο έλεγχος είναι ορθός, διαβάζουμε την κάθε γραμμή του αρχείου αναλύοντας τους χαρακτήρες της. Για κάθε γραμμή δημιουργούμε και το στοιχείο που περιγράφει και το τοποθετούμε στην αντίστοιχη λίστα των δεδομένων της εφαρμογής. Η λίστα με την προηγούμενη κατάσταση των στοιχείων Η εφαρμογή υποστηρίζει την λειτουργία της αναίρεσης ενός βάθους. Κατά την λανθασμένη ενέργεια του χρήστη, ο ίδιος έχει την δυνατότητα είτε με τη συντόμευση Ctrl-Z είτε με το αντίστοιχο εικονίδιο στη μπάρα εργαλείων να φέρει το κύκλωμα του στην προηγούμενη του κατάσταση. Για την υλοποίηση, χρησιμοποιούμε διπλότυπα σε όλα τα στοιχεία που τοποθετούνται στον καμβά. Το διπλότυπο στοιχείο έχει την κατάσταση που είχε το πραγματικό στοιχείο πριν την τελευταία ενέργεια του χρήστη στη σχεδίαση. Κατά την ενέργεια του χρήστη να πραγματοποιηθεί αναίρεση στην σχεδίαση, απλώς εναλλάσσουμε την εκάστοτε λίστα με τα διπλότυπα, με την πραγματική, φέρνοντας το κύκλωμα χρονικά ένα βήμα πίσω. 45 / 146

47 Η λίστα με τα αντιγραμμένα στοιχεία Η κλάση δεδομένων CSimulationDataAccess, κατέχει ακόμη μια λίστα με σκοπό τα αντιγραφόμενα κατά ενέργεια του χρήστη στοιχεία της σχεδίασης. Ο χρήστης κατά την επιθυμία του να αντιγράψει στοιχεία, δημιουργείται ένα διπλότυπο για το κάθε στοιχείο που επέλεξε και τοποθετείται σε αυτή τη λίστα. Κατά την ενέργεια της επικόλλησης, δημιουργούμε ακόμα ένα διπλότυπο για κάθε στοιχείο, το οποίο τελικός τοποθετείται και στην πραγματική λίστα στοιχείων που απεικονίζονται στο γραφικό περιβάλλον. 6. Συμπεράσματα Προοπτικές Επέκτασης Ο σχεδιασμός και η υλοποίηση της παρούσας πτυχιακής εργασίας, έφερε στην επιφάνεια τα προβλήματα που συναντά ο προγραμματιστής / αναλυτής βιβλιοθηκών προσομοίωσης ψηφιακών κυκλωμάτων. Ξεπεράστηκαν προβλήματα ως προς την ελαχιστοποίηση των πόρων συστήματος και την διάρκεια ολοκλήρωσης της προσομοίωσης με στόχο φυσικά την ορθή πάντα εξαγωγή αποτελεσμάτων. Μελετήθηκε σε μεγάλο βαθμό η δημιουργία γραφικών σε παραθυρική εφαρμογή από μηδενικό στάδιο και υλοποιήθηκαν τεχνικές απεικόνισης γραφικών με σκοπό την αποδοτικότητα τους. Μελετήθηκαν και εφαρμόστηκαν τεχνικές παράλληλου προγραμματισμού καθώς και προγραμματισμού πραγματικού χρόνου με σκοπό την ομαλή λειτουργία του συστήματος. Ο σπουδαστής ανέπτυξε τις γνώσεις του στην βιβλιοθήκη MFC και επίσης την δημιουργία ενός ολοκληρωμένου συστήματος λογισμικού. Προοπτικές επέκτασης του λογισμικού είναι οι ακόλουθες. Beta testing του συστήματος, καθώς η ορθότητα της εφαρμογής ελέγχθηκε μόνο από τους δημιουργούς. Ο χρήστης να μπορεί να δημιουργεί σύνθετα στοιχεία τα οποία θα αποτελούνται από επιμέρους κύκλωμα με σκοπό την διαχείριση τους ως μονάδα. Π.χ. το στοιχείο J-K flip flop. Η λειτουργία μεγέθυνσης και σμίκρυνσης της επιφάνειας σχεδίασης. Η χρήση περισσότερων του ενός στοιχείου παλμό-γεννήτριας. Μεγαλύτερο βάθος ιστορικού στην λειτουργία της αναίρεσης. Η προσομοίωση αναλογικών κυκλωμάτων. 46 / 146

48 7. Κυκλώματα που προσομοιώθηκαν για τον έλεγχο της ορθότητας της εφαρμογής. Το κύκλωμα Half Adder. Το κύκλωμα SR-Latch. Το κύκλωμα Full Adder. 47 / 146

49 Το κύκλωμα JK Flip Flop. Το κύκλωμα Multiplexer 4:1. Το κύκλωμα Decoder 3:8. 48 / 146

50 Το κύκλωμα 2 Bit Multiplier. Το κύκλωμα 4 Bit Counter. 49 / 146

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

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

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

"My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch

My Binary Logic Ένας προσομοιωτής λογικών πυλών στο Scratch "My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch Καραγιάννη Ελένη 1, Καραγιαννάκη Μαρία-Ελένη 2, Βασιλειάδης Αθανάσιος 3, Κωστουλίδης Αναστάσιος-Συμεών 4, Μουτεβελίδης Ιωάννης-Παναγιώτης 5,

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

9 ο Μαθητικό Συνέδριο Πληροφορικής Κεντρικής Μακεδονίας. "My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch

9 ο Μαθητικό Συνέδριο Πληροφορικής Κεντρικής Μακεδονίας. My Binary Logic Ένας προσομοιωτής λογικών πυλών στο Scratch 9 ο Μαθητικό Συνέδριο Πληροφορικής Κεντρικής Μακεδονίας Θεσσαλονίκη, 25-28 Απριλίου 2017, ΝΟΗΣΙΣ "My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής

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

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

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

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

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

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

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

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

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

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

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ. Κεφάλαιο 3

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ. Κεφάλαιο 3 ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Κεφάλαιο 3 Δυαδική λογική Με τον όρο λογική πρόταση ή απλά πρόταση καλούμε κάθε φράση η οποία μπορεί να χαρακτηριστεί αληθής ή ψευδής με βάση το νόημα της. π.χ. Σήμερα

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

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.3 : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών Στόχοι Μαθήματος: Να γνωρίσετε τις βασικές αρχές αριθμητικής των Η/Υ. Ποια είναι τα κυκλώματα

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

Ελίνα Μακρή

Ελίνα Μακρή Ελίνα Μακρή elmak@unipi.gr Μετατροπή Αριθμητικών Συστημάτων Πράξεις στα Αριθμητικά Συστήματα Σχεδίαση Ψηφιακών Κυκλωμάτων με Logism Άλγεβρα Boole Λογικές Πύλες (AND, OR, NOT, NAND, XOR) Flip Flops (D,

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 2 ο. ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 2 ο. ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΜΑΘΗΜΑ 2 ο ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ 2009-10 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ 1 Άλγεβρα Βοοle η θεωρητική βάση των λογικών κυκλωμάτων Η άλγεβρα Βοοle ορίζεται επάνω στο σύνολο

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

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

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

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

Πράξεις με δυαδικούς αριθμούς

Πράξεις με δυαδικούς αριθμούς Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 25-6 Πράξεις με δυαδικούς αριθμούς (λογικές πράξεις) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Εκτέλεση πράξεων

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

9. OIΚΟΥΜΕΝΙΚΕΣ ΠΥΛΕΣ ΠΟΛΛΑΠΛΩΝ ΕΙΣΟ ΩΝ

9. OIΚΟΥΜΕΝΙΚΕΣ ΠΥΛΕΣ ΠΟΛΛΑΠΛΩΝ ΕΙΣΟ ΩΝ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ 61 9. OIΚΟΥΜΕΝΙΚΕΣ ΠΥΛΕΣ ΠΟΛΛΑΠΛΩΝ ΕΙΣΟ ΩΝ I. Βασική Θεωρία Οι πύλες NAND και NOR ονομάζονται οικουμενικές πύλες (universal gates) γιατί κάθε συνδυαστικό κύκλωμα μπορεί να υλοποιηθεί

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

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

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

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

Κεφάλαιο 4 : Λογική και Κυκλώματα

Κεφάλαιο 4 : Λογική και Κυκλώματα Κεφάλαιο 4 : Λογική και Κυκλώματα Σύνοψη Τα κυκλώματα που διαθέτουν διακόπτες ροής ηλεκτρικού φορτίου, χρησιμοποιούνται σε διατάξεις που αναπαράγουν λογικές διαδικασίες για τη λήψη αποφάσεων. Στην ενότητα

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

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

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

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

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

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

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

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

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

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

Οι Εξελικτικοί Αλγόριθμοι (ΕΑ) είναι καθολικοί στοχαστικοί αλγόριθμοι βελτιστοποίησης, εμπνευσμένοι από τις βασικές αρχές της φυσικής εξέλιξης.

Οι Εξελικτικοί Αλγόριθμοι (ΕΑ) είναι καθολικοί στοχαστικοί αλγόριθμοι βελτιστοποίησης, εμπνευσμένοι από τις βασικές αρχές της φυσικής εξέλιξης. Οι Εξελικτικοί Αλγόριθμοι (ΕΑ) είναι καθολικοί στοχαστικοί αλγόριθμοι βελτιστοποίησης, εμπνευσμένοι από τις βασικές αρχές της φυσικής εξέλιξης. Ένα από τα γνωστότερα παραδείγματα των ΕΑ είναι ο Γενετικός

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές 12 ο Μάθημα Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ E-mail: leo@mail.ntua.gr URL: http://users.ntua.gr/leo 1 GROUP I A Λ ΤΡΙΤΗ PC-Lab GROUP IΙ Μ Ω ΠΑΡΑΣΚΕΥΗ Central Κέντρο

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

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31 Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 91 Windows Vista... 9 92 Επιφάνεια εργασίας... 18 93 Γραμμή εργασιών... 31 94 Χειρισμός παραθύρων... 53 95 Το παράθυρο Υπολογιστής... 77 96 Το μενού Έναρξη...

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κ. Δεμέστιχας Εργαστήριο Πληροφορικής Γεωπονικό Πανεπιστήμιο Αθηνών Επικοινωνία μέσω e-mail: cdemest@aua.gr, cdemest@cn.ntua.gr 1 5. ΑΛΓΕΒΡΑ BOOLE ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕΡΟΣ Β 2 Επαναληπτική

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Ενότητα 3: Άλγεβρα Βοole και Λογικές Πράξεις Δρ. Φραγκούλης Γεώργιος Τμήμα Ηλεκτρολογίας Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level)

Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level) Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level) Απαντήσεις 1. Η παραγγελία είναι σάντουιτς ή ένα σουβλάκι και τηγανητές πατάτες η οποία μπορεί να αναλυθεί ως σάντουιτς ή (σουβλάκι και τηγανητές πατάτες)

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

7. Ψηφιακά Ηλεκτρονικά

7. Ψηφιακά Ηλεκτρονικά 1 7. Ψηφιακά Ηλεκτρονικά 7.1 Εισαγωγή Στα προηγούμενα μελετήσαμε τη λειτουργία του τρανζίστορ στην ενεργό περιοχή, χαρακτηριστικό της οποίας είναι ότι τα σήματα εισόδου και εξόδου μπορούν να λάβουν συνεχείς

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

Συνδυαστικά Κυκλώματα

Συνδυαστικά Κυκλώματα 3 Συνδυαστικά Κυκλώματα 3.1. ΣΥΝΔΥΑΣΤΙΚΗ Λ ΟΓΙΚΗ Συνδυαστικά κυκλώματα ονομάζονται τα ψηφιακά κυκλώματα των οποίων οι τιμές της εξόδου ή των εξόδων τους διαμορφώνονται αποκλειστικά, οποιαδήποτε στιγμή,

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

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

Κεφάλαιο 8. Αριθμητική Λογική μονάδα Κεφάλαιο 8 Αριθμητική Λογική μονάδα 8.1 Εισαγωγή Στη μηχανική υπολογιστών η αριθμητική/λογική μονάδα (ALU) είναι ένα ψηφιακό κύκλωμα το οποίο εκτελεί αριθμητικούς και λογικούς υπολογισμούς. Η ALU είναι

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

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

7.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 7 ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ ΜΑΝ ΑΛΩΤΕΣ FLIP FLOP Σκοπός: Η κατανόηση της λειτουργίας των βασικών ακολουθιακών κυκλωµάτων. Θα µελετηθούν συγκεκριµένα: ο µανδαλωτής (latch)

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

3. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ & ΛΟΓΙΚΕΣ ΠΥΛΕΣ

3. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ & ΛΟΓΙΚΕΣ ΠΥΛΕΣ 3. ΛΟΓΙΚΕΣ ΠΡΞΕΙΣ & ΛΟΓΙΚΕΣ ΠΥΛΕΣ 3. ΛΟΓΙΚΕΣ ΠΡΞΕΙΣ 3.. Εισαγωγή ντίθετα προς τις μαθηματικές πράξεις και τις μεταβλητές τους, στην λογική διαδικασία χρησιμοποιούμε τις λογικές μεταβλητές οι οποίες μπορούν

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

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ.

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ. Εισαγωγή Εργαστήριο 2 ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ Σκοπός του εργαστηρίου είναι να κατανοήσουµε τον τρόπο µε τον οποίο εκφράζεται η ψηφιακή λογική υλοποιώντας ασκήσεις απλά και σύνθετα λογικά κυκλώµατα (χρήση του

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

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Συνδυαστική Λογική. Επιμέλεια Διαφανειών: Δ. Πανεπιστήμιο Πατρών Τμήμα Φυσικής Ψηφιακά Ηλεκτρονικά Συνδυαστική Λογική Επιμέλεια Διαφανειών: Δ. Μπακάλης Πάτρα, Φεβρουάριος 2009 Ψηφιακά Κυκλώματα Τα ψηφιακά κυκλώματα διακρίνονται σε συνδυαστικά (combinational)

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

Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level)

Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level) Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level) Ερωτήσεις Επανάληψης 1. Ένας καθηγητής λογικής μπαίνει σε ένα εστιατόριο και λέει : Θέλω ένα σάντουιτς ή ένα σουβλάκι και τηγανητές πατάτες. Δυστυχώς,

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

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

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

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

Εκτέλεση πράξεων. Ψηφιακά Ηλεκτρονικά και Δυαδική Λογική. Πράξεις με δυαδικούς αριθμούς. Πράξεις με δυαδικούς αριθμούς

Εκτέλεση πράξεων. Ψηφιακά Ηλεκτρονικά και Δυαδική Λογική. Πράξεις με δυαδικούς αριθμούς. Πράξεις με δυαδικούς αριθμούς Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 24-5 Πράξεις με δυαδικούς αριθμούς (λογικές πράξεις) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης ; Ποιες κατηγορίες

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

Συνδυαστικά Λογικά Κυκλώματα

Συνδυαστικά Λογικά Κυκλώματα Συνδυαστικά Λογικά Κυκλώματα Ένα συνδυαστικό λογικό κύκλωμα συντίθεται από λογικές πύλες, δέχεται εισόδους και παράγει μία ή περισσότερες εξόδους. Στα συνδυαστικά λογικά κυκλώματα οι έξοδοι σε κάθε χρονική

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ΗΜΥ 00 Εισαγωγή στην Τεχνολογία Στέλιος Τιμοθέου ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΑ ΘΕΜΑΤΑ ΜΑΣ ΣΗΜΕΡΑ Δυαδική λογική Πύλες AND, OR, NOT, NAND,

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

Ψηφιακά Συστήματα. 6. Σχεδίαση Συνδυαστικών Κυκλωμάτων

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεµατική Ενότητα ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Ακαδηµαϊκό Έτος 2006 2007 Γραπτή Εργασία #2 Ηµεροµηνία Παράδοσης 28-0 - 2007 ΠΛΗ 2: Ψηφιακά Συστήµατα ΠΡΟΤΕΙΝΟΜΕΝΕΣ ΛΥΣΕΙΣ Άσκηση : [5 µονάδες] Έχετε στη

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ψηφιακή Σχεδίαση Ενότητα 9: Ελαχιστοποίηση και Κωδικοποίηση Καταστάσεων, Σχεδίαση με D flip-flop, Σχεδίαση με JK flip-flop, Σχεδίαση με T flip-flop Δρ. Μηνάς

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

Ψηφιακά Συστήματα. 3. Λογικές Πράξεις & Λογικές Πύλες

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

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

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

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

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

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

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

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

Visual Flowchart Γενικά

Visual Flowchart Γενικά Visual Flowchart 3.020 -Γενικά Το Visual Flowchart ή «Data-Flow Visual Programming Language 3.020» (http://www. emu8086.com/fp) είναι ένα περιβάλλον ανάπτυξης και εκτέλεσης αλγορίθμων απευθείας σε μορφή

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access...9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 18 Άνοιγμα και κλείσιμο βάσης δεδομένων... 21 Ερωτήσεις ανακεφαλαίωσης... 22 Πρακτική εξάσκηση...

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

Η κανονική μορφή της συνάρτησης που υλοποιείται με τον προηγούμενο πίνακα αληθείας σε μορφή ελαχιστόρων είναι η Q = [A].

Η κανονική μορφή της συνάρτησης που υλοποιείται με τον προηγούμενο πίνακα αληθείας σε μορφή ελαχιστόρων είναι η Q = [A]. Κανονική μορφή συνάρτησης λογικής 5. Η κανονική μορφή μιας λογικής συνάρτησης (ΛΣ) ως άθροισμα ελαχιστόρων, από τον πίνακα αληθείας προκύπτει ως εξής: ) Παράγουμε ένα [A] όρων από την κάθε σειρά για την

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΒΑΣΙΚΑ ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ. 6.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 6 ΒΑΣΙΚΑ ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ. 6.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 6 ΒΑΣΙΚΑ ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ 6. Εισαγωγή Τα ψηφιακά κυκλώματα διακρίνονται σε συνδυαστικά και ακολουθιακά. Τα κυκλώματα που εξετάσαμε στα προηγούμενα κεφάλαια ήταν συνδυαστικά. Οι τιμές των

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

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης Γ2.1 Στοιχεία Αρχιτεκτονικής Γ Λυκείου Κατεύθυνσης Ορισμός άλγεβρας Boole Η άλγεβρα Boole ορίζεται, ως μία αλγεβρική δομή A, όπου: (α) Το Α είναι ένα σύνολο στοιχείων που περιέχει δύο τουλάχιστον στοιχεία

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Ακολουθιακή Λογική. Επιμέλεια Διαφανειών: Δ.

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

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

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Κεφάλαιο 2.3: Ρυθμίσεις των Windows Κεφάλαιο 2.3: Ρυθμίσεις των Windows 2.3.1 Βασικές πληροφορίες συστήματος Για να δούμε βασικές πληροφορίες για τον υπολογιστή μας, πατάμε το κουμπί «Έναρξη» και επιλέγουμε διαδοχικά «Πίνακας Ελέγχου», «Σύστημα

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

ΑΣΚΗΣΗ 1 ΛΟΓΙΚΕΣ ΠΥΛΕΣ

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

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

Εγχειρίδιο χρήσης του Άβακα

Εγχειρίδιο χρήσης του Άβακα Εγχειρίδιο χρήσης του Άβακα Με το παρόν λογισμικό γίνεται προσομοίωση των λειτουργικών δυνατοτήτων του εκπαιδευτικού υπολογιστή που έχει την ονομασία Άβακας. Η εικόνα του Άβακα εμφανίζεται σε παράθυρο

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

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα.

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα. «Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα. Πώς θα δουλέψεις με το Χελωνόκοσμο την πρώτη φορά 1. Θα χρησιμοποιήσεις το αριστερό πλήκτρο

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

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

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

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

K15 Ψηφιακή Λογική Σχεδίαση 6: Λογικές πύλες και λογικά κυκλώματα

K15 Ψηφιακή Λογική Σχεδίαση 6: Λογικές πύλες και λογικά κυκλώματα K15 Ψηφιακή Λογική Σχεδίαση 6: Λογικές πύλες και λογικά κυκλώματα Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Λογικές πύλες Περιεχόμενα 1 Λογικές πύλες

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

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

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

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

6.1 Καταχωρητές. Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f.

6.1 Καταχωρητές. Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f. 6. Καταχωρητές Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f. Καταχωρητής 4 ψηφίων Καταχωρητής με παράλληλη φόρτωση Η εισαγωγή

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

επανενεργοποιηθεί Βιομηχανικά Ηλεκτρονικά - Κ.Ι.Κυριακόπουλος Control Systems Laboratory

επανενεργοποιηθεί Βιομηχανικά Ηλεκτρονικά - Κ.Ι.Κυριακόπουλος Control Systems Laboratory Μετατροπέας Αναλογικού Σήµατος σε Ψηφιακό Ο δειγματολήπτης (S/H) παίρνει δείγματα του στιγμιαίου εύρους ενός σήματος και διατηρεί την τάση που αντιστοιχεί σταθερή, τροφοδοτώντας έναν κβαντιστή, μέχρι την

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ψηφιακή Σχεδίαση Ενότητα 12: Σύνοψη Θεμάτων Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/mdasyg

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

ΑΣΚΗΣΗ 9 ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ (COUNTERS)

ΑΣΚΗΣΗ 9 ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ (COUNTERS) ΑΣΚΗΣΗ 9 ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ (COUNTERS) Αντικείμενο της άσκησης: H σχεδίαση και η χρήση ασύγχρονων απαριθμητών γεγονότων. Με τον όρο απαριθμητές ή μετρητές εννοούμε ένα ακολουθιακό κύκλωμα με FF, οι καταστάσεις

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

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

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

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

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

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

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

Atlantis - Νέο user interface

Atlantis - Νέο user interface New Desktop 1 Atlantis - Νέο user interface ATLANTIS - ΝΕΟ USER INTERFACE... 2 ΓΕΝΙΚΗ ΠΑΡΟΥΣΙΑΣΗ... 3 ΓΡΑΜΜΗ ΣΥΣΤΗΜΑΤΟΣ... 4 ΜΠΑΡΑ ΧΡΗΣΤΗ (USER TOOLBAR)... 5 ΚΕΝΤΡΙΚΟ ΜΕΝΟΥ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ... 6 Κεντρικό

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

1. Τα τμήματα της επιφάνειας εργασίας των Windows

1. Τα τμήματα της επιφάνειας εργασίας των Windows 1. Τα τμήματα της επιφάνειας εργασίας των Windows Εικονίδια συντομεύσεων (αρχείου-φακέλου) Εικονίδια Ανενεργά Ενεργό Επιφάνεια (αρχείου-φακέλου) παράθυρα παράθυρο εργασίας Γραμμή μενού Γραμμή εργαλείων

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΜΑΘΗΜΑ : Η/Υ I (ενότητα WINDOWS) ΥΠΕΥΘΥΝΟΣ : ΑΝΑΣΤΑΣΙΟΣ ΟΙΚΟΝΟΜΙΔΗΣ, Καθηγητής ΕΡΓΑΣΤΗΡΙΑ : ΘΕΑΝΩ ΧΑΤΖΙΔΑΚΗ, Εργαστηριακό

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

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5) ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ Τοποθετώ μια δισκέτα στον οδηγό τη δισκέτας του υπολογιστή. Τοποθετώ τη δισκέτα που έχει το αρχείο μου στον οδηγό τη δισκέτας του υπολογιστή.

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

e-book ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΑΣΚΗΣΕΙΣ

e-book ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΑΣΚΗΣΕΙΣ e-book ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΑΣΚΗΣΕΙΣ 1. Να μετατρέψετε τον δεκαδικό 16.25 σε δυαδικό. 2. Να μετατρέψετε τον δεκαδικό 18.75 σε δυαδικό και τον δεκαδικό 268 σε δεκαεξαδικό. 3. Να βρεθεί η βάση εκείνου του αριθμητικού

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

Ελίνα Μακρή

Ελίνα Μακρή Ελίνα Μακρή elmak@unipi.gr Μετατροπή Αριθμητικών Συστημάτων Πράξεις στα Αριθμητικά Συστήματα Σχεδίαση Ψηφιακών Κυκλωμάτων με Logism Άλγεβρα Boole Λογικές Πύλες (AND, OR, NOT, NAND, XOR) Flip Flops (D,

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

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/

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

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας Κεφάλαιο 3 ο Αρχιτεκτονική Υπολογιστών Μάθημα 3.: Κεντρική Μονάδα Επεξεργασίας Όταν ολοκληρώσεις το κεφάλαιο θα μπορείς: Να σχεδιάζεις την εσωτερική δομή της ΚΜΕ και να εξηγείς τη λειτουργία των επιμέρους

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

Κεφάλαιο 4. Λογική Σχεδίαση

Κεφάλαιο 4. Λογική Σχεδίαση Κεφάλαιο 4 Λογική Σχεδίαση 4.1 Εισαγωγή Λογικές συναρτήσεις ονομάζουμε εκείνες για τις οποίες μπορούμε να αποφασίσουμε αν είναι αληθείς ή όχι. Χειριζόμαστε τις λογικές προτάσεις στην συγγραφή λογισμικού

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

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»...

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»... Περιεχόμενα ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»....2 Πλοήγηση στο χάρτη... 3 Σχεδίαση στο χάρτη... 4 Εκτύπωση του χάρτη... 6 Μετρήσεις επάνω στο χάρτη... 9 Εμφάνιση

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

Αρχιτεκτονική Μηχανής. Αποθήκευση εδοµένων

Αρχιτεκτονική Μηχανής. Αποθήκευση εδοµένων Αρχιτεκτονική Μηχανής Αποθήκευση εδοµένων Οι πράξεις AND, OR, και Αλγεβρας Boole XOR (exclusive or) της Μία απεικόνιση των πυλών AND, OR, XOR, και NOT καθώς και των τιµών εισόδου (inputs) και εξόδου (output)

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

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

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

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

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

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

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

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

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Λογισμικό Προσομοίωσης LogiSim καιχρήση KarnaughMaps Διδάσκοντες: Δρ. Αγαθοκλής Παπαδόπουλος & Δρ. Γιώργος Ζάγγουλος Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών

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

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp Ευ ομή Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp Περιεχόμενα 1. Χειρισμός του περιβάλλοντος LT125-dp Εγκατάσταση & Τρέξιμο Χειρισμός της ψηφιακής εφαρμογής Πλοήγηση στο περιεχόμενο Αλλαγή του μεγέθους

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

Πράξεις με δυαδικούς αριθμούς

Πράξεις με δυαδικούς αριθμούς Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 25-6 Πράξεις με δυαδικούς αριθμούς (αριθμητικές πράξεις) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Πράξεις με δυαδικούς

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

Σχετική κίνηση αντικειμένων

Σχετική κίνηση αντικειμένων Σχετική κίνηση αντικειμένων Πως θα μπορούσε να κινηθεί ένας χαρακτήρας προς την έξοδο ενός λαβύρινθου; Πως θα μπορούσε το αυτοκινητάκι μας να κινείται μέσα στην πίστα; Πως θα μπορούσαμε να αναπαραστήσουμε

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

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής Κεφάλαιο 4 ο Ο Προσωπικός Υπολογιστής Μάθημα 4.3 Ο Επεξεργαστής - Εισαγωγή - Συχνότητα λειτουργίας - Εύρος διαδρόμου δεδομένων - Εύρος διαδρόμου διευθύνσεων - Εύρος καταχωρητών Όταν ολοκληρώσεις το μάθημα

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

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

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

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

Πρακτικές οδηγίες για την Επεξεργασία Κειμένου

Πρακτικές οδηγίες για την Επεξεργασία Κειμένου 11 Εργαλεία έκφρασης και δημιουργίας Επεξεργασία Κειμένου Α Γυμνασίου Πρακτικές οδηγίες για την Επεξεργασία Κειμένου Ένα πρόγραμμα επεξεργασίας κειμένου μας προσφέρει τη δυνατότητα να: προσθέτουμε, να

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Ενότητα 3: Άλγεβρα Βοole και Λογικές Πράξεις Δρ. Φραγκούλης Γεώργιος Τμήμα Ηλεκτρολογίας Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ.3 ΑΣΥΓΧΡΟΝΟΣ ΔYΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.5 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.7 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ ΜΕ LATCH.

ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ.3 ΑΣΥΓΧΡΟΝΟΣ ΔYΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.5 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.7 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ ΜΕ LATCH. ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΨΗΦΙΑΚΑ ΟΛΟΚΛΗΡΩΜΕΝΑ ΚΥΚΛΩΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ ΣΗΜΕΙΩΣΕΙΣ ΑΠΑΡΙΘΜΗΤΕΣ Κ. ΕΥΣΤΑΘΙΟΥ, Γ. ΠΑΠΑΔΟΠΟΥΛΟΣ

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

Κεφάλαιο Τρία: Ψηφιακά Ηλεκτρονικά

Κεφάλαιο Τρία: Ψηφιακά Ηλεκτρονικά Κεφάλαιο Τρία: 3.1 Τι είναι αναλογικό και τι ψηφιακό µέγεθος Αναλογικό ονοµάζεται το µέγεθος που µπορεί να πάρει οποιαδήποτε τιµή σε µια συγκεκριµένη περιοχή τιµών π.χ. η ταχύτητα ενός αυτοκινήτου. Ψηφιακό

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

Κεφάλαιο 3. Λογικές Πύλες

Κεφάλαιο 3. Λογικές Πύλες Κεφάλαιο 3 Λογικές Πύλες 3.1 Βασικές λογικές πύλες Τα ηλεκτρονικά κυκλώματα που εκτελούν τις βασικές πράξεις της Άλγεβρας Boole καλούνται λογικές πύλες.κάθε τέτοια πύλη δέχεται στην είσοδό της σήματα με

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

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης 1 Λεπτομέριες τοιχοποιϊας Σχεδίαση κάτοψης Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης Ξεκινώντας το πρόγραμμα εμφανίζονται οι επιλογές σχετικά με το τι θέλετε να κάνετε. Δημιουργώντας Νέο Δωμάτιο Όταν ο

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

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

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

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

Περιεχόµενα. I Βασικές Γνώσεις 1

Περιεχόµενα. I Βασικές Γνώσεις 1 Περιεχόµενα I Βασικές Γνώσεις 1 1 Μοντελοποίηση Προγραµµάτων 3 1.1 Ψευδογλώσσα....................... 6 1.2 Διαγράµµατα Ροής..................... 6 1.3 Παραδείγµατα σε Ψευδογλώσσα και Διαγράµµατα Ροής.

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

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access... 9 Κεφάλαιο 2: Microsoft Access 2002... 20 Κεφάλαιο 3: Το σύστημα Βοήθειας του Microsoft Office ΧΡ... 36

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

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού

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

Copyright 2017 HP Development Company, L.P.

Copyright 2017 HP Development Company, L.P. Οδηγός χρήσης Copyright 2017 HP Development Company, L.P. Οι πληροφορίες στο παρόν έγγραφο μπορεί να αλλάξουν χωρίς προειδοποίηση. Οι μοναδικές εγγυήσεις για τα προϊόντα και τις υπηρεσίες της HP είναι

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

Τιμή Τιμή. σκορ. ζωές

Τιμή Τιμή. σκορ. ζωές Εισαγωγή στην έννοια των μεταβλητών Οι μεταβλητές Θα πρέπει να έχετε παρατηρήσει ότι έχουμε φτιάξει τόσα παιχνίδια μέχρι αυτό το σημείο και δεν έχουμε αναφερθεί πουθενά για το πως μπορούμε να δημιουργήσουμε

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

Πανεπιστήµιο Θεσσαλίας

Πανεπιστήµιο Θεσσαλίας Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΗΥ 130 : Ψηφιακή σχεδίαση Βόλος 2015 1 Εισαγωγή Το Multisim είναι ένα ολοκληρωμένο περιβάλλον προσομοίωσης της συμπεριφοράς

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