# IEEE 1355

IEEE Standard 1355-1995, IEC 14575, or ISO 14575 is a data communications standard for Heterogeneous Interconnect (HIC).
IEC 14575 is a low-cost, low latency, scalable serial interconnection system, originally intended for communication between large numbers of inexpensive computers.
IEC 14575 lacks many of the complexities of other data networks. The standard defined several different types of transmission media (including wires and optic fiber), to address different applications.
Since the high-level network logic is compatible, inexpensive electronic adapters are possible. IEEE 1355 is often used in scientific laboratories. Promoters include large laboratories, such as CERN, and scientific agencies.
For example, the ESA advocates a derivative standard called SpaceWire.

## Goals

The protocol was designed for a simple, low cost switched network made of point-to-point links. This network sends variable length data packets reliably at high speed. It routes the packets using wormhole routing. Unlike Token Ring or other types of local area networks (LANs) with comparable specifications, IEEE 1355 scales beyond a thousand nodes without requiring higher transmission speeds. The network is designed to carry traffic from other types of networks, notably Internet Protocol and Asynchronous Transfer Mode (ATM), but does not depend on other protocols for data transfers or switching. In this, it resembles Multiprotocol Label Switching (MPLS).
IEEE 1355 had goals like Futurebus and its derivatives Scalable Coherent Interface (SCI), and InfiniBand. The packet routing system of IEEE 1355 is also similar to VPLS, and uses a packet labeling scheme similar to MPLS.
IEEE 1355 achieves its design goals with relatively simple digital electronics and very little software. This simplicity is valued by many engineers and scientists. Paul Walker (see links) said that when implemented in an FPGA, the standard takes about a third the hardware resources of a UART (a standard serial port), and gives one hundred times the data transmission capacity, while implementing a full switching network and being easier to program.
Historically, IEEE 1355 derived from the asynchronous serial networks developed for the Transputer model T9000 on-chip serial data interfaces. The Transputer was a microprocessor developed to inexpensively implement parallel computation. IEEE 1355 resulted from an attempt to preserve the Transputer's unusually simple data network. This data strobe encoding scheme makes the links self-clocking, able to adapt automatically to different speeds. It was patented by Inmos under U.K. patent number 9011700.3, claim 16 (DS-Link bit-level encoding), and in 1991 under US patent 5341371, claim 16. The patent expired in 2011.

## Use

IEEE 1355 inspired SpaceWire. It is sometimes used for digital data connections between scientific instruments, controllers and recording systems. IEEE 1355 is used in scientific instrumentation because it is easy to program and it manages most events by itself without complex real-time software.
IEEE 1355 includes a definition for cheap, fast, short-distance network media, intended as the internal protocols for electronics, including network switching and routing equipment. It also includes medium, and long-distance network protocols, intended for local area networks and wide area networks.
IEEE 1355 is designed for point-to-point use. It could therefore take the place of the most common use of Ethernet, if it used equivalent signaling technologies (such as Low voltage differential signaling).
IEEE 1355 could work well for consumer digital appliances. The protocol is simpler than Universal Serial Bus (USB), FireWire, Peripheral Component Interconnect (PCI) and other consumer protocols. This simplicity can reduce equipment expense and enhance reliability. IEEE 1355 does not define any message-level transactions, so these would have to be defined in auxiliary standards.
A 1024 node testbed called Macramé was constructed in Europe in 1997. Researchers measuring the performance and reliability of the Macramé testbed provided useful input to the working group which established the standard.

## What it is

The work of the Institute of Electrical and Electronics Engineers was sponsored by the Bus Architecture Standards Committee as part of the Open Microprocessor Systems Initiative. The chair of the group was Colin Whitby-Strevens, co-chair was Roland Marbot, and editor was Andrew Cofler. The standard was approved 21 September 1995 as IEEE Standard for Heterogeneous InterConnect (HIC) (Low-Cost, Low-Latency Scalable Serial Interconnect for Parallel System Construction) and published as IEEE Std 1355-1995. A trade association was formed in October 1999 and maintained a web site until 2004.
The family of standards use similar logic and behavior, but operate at a wide range of speeds over several types of media. The authors of the standard say that no single standard addresses all price and performance points for a network. Therefore, the standard includes slices (their words) for single-ended (cheap), differential (reliable) and high speed (fast) electrical interfaces, as well as fiber optic interfaces. Long-distance or fast interfaces are designed so that there is no net power transfer through the cable.
Transmission speeds range from 10 megabits per second to 1 gigabit per second. The network's normal data consists of 8-bit bytes sent with flow control. This makes it compatible with other common transmission media, including standard telecommunications links.
The maximum length of the different data transmission media range from one meter to 3 kilometers. The 3 km standard is the fastest. The others are cheaper.
The connectors are defined so that if a plug fits a jack, the connection is supposed to work. Cables have the same type of plug at both ends, so that each standard has only one type of cable. "Extenders" are defined as two-ended jacks that connect two standard cables.
Interface electronics perform most of the packet-handling, routing, housekeeping and protocol management. Software is not needed for these tasks. When there is an error, the two ends of a link exchange an interval of silence or a reset, and then restart the protocol as if from power-up.
A switching node reads the first few bytes of a packet as an address, and then forwards the rest of the packet to the next link without reading or changing it. This is called "wormhole switching" in an annex to the standard. Wormhole switching requires no software to implement a switching fabric. Simple hardware logic can arrange fail-overs to redundant links.
Each link defines a full-duplex (continuous bidirectional transmission and reception) point-to-point connection between two communicating pieces of electronics. Every transmission path has a flow control protocol, so that when a receiver begins to get too much data, it can turn down the flow. Every transmission path's electronics can send link control data separately from normal data. When a link is idle, it transmits NULL characters. This maintains synchronization, finishes any remaining transmission quickly, and tests the link.
Some Spacewire users are experimenting with half-duplex versions. The general scheme is that half-duplex uses one transmission channel rather than two. In space, this is useful because the weight of wires is half as much. Controllers would reverse the link after sending an end-of-packet character. The scheme is most effective in the self-clocking electrical systems, such as Spacewire. In the high speed optical slices, half-duplex throughput would be limited by the synchronization time of the phase locked loops used to recover the bit clock.

## Definition

This description is a brief outline. The standard defines more details, such as the connector dimensions, noise margins, and attenuation budgets.
IEEE 1355 is defined in layers and slices. The layers are network features that are similar in different media and signal codings. Slices identify a vertical slice of compatible layers. The lowest layer defines signals. The highest defines packets. Combinations of packets, the application or transaction layer, are outside the standard.
A slice, an interoperable implementation, is defined by a convenient descriptive code, SC-TM-dd, where:
* SC is the signal coding system. Valid values are DS (data strobe encoding), TS (three of six), and HS (high speed).
* TM is the transmission medium. Valid values are SE (single-ended electrical), DE (differential electrical), and FO (fiber optic)
* dd is the speed in hundreds of megabaud (MBd). A baud rate relates to a change of the signal. Transmission codings may send several bits per second per baud, or several baud per bit per second.
Defined slices include:
* DS-SE-02, cheap, useful inside electronic equipment, (200 Mbit/s, <1 meter maximum length).
* DS-DE-02, noise-resistant electrical connections between equipment (200 Mbit/s, <10 meters).
* TS-FO-02, good, useful for long-distance connections (200 Mbit/s, <300 meters).
* HS-SE-10, short very fast connections between equipment (1 Gbit/s, <8 meters).
* HS-FO-10, long very fast connections (1 Gbit/s, <3000 meters).
Spacewire is very similar to DS-DE-02, except it uses a microminiature 9-pin "D" connector (lower-weight), and low voltage differential signaling. It also defines some higher-level standard message formats, routing methods, and connector and wire materials that work reliably in vacuum and severe vibration.

### Layer 0: The signal layer

In all slices, each link can continuously transmit in both directions ("full duplex"). Each link has two transmission channels, one for each direction.
In a link's cable, the channels have a "half twist" so that input and output always go to the same pins of the connector on both ends of the cable. This makes the cables "promiscuous", that is, each end of any cable will plug into any jack on a piece of equipment.
Each end of a link's cable must be clearly marked with the type of link: for example "IEEE 1355 DS-DE Link Cable".

### Layer 1: The Character Layer

