# Is a multiplexer needed to read from memory

we need to enable a register to write into that register, which is done using a decoder.
even if we enable 1 register using decoder, given that RD(bar) is 0, all registers can still produce an output. And if all registers can respond, output would get corrupted.
so would we not need to select the output of that register , maybe by multiplexing?
is multiplexing used between output buffer and memory in this figure ? is it something else? i am not able to find on the net

• because only the addressed register will output to the bus. That's the idea of adressing, after all. – Marcus Müller Feb 9 at 14:31
• i understand that only the addressed register is enabled hence , only that register can be written onto. but to read from that register we don't need to enable it, right? since to read from registers we don't need to enable them, all registers can respond to the output buffer. hence the need for a multiplexer? – abhishek Feb 9 at 14:35
• What is most concerning me is the statement " i am not able to find on the net". Just as a warning: You will find that not every answer is available on the internet. However when I tried "multiplex cpu bus" (images) I did find the answer. – Oldfart Feb 9 at 14:36
• @Oldfart i understand how address and data buses are multiplexed.i understand this figure. what i am asking is different.i have included a figure in my question to clarify. – abhishek Feb 9 at 14:52

There is implicit multiplexing, created by providing each register with a 3-state output driver, and enabling only one driver at a time onto the bus. That's why you see the $$\\overline{\text{RD}}\$$ and $$\\overline{\text{CS}}\$$ lines connected to the Output Buffers in your diagram. The buffers are only enabled when $$\\overline{\text{RD}}\$$ and $$\\overline{\text{CS}}\$$ are both low at the same time.