Skip to main content

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_kModule enabledAddress range
0M00 to 2^k - 1
1M12^k to 2^(k+1) - 1

✓ Answer checked by Claude Opus 5.5 (high effort)

All Embedded System chapter 4 questions →