pub fn relay_kernel<T: Digital>(
cr: ClockReset,
i: RelayIn<T>,
q: RelayQ<T>,
) -> (RelayOut<T>, RelayD<T>)Expand description
Carloni’s controller (figure 4), with the state as one bit.
- Run (
stalllow):mainloads the incoming item whenever downstream is not stopped, ormainis empty. If downstream stops while bothmainand the input hold items, the input item goes intoauxand the station moves to Stall. - Stall:
stop_outis high. When downstream releases,maintakes the item fromauxand the station returns to Run (still stopping upstream for that one clock, so nothing new arrives whileauxdrains).