A commonly-used, asynchronous, simplex protocol, with flow control.
putbyte(char d)
{
wait_until(!ack);
data = d;
settle();
req = 1;
wait_until(ack);
req = 0;
}
| char getbyte()
{
wait_until(req);
char r = data;
ack = 1;
wait_until(!req);
ack = 0;
return r;
}
|
Example, untimed, blocking transactor: converts from transaction to pin-level modelling.
See working SystemC versions in the 'Toy ESL' practical material.