Every slice defines 256 data characters. This is enough to represent 8 bits per character. These are called "normal data" or "N-chars."
Every slice defines a number of special link control characters, sometimes called "L-chars." The slice cannot confuse them with N-chars.
Each slice includes a flow control link-control character, or FCC, as well as L-chars for NULL (no data), ESCAPE, end of packet, and exceptional end of packet. Some slices add a few more to start-up the link, diagnose problems, etc.
Every slice has error detection defined at the character layer, usually using parity. The parity is usually distributed over several characters.
A flow-control-character gives a node permission to transmit a few normal data characters. The number depends on the slice, with faster slices sending more characters per FCC. Building flow control in at a low level makes the link far more reliable, and removes much of the need to retransmit packets.

### Layer 2: The Exchange layer

Once a link starts, it continuously exchanges characters. These are NULLs if there is no data to exchange. This tests the link, and ensures that the parity bits are sent quickly to finish messages.
Each slice has its own start-up sequence. For example, DS-SE and DS-DE are silent, then start sending as soon as they are commanded to start. A received character is a command to start.
In error detection, normally the two ends of the link exchange a very brief silence (e.g. a few microseconds for DS-SE), or a reset command and then try to reset and restore the link as if from power-up.

### Layer 3: The common packet layer

A packet is a sequence of normal data with a specific order and format, ended by an "end of packet" character. Links do not interleave data from several packets. The first few characters of a packet describe its destination. Hardware can read those bytes to route the packet. Hardware does not need to store the packet, or perform any other calculations on it in order to copy it and route it.
One standard way to route packets is wormhole source routing in which the first data byte always tells the router which of its outputs should carry the packet. The router then strips off the first byte, exposing the next byte for use by the next router.

### Layer 4: The Transaction Layer

IEEE 1355 acknowledges that there must be sequences of packets to perform useful work. It does not define any of these sequences.

### Slice: DS-SE-02

DS-SE stands for "Data and Strobe, Single-ended Electrical." This is the least expensive electrical standard. It sends data at up to 200 megabits per second, for up to 1 meter, this is useful inside an instrument for reliable low-pin-count communications.
A connection has two channels, one per direction. Each channel consists of two wires carrying strobe and data. The strobe line changes state whenever the data line starts a new bit with the same value as the previous bit. This scheme makes the links self-clocking, able to adapt automatically to different speeds.
Data characters start with an odd parity, followed by a zero bit. This means that the character is a normal data character, followed by eight data bits.
Link control characters start with odd parity, followed by a one bit, followed by two bits. Odd-1 means that the character is a link control character. 00 is the flow control character FCC, 01 is a normal end of packet EOP, 10 is an exceptional end of packet EEOP, and 11 is an escape character ESC. A NULL is the sequence "ESC FCC".
An FCC gives permission to send eight (8) normal data characters.
Each line can have two states: above 2.0 V, and below 0.8 V -- single-ended CMOS or TTL logic level signals. The nominal impedance is either 50 or 100 ohms, for 3.3 V and 5 V systems respectively. Rise and fall times should be <100 ns. Capacitance should be <300 pF for 100 MBd, and <4 pF for 200 MBd.
No connectors are defined because DS-SE is designed for use within electronic equipment.

### Slice: DS-DE-02

DS-DE stands for "Data and Strobe, Differential Electrical." This is the electrical standard that resists electrical noise the best. It sends data at up to 200 megabits per second, for up to 10 meters, which is useful for connecting instruments. The cable is thick, and the standard connectors are both heavy and expensive.
Each cable has eight wires carrying data. These eight wires are divided into two channels, one for each direction. Each channel consists of four wires, two twisted pairs. One twisted pair carries differential strobe, and the other carries differential data. The encoding for the character layer and above is otherwise like the DS-SE definition.
Since the cable has ten wires, and eight are used for data, a twisted pair is left over. The black/white pair optionally carries 5 V power and return.
The driver rise time should be between 0.5 and 2ns. The differential voltage may range from 0.8 V to 1.4 V, with 1.0 V typical—differential PECL logic level signals. The differential impedance is 95 ± 10 ohms. The common mode output voltage is 2.5–4 V. The receiver's input impedance should be 100 ohms, within 10%. the receiver input's common mode voltage must be between -1 and 7 V. The receiver's sensitivity should be at least 200 mV.
The standard cable has ten wires. The connectors are IEC-61076-4-107. Plug A (pin 1 is first, pin 2 second): a:brown/blue, b:red/green, c:white/black, d:orange/yellow, e:violet/gray (Pin 1 is given first). Plug B (pin 2 is first, pin 1 second): e:brown/blue, d:red/green, c:black/white, b:orange/yellow, a:violet/gray. Note the implementation the "half twist", routing inputs and outputs to the same pins on each plug.
The Pin 1C/black, may carry 5 volts, while 2C/white may carry return. If the power supply is present it must have a self-healing fuse, and may have ground fault protection. If it is absent, the pins should include a 1 MΩ resistor to ground to leak away static voltages.

### Slice: TS-FO-02

TS-FO stands for "Three of Six, Fiber Optical." This is a fiber optic standard designed for affordable plastic fibers operating in the near infrared. It sends 200 megabits/second about 300 meters.
The wavelength should be between 760 and 900 nanometers, which is in the near infrared. The operating speed should be at most 250 MBd with at most 100 parts per million variation. The dynamic range should be about 12 decibels.
The cable for this link uses two 62.5 micrometer-diameter multimode optic fibers. The fiber's maximum attenuation should be 4 decibels per kilometer at an infrared wavelength of 850 nanometers. The standard connector on each end is a duplex MU connector. Ferrule 2 is always "in", while ferrule 1 is "out". The centerlines should be on 14 mm centers, and the connector should be 13.9 mm maximum. The cable has a "half twist" to make it promiscuous.
Line coding :
| Data | Encoding |
| 0 | 011010 |
| 1 | 101001 |
| 2 | 011001 |
| 3 | 110001 |
| 4 | 001101 |
| 5 | 101100 |
| 6 | 011100 |
| 7 | 110100 |
| 8 | 001011 |
| 9 | 100011 |
| A | 010011 |
| B | 110010 |
| C | 001110 |
| D | 100110 |
| E | 010110 |
| F | 100101 |
| Control | 101010 |
| Control | 010101 |
The line code "3/6" sends a stream of six bits, of which three bits are always set. There are twenty possible characters. Sixteen are used to send four bits, two (111000 and 000111) are unused, and two are used to construct link control characters. These are shown with the first bit sent starting on the left.
Such a constant-weight code detects all single-bit errors. Combined with a longitudinal redundancy check, it avoids the need for a CRC which can double the size of small packets.
Normal data bytes are sent as two data characters, sent least significant nibble first. Special symbols are sent as pairs including at least one control character.
The two control characters are called "Control" and "Control*", depending on the previous character. If the previous character ends with a 0, Control is 010101 and Control* is 101010. If the previous character ends with a 1, Control is 101010, and Control* is 010101.
* NULL is Control Control*: (0) 010101 010101 or (1) 101010 101010
* FCC (flow control character) is Control Control: (0) 010101 101010 or (1) 101010 010101
* INIT is Control Control* Control* Control* (NULL Control* Control*).
* EOP_1 (end of packet) is Control Checksum (see below for value).
* EOP_2 (exceptional end of packet) is Checksum Control.
Data errors are detected by a longitudinal parity: all the data nibbles exclusive-ored and then the result is sent as the 4-bit checksum nibble in the end-of-packet symbol.
This link transmits NULLs when idle. Each flow control character (FCC) authorizes the other end to send eight bytes, i.e. sixteen normal data characters.
The link starts by sending INIT characters. After receiving them for 125 μs, it switches to sending NULLs. After it sends NULLs for 125 μs, it sends a single INIT. When a link has both sent and received a single INIT, it may send an FCC and start receiving data.
Receiving two consecutive INITs, or many zeros or ones, indicates disconnection.
Like the two-out-of-five code, it may be decoded by assigning weights to bit positions, in this case 1-2-0-4-8-0. The two 0-weight bits are assigned to ensure there are a total of three bits set. When the nibble has one or three 1 bits, this is unambiguous. When the nibble is 0 or F (zero or four 1 bits), an exception must be made. And when the nibble has two 1 bits, there is ambiguity:
* Nibbles 3 and C encode to 11_00_ and 00_11_. The codes 110001 and 001110 are used, leaving the codes 111000 and 000111 unused. This ensures there are never more than four identical bits in a row.
* Nibbles 5 and A encode to 10_10_ and 01_01_. The codes 101100 and 010011 are used, with the codes 100101 and 011010 assigned to nibbles F and 0 instead.
* Nibbles 6 and 9 encode to 01_10_ and 10_01_. The codes 011100 and 100011 are used, with the codes 010101 and 101010 used for control characters.

### Slice: HS-SE-10

HS-SE stands for "High speed, Single-ended Electrical." This is the fastest electrical slice. It sends a gigabit per second, but the 8 meter range limits its usage to instrument clusters. However, the modulation and link control features of this standard are also used by the wide-area fiber optic protocols.
A link cable consists of two 2.85 mm diameter 50 Ω coaxial cables. The impedance of the whole transmission line shall be 50 ohms ±10%. The connectors shall follow IEC 1076-4-107. The coaxial cables do a "half twist" so that pin B is always "in" and pin A is always "out".
The electrical link is single-ended. For 3.3 V operation, low is 1.25 V and high is 2 V. For 5 V operation, low is 2.1 V and high is 2.9 V. The signaling speed is 100 MBd to 1 GBd. The maximum rise time is 300 picoseconds, and the minimum is 100 picoseconds.
The HS link's 8B/12B code is a balanced paired disparity code, so there is no net power transfer. It arranges this by keeping a running disparity, a count of the average number of ones and zeros. It uses the running disparity to selectively invert characters. An inverted character is marked with a set invert bit. 8B/12B also guarantees a clock transition on each character.
8B/12B first sends an odd parity bit, followed by 8 bits (least-significant bit first), followed by an inversion bit, followed by a 1 (which is the start bit), and a 0 which is the stop bit.
When the disparity of a character is zero (that is, it has the same number of ones and zeroes, and therefore will not transfer power), it can be transmitted either inverted or noninverted with no effect on the running disparity. Link control characters have a disparity of zero, and are inverted. This defines 126 possible link characters. Every other character is a normal data character.
The link characters are: 0:IDLE 5:START_REQ (start request) 1:START_ACK (start acknowledge) 2:STOP_REQ (stop request) 3:STOP_ACK (stop acknowledge) 4:STOP_NACK (stop negative acknowledge) 125:FCC (flow control character) 6:RESET
When a link starts, each side has a bit "CAL" that is zero before the receiver is calibrated to the link. When CAL is zero, the receiver throws away any data it receives.
During a unidirectional start up, side A sends IDLE. When side B is calibrated, it begins to send IDLE to A. When A is calibrated, it sends START_REQ. B responds with START_ACK back to A. A then sends START_REQ to B, B responds with START_ACK, and at that point, either A or B can send a flow control character and start to get data.
In a bidirectional start-up both sides start sending IDLE. When side A is calibrated, it send START_REQ to side B. Side B sends START_ACK, and then A can send an FCC to start getting data. Side B does exactly the same.
If the other side is not ready, it does not respond with a START_ACK. After 5 ms, side A tries again. After 50 ms, side A gives up, turns off the power, stops and reports an error. This behavior is to prevent eye-injuries from a high-powered disconnected optical fiber end.
A flow control character (FCC) authorizes the receiver to send thirty-two (32) data characters.
A reset character is echoed, and then causes a unidirectional start-up.
If a receiver loses calibration, it can either send a reset command, or simply hold its transmitter low, causing a calibration failure in the other link.
The link is only shutdown if both nodes request a shutdown. Side A sends STOP_REQ, side B responds with STOP_ACK if it is ready to shut down, or STOP_NACK if it is not ready. Side B must perform the same sequence.

### Slice: HS-FO-10

"HS-FO" stands for "High Speed Fiber Optical." This is the fastest slice, and has the longest range, as well. It sends a gigabit/second up to 3000 meters.
The line code and higher levels are just like HS-SE-10.
The cable is very similar to the other optical cable, TS-FO-02, except for the mandatory label and the connector, which should be IEC-1754-6. However, in older cables, it is often exactly the same as TS-FO-02, except for the label. HS-FO-10 and TS-FO-02 will not interoperate.
This cable can have 62.5 micrometer multimode cable, 50 micrometer multimode cable, or 9 micrometer single-mode cable. These vary in expense and the distances they permit: 100 meters, 1000 meters, and 3000 meters respectively.
For multimode fiber, the transmitter launch power is generally −12 dBm. The wavelength is 760–900 nanometer (near infrared). On the receiver, the dynamic range is 10 dB, and the sensitivity is −21 dBm with a bit error rate of one bit in 10$^{12}$ bits.
For single mode fiber, the transmitter launch power is generally −12 dBm. The wavelength is 1250–1340 nanometers (farther infrared). On the receiver, the dynamic range is 12 dB, and the sensitivity is −20 dBm with a bit error rate of one bit in 10$^{12}$ bits.