A system for managing the control of a bi-directional data bus between a master
unit and a slave unit. The master couples to the slave through a request opcode
bus, a reply opcode bus and the data bus. If the master is in a bus driving state
(with respect to the data bus) and receives a read request, the master relinquishes
bus control and sends a read request through the request opcode bus. The slave
unit assumes bus control and sends the requested data through the data bus. If
the master is in a bus sensing state and receives a write request, the master sends
a last read opcode to the slave via the request opcode bus, and waits for the slave
to return a special token through the reply opcode bus. Upon receiving the special
token the master unit assumes bus control and performs the write transaction.