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

# Non-Receptive Mixer

## Specifications

### Informal

A (non-arbitrating, blocking) Non-Receptive Mixer has three 2-phase handshake ports, two passive and one active. The handshakes on the passive ports are `multiplexed' over the active port. That is, when the environment requests on exactly one of the passive ports, the Non-Receptive Mixer then requests on the active port, and when the active port receives an acknowledge, the passive port that received the original request is also acknowledged.

In contrast to the Mixer, the environment of a Non-Receptive Mixer must guarantee mutual exclusion of the requests on the passive ports. Therefore, a Non-Receptive Mixer is not a handshake component.

### XDI

Schematic diagram for a Non-Receptive Mixer:

[Zoom|FIG]

XDI state graph for a Non-Receptive Mixer:

[Zoom|FIG]

Specification in XDI model.

### Verdect

Specification in Verdect:

```
define NMIX( ar?, aa!, br?, ba!, cr!, ca? ) =
pref *[ ar?; cr!; ca?; aa! | br?; cr!; ca?; ba! ]
end
```

### DI Algebra

Specification in DI Algebra:

```NAME = "NR-Mixer"
I = { r0, r1, a }
O = { a0, a1, r }

MX = [ r0? -> r!; M0
, r1? -> r!; M1
]
M0 = [ r1? -> CHAOS
, a?  -> a0!; MX
]
M1 = [ r0? -> CHAOS
, a?  -> a1!; MX
]

[{r0},{a0}]
[{r1},{a1}]
[{r},{a}]
```

## Properties

XDI Report.

The roles of ports a and b can be interchanged:
NMIX(a, b; c) = NMIX(b, a; c)

## Implementations

### DI Decompositions

1. A Non-Receptive Mixer can be implemented by a Call (not equ), and consequently with two Forks, a Merge and a Latch:

[Zoom|FIG]
The Ludwig verification script of this implementation.

### Using Boolean Gates

No information available

### Using Transistors

No information available

## Generalizations

The Non-Receptive Mixer can be generalized to a k-Call, which multiplexes k passive ports (with mutually exlusive requests) onto one active port. A Non-Receptive Mixer is a Non-Receptive 2-Mixer.

## Miscellaneous

The Non-Receptive Mixer is said to be blocking because a request on a passive port is only acknowledged after a handshake has been completed on the active port. A Nonblocking non-receptive Mixer can also be specified, but it is not a very useful component, as it can only be used once.