Συστήματα Μικροϋπολογιστών — Ιούνιος 2016¶
2016_.pdf¶
Θεμαηα Μικποϋπολογιζηέρ 22/6/2016
- Διάγπαμμα σπονιζμού για έναν κύκλο Μ1 ηηρ πποζκόμιζηρ κυδικού opcode ηηρ επόμενηρ ππορ εκηέλεζηρ ενηολήρ και εξήγηζη. (1/3)
Απάνηηζη: ενόηηηα 3
-
Για ηο PIO ηος Z80 να ηεθεί η θύπα Α ζε λειηοςπγία mode 1 και να εξηγηθούν ηα βήμαηα. (1/3) Απάνηηζη: ενόηηηα 7
-
Για ηο μικποελεγκηή ATtiny2313 θέηυ απσικά ζηη ζηοίβα ηην ηιμή 83H, ποιο ηο μέγιζηο πλήθορ ππόζθεηυν ποςηινών και εξήγηζη. (1/3)
Απάνηηζη: ζελίδα 351
- Σε μια παπάλληλη θύπα ειζόδος/εξόδος ο καηασυπηηήρ καηάζηαζηρ έσει ηην ηιμή «AF»Hexademical και οδηγεί μια ζςζηοισία από οκηώ leds, με ηιμή διαύλος εξόδος «FA»H. Να ανηιζηπέτεηε ηην καηάζηαζη λειηοςπγίαρ ηυν leds ζηιρ θέζειρ με πεπιηηό απιθμό. Να εξηγήζεηε ηα βήμαηα ζαρ. (1/3) Απάνηηζη: ενόηηηα 11
Να απανηηθούν ηα 3 από ηα 4 θέμαηα.
Επιπλέον θέμα (2 μονάδερ):
Να γίνει διάγπαμμα σπονιζμού για ένα από ηα ηπία (1 μονάδα) και να να εξηγηθεί (1 μονάδα)
-
i. Αναγνώπιζη NMI
-
ii. Αναγνώπιζη INT
-
iii. Εκηέλεζη HALT
Απάνηηζη: ενόηηηα 4
Λύσεις (⚪ AI, μη επαληθευμένο)
Κατάσταση: ⚪ AI, μη επαληθευμένο Πηγή: λύσεις AI (antigravity-gemini, gemini-3.7-flash, sonnet), ανεξάρτητη επανάληψη και αντιπαραβολή· καμία δεν έχει ελεγχθεί από άνθρωπο
Προσοχή
Λύση από AI — ελέγξτε την· δεν έχει επαληθευτεί από άνθρωπο. Η ένδειξη «δύο λύσεις συμφωνούν» δεν σημαίνει ότι η απάντηση είναι σωστή.
AI λύσεις — 2016-06¶
Οι λύσεις γράφτηκαν από μοντέλα AI και δεν έχουν ελεγχθεί από άνθρωπο. Η αρίθμηση ακολουθεί το αρχείο θεμάτων.
Θέμα 1¶
Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια
Κύκλος μηχανής M1 (προσκόμιση opcode) του Z80 = 4 περίοδοι ρολογιού T1–T4.
| T | Τι συμβαίνει |
|---|---|
| T1 | Ανεβαίνει το PC στον δίαυλο διευθύνσεων A0–A15· το \(\overline{M1}\) πέφτει στο 0 (ανοδική ακμή T1). Στο κατιόν μισό του T1 πέφτουν τα \(\overline{MREQ}\) και \(\overline{RD}\) (ανάγνωση μνήμης). |
| T2 | Η μνήμη βγάζει το opcode στον D0–D7. Ελέγχεται η \(\overline{WAIT}\) (κατιούσα ακμή T2)· αν είναι 0 μπαίνουν T_W. |
| T3 | Στην ανοδική ακμή του T3 ο επεξεργαστής διαβάζει (δειγματοληπτεί) το opcode στον IR· \(\overline{M1}\), \(\overline{RD}\) και \(\overline{MREQ}\) ανεβαίνουν (το \(\overline{MREQ}\)/\(\overline{RD}\) στο κατιόν μισό του T3). Ξεκινά ανανέωση (refresh): \(\overline{RFSH}\)=0, στον A0–A6 η διεύθυνση του R, στον A8–A15 ο I, και \(\overline{MREQ}\)=0 στο δεύτερο μισό του T3. |
| T4 | Συνεχίζεται το refresh (\(\overline{MREQ}\) ξανά 1 περίπου στο κατιόν μισό T4), αποκωδικοποιείται η εντολή· το PC έχει αυξηθεί κατά 1. |
Το διάγραμμα σχεδιάζεται με τις κυματομορφές CLK, A15–A0, \(\overline{M1}\), \(\overline{MREQ}\), \(\overline{RD}\), D7–D0, \(\overline{RFSH}\) σύμφωνα με τον πίνακα. Οι ακριβείς ακμές των MREQ/RD στο T3–T4 είναι από μνήμη (μέτρια βεβαιότητα). Συνολικά 4 T· με \(f\) ρολογιού διάρκεια \(4/f\).
Θέμα 2¶
Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια
Στο Z80 PIO ο τρόπος λειτουργίας 1 είναι είσοδος με handshake (mode 0 = έξοδος, 1 = είσοδος, 2 = αμφίδρομο μόνο θύρα Α, 3 = bit control). Ο καταχωρητής ελέγχου της θύρας A επιλέγεται με C/\(\overline{D}\)=1, B/\(\overline{A}\)=0 (στο παρακάτω CTRL_A). Λέξεις:
- Λέξη διανύσματος διακοπής: \(D_0=0\), \(D_7..D_1\) = το διάνυσμα, π.χ.
20H= 0010 0000 (άρτιο, γιατί το bit 0 είναι το αναγνωριστικό «0»). Στη λειτουργία IM 2 ο CPU σχηματίζει \(I \cdot 256 + 20H\). - Λέξη ελέγχου mode: \(D_7D_6=01\) (mode 1), \(D_5D_4\) αδιάφορα (0), \(D_3..D_0=1111\) →
0100 1111= 4FH. - Λέξη ελέγχου διακοπών: \(D_7=1\) (ενεργοποίηση διακοπής), \(D_3..D_0=0011\) →
1000 0011= 83H. Τα \(D_6,D_5,D_4\) (AND/OR, υψηλή/χαμηλή, μάσκα) αφορούν μόνο το mode 3 και στο mode 1 δεν χρησιμοποιούνται.
LD A, 20H
OUT (CTRL_A), A ; διάνυσμα
LD A, 4FH
OUT (CTRL_A), A ; mode 1 (είσοδος)
LD A, 83H
OUT (CTRL_A), A ; ενεργοποίηση διακοπών PIO
; IM 2, LD A,hi / LD I,A (πίνακας διανυσμάτων), EI
Θέμα 3¶
Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια
Στο ATtiny2313 η SRAM είναι 128 byte στις διευθύνσεις 0x60–0xDF (κάτω από την 0x60 βρίσκονται καταχωρητές και I/O). Κάθε RCALL/CALL σπρώχνει τη διεύθυνση επιστροφής (PC, 2 byte) και ο SP μειώνεται κατά 2. Με SP αρχικά 0x83 η στοίβα μπορεί να χρησιμοποιήσει τις θέσεις 0x83 έως 0x60, δηλ. \(0x83-0x60+1 = 36\) byte, άρα \(36/2 =\) 18 εμφωλευμένες κλήσεις (επαλήθευση με προσομοίωση: 18). Αν το πρόγραμμα πρέπει να κρατήσει και δεδομένα στην ίδια περιοχή ή αν η εκφώνηση εννοεί άλλη ερμηνεία του «πρόσθετες ρουτίνες», ο αριθμός μειώνεται. Η απάντηση παραπέμπει στη σελίδα 351 του βιβλίου, την οποία δεν έχω δει.
Θέμα 4¶
Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια
(Το OCR έχει μετατοπισμένα γράμματα· διαβάζω «να αντιστρέψετε την κατάσταση των leds στις θέσεις με περιττό αριθμό».)
Σύμβαση της σειράς (όπως στη λύση 2019-02): bit=1 στον καταχωρητή κατάστασης (κατεύθυνσης) σημαίνει έξοδος, bits αριθμημένα 0–7.
- \(AF = 1010\,1111\) → έξοδοι: bit 0,1,2,3,5,7· είσοδοι: bit 4,6.
- Έξοδος διαύλου \(FA = 1111\,1010\).
- Περιττές θέσεις: bit 1,3,5,7 (όλες έξοδοι) → μάσκα
AAH= 1010 1010. - Αντιστροφή = XOR με τη μάσκα: \(FA \oplus AA = 50H\) = 0101 0000 (επαληθεύτηκε).
LD A, 0FAH ; τρέχουσα τιμή εξόδου
XOR 0AAH ; αντιστροφή bit 1,3,5,7 -> 50H
OUT (DATA_OUT), A
55H δίνει \(FA\oplus55=AFH\).
Θέμα (επιπλέον, 2 μονάδες)¶
Αξιοπιστία: ⚠ οι ανεξάρτητες λύσεις διαφωνούν: δες όλες και έλεγξε μόνος σου · εμπιστοσύνη λύτη: χαμηλή
Λύση 1: Επιλέγω το HALT (σχέδιο και εξήγηση).
Opcode 76H. Η εντολή είναι ένας κύκλος M1 των 4 T (όπως στο Θέμα 1). Στο τέλος του, ο CPU μπαίνει σε κατάσταση halt και η έξοδος \(\overline{HALT}\) πέφτει στο 0 (γύρω στο T4). Από εκεί και πέρα εκτελεί συνεχώς κύκλους NOP των 4 T (με M1, refresh, \(\overline{MREQ}\)/\(\overline{RD}\) ενεργά αλλά με αγνόηση του byte που διαβάζεται) και το PC δεν αυξάνεται· έτσι συνεχίζεται το refresh της DRAM. Έξοδος από τη κατάσταση: \(\overline{NMI}\) (πάντα), \(\overline{INT}\) (αν IFF1=1) ή \(\overline{RESET}\). Μετά την ανταπόκριση σε διακοπή ο PC που σπρώχνεται στη στοίβα δείχνει στην εντολή μετά το HALT, και η \(\overline{HALT}\) ανεβαίνει.
Για τα άλλα δύο (NMI, INT): η αναγνώριση είναι ειδικός M1 5 T για NMI (11 T συνολικά με δύο εγγραφές στη στοίβα, άλμα στο 0066H) και M1 με δύο T_W και ενεργό \(\overline{IORQ}\) για INT (13 T στο IM 1, άλμα στο 0038H).
Λύση 3 (τρίτη γνώμη): Η εκφώνηση ζητά διάγραμμα χρονισμού και εξήγηση για ένα από τα τρία (NMI, INT, HALT):
i. Αναγνώριση NMI (Non-Maskable Interrupt)¶
- Ο επεξεργαστής δειγματοληπτεί την ακίδα \(\overline{\text{NMI}}\) (falling edge triggered) κατά τον τελευταίο παλμό ρολογιού της τρέχουσας εντολής.
- Εκτελείται ειδικός κύκλος \(M_1\) διάρκειας 5 περιόδων ρολογιού (\(T_1 - T_5\)), όπου προστίθεται εσωτερικός χρόνος αναμονής (T-states).
- Τα σήματα ανάγνωσης \(\overline{\text{RD}}\) και \(\overline{\text{MREQ}}\) κατά την προσκόμιση παραμένουν ανενεργά (High), καθώς δεν διαβάζεται opcode ή διάνυσμα από το εξωτερικό δίαυλο.
- Ακολουθούν δύο κύκλοι εγγραφής στη στοίβα για την αποθήκευση του μετρητή προγράμματος (PC) και αυτόματη διακλάδωση στη σταθερή διεύθυνση \(0066\text{H}\).
T1 T2 T3 T4 T5
CLK ____ ____ ____ ____ ____
| |______| |______| |______| |______| |______
___
NMI \____________________________________________________
___ ____
M1 \_______________________________________________/
________________________________________________________
RD
________________________________________________________
MREQ
ii. Αναγνώριση INT (Interrupt Acknowledge Cycle)¶
- Η ακίδα \(\overline{\text{INT}}\) δειγματοληπτείται στην ανοδική ακμή του τελευταίου κύκλου T της εντολής. Αν IFF1 = 1, ενεργοποιείται κύκλος αναγνώρισης διακοπής.
- Το \(\overline{M_1}\) γίνεται Low, αλλά αντί για \(\overline{\text{MREQ}}\), ενεργοποιείται το \(\overline{\mathbf{\text{IORQ}}}\).
- Ο επεξεργαστής εισάγει αυτόματα δύο καταστάσεις αναμονής (\(T_W, T_W\)) μεταξύ \(T_2\) και \(T_3\), ώστε ο συνολικός κύκλος αναγνώρισης να διαρκέσει 6 παλμούς (\(T_1, T_2, T_W, T_W, T_3, T_4\)).
- Κατά τη διάρκεια του \(\overline{\text{IORQ}}\), η περιφερειακή συσκευή τοποθετεί στο δίαυλο δεδομένων \(D_0-D_7\) το διάνυσμα διακοπής (ή κωδικό RST/CALL), ενώ το \(\overline{\text{RD}}\) παραμένει ανενεργό (High).
T1 T2 Tw Tw T3 T4
CLK ____ ____ ____ ____ ____ ____
| |______| |______| |______| |______| |______| |______
___
INT \____________________________________________________________
___ ________
M1 \___________________________________________________________/
_______________________ ________________________
IORQ \_______________________/
________________________________________________________________________
RD
-----------------------<===== Interrupt Vector =====>-------------------
D0-7
iii. Εκτέλεση HALT¶
- Μετά την αποκωδικοποίηση της εντολής
HALT(\(76\text{H}\)), η έξοδος \(\overline{\mathbf{\text{HALT}}}\) μεταβαίνει σε χαμηλή στάθμη (Low). - Ο επεξεργαστής παραμένει σε κατάσταση αναστολής εκτελώντας συνεχώς εικονικούς κύκλους NOP των 4T (με ενεργά \(\overline{M_1}\), \(\overline{\text{MREQ}}\), \(\overline{\text{RFSH}}\) για τη διατήρηση της ανανέωσης της δυναμικής μνήμης DRAM).
- Ο μετρητής προγράμματος (PC) δεν αυξάνεται. Έξοδος από το HALT πραγματοποιείται μέσω \(\overline{\text{NMI}}\), \(\overline{\text{INT}}\) (αν IFF1=1) ή \(\overline{\text{RESET}}\).
Κύκλος M1 (Fetch HALT) Επόμενοι Κύκλοι HALT (Idle M1)
T1 T2 T3 T4 T1 T2 T3 T4
CLK ____ ____ ____ ____ ____ ____ ____ ____
| |__| |__| |__| |__| ... | |__| |__| |__| |__|
___ ___ ___ ___
M1 \___________________________/ \___/ \___________________________/ \_
___
HALT \_________________________________________________________________________
___ _______ ___ _______
MREQ \_______/ \_______/ \_______/ \_______/
___ _______________ ___ _______________
RD \_______/ \_______/
Η λύση Β παραθέτει πλήρη διαγράμματα χρονισμού και λεπτομερή επεξήγηση και για τις τρεις επιλογές καλύπτοντας πλήρως την απαίτηση για διάγραμμα, ενώ η λύση Α περιορίζεται σε συνοπτική περιγραφή χωρίς διάγραμμα χρονισμού.