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

# Merge

## Specifications

### Informal

A Merge has two input terminals, and one output terminal. It `merges' signals on the input terminals to the output terminal. Input and output signals alternate. The environment has to guarantee mutual exclusion on the inputs.

### XDI

Schematic diagram for a Merge M(a,b,c):

[Zoom|FIG]

XDI state graph for a Merge M(a, b, c):

[Zoom|FIG]

Specification in XDI model:

```(AND/IF_1.0
(NFA
(NAME Merge)
(SYMBOLS
(a INPUT) (b INPUT) (c OUTPUT)
)

(STATES
(0 INITIAL BOX)
(1 TRANSIENT)
)
(TRANSITIONS
(0 1 a) (0 1 b)
(1 0 c)
)
)
)
```

### Verdect

Specification in Verdect:

```
define MERGE( a?, b?, c! ) =
pref *[ (a? | b?); c! ]
end
```

### DI Algebra

Specification in DI Algebra:

```NAME = "Merge"
I = { a?, b? }
O = { c! }
M = [ a? -> c!; M ,
b? -> c!; M
]
```

## Properties

XDI Report.

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

The Merge specification requires a choice between inputs from the environment in state 0.

## Implementations

### DI Decompositions

1. A Merge can be implemented with a Resettable Join using a Fork and an I-Wire:

[Zoom|FIG]

### Using Boolean Gates

1. The Merge can be implemented as an XOR gate.

### Using Transistors

No information available

## Generalizations

The Merge can be generalized to a k-Merge, which merges a choice between k inputs (k>0). A Merge is a 2-Merge.

## Miscellaneous

In [Ornstein67, p. 347] and [Dickson74, p. 44], the Merge is referred to as Merge Element.

In Section 2.2.5 of [Ebergen89, pp. 31-32], the Merge is referred to as XOR component.

## References

[Dickson74, p. 44]
[Ebergen89, pp. 31-32]
[Ornstein67, p. 347]