??? 03/27/06 22:55 Read: times |
#113272 - Addressing 101 Responding to: ???'s previous message |
A memory is an array of storage locations; eg,
Clearly, we[2] need some way to distinguish all these locations; some way to uniquely identify each one. We call this identifier the address of the storage location: etc, etc, etc,... In a digital system, a signal can have only one of two values - for convenience, we often represent these as '0' and '1' Thus a digital signal can be used to select one of two memory locations; say, "location 0" and "location 1" - we say that the signal addresses "location 0" or "location 1" If we want to be able to select from more than just two locations, then we must combine two or more signals; eg, to address four locations, we need two signals: We could call the 1st signal "Signal A", call the 2nd signal "Signal B", and write this as a table: Signal Signal A B Address ------ ------ ------- 0 0 0 0 1 1 1 0 2 1 1 3With 3 signals, we can address eight locations: Signal Signal Signal A B C Address ------ ------ ------ ------- 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 1 1 1 7Thus the three signals - A, B, and C - carry a code that selects one (and only one) of the memory locations. The process of determining which location is addressed is known as Address Decoding Looking at the table, you can see that Address 0 is selected when A=0 AND B=0 AND C=0; Similarly, Address 1 is selected when A=0 AND B=0 AND C=1; etc Thus the logic expression describing when Address 0 is selected is: !A . !B . !COr, to put it another way, this is the logic expression that decodes address 0 The logic circuit that implements this decoding is called a Decoder I hope that helps a bit. Notes: [1] 'K' (uppercase) = 210 = 1024; 'k' (lowercase) = 103 = 1000. [2] That's the pedagogical "we" |