Posted by Michael van Dam on March 03, 1998 at 16:32:39:
In Reply to: 68K Bus arbitration posted by David Lie on March 01, 1998 at 11:39:44:
: 1) When any device wants the bus it pulls BRn low.
: 2) The CPU returns BGn low regardless of the state of
: 3) When BGACKn floats high, the device with the token
: pulls it low and releases BRn.
: 4) The CPU then releases BGn.
: Can multiple devices request the bus? If one device
: requested it and didn't get it before another device
: earlier on the chain requests it, isn't it possible
: that both will get BG's and simultaneously go for the
: bus when it becomes free? On the other hand, if
: only one device is allowed to request at a time,
: why the extra BGACK signal?
When multiple devices are used on the bus, you have to
do something more sophisticated than simply connecting
both to the common BR and BG lines. (Yes, it is possible
that they both request the bus at the same time, and
that is why BGACK is needed.)
The daisy chain, as discussed in lecture, is one possible
solution. Instead of each device seeing the SAME BG signal,
the real one is seen only by the first device. This device
forwards a modified BG to the next device, and so on.
If a device sees its incoming BG signal, then it may
grab the bus if it wants to. If so, the outgoing BG signal
is turned off. If not, then the outgoing BG signal is
a copy of the incoming BG signal.
The question I think you are asking concerns when a device
late in the chain requests the bus by asserting BR, and the
processor responds by asserting BG. This BG would propagate
along the chain because nobody else wanted the bus. Now,
if suddenly one of the earlier devices requests the bus, it
immediately sees BG asserted and assumes it controls the bus.
Meanwhile, the BG signal has propagated to the original
requestor, which now also assumes that it can have the bus.
I believe that for a reasonable number of devices, the BG
propagation would be sufficiently rapid that all devices
would see some version of this signal in a single bus clock
cycle. If each device was controlled by a state machine
controlled by this clock, the problem described above could
never occur. In that example, either the original requestor
would see BG in one cycle and the other device would request
the bus during the next... at which point the original requestor
has already taken control of the bus. Or, the 'other' device
requests at the same time that BG is asserted by the
processor, sees that BG is asserted, grabs the bus, and
deasserts its outgoing BG signal... the original requestor
will then have to wait until the bus is free again.
Hope this helps...
Post a Followup