Click the write switch twice to generate a 0-1-0 pulse on the write input. This fills a '1' bit into the rightmost free position of the micropipeline. Repeat this until the full status line remains high when you release (low) the write input line.
Now click the read switch twice to generate a 0-1-0 pulse on the read input line. This removes the rightmost '1' bit from the micropipeline. Repeat until the available bit remains low (inactive).
You can now mix write and read transitions and watch how a partially filled micropipeline behaves.
Unlike traditional clocked FIFO (first-in-first-out) buffers, the micropipeline does not need a clock input signal or global synchronization. Each pipeline stage manages its own synchronization with its left and right neighbors. As such, micropipelines form an interesting building block for asynchronous circuits.
For details, please check the original papers:
Note: the initialization of micropipelines (and asynchronous logic with handshake protocols in general) is notoriously difficult. The C-Gates used here silently include their own power-on-reset circuitry to guarantee that all gates start in the low state at the start of the simulation.
Run the applet | Run the editor (via Webstart)