Memory chips come in fixed sizes, such as 8K × 8, but a system may need, say, 32K × 16. Memory expansion combines chips to get there. Compare the two numbers separately:
- Word too narrow? Put chips side by side: width expansion. They share the address and control lines; each supplies a slice of the data bits.
- Too few words? Stack them: depth expansion. Each chip owns a block of addresses, and a decoder on the high address bits drives the chip selects.
- Both? Make side-by-side groups called banks, then stack the banks.
The recipe:
- Chips per bank = wanted word size ÷ chip word size.
- Banks = wanted words ÷ chip words.
- Total chips = chips per bank × banks. (Check: total bits wanted ÷ bits per chip.)
- Address bits: system = log₂(wanted words); chip = log₂(chip words).
- Decoder bits = system bits − chip bits = log₂(banks). They are the top bits.
- Each decoder output drives the CS of every chip in one bank.
- Write the memory map.
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |