Επιβλέπων: Δρ. Σπυρίδων Α. Καζαρλής, Καθηγητής

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Εισαγωγή στο περιβάλλον εργασίας του
Advertisements

Δημιουργία της πρώτης σας βάσης δεδομένων Access 2013 j και στη συνέχεια πατήστε το πλήκτρο F5 ή κάντε κλικ στις επιλογές Προβολή παρουσίασης > Από την.
Συνδυαστικά Κυκλώματα
Το υλικο του Υπολογιστη
13.1 Λογικές πύλες AND, OR, NOT, NAND, NOR
Συνδιαστικά Λογικά Κυκλώματα
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
ΕΝΟΤΗΤΑ 8Η ΜΝΗΜΕΣ ROM ΚΑΙ RΑΜ
Μνήμη και Προγραμματίσιμη Λογική
Πτυχιακή εργασία των Κωνσταντίνου Κουρμούση (1604)
Εισαγωγή
ΠΡΟΗΓΜΕΝΑ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
Άλγεβρα Boole και Λογικές Πύλες
ΕΝΟΤΗΤΑ 7Η ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ ΤΗΣ ΤΥΠΙΚΗΣ ΛΟΓΙΚΗΣ
HY 120 ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ Ασυγχρονα ακολουθιακα κυκλωματα.
4. Συνδυαστική Λογική 4.1 Εισαγωγή
ΕΝΟΤΗΤΑ 6Η ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ ΤΗΣ ΤΥΠΙΚΗΣ ΛΟΓΙΚΗΣ Β΄
ΕΝΟΤΗΤΑ 11 Η ΠΡΟΓΡΑΜΜΑΤΙΖΟΜΕΝΟΙ ΛΟΓΙΚΟΙ ΠΙΝΑΚΕΣ (PROGRAMMABLE LOGIC ARRAYS)  Οι λογικοί Πίνακες ως γεννήτριες συναρτήσεων  Επίπεδα AND-OR και OR-AND.
συγχρονων ακολουθιακων κυκλωματων
Συγχρονα Ακολουθιακα Κυκλωματα Flip-Flops Καταχωρητες
ΗΥ120 ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ Συναρτησεις Boole.
Συνδυαστικά Κυκλώματα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Προγραμματιζόμενοι Λογικοί Ελεγκτές (PLC’s) – Ladder diagram
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
XERTE TUTORIAL - ΣΗΜΕΙΩΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ ΘΜΕΛ ΣΤ. ΔΗΜΗΤΡΙΑΔΗΣ Xerte Interaction – Διάδραση Θεωρίες Μάθησης & Εκπαιδευτικό Λογισμικό Σημειώσεις Εργαστηρίου.
Συγχρονα Ακολουθιακα Κυκλωματα Flip-Flops Καταχωρητες
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Λογικές πύλες Λογικές συναρτήσεις
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Συνδυαστικά Κυκλώματα (Combinational Circuits)
Κεφάλαιο 10 – Υποπρογράμματα
Γυμνάσιο Νέας Κυδωνίας
Εξομοιωτής Ψηφιακών Κυκλωμάτων
{ Ψηφιακή Σχεδίαση εργαστήριο Γιάννης Νικολουδάκης.
ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 1 Διάλεξη 12: Διάλεξη 12: Καταχωρητές - Μετρητές Δρ Κώστας Χαϊκάλης.
{ Ψηφιακή Σχεδίαση εργαστήριο Γιάννης Νικολουδάκης.
ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 8: Ολοκληρωμένα κυκλώματα – Συνδυαστική λογική – Πολυπλέκτες – Κωδικοποιητές - Αποκωδικοποιητές Δρ Κώστας Χαϊκάλης ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ.
ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ
Έβδομο μάθημα Ψηφιακά Ηλεκτρονικά.
ΕΝΟΤΗΤΑ 3 – Κεφάλαιο 9: Ζωγραφική
Τ.Ε.Ι. Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμ. Μηχανικών Πληροφορικής
Ένατο μάθημα Ψηφιακά Ηλεκτρονικά.
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Όγδοο μάθημα Ψηφιακά Ηλεκτρονικά.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΠΡΟΧΩΡΗΜΕΝΕΣ ΤΕΧΝΙΚΕΣ
Συστήματα CAD Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών
ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε.
Ψηφιακή Σχεδίαση Εργαστήριο Τετάρτη 9/12/2015.
ΑΚΟΛΟΥΘΙΑΚΑ ΣΤΟΙΧΕΙΑ.
Διάλεξη 11: Ανάλυση ακολουθιακών κυκλωμάτων Δρ Κώστας Χαϊκάλης
Διάλεξη 9: Συνδυαστική λογική - Ασκήσεις Δρ Κώστας Χαϊκάλης
ΣΥΝΟΠΤΙΚΗ ΠΑΡΟΥΣΙΑΣΗ POWERPOINT
Programmable Logic Technologies
Εισαγωγή στη VHDL 5/8/2018 Εισαγωγή στη VHDL.
“Ψηφιακός έλεγχος και μέτρηση της στάθμης υγρού σε δεξαμενή"
ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη εκπαιδευτικής εφαρμογής.
Πίνακες διέγερσης Q(t) Q(t+1) S R X X 0
Χειμερινό εξάμηνο 2017 Πέμπτη διάλεξη
Λογικές πύλες και υλοποίηση άλγεβρας Boole ΑΡΒΑΝΙΤΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ(ΣΥΝΕΡΓΑΤΕΣ):ΔΗΜΗΤΡΙΟΣ ΔΑΒΟΣ- ΜΑΡΙΑ ΕΙΡΗΝΗ KAΛΙΑΤΣΗ-ΦΡΑΤΖΕΣΚΟΣ ΒΟΛΤΕΡΙΝΟΣ… ΕΠΠΑΙΚ ΑΡΓΟΥΣ.
Τ.Ε.Ι. Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμ. Μηχανικών Πληροφορικής
Ένα ακολουθιακό κύκλωμα καθορίζεται από τη χρονική ακολουθία των ΕΙΣΟΔΩΝ, των ΕΞΟΔΩΝ και των ΕΣΩΤΕΡΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ ΣΥΓΧΡΟΝΑ: Οι αλλαγές της κατάστασης.
Τρόπος προσαρμογής του Microsoft SharePoint Τοποθεσία Web με σύνδεση
ΠΡΟΓΡΑΜΜΑ ΕΠΙΜΟΡΦΩΣΗΣ Β΄ΕΠΙΠΕΔΟ ΓΙΑ ΠΕ03
Γρήγορη αναφορά του Lync 2013 για Office 365
Εργασίες 9ου – 10ου Εργαστηρίου
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Δυναμικός Κατακερματισμός
ΕΝΟΤΗΤΑ 3 – Κεφάλαιο 9: Ζωγραφική
Μεταγράφημα παρουσίασης:

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

ΠΕΡΙΛΗΨΗ Το αντικείμενο της εργασίας αυτής είναι η ανάπτυξη αυτόνομου λογισμικού σε περιβάλλον οπτικού προγραμματισμού, που έχει την δυνατότητα προσομοίωσης συνδυαστικών και ακολουθιακών ψηφιακών κυκλωμάτων.  Δυνατότητα σύνθεσης ενός ψηφιακού κυκλώματος (σχεδίαση) με δυνατότητα αποθήκευσής του κυκλώματος με συμβολικό τρόπο, σε μορφή που θα μπορεί να επεξεργαστεί και μέσα από άλλα προγράμματα όπως π.χ. ένας Text Editor.  Δυνατότητα προσομοίωσης των ψηφιακών κυκλωμάτων που συνθέτει ο χρήστης με εμφάνιση στο κύκλωμα των εισόδων που επίσης θα καθορίζει ο χρήστης και καθορισμό και εμφάνιση των εξόδων του κυκλώματος.  Δυνατότητα προσομοίωσης ακολουθιακών ψηφιακών κυκλωμάτων, με δυνατότητα μνήμης, και προσομοίωση των χρόνων καθυστέρησης των πυλών και της διάδοσης των σημάτων σε πραγματικό χρόνο.  Λειτουργία του προσομοιωτή με γνωστά ψηφιακά κυκλώματα τόσο συνδυαστικά, όσο και ακολουθιακά.

Ανάλυση απαιτήσεων και δυνατοτήτων εφαρμογής. (1)  Λευκή επιφάνεια σχεδίασης όπου ο χρήστης θα σχεδιάζει τα κυκλώματα του.  Τρία βασικά μενού. «Αρχείο», «Ενέργειες» και «Βοήθεια».  Τα διαθέσιμα κυκλώματα στη βιβλιοθήκη θα είναι ένα SR-Flip Flop, ένας μετρητής, ένας μετρητής με αποσυμπλέκτη, έναν γραμμικό αποσυμπλέκτη 2 προς 1, έναν πλήρη αθροιστή, έναν συγκριτή δύο λέξεων των δύο bit η κάθε μία, έναν ολισθητή τεσσάρων bit, έναν αποκωδικοποιητή 2 προς 4 και ένα D Flip Flop.  Ο χρήστης θα μπορεί να αποθηκεύει το κύκλωμά του. Εάν επιχειρήσει να ξεκινήσει νέα σχεδίαση χωρίς να έχει αποθηκεύσει το προηγούμενο κύκλωμά του θα εμφανίζεται σχετικό μήνυμα επιβεβαίωσης.  Ο χρήστης θα έχει τη δυνατότητα να ανοίξει ένα ήδη αποθηκευμένο κύκλωμά του .  Όταν ο χρήστης θα επιλέγει «Προσομοίωση» θα πραγματοποιείται η προσομοίωση του κυκλώματος που βρίσκεται στην επιφάνεια σχεδίασης.  Δυνατότητα προσομοίωσης «βήμα προς βήμα».

Ανάλυση απαιτήσεων και δυνατοτήτων εφαρμογής. (2)  Δυνατότητα μηδενισμού των τιμών των πυλών ώστε να πραγματοποιηθεί εκ νέου η προσομοίωση.  Βασικά εργαλεία σχεδίασης: πύλη XOR, πύλη XNOR, πύλη NOT, PULSE GENERATOR, INPUT LOGICAL 1, INPUT LOGICAL 0, JK FLIP FLOP.  ComboBox όπου θα εμπεριέχει όλα τα PULSE GENERATORS που βρίσκονται στην επιφάνεια σχεδίασης.  Αλλαγή παλμών.  Σε περίπτωση που ο χρήστης σβήνει ή προσθέτει κι άλλα η λίστα θα ανανεώνεται.  TrackBar όπου ο χρήστης θα έχει τη δυνατότητα να αυξομειώνει την ταχύτητα που γίνεται η προσομοίωση.  CheckBox «Σχεδιασμός Συνδέσεων»  όταν θα είναι «τσεκαρισμένο» ο χρήστης θα μπορεί να δημιουργεί τις συνδέσεις μεταξύ των στοιχείων στην επιφάνεια σχεδίασης. Στην αντίθετη περίπτωση ο χρήστης θα μπορεί να μετακινεί τα στοιχεία.  Ο χρήστης θα μπορεί να εισάγει τα στοιχεία στην επιφάνεια σχεδίασης με τη διαδικασία drag ‘n’ drop.  Αρχικές τιμές «0».  Δεξί κλικ για delete.

Συνδυαστικά κυκλώματα. Πολλές εφαρμογές ψηφιακής λογικής απαιτούν ένα κύκλωμα με πολλές εισόδους και πολλές εξόδους, στο οποίο οι έξοδοι καθορίζονται μονοσήμαντα από τις τρέχουσες εισόδους. Τα κυκλώματα αυτά λέγονται Συνδυαστικά (Combinational). Βασικά Συνδυαστικά κυκλώματα είναι:  Αποκωδικοποιητής (Decoder)  Πολυπλέκτης (Multiplexer)  Αποπολυπλέκτης (Demultiplexer)  Συγκριτής (Comparator)  Προγραμματιζόμενος Λογικός Πίνακας (Programmable Logic Array – PLA)

Ακολουθιακά κυκλώματα. Στα ακολουθιακά κυκλώματα οι έξοδοι σε κάθε χρονική στιγμή εξαρτώνται όχι μόνον από τις τιμές των εισόδων τη χρονική εκείνη στιγμή, αλλά και από τις τιμές των εξόδων των στοιχείων μνήμης του κυκλώματος την προηγούμενη χρονική στιγμή. Τα ακολουθιακά κυκλώματα χωρίζονται σε δύο μεγάλες κατηγορίες:  Σ ύ γ χ ρ ο ν α (synchronous)  Α σ ύ γ χ ρ ο ν α (asynchronous)  Οποιεσδήποτε αλλαγές στην έξοδο (κατάσταση) ενός σύγχρονου ακολουθιακού κυκλώματος συμβαίνουν σε συγκεκριμένες (διακριτές) χρονικές στιγμές  όχι προβλήματα αστάθειας  ο χρονισμός τους μπορεί εύκολα να αναλυθεί σε ανεξάρτητα διακριτά βήματα.  Η συμπεριφορά ενός ασύγχρονου ακολουθιακού κυκλώματος εξαρτάται από τη σειρά, με την οποία αλλάζουν οι παλμοί εισόδου του και μπορεί να επηρεασθεί σε οποιαδήποτε χρονική στιγμή.  Flip Flop

Παράδειγμα Συνδυαστικού κυκλώματος.  Πολυπλέκτης Γενικά, οι πολυπλέκτες (multiplexers) είναι κυκλώματα που συμπεριφέρονται σαν περιστροφικοί διακόπτες, μέσω των οποίων επιλέγεται ως σήμα εξόδου οποιοδήποτε από πολλά σήματα εισόδου. Στα ψηφιακά ηλεκτρονικά, ο πολυπλέκτης είναι ένα συνδυασμός λογικών πυλών και έχει δύο ή περισότερες εισόδους και μία έξοδο. Το ποια είσοδος θα "περάσει" στην έξοδο ελέγχεται από τη δυαδική έκφραση που θα εφαρμοσθεί σε μια άλλη ομάδα εισόδων (είσοδοι επιλογής). Ένας τυπικός ψηφιακός πολυπλέκτης 4 εισόδων (D3-D0) και ο αντίστοιχος πίνακας αλήθειας δείχνεται παρακάτω: Η ενεργή είσοδος (ενεργή δίαυλος) επιλέγεται με εφαρμογή του κατάλληλου κώδικα στις εισόδους επιλογής (C1, C0).

Παράδειγμα Ακολουθιακού κυκλώματος.  Flip-flop με πύλες NAND Το RS FLIP FLOP έχει δύο σύγχρονες εισόδους που ονομάζονται R και S. Συμβολίζοντας την επόμενη κατάσταση με Q(n+1) τότε σε κάθε μία από τις παρακάτω περιπτώσεις ισχύει:  Όταν S=0 και R=0, τότε η επόμενη κατάσταση (Q(n+1)) είναι ίδια με την προηγούμενη κατάσταση, δηλαδή Q(n).  Όταν S=0 και R=1, τότε η επόμενη κατάσταση είναι Q(n+1)=0.  Όταν S=1 και R=0, τότε η επόμενη κατάσταση είναι Q(n+1)=1.  Όταν S=1 και R=1, τότε η επόμενη κατάσταση είναι απροσδιόριστη. Αυτή είναι μη χρησιμοποιούμενη κατάσταση (απροσδιόριστη).

Εργαλεία λογισμικών που χρησιμοποιήθηκαν: Το εργαλείο προγραμματισμού που χρησιμοποιήθηκε για την ανάπτυξη της εφαρμογής είναι η C++ Borland Builder, Version 6. Enterprise Suite.  Ζωγραφική, έκδοση 5.1. Microsoft Corporation. [ Για το σχεδιασμό των πυλών & την επεξεργασία των screenshots ]  Adobe Photoshop CS2, Version 9.0.2. [ Για τον υπολογισμό των αποστάσεων των ακροδεκτών ]  Word 2003. Microsoft Office. Professional Edition. [ Συγγραφή θεωρητικού μέρους της πτυχιακής εργασίας. ]  PowerPoint 2003. Microsoft Office. Professional Edition. [ Δημιουργία διαφανειών παρουσίασης της πτυχιακής. ]

Προσέγγιση Υλοποίησης  H παρούσα πτυχιακή υλοποιήθηκε γύρω από την ιδέα ότι κάθε ψηφιακό κύκλωμα αποτελείται από Ψηφιακά Στοιχεία και συνδέσεις μεταξύ τους.  Με βάση το παραπάνω σκεπτικό υλοποιήθηκε μια κλάση DigitalElement για την αναπαράσταση κάθε ψηφιακού στοιχείου του κυκλώματος. Τέτοια στοιχεία μπορεί να είναι μια λογική πύλη, μια γεννήτρια παλμών ένα flip-flop κοκ.  Εσωτερικά η κλάση περιλαμβάνει τις διασυνδέσεις κάθε ψηφιακού στοιχείου με άλλα στοιχεία, τις τιμές των εισόδων και εξόδων στην τρέχουσα κατάσταση καθώς και μεταβλητές ελέγχου.  Οι μεταβλητές ελέγχου είναι μια μοναδική ταυτότητα για κάθε στοιχείο, ένα ζευγάρι μεταβλητών που χρησιμοποιείται από την συνάρτηση προσομοίωσης και μεταβλητές που σχετίζονται με το γραφικό περιβάλλον.  Κάθε κύκλωμα, αναπαρίσταται με ένα σύνολο στοιχείων, το οποίο στην υλοποίησή μας αποθηκεύεται σε έναν πίνακα, με μοναδικό τρόπο.  Η κλάση περιλαμβάνει επιπρόσθετα βοηθητικές συναρτήσεις οι οποίες περιγράφονται στη συνέχεια.

H παρούσα πτυχιακή υλοποιήθηκε γύρω από την ιδέα ότι κάθε ψηφιακό κύκλωμα αποτελείται από Ψηφιακά Στοιχεία και συνδέσεις μεταξύ τους. Με βάση το παραπάνω σκεπτικό υλοποιήθηκε μια κλάση DigitalElement για την αναπαράσταση κάθε ψηφιακού στοιχείου του κυκλώματος. Τέτοια στοιχεία μπορεί να είναι:  Λογικές πύλες  Γεννήτριες παλμών  Flip-flop Εσωτερικά η κλάση περιλαμβάνει:  Τις διασυνδέσεις κάθε ψηφιακού στοιχείου με άλλα στοιχεία.  Τις τιμές των εισόδων και εξόδων στην τρέχουσα κατάσταση.  Μεταβλητές ελέγχου.  Βοηθητικές συναρτήσεις. Κάθε κύκλωμα, αναπαρίσταται με ένα σύνολο στοιχείων, το οποίο αποθηκεύεται σε έναν πίνακα.

Πως σχεδιάζονται – πως μετακινούνται οι πύλες στην επιφάνεια σχεδίασης Πως σχεδιάζονται – πως μετακινούνται οι πύλες στην επιφάνεια σχεδίασης. (1) Ο σχεδιασμός των κυκλωμάτων στη γραφική διεπαφή πραγματοποιείται με την τεχνική drag-and-drop. Για να το πετύχουμε αυτό, δημιουργήσαμε ένα βασικό panel, πάνω στο οποίο σχεδιάζεται το κύκλωμα, καθώς και εικόνες των στοιχείων που υποστηρίζονται στην δεξιά μεριά (στοιχεία TImage *imgAnd, *imgNand, *imgOr, *imgNor, *imgXor, *imgXnor, *imgNot, * imgTrue, *imgFalse, *imgPulse, *imgFlipFlop). Στη συνέχεια τροποποιήσαμε τις συναρτήσεις του παραθύρου που ελέγχουν τις διαδικασίες drag-and-drop: DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept)  Accept=true  ImageDragDrop(TObject *Sender, TObject *Source, int X, int Y)  έλεγχος διαδικασίας. Η τεχνική drag-and-drop χρησιμοποιείται για τα εξής:  Εισαγωγή νέου ψηφιακού στοιχείου.  Μετακίνηση υπάρχοντος ψηφιακού στοιχείου επάνω στην επιφάνεια σχεδίασης.  Σύνδεση δύο στοιχείων.

Πως σχεδιάζονται – πως μετακινούνται οι πύλες στην επιφάνεια σχεδίασης Πως σχεδιάζονται – πως μετακινούνται οι πύλες στην επιφάνεια σχεδίασης. (2) Η συνάρτηση αντιλαμβάνεται την πρόθεση του χρήστη ανάλογα με την κίνηση που εκτελεί. Έτσι, όταν ο χρήστης μετακινεί ένα από τα στοιχεία στον πίνακα ελέγχου (αντικείμενα imgAnd, *imgNand, *imgOr, *imgNor, *imgXor, *imgXnor, *imgNot, * imgTrue, *imgFalse, *imgPulse, *imgFlipFlop) τότε, δημιουργείται ένα νέο ψηφιακό στοιχείο στην περιοχή σχεδίασης (το βασικό TPanel της φόρμας). Πιο συγκεκριμένα αυτό επιτυγχάνεται ως εξής:  Το πρόγραμμα αρχικά αναγνωρίζει ποιο στοιχείο εισάγεται.  Δημιουργεί ένα αντίγραφο της αρχικής εικόνας και το τοποθετεί στη θέση Χ,Υ της φόρμας.  Δημιουργεί τις ετικέτες του ψηφιακού στοιχείου και τις τοποθετεί γύρω από την νέα εικόνα.  Δημιουργείται έναν νέο αντικείμενο τύπου DigitalElement για την λογική αναπαράσταση του στοιχείου και τοποθετείται στον πίνακα elements της φόρμας.

Πως σχεδιάζονται – πως μετακινούνται οι πύλες στην επιφάνεια σχεδίασης Πως σχεδιάζονται – πως μετακινούνται οι πύλες στην επιφάνεια σχεδίασης. (3)  Μετακίνηση ψηφιακού στοιχείου: Η ImageDragDrop(TObject *Sender, TObject *Source, int X, int Y) καλεί την συνάρτηση MoveTo(X,Y) του αντίστοιχου ψηφιακού στοιχείου και ανανεώνει την διεπαφή ώστε να τροποποιηθούν και οι συνδέσεις μεταξύ των στοιχείων. Για να είναι εφικτός ο διαχωρισμός πότε ο χρήστης επιθυμεί να δημιουργήσει συνδέσεις και πότε να μετακινήσει στοιχεία στην περιοχή σχεδίασης, υπάρχει η επιλογή “Δημιουργία Συνδέσεων” στο κάτω δεξί μέρος του παραθύρου της εφαρμογής.

Πως γίνονται οι διασυνδέσεις μεταξύ των πυλών. (1)  Σύνδεση δύο στοιχείων: “Δημιουργία Συνδέσεων”  Όταν η θέση του ποντικιού είναι στο αριστερό μισό, υποδηλώνει κάποια από τις εισόδους, ενώ στην περίπτωση του δεξιού, δηλώνει κάποια εκ των εξόδων. Για να αποσαφηνιστεί ποια είσοδος/έξοδος συνδέεται, λαμβάνεται υπόψη η σχετική θέση του ποντικιού στον κατακόρυφο άξονα καθώς και το πλήθος των εισόδων/εξόδων. Οι διασυνδέσεις μεταξύ των πυλών πραγματοποιούνται με τον εξής αλγόριθμο:  Λαμβάνονται από τα δύο ψηφιακά στοιχεία οι συντεταγμένες Κ(x1,y1) και Λ(x2,y2) των δύο άκρων της τεθλασμένης γραμμής.  Aν x1<x2, τότε η αρχή της τεθλασμένης βρίσκεται πιο αριστερά από το τέλος της  ορίζονται δύο ενδιάμεσα σημεία στην τεθλασμένη γραμμή, τα σημεία Α( 0.5(x1+x2), y1) και Β( 0.5(x1+x2), y2)  Η γραμμή που σχεδιάζεται είναι η ΚΑΒΛ.

Πως γίνονται οι διασυνδέσεις μεταξύ των πυλών. (2)  Στην αντίθετη περίπτωση, ορίζονται τέσσερα ενδιάμεσα στοιχεία, τα ΑΒΓΔ ως εξής: Α(x1+10,y1)  B(x1+10,0.5(y1+y2))  Γ(x2-10, 0.5(y1+y2))  Δ(x2-10, y2)  ενώ η τεθλασμένη γραμμή είναι η ΚΑΒΓΔΛ. TColor myColors[]={clBlack, clGreen, clBlue, clRed,clOlive, clPurple, clGray,clFuchsia, clAqua, clLime, clMaroon} Κάθε νέα γραμμή –σύνδεση που σχεδιάζεται λαμβάνει ως χρώμα το αμέσως επόμενο, με κυκλική εναλλαγής.

Πως γίνεται η προσομοίωση. (1) Για την προσομοίωση χρησιμοποιήθηκε ένας απλός αλγόριθμος δύο βημάτων, όπου εκτελούνται επαναληπτικά μέχρι το κύκλωμα να συγκλίνει. Πιο συγκεκριμένα, υλοποιήθηκαν δύο συναρτήσεις:  void updateCircuitInputs(std::set<int> &toBeUpdated)  Ανανεώνει τις εισόδους όλων των ψηφιακών στοιχείων στο κύκλωμα, με βάση τις συνδέσεις τους, αναθέτοντας την τιμή της εξόδου του στοιχείου που συνδέεται με το τρέχον στην αντίστοιχη τιμή της εισόδου.  Η λίστα toBeUpdated περιέχει όλα τα στοιχεία στα οποία έχει πραγματοποιηθεί αλλαγή.  updateSimulationStep(std::set<int> &elementsToBeSimulated) Τροφοδοτείται με την λίστα των στοιχείων που παρήγαγε η συνάρτηση updateCircuitInputs και υπολογίζει τις νέες τιμές των εξόδων των συγκεκριμένων στοιχείων καλώντας την συνάρτηση Simulate του κάθε ψηφιακού στοιχείου.

Πως γίνεται η προσομοίωση. (2) Η χρήση δύο διαφορετικών συναρτήσεων έχει ως αποτέλεσμα η διάδοση των τιμών να πραγματοποιείται ετεροχρονισμένα σε σχέση με τους υπολογισμούς των νέων τιμών των εξόδων. Η συμπεριφορά αυτή προσομοιώνει την καθυστέρηση που εισάγει η διάδοση των τιμών στα πραγματικά κυκλώματα. Οι συναρτήσεις updateCircuitInputs & updateSimulationStep επαναλαμβάνονται διαδοχικά μέχρις ότου η λίστα που επιστρέφει η updateCircuitInputs είναι κενή, ή ολοκληρωθούν εκατό (100) πλήρεις επαναλήψεις. Για την υποστήριξη της προσομοίωσης, τοποθετήθηκε και ένας Timer του οποίου η περιοδικότητα ελέγχεται από slidebar στην γραφική διεπαφή. Σε κάθε trigger από τον timer, αλλάζουν τιμές όλοι οι παλμοί και επαναλαμβάνεται η προσομοίωση.

Πως γίνεται η προσομοίωση. (3) Για την υποστήριξη της προσομοίωσης βήμα προς βήμα, αξιοποιείται η μεταβλητή SimulationsStepCounter. Όταν η τιμή της SimulationsStepCounter είναι άρτια, εκτελείται η updateSimulationStep ενώ όταν είναι περιττή, η updateCircuitInputs.

Παράθεση του αλγορίθμου προσομοίωσης σε συμβολική μορφή. (1) Αλγόριθμος Προσομοίωσης 1. Δημιούργησε κενή λίστα ΛίσταΣτοιχείων, 2. Πρόσθεσε όλα τα στοιχεία του κυκλώματος στη ΛίσταΣτοιχείων 3. i 1 4. Όσο η ΛίσταΣτοιχείων δεν είναι κενή, επανέλαβε α. ΛίσταΣτοιχείων  ΜετάδοσηΕξόδωνΣτιςΕισόδους (ΛίσταΣτοιχείων) β. ΛίσταΣτοιχείων  ΥπολογισμόςΕξόδων(ΛίσταΣτοιχείων) γ. ii+1 5. Τέλος επανάληψης Συνάρτηση ΜετάδοσηΕξόδωνΣτιςΕισόδους¨ Είσοδος: ΛίσταΣτοιχείωνΠροςΑνανέωση Εξοδος: ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση Αλγόριθμος 1. Αρχικοποίησε κενή ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση 2. Για κάθε στοιχείο element από την ΛίσταΣτοιχείωνΠροςΑνανέωση επανέλαβε

Παράθεση του αλγορίθμου προσομοίωσης σε συμβολική μορφή. (2) α. ΑλλαγήΨευδές β. Για κάθε είσοδο του στοιχείου element επανέλαβε i. Βρες στοιχείο elementConnected από το οποίο λαμβάνει τιμή ii. Βρες έξοδο outputNo του στοιχείο elementConnected από το οποίο λαμβάνει τιμή iii. Αν η έξοδος είναι διαφορετική από την υπάρχουσα τιμή 1. Αλλαγή Αληθές 2.Αντέγραψε την τιμή iv. Τέλος αν γ. Τέλος επανάληψης δ. Αν Αλλαγή Αληθές i. Προσέθεσε το στοιχείο element στη ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση ε. Τέλος Αν 3. Τέλος Επανάληψης 4. Επέστρεψε τη ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση

Παράθεση του αλγορίθμου προσομοίωσης σε συμβολική μορφή. (3) Συνάρτηση ΥπολογισμόςΕξόδων Είσοδος: ΛίσταΣτοιχείωνΠροςΑνανέωση Εξοδος: ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση Αλγόριθμος 1. Αρχικοποίησε κενή ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση 2. Για κάθε στοιχείο element από την ΛίσταΣτοιχείωνΠροςΑνανέωση επανέλαβε α. ΠαλιάΈξοδος  Έξοδος β. Προσομοίωση Ψηφιακού Στοιχείου γ. Αν Έξοδος Διαφορετική από ΠαλιάΈξοδος i. Προσέθεσε τα στοιχεία που συνδέονται στο element στη ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση δ. Τέλος Αν 3. Τέλος Επανάληψης 4. Επέστρεψε ΝέαΛίσταΣτοιχείωνΠροςΑνανέωση

Πως γίνεται η αποθήκευση & το άνοιγμα ενός σχεδίου. (1) Το κάθε στοιχείο αποθηκεύεται σαν σετ από αριθμητικά δεδομένα (τύπος, αριθμός εισόδων, αριθμός εξόδων).  Στην πρώτη σειρά αποθηκεύεται ο συνολικός αριθμός των στοιχείων. Έπειτα, σε κάθε γραμμή αποθηκεύονται τα εξής:  Στην πρώτη στήλη ο αριθμός των εισόδων.  Στη δεύτερη στήλη ο αριθμός των εξόδων.  Στη τρίτη ο τύπος του συγκεκριμένου στοιχείου (id).  Από την τέταρτη στήλη και μετά φαίνονται πόσες συνδέσεις υπάρχουν για καθεμία από τις εισόδους και εξόδους του στοιχείου αυτού.  Αν δεν υπάρχουν συνδέσεις εμφανίζει «-1».  Στις δύο τελευταίες στήλες φαίνονται οι συντεταγμένες των στοιχείων στην περιοχή σχεδίασης. Η αποθήκευση και το άνοιγμα του σχεδίου πραγματοποιείται με συναρτήσεις του stdio.h, τις fopen, fscanf, fprintf, fclose.

Πως γίνεται η αποθήκευση & το άνοιγμα ενός σχεδίου. (2) Παράδειγμα αποθηκευμένου αρχείου.  Κατά το άνοιγμα του αρχείου, αρχικά διαβάζεται ο αριθμός των στοιχείων.  Στη συνέχεια διαβάζονται ένα προς ένα όλα τα στοιχεία  αρχικοποιούνται χωρίς τις συνδέσεις, οι οποίες αποθηκεύονται ξεχωριστά.  Μετά την ολοκλήρωση της ανάγνωσης, δηλώνονται κανονικά και οι συνδέσεις (αυτό γίνεται για να αποφευχθούν περιπτώσεις σύνδεσης με στοιχείο που δεν έχει ακόμη αρχικοποιηθεί).  Τέλος, ζωγραφίζονται στην διεπαφή οι συνδέσεις μεταξύ των στοιχείων.

Συμπεράσματα  Κατά την ανάπτυξη της εφαρμογής, αρχικά προηγήθηκε εξοικείωση με τη χρήση του περιβάλλοντος της Borland C++, και πιο συγκεκριμένα με τις διαδικασίες drag-and-drop και της σχεδίασης επάνω στην εφαρμογή, αξιοποιώντας τις γνώσεις σχετικά με τα ψηφιακά κυκλώματα.  Η συγκεκριμένη εφαρμογή έχει ήδη δοκιμαστεί κατά την ανάπτυξη, ώστε τα επιμέρους τμήματα να είναι πλήρως λειτουργικά (alpha στάδιο δοκιμών). Επειδή όμως, η συμπεριφορά κάθε πιθανού χρήστη είναι αδύνατο να προβλεφθεί, μια μελλοντική αξιοποίηση της εφαρμογής απαιτεί τη δοκιμαστική διαδικασία με μεγάλη ομάδα απλών χρηστών οι οποίοι θα εντοπίσουν πιθανές αστοχίες της ανάπτυξης και μικρά bug που δεν μπορεί να εντοπίσει ο αρχικός προγραμματιστής (beta testing).  Η συγκεκριμένη εφαρμογή μπορεί να χρησιμοποιηθεί για την υποστήριξη της εκπαιδευτικής διαδικασίας κατά την διδασκαλία του μαθήματος Ψηφιακών Κυκλωμάτων, καθώς προσφέρει τα δύο απαραίτητα χαρακτηριστικά που χρειάζεται να παρατηρεί ένας εκπαιδευόμενος: Βήμα-Βήμα προσομοίωση και εμφάνιση τιμών στους ακροδέκτες.

Προοπτικές Επέκτασης  Βιβλιοθήκη πυλών όπου ο χρήστης θα μπορεί να καθορίζει ο ίδιος δυναμικά τον αριθμό ακροδεκτών εισόδου & εξόδου.  Δυνατότητα αναίρεσης εσφαλμένης ενέργειας (undo).  Δυνατότητα διαγραφής διασύνδεσης (popup μενού).  Δυνατότητα αντιγραφής – επικόλλησης (copy-paste) στοιχείων που βρίσκονται στην επιφάνεια σχεδίασης.  Δυνατότητα δυναμικής επιλογής διαφορετικών εκδοχών των κυκλωμάτων της βιβλιοθήκης, ανάλογα με τις ανάγκες του χρήστη κάθε φορά. Για παράδειγμα: Συγκριτής 2 λέξεων – 2 bit, Συγκριτής 2 λέξεων – 4 bit, Συγκριτής 3 λέξεων – 8 bit ή Ολισθητής των 4 ή 8 bit κτλ.  Δυνατότητα εισαγωγής στοιχείου τύπου LED, το οποίο θα χρωματίζεται όταν θα δηλώνει τη λογική τιμή «1».  Video – tutorial με οδηγίες χρήσης της εφαρμογής.

Βιβλιογραφία [1] Αναστάσιος Μπαλουκτσής. ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ. Σέρρες 2003 – 2004. σ. 12. [2] http://el.wikipedia.org/wiki/Flip_Flop. [πρόσβαση 4-10-2010] [3] http://users.sch.gr/kalpsof/FILES/LESSONS/DIGITAL/DIGITAL1/SEQUENCE1.pdf [πρόσβαση 29-5-2011] [4] http://hera.ph1.unikoeln.de/~panoglou/upload/manuals/EAP/plh21/psifiaki_sxediasi_ III/P LH21- P_Kef03.pdf [πρόσβαση 29-5-2011] [5] http://el.wikipedia.org/wiki/Αθροιστές_(ηλεκτρονικά_κυκλώματα) [πρόσβαση 29-5-2011] [6] http://www.ee.teihal.gr/labs/techno/private/uploads/ADC_DAC_Conversion.pdf [πρόσβαση 29-5-2011] [7] http://www.chem.uoa.gr/applets/appletgates/text_gates1.htm [πρόσβαση 29-5-2011] [8] http://algorithmic.gr/yliko/pli10/Psifiaka_hlektronika_kef01_AlgebraBoole_Pyles.pdf [πρόσβαση 9-6-2011] [9] http://www.livepedia.gr/index.php/Άλγεβρα_Boole [πρόσβαση 9-6-2011] [10] http://www.cs.ucy.ac.cy/~epl121/current_semester/slides/05/ch6.pdf [πρόσβαση 9-6-2011] [11] Συλλογικό έργο. Ανάλυση και σχεδίαση κυκλωμάτων ψηφιακής λογικής. Εκδόσεις: Επίκεντρο (2007). [12] Απόστολος Θ. Κοσσίδας. Αριθμητικά συστήματα και ψηφιακά κυκλώματα. Εκδόσεις Νέων Τεχνολογιών. [13] Νικόλαος Ασημάκης. Ψηφιακά ηλεκτρονικά. Εκδόσεις: Gutenberg - Γιώργος & Κώστας Δαρδανός (2008). [14] Απόστολος Θ. Κοσσίδας. Σχεδίαση ψηφιακών κυκλωμάτων. Εκδόσεις: Μπένου Ε. [15] Χρήστος Δ. Κρανιώτης. Σχεδίαση ψηφιακών κυκλωμάτων. Εκδόσεις: Δίαυλος (2009) [16] Φωτούλα Μαγγανά. Μελέτη αναλογικών και ψηφιακών κυκλωμάτων Electronics Workbench. Εκδόσεις: Ίων. [17] Συλλογικό έργο. Ψηφιακά ολοκληρωμένα κυκλώματα. Εκδόσεις: Κλειδάριθμος. [18] David A. Hodges. Ανάλυση και σχεδίαση ψηφιακών ολοκληρωμένων κυκλωμάτων. Εκδόσεις: Τζιόλα. [19] http://hera.ph1.unikoeln.de/~panoglou/upload/manuals/EAP/plh21/psifiaki_sxediasi_ III/PLH21-P_Kef01.pdf [πρόσβαση 14-6-2011]