Tag Archives: delay insensitive encoding

Multi-rail Encoding

James Talbert 8,3,2017
Multi-rail Encoding

Q: With a multi-rail signal, do the lines have to be mutually exclusive? For completeness detection, they have to have to have a deterministic result set, with no overlap (001 overlaps with 011, 101, and 111). This may be what you meant by “With a single data value and multi-rail you can straightforwardly  encode any meaning in a single unbounded encoding regime.” but I want to check that I’m not missing something.

An example: If I have a 4-rail signal, with states {0011, 0101, 0110, 1001, 1010, 1100}, I get 6 states instead of the 4 with the same number of lines. Since all these states are distinct, and partially-complete versions do not form valid states, I would think that they could be used as representations.

A: Yes. When I say multi-rail I mean 1 of N encoding. There are delay insensitive M of N encodings like your 2 of 4 which yield more distinct meanings with fewer wires but have other disadvantages. First, M of N encodings require decoding which makes combination more expensive. Meaning is inherently a 1 of N condition. Out of multiple possible meanings there is typically only one meaning intended. The 2 of 4 code can encode 6 meanings but the code has to be decoded to a 1 of 6 representation to determine the meaning. With a 1 of 6 encoding there are 6 wires but there is no decoding. It matches the natural condition of meaning.

The 2 of 4 encoding would be efficient only if logic is much cheaper than wires. Chapter 11 of LDD goes into this issue in some depth.

Secondly, M of N codes do not scale. The 2 of 4 code represents 1 of 6 meanings. It cannot represent 1 of 7 or 1 of 3. The code locks one into base 6 representation with the associated decoding logic. 1 of N encoding does not have associated decoding logic and can directly represent any set of mutually exclusive meanings and form any base for further encoding.