Skip to main content

Compose 1K x 8 ROMs into 2K x 16

Short answer

Use 4 modules. For width, pair two modules side by side to get 16-bit data. For depth, A10 drives a 1-to-2 decoder enabling one of two rows. A9..A0 parallel to all. Data outputs D7..D0 and D15..D8 share bus. Final: 2K×16 ROM.

Compose 1K × 8 ROMs into a 2K × 16 ROM.

Given: base module 1K x 8 ROM; required: 2K x 16 ROM. Number of modules = (depth ratio) x (width ratio) = 2 x 2 = 4.

Method

  • Width: the required word is 16 bits and each module gives 8 bits, so 2 modules are placed side by side (same address and enable); their data outputs are combined to form the full word.
  • Depth: twice as many words are needed, so 2 rows of modules are used. The extra high-order address line A10 goes to a 1-to-2 decoder whose outputs enable one row at a time. The low-order 10 address lines (A9..A0) go to every module in parallel. The rows share the same data lines (tri-state outputs).
  • Total address lines = 10 + 1 = 11; total data lines = 16.

Block diagram

 Address bits: 11 lines
   A10 --> [1-to-2 decoder] --> row enables E0, E1
   A9..A0 --> to every module (parallel)

 row 0: [M00] [M01]  <- E0
 row 1: [M10] [M11]  <- E1

 Data: M*0: D7..D0, M*1: D15..D8

Address ranges (row selected by the high bit)

A10Row enabledAddress range
0Row 0 (E0)000-3FFH
1Row 1 (E1)400-7FFH

In each row, ROM M0 gives the low byte D7..D0 and ROM M1 gives the high byte D15..D8.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Embedded System chapter 4 questions →