OCTOBUS
Octobus (or OCTObus, as it was written in some documentation) was a high-speed serial command bus for system-internal high speed signal/command transfer. It could send short messages used for synchronization of directly coupled processors in multi-processor configurations including DOMINO I/O controllers.

Purpose
Octobus was a part of transforming the original ND-500 design, where the ND-110 processor was an I/O bottleneck, to a multi-processor system with DOMINO I/O boards connected directly to the MF-Bus. The role of OCTObus was to manage and synchronize the processors.
Physical implementation
The MPM-5 (MultiPortMemory) system was extended with the physical wiring and features for Octobus support and was then called Multi-Function bus, or MF-Bus, introduced with the ND-5000 series.
Protocol overview
- An OCTObus message is 32 bits. It includes priority, destination, source, information, etc.
- Each device connected to the OCTObus is called a node.
- There can be up to 62 nodes on one OCTObus.
- An OCTObus can be bridged to another OCTObus if 62 nodes isn't sufficient.
- One node must be set up as MASTER. This node supplies the OCTObus clock (XCLK)
- Any node can be set up as MASTER, the MASTER node is not special.
- All nodes can take control of the bus, by issuing a request (XREQ) intercepted by the MASTER.
- Power failures are tolerated by all nodes.
- Retries are handled by hardware.
Signals
- XREQ - Transmit request
- XCLK - Clock
- XDAT - Data
- XRFO - Refresh oscillator
Data rate
Data rate depends on cable length.
| Cable length in meters | Clock frequency in MHz | Data rate in Mbits/s |
|---|---|---|
| 6 | 4 | 1.0 |
| 60 | 1 | 0.250 |
| 120 | 0.5 | 0.125 |
Cabling
The internal backwired OCTObus in the MF-Bus is called a local OCTObus and is TTL. Non-backwired OCTObus is called global OCTObus and uses differential cable.
Protocol Deep Dive
Software Message Format (16-bit I/O Register)
OCTOBUS frames are manipulated by software as 16-bit words in I/O registers. The following table shows bit assignments:
| Bit 15 | Bit 14 | Bits 13–8 | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bits 3–0 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C | B | DEST/SOURCE | E | K | M | S | Data/Number | ||||||||
| Control | Broadcast | Destination/Broadcast | Emergency | Kick | Multibyte | Start/Stop | Info/OMD | ||||||||
- C (Bit 15) — Control
- 1 = Control message (commands, kicks, multibyte envelopes)
- 0 = Data message (payload bytes)
- B (Bit 14) — Broadcast
- 1 = Broadcast to station type
- 0 = Unicast to specific station number
- Bits 13–8 (6 bits) — Destination/Source
- When B=0: Specific station number (1-62 decimal / 1-76 octal)
- When B=1: Broadcast type for all nodes of a given class
- Station 0 and 63 reserved/illegal
- E (Bit 7) — Emergency
- 1 = Emergency command (master clear, ACCP termination)
- 0 = Normal command
- Combined with command byte for emergency control codes
- K (Bit 6) — Kick
- 1 = Process activation/synchronization signal
- 0 = Not a kick message
- Kick numbers in bits 3-0 specify activation type (1-6)
- M (Bit 5) — Multibyte
- 1 = Part of multi-frame message sequence
- 0 = Single-frame message
- Used with S flag to delimit SOMB/EOMB boundaries
- S (Bit 4) — Start/Stop (when M=1)
- 1 = Start of Multibyte (SOMB)
- 0 = End of Multibyte (EOMB)
- OMD (Output Message Descriptor, 0-15) in bits 3-0
- Bits 3–0 (4 bits) — Data/Number/OMD
- Control messages: Command code
- Kick messages: Kick number (1-6)
- Multibyte messages: OMD (0-15) for message queue/handler
- Data frames: Payload byte or metadata
Station Number Assignments
Station numbers follow the format: decimal (octal in ND documentation)
| Type | Stations (Decimal) | Octal Range | Purpose |
|---|---|---|---|
| ND-120 CPU | 1 | 1 | Primary processor (ND-100 on ND-500-II systems) |
| MFbus Controllers | 2-7 | 2-7 | Memory and I/O control (ND-5000) |
| SCSI Controllers | 8-11 | 10-13 | Disk/storage control |
| Matra VME | 12-13 | 14-15 | VME bus interface |
| Multifunction Comm | 14-15 | 16-17 | Communication controllers |
| Hyperchannel | 16 | 20 | Network interface |
| FDDI/Fibernet | 17-19 | 21-23 | High-speed network |
| FPS-5000 | 20-23 | 24-27 | Floating-point accelerator |
| Graphics Controller | 24-27 | 30-33 | Display/graphics control |
| ND-5000 CPU | 56-62 | 70-76 | Processor (up to 7 CPUs per bus) |
Message Types
- Ident Message (C=1, E=0, K=0, M=0)
- Station identity request/response
- Bits 3-0 carry the ident number
- Used for station discovery and presence verification
- Kick Message (C=1, K=1)
- Process activation and synchronization signals
- Bits 3-0 specify the kick type (1-6)
- No response expected
- Emergency Message (C=1, E=1)
- High-priority control commands (master clear, ACCP termination)
- Hardware priority handling
- Bits 3-0 carry emergency command code
- Multibyte Message (C=1, M=1)
- Multi-frame protocol for complex data and commands
- Consists of SOMB, payload frames, EOMB
- Supports inter-processor messaging via OMD (Output Message Descriptor)
- Data Message (C=0)
- Payload frame (body of multibyte message)
- Bits 7-0 carry one data byte
- Part of an active multibyte message sequence
Multibyte Message Protocol
Multibyte messages allow transmission of variable-length payloads (0-255 bytes) across multiple frames. Used for:
- NUCLEUS inter-processor messaging
- System parameter configuration
- Complex command sequences
- Frame Sequence
- SOMB (Start of Multibyte): C=1, M=1, S=1, OMD in bits 3-0
- Destination station/broadcast type in bits 13-8
- Initiates message reception at destination
- Data Frame 1: C=0, destination station, low byte = source OMD
- Identifies which OMD at the source will receive the reply
- Data Frame 2: C=0, destination station, low byte = payload byte count N
- Specifies how many payload bytes follow
- Data Frames 3..N+2: C=0, destination station, low byte = payload byte i
- Payload bytes transmitted one per frame
- EOMB (End of Multibyte): C=1, M=1, S=0, OMD in bits 3-0
- Signals message completion
- Destination processes the complete message
- OMD (Output Message Descriptor)
- Range 0-15 (4 bits), identifies message queue/handler at destination
- OMD 0 reserved for OCTOBUS Test Protocol (station firmware service)
- OMD 1-15 available for application messages
- Destination replies by sending to the source OMD specified in Data Frame 1
Command Codes
Control messages (C=1, E=0) use command codes in the low byte:
| Code (hex) | Octal | Symbol | Purpose |
|---|---|---|---|
| 0x00 | 000 | CMACK | Acknowledge |
| 0x0E | 016 | CMSYS | System parameter (multibyte header) |
| 0x10 | 020 | CMREA | Read address |
| 0x14 | 024 | CMDWW | Direct write word |
| 0x16 | 026 | CMDRW | Direct read word |
| 0x1B | 033 | CMRUN | Run |
| 0x1C | 034 | CMSTO | Stop |
| 0x1D | 035 | CMCON | Continue |
| 0x1E | 036 | CMRES | Reset |
| 0x21 | 041 | CMMAC | Master Clear (with E=1: emergency 0xA1/241₈) |
| 0x22 | 042 | CMACO | Continue ACCP (with E=1: emergency 0xA2/242₈) |
| 0x24 | 044 | — | Terminate ACCP (with E=1: emergency 0xA4/244₈) |
| 0x31 | 061 | CMENK | Enable kick |
| 0x36 | 066 | CMMIC | Microcode command |
| 0x39 | 071 | CMCPU | CPU reset (sent as multibyte to OMD 3 on ACCP) |
| 0x3A | 072 | CMTES | Test command |
Kick Numbers
Kick messages (K=1) use 4-bit kick numbers (bits 3-0) for process synchronization:
| Kick # | Symbol | Purpose | Used By |
|---|---|---|---|
| 1 | N100KICK | Activate ND-5000 process | ND-100 to ND-500/ND-5000 |
| 2 | — | Alternate activate signal | ND-5000 |
| 3 | CLRKICK | Clear flag, continue process | Inter-CPU coordination |
| 4 | — | Update internal clock | System timing |
| 5 | — | NUCLEUS kick | NUCLEUS inter-processor messaging |
| 6 | IDLEKICK | Save context, go IDLE | Processor idle/sleep |
Hardware Message Format (32-bit on Wire)
The wire format includes bits not visible to software (managed by hardware). Total: 1 start bit + 30 data bits + 1 stop bit = 32 bits.
| Priority (4 bits) |
Dest (6 bits) |
C (1) |
B (1) |
Source (6 bits) |
Information (8 bits) |
Parity (2 bits) |
Ack (2 bits) |
|---|---|---|---|---|---|---|---|
| Lost Access Counter | Destination Station | Control | Broadcast | Source Station | Data/Command | Bit Count | Delivery Status |
- Priority (4 bits)
- Hardware-managed Lost Access Counter for bus arbitration
- Prevents starvation: stations that lose arbitration gain higher priority
- Parity (2 bits)
- Two LSBs of count of '1' bits in frame (computed by hardware)
- Ack (2 bits) — Delivery status code
- 00 = Timeout (15 retries)
- 01 = Successfully received
- 10 = Destination busy (255 retries with automatic retry)
- 11 = Parity error (B=0) or Ambiguous response (B=1)
- Source (6 bits)
- Station number of transmitter (set by hardware from STANO register)
- On reception, this becomes the visible station number in software
OCTOBUS Test Protocol (OMD 0)
Every station serves OMD 0, which implements the OCTOBUS Test Protocol. Used for:
- Station discovery (Identify yourself)
- Get present stations on bus
- Echo single/multi-word messages
- Read/write Octobus registers
- Get station type and firmware version
- Diagnostic and maintenance operations
Protocol verified from TPE (Test Program Equipment) OCTOBUS B00 test suite:
- Test 1: Transmit-receive loopback
- Test 2: Pattern exhaustion
- Test 3: FIFO depth verification
- Test 4: Station discovery and registry
- Test 5: Single-word echo
- Test 6: Multi-word message echo
See Also
- ND-500 — Classic 32-bit coprocessor
- ND-500-II — ND-500 with OCTOBUS via line driver
- ND-5000 — Native OCTOBUS processor
- NUCLEUS — Inter-processor messaging runtime
- DOMINO — I/O controller system
- MPM-5 — Shared memory predecessor
- MFbus — Modern successor bus (ND-5000)
Sources
- ND-14.001.1A DOMINO Standard Hardware Description
- "Sales information ND-5000 series" (found at www.sintran.com, original published by Norsk Data). Filesize 1.1 MB. Accessed on 03 August 2010.
|
|
This article is a stub. You can improve NDWiki by expanding it. |