Συστήματα Μικροϋπολογιστών — Φεβρουάριος 2018¶
Μεταγραφή από το αντίγραφο
image.png(θέμα Φεβρουαρίου 2018, σελίδα 5 του φυλλαδίου).
image.png¶
Θέμα Φεβρουαρίου 2018
Δίνεται το παρακάτω σχήμα με δύο μνήμες SRAM. Έστω τώρα ότι αντί για δύο έχουμε τέσσερις μνήμες, όπου η καθεμία έχει χωρητικότητα 1 KB. Πως μπορούμε να τις συνδέσουμε, ώστε να έχουν εναλλακτικές περιοχές διευθύνσεων τις εξής:
0000 – 03FF 1000 – 13FF 3000 – 33FF F000 – F3FF
[Σχήμα: Αρχικό κύκλωμα με δύο μνήμες SRAM 32 KB (SRAM1, SRAM2), όπου η γραμμή διεύθυνσης A15 συνδέεται άμεσα στο CE της SRAM1 και μέσω αντιστροφέα NOT στο CE της SRAM2. Οι γραμμές A0-A14 και D0-D7 συνδέονται και στις δύο μνήμες.]
Επιπλέον πηγές χωρίς μεταγραφή εδώ (λύσεις ή διπλότυπες φωτογραφίες της ίδιας σελίδας):
Screenshot_2024-06-07_at_11.47.42_AM.png
Λύσεις (🟡 community)
Κατάσταση: 🟡 community Πηγή: λυμένο αντίγραφο φωτογραφίας (φοιτητική λύση, χωρίς επιβεβαιωμένη πηγή)
Λύσεις — Φεβρουάριος 2018¶
image.png¶
Θέμα Φεβρουαρίου 2018
Δίνεται το παρακάτω σχήμα με δύο μνήμες SRAM. Έστω τώρα ότι αντί για δύο έχουμε τέσσερις μνήμες, όπου η καθεμία έχει χωρητικότητα 1 KB. Πως μπορούμε να τις συνδέσουμε, ώστε να έχουν εναλλακτικές περιοχές διευθύνσεων τις εξής:
0000 – 03FF 1000 – 13FF 3000 – 33FF F000 – F3FF
[Σχήμα: Αρχικό κύκλωμα με δύο μνήμες SRAM 32 KB (SRAM1, SRAM2), όπου η γραμμή διεύθυνσης A15 συνδέεται άμεσα στο CE της SRAM1 και μέσω αντιστροφέα NOT στο CE της SRAM2. Οι γραμμές A0-A14 και D0-D7 συνδέονται και στις δύο μνήμες.]
Λύση
Κάθε περιοχή διευθύνσεων μνήμης που δίνεται, έχει συνολική χωρητικότητα \(400\text{h} = 0100\ 0000\ 0000 = 2^{10} \text{ θ.μ.} = 2^{10} \text{ bytes}\) (λόγω της οργάνωσης που έχουμε 1byte/θ.μ.). Αυτό σημαίνει ότι για να γεμίσουμε την κάθε περιοχή χρειαζόμαστε μνήμες SRAM του 1 KB. Για κάθε τέτοια μνήμη χρησιμοποιούμε ένα χάρτη διευθύνσεων (memory map) για να προσδιορίσουμε τα bits από το address bus που χρειάζονται για την επιλογή της κάθε μνήμης με τρόπο μοναδικό.
Χάρτης μνήμης (Memory Map) | hex | \(A_{15} \dots A_{12}\) | binary | \(A_0\) | | |---|---|---|---|---| | 0000: | 0000 | 0000 0000 0000 | | \(\text{SRAM}_1\) | | 03FF: | 0000 | 0011 1111 1111 | | | | 1000: | 0001 | 0000 0000 0000 | | \(\text{SRAM}_2\) | | 13FF: | 0001 | 0011 1111 1111 | | | | 3000: | 0011 | 0000 0000 0000 | | \(\text{SRAM}_3\) | | 33FF: | 0011 | 0011 1111 1111 | | | | F000: | 1111 | 0000 0000 0000 | | \(\text{SRAM}_4\) | | F3FF: | 1111 | 0011 1111 1111 | | |
Από το χάρτη μνήμης βρίσκουμε τα σταθερά bits για κάθε μια περιοχή διευθύνσεων από τις τέσσερις συνολικά περιοχές που έχουμε, τα οποία χρησιμοποιούνται για την επιλογή του κάθε ΟΚΜ.
[Σχήμα: Σχεδιάγραμμα διασύνδεσης ΚΜΕ με 4 μνήμες SRAM1, SRAM2, SRAM3, SRAM4 των 1KB (γραμμές A0-A9, D0-D7, R/W~, CE~). Οι γραμμές διευθύνσεων A15-A10 συνδέονται σε λογικές πύλες αποκωδικοποίησης (OR, AND/NOR) για την παραγωγή των σημάτων ενεργοποίησης CE~ κάθε μνήμης, καθώς και κοινός δίαυλος δεδομένων Data bus 8 bits.]
Screenshot_2024-06-07_at_11.47.42_AM.png¶
Χάρτης μνήμης (Memory Map)
| hex | \(A_{15} \dots A_{12}\) | binary | \(A_0\) | |
|---|---|---|---|---|
| 0000: | 0000 | 0000 0000 0000 | \(\text{SRAM}_1\) | |
| 03FF: | 0000 | 0011 1111 1111 | ||
| 1000: | 0001 | 0000 0000 0000 | \(\text{SRAM}_2\) | |
| 13FF: | 0001 | 0011 1111 1111 | ||
| 3000: | 0011 | 0000 0000 0000 | \(\text{SRAM}_3\) | |
| 33FF: | 0011 | 0011 1111 1111 | ||
| F000: | 1111 | 0000 0000 0000 | \(\text{SRAM}_4\) | |
| F3FF: | 1111 | 0011 1111 1111 |
Από το χάρτη μνήμης βρίσκουμε τα σταθερά bits για κάθε μια περιοχή διευθύνσεων από τις τέσσερις συνολικά περιοχές που έχουμε, τα οποία χρησιμοποιούνται για την επιλογή του κάθε ΟΚΜ.
[Σχήμα: Σχεδιάγραμμα διασύνδεσης ΚΜΕ με 4 μνήμες SRAM (SRAM1, SRAM2, SRAM3, SRAM4). Από την ΚΜΕ εξέρχονται γραμμές διευθύνσεων A0-A9 προς τις διευθύνσεις των μνημών, δίαυλος δεδομένων Data bus 8 bits (D0-D7), σήμα WR~ προς τα σήματα R/W~, και γραμμές A12, A13, A15 που τροφοδοτούν λογικές πύλες (OR, NOR) για τα σήματα CE~ των τεσσάρων SRAM.]