- 2070 Magh · 3 marks
Compose 2^(k+1) x m from 2^k x m
Short answer
Use two 2^k x m modules and (k+1) address lines. Connect A(k-1)..A0 to both in parallel. A_k selects module: A_k=0 enables M0, A_k=1 enables M1. Data lines are tied together via tri-state outputs.
Compose 2^(k+1) × m memory using 2^k × m memories.
Let the base module be 2^k x m (k address lines, m data lines, chip select CS). The target has twice as many words of the same width, so it needs two modules and k + 1 address lines.
Method
- The width stays m bits, so no width expansion is needed.
- The low-order k address lines A(k-1)..A0 go to both modules in parallel.
- The extra high-order line A_k selects the module: A_k = 0 enables M0 (words 0 to 2^k - 1) and A_k = 1 enables M1 (words 2^k to 2^(k+1) - 1). A 1-to-2 decoder does this (a NOT gate for M0 and a direct connection for M1).
- The data lines D(m-1)..D0 of the modules are tied together because the outputs are tri-state; only the enabled module drives the bus.
A(k-1)..A0 ------+------------+
| |
A_k --[NOT]--> CS [ M0 ] CS [ M1 ] <-- A_k
2^k x m 2^k x m
\ /
D(m-1)..D0 (shared)
| A_k | Module enabled | Address range |
|---|---|---|
| 0 | M0 | 0 to 2^k - 1 |
| 1 | M1 | 2^k to 2^(k+1) - 1 |
✓ Answer checked by Claude Opus 5.5 (high effort)
Related questions
- Compose 2^(k+1) x 2n from 2^k x n · Embedded System, chapter 4