segaloco
Experienced Member
- Joined
- Apr 30, 2023
- Messages
- 130
Posed this question on another forum but casting a wide net. I'm trying to solidify my understanding of how a CPU materially addresses components using the pins of an address bus. Basically my shoddy understanding goes something like this:
An operation is decoded by a CPU and found to involve an external memory access. The bits of this memory address are set on the address pins, such that on a 16-bit data bus, an address of 0x2002 results in pins A13 and A2 being logic-high and the remaining pins being logic-low.
Where it falls apart for me is where these pins are physically connected in a circuit and how they influence a single CPU IC communicating with different ICs located on different parts of a physical board.
So say you have a piece of hardware with a CPU bearing a 16-bit address bus and 8-bit data bus, work RAM chip with 0x800 addressable bytes and a graphics processor with 8 addressable one-byte registers. The work RAM is based at 0x0000 and the graphics processor at 0x2000. The above address is emitted on the address bus. What is it that sees A10-A0 and D7-D0 connected to the corresponding buses on the work RAM IC if A13 is logic-low but A2-A0 and D7-D0 connected to the graphics processor if A13 has logic high? Are both the low-order bits of the address bus *and* data bus switched to only connect to the target IC, or do one or the other set of physical pins make physical circuit connections to all components, with some other thing ensuring only the data bus contents from the expected IC make a connection?
If it is that the low address lines touch all ICs they influence every cycle, what prevents ICs other than the target from taking the contents of their address lines meaning they should do something. Is the read/write pin also arbitrated to the various ICs so that anything other than the target is on "read" and is simply exposing something on a data bus that is grounded out that cycle or otherwise doesn't go anywhere?
Thanks for any insights, this is an area I want to understand better.
An operation is decoded by a CPU and found to involve an external memory access. The bits of this memory address are set on the address pins, such that on a 16-bit data bus, an address of 0x2002 results in pins A13 and A2 being logic-high and the remaining pins being logic-low.
Where it falls apart for me is where these pins are physically connected in a circuit and how they influence a single CPU IC communicating with different ICs located on different parts of a physical board.
So say you have a piece of hardware with a CPU bearing a 16-bit address bus and 8-bit data bus, work RAM chip with 0x800 addressable bytes and a graphics processor with 8 addressable one-byte registers. The work RAM is based at 0x0000 and the graphics processor at 0x2000. The above address is emitted on the address bus. What is it that sees A10-A0 and D7-D0 connected to the corresponding buses on the work RAM IC if A13 is logic-low but A2-A0 and D7-D0 connected to the graphics processor if A13 has logic high? Are both the low-order bits of the address bus *and* data bus switched to only connect to the target IC, or do one or the other set of physical pins make physical circuit connections to all components, with some other thing ensuring only the data bus contents from the expected IC make a connection?
If it is that the low address lines touch all ICs they influence every cycle, what prevents ICs other than the target from taking the contents of their address lines meaning they should do something. Is the read/write pin also arbitrated to the various ICs so that anything other than the target is on "read" and is simply exposing something on a data bus that is grounded out that cycle or otherwise doesn't go anywhere?
Thanks for any insights, this is an area I want to understand better.