Transactional Handshaking in RTL (Synchronous Example)

A more complex example is the LocalLink protocol from Xilinx.

This is a synchronous packet proctocol (compare with the asynchronous four-phase handshake just described).

Like the four-phase handshake, LocalLink has contra-flowing
request and acknowledge signals. But data is not qualified by a
request transition: instead it is qualified as valid on any positive
clock edge where both request and acknowledge are asserted.