Μετάβαση στο περιεχόμενο

Συστήματα Μικροϋπολογιστών — Φεβρουάριος 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.]

✔ Επιβεβαίωσε · ✖ Βρήκα λάθος


✖ Βρήκα λάθος στη μεταγραφή