-7

Lesson 2: Design an address decoder for 64 KB memory from 16KB memory ICs, knowing that the memory base address is 94000H and the address decoder is designed using circuits combinatorial logic.

Peter Cordes
  • 328,167
  • 45
  • 605
  • 847
Tờ Ân
  • 3
  • 3
  • 3
    Welcome to SO! Please read the [how-to-ask article](https://stackoverflow.com/help/how-to-ask) before posting. This is not a code-writing-service, please ask a specific question and show what you tried. – toydarian May 18 '21 at 10:57

1 Answers1

1

64KB is four times 16KB, so you will need four 16KB memory chips. Addressing 64 KB = 216 bytes of memory requires 16 wires between CPU and the memory chips. Let's enumerate those wires as 0..15:

       15   11    7    3  0 
        |    |    |    |  | 
lowest: 0000_0000_0000_0000b
highest:1111_1111_1111_1111b

Your 16KB chips use only addressing pins 0..13, connect them all in parallel to the address bus. The remaining pins 14..15 need to be decoded to four chip-select (CS) signals, connected each to their corresponding 16KB chip and causing the chip idle when CS is not 1.

Combinatorial logic of the decoder is straightforward:

CPU pins   CS3 CS2 CS1 CS0
15 14
 0  0       0   0   0   1
 0  1       0   0   1   0
 1  0       0   1   0   0
 1  1       1   0   0   0  

Construction of the decoder depends on available logical gates, for instance CS0 should be 1 if and only if both pins 14 and 15 area 0, so you may need two input invertors and one AND gate.

Remapping the address space to 94000H

       19   15   11    7    3  0 
        |    |    |    |    |  | 
94000h: 1001_0100_0000_0000_0000b

affects only address bit 14 of 64KB memory, so you should invert this bit on input of your four CS decoders and you can ignore addressing pins 16..19.

vitsoft
  • 5,515
  • 1
  • 18
  • 31