EDIS: Guide | FAQ | New | Search | Bibliography | Index | Feedback




A k-Sequencer (k>0) has k+1 input terminals a_i (0<=i<k) and b, and k output terminals c_i (0<=i<k). It waits for a signal on at least one of the a inputs and a signal on the b input. In contrast to a k-Latch, the environment need not guarantee mutual exclusion of the a-inputs. Having received input signals on a_i (0<=i<k) and b, it produces a signal on output terminal c_i.

When a k-Sequencer receives signals on b and more than one a_i, it produces a signal on exactly one of the c_i-outputs (the others are delayed till the next b input arrives). The specification leaves the choice open. Often there is a fairness requirement on this choice: if a choice situation arises `infinitely often' then both outputs are chosen `infinitely often'.

Each pair of terminals (a_i, c_i) can be viewed as one passive 2-phase handshake port. A k-Sequencer `sequences' handshakes on its handshake ports in syncrhony with signals on the b input. The b input is also referred to as next input.


Schematic diagram for a k-Sequencer:


XDI state graph and specification for a k-Sequencer with k=3:


Specification in XDI model.

. (Not available for general k)


Parameterized definitions are not possible in VERDECT, but this sketch gives the general idea:

Specification in Verdect:

define S( a0?, .., a(k-1)?, b?, c0!,.., c(k-1)! ) =
       pref *[ a0?; c0! ]
   ||  ...
   ||  pref *[ a(k-1)?; c(k-1)! ]
   ||  pref *[ b?; (c0! | ... | c(k-1)! ) ]
Also available through this link

DI Algebra

Pure DI Algebra does not allow a generalized specification. The following specification therefore needs instantiation before interpretation:

Specification in DI Algebra:

I = { a0, .. ,a(k-1)?, b? }
O = { c0!, .. , c(k-1)! }
S_k = b?; [ a0? -> c0!; S_k, ... , a(k-1)? -> c(k-1)!; S_k ]
Also available through this link

The specification of the case k=3 is as follows:

Specification in DI Algebra:

# Generated by expexp.pl
I    = { a0?, b?, a1?, a2? }
O    = { c0!, c1!, c2! }

S_3 = b?;[
	a0? -> c0!;S_3
, 	a1? -> c1!;S_3
, 	a2? -> c2!;S_3

Also available through this link



XDI Report for the case k=3. (Not available for general k)

The roles of subscripts i can be permuted (on a and c simultaneously).

The k-Sequencer satisfies Rules Y' and Z^in, but not Z^out (choice between c outputs).


DI Decompositions

  1. A k-Sequencer with k=1 is a Join.
  2. A k-Sequencer with k=2 is a Sequencer.
  3. A k-Sequencer with k=(m+n) can be implemented with a k-mixer with k=m and a k-Sequencer with k=(n+1) (equ):


    Taking n=0, we find an implementation of a k-Sequencer (k=m) with a k-mixer with k=m and a Join.
  4. With a little hunting we can find that for m>1, a k-mixer with k=m can be implemented with m-1 enabled Sequencers m-1 Latches 2m-2 Merges and 4m-4 Forks. By suitably combining this implementation with schemes 2 and 4 above, one can obtain implementations of a k-Sequencer (k=m) for arbitrary m>1, in terms of m-1 Sequencers (of which m-2 are enabled), m-2 Latches 2m-4 Merges 4m-8 Forks.

Using Boolean Gates

No information available

Using Transistors

No information available


No information available


In [Ebergen89], the k-Sequencer is referred to as k-SEQ component.

Section 6.2.6 of [Ebergen89] presents decomposition 4 (without k-mixers, RGDA Arbiters, or Non-Receptive Mixers as stepping stones).



Last modified at Fri Nov 20 10:11:40 1998
Encyclopaedia of Delay-Insensitive Systems
Copyright © 1995-1998 Tom Verhoeff / Tom.Verhoeff@acm.org