ΗΥ Καλοκαιρινός Γιώργος1 Seven Segment Display
ΗΥ Καλοκαιρινός Γιώργος2 Chronometer Data Path
ΗΥ Καλοκαιρινός Γιώργος3 Chronometer Control
ΗΥ Καλοκαιρινός Γιώργος4 Fifo (EAB)
ΗΥ Καλοκαιρινός Γιώργος5 SRAM (EAB)
ΗΥ Καλοκαιρινός Γιώργος6 Memory Data Path
ΗΥ Καλοκαιρινός Γιώργος7 Memory Read Operation
ΗΥ Καλοκαιρινός Γιώργος8 Memory Write Operation
ΗΥ Καλοκαιρινός Γιώργος9 Άσκηση 1 (Περιγραφή) Μιας και η βιομηχανία οπλών αναπτύσσεται ραγδαία αυτήν την εποχή ήρθε η στιγμή να βοηθήσετε και εσείς στην ανάπτυξη της: Ένα εργαστήριο σχεδίασης προηγμένων όπλων σας ζητάει να σχεδιάσετε ένα πυροκροτητή για τη νέα βόμβα τους. Σας δίνονται 16 διακόπτες (DIP switches), 4 Seven Segment Displays, 1 κουμπί on/off και 1 FPGA που είναι συνδεδεμένα όπως ακριβώς στο board που χρησιμοποιείτε στα εργαστήρια (Μάλλον κάποιος από τους διδάσκοντες έχει ήδη προσληφθεί στη εταιρεία!). Ο πυροκροτητής που θα σχεδιάσετε πρέπει να δουλεύει ως εξής : Οι διακόπτες θα χρησιμοποιούνται για να ‘φορτώνετε’ τον πυροκροτητή με μια αρχική τιμή, η οποία τιμή θα φαίνεται και στα Displays. Κάθε μια τετράδα διακοπτών θα οδηγεί ένα από τα τέσσερα Seven Segment Displays. Π.χ. Ο κωδικός 1001 σε μια τετράδα διακοπτών θα απεικονίζεται σαν 9 στο αντίστοιχο Seven Segment Display. Επειδή οι χρήστες της βόμβας δεν είναι απαραίτητο να ξέρουν το δεκαεξαδικό σύστημα, θέλουμε να χρησιμοποιούμε μόνο τα δεκαδικά ψηφία (0-9 και άρα 0000 – 1001). Οι υπόλοιποι συνδυασμοί των διακοπτών ( ) δεν αναγνωρίζονται από το σύστημα (δεν μας ενδιαφέρει η συμπεριφορά του κυκλώματος σ’αυτή τη περίπτωση). Με τους 16 διακόπτες μπορούμε να φορτώσουμε στα Displays και στον πυροκροτητή κάθε αριθμό μεταξύ 0000 και Αυτός ο αριθμός είναι τα δευτερόλεπτα που απομένουν μέχρι την έκρηξη. Με το πάτημα του κουμπιού on/off ο πυροκροτητής αρχίζει και μετράει από την αρχική τιμή του προς το 0. Με άλλα λογία ο πυροκροτητής σας πρέπει κάθε δευτερόλεπτο να μειώνει τη τιμή που φαίνεται στα Displays κατά 1. Όταν ο μετρητής φτάσει στο 0000 πρέπει να θέτετε ένα σήμα fire (1 καλώδιο) στο 1 και να σταματάτε την μέτρηση.
ΗΥ Καλοκαιρινός Γιώργος10 Ασκηση 1 (Data Path)
ΗΥ Καλοκαιρινός Γιώργος11 Ασκηση 1 (Control)
ΗΥ Καλοκαιρινός Γιώργος12 Ασκηση 2α Reg [15:0] A; or ALE) if(ALE) A = AD; ECS = ~A[15]; (ECS = 1;) EOE = PSEn; (EOE = ~A[15] & PSEN;) RWE = WR; ROE = ~PSEN & RD | A[15] & PSEN;) RCS = RWE | ROE;
ΗΥ Καλοκαιρινός Γιώργος13 Ασκηση 2β Reg [15:0] A; or ALE) if(ALE) A = AD; ECS = ~A[15]; (ECS = 1;) EOE = PSEn; (EOE = ~A[15] & PSEN;) RWE = WR &~A[15]; ROE = ~A[15] & RD | A[15] & PSEN; RCS = RWE | ROE;