On Sun, Jun 12, 2005 at 02:40:25PM +0100, James Adams wrote:
>
> NOTE a good way to handshake information back and forward across clock
> domains is use a 'toggle' system. Basically the 'sender and 'reciever'
> domains both keep a flag register. These registers are normally both
> equal (either both zero or both one). When the sender wants to signal
> an event to the reciever it flips the state of its flag. The reciever
> sees this flip (it sees the XOR of its copy of the flag and the
> re-synchronised version of the sender's flag) and to acknowledge it
> has recieved the event it toggles its copy of the flag. The reciever
> 'recieves' the acknowledge when it sees both copies of the flag are
> once again equal.
This sounds like the core of your comment. Continuing the line of
thought, if a clock domain changes its data register on the same edge as it
changes the flag, the other domain needs to wait one of its own clock cycles
after seeing the flag, before it reads the data register and changes its own
flag. Or, conversely, a domain could be required to wait one cycle after
writing data before writing its flag.
Now that I think of it, this is a lot like the way the VME bus
handles its asynchronous handshaking. A master sets up a bus transaction,
then sets a strobe and waits. The slave sees the strobe, reads or writes
data on the bus, then sets acknowledge and waits. The master sees
acknowledge, reads data from the bus if this is a read cycle, then removes
strobe. The slave sees strobe go away, and removes acknowledge. The master
sees acknowledge go away, and sets up the next transaction.
I think there was more of your posting when I trimmed; I'll go back
and read again.
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)