The PC/104 bus and form factor was originally devised by Ampro in 1987 and later standardized by the PC/104 Consortium in 1992. An IEEE standard corresponding to PC/104 was drafted as IEEE P996.1, but never ratified. In 1997, the PC/104 Consortium introduced a newer standard based on the PCI bus. A PCI Express-based standard was introduced in 2008. PC/104-related specifications are controlled by the PC/104 Consortium. There are currently 47 members of the Consortium. The specifications released by the PC/104 Consortium define multiple of Bus Structures (ISA, PCI, PCI Express) and Form Factors (104, EBX, EPIC).
PC/104 Form Factors
The original PC/104 bus derives from the ISA bus. It includes all the signals found on the ISA bus, with additional ground pins added to ensure bus integrity. Signal timing and voltage levels are identical to the ISA bus, with lower current requirements. The PC/104 specification defines two versions of the bus, 8-bit or 16-bit. The 8-bit version corresponds to the IBM XT and consists of 64 pins. The 16-bit version corresponds to the IBM AT and adds 40 additional pins, bringing the total to 104 (hence the name “PC/104”).
The PC/104-Plus standard adds support for the PCI bus, in addition to the ISA bus of the PC/104 standard. The name is derived from its origin: a PC/104-Plus module has a PC/104 connector (ISA) plus a PCI connector. The standard defines a 120-pin connector for the PCI bus, located on the opposite side of the board from the PC/104 connector. PC/104-Plus CPU boards provide active communication on both buses, and are capable of communicating with both ISA and PCI peripheral cards. On PC/104-Plus peripheral modules, the PC/104 connector is simply a passive connector for stackability; the module actively communicates on the PCI bus only. As a corollary, a PC/104-Plus peripheral module may not be used with a PC/104 CPU board. However, a PC/104-Plus CPU board may be used with a PC/104 peripheral module.
The PCI-104 form factor includes the PCI connector, but not the PC/104 connector, in order to increase the available board real estate. Even though the PCI connector has 120 pins instead of 104, the established name was kept. Since the ISA bus is omitted, a PCI-104 board is incompatible with PC/104 peripheral module. However, PCI-104 and PC/104-Plus are compatible, since they both utilize the PCI bus. Most PC/104-Plus boards can be manufactured as PCI-104 by simply not populating the PC/104 connector.
The PCI/104-Express specification incorporates the PCI Express bus (PCIe) in addition to the previous-generation PCI bus. The specification defines a 156-pin surface mount connector for the PCI Express signals. The new connector occupies the same board location as the legacy PC/104 ISA connector. In addition to PCI Express, the specifications also defines pins on the connector for additional modern computer buses, such as USB, SATA, and LPC. The PCI/104-Express specification currently defines two possible pinouts for the PCIe connector:
- Type 1 offers four x1 PCI Express links, two USB 2.0 ports, and one x16 PCIe link.
- Type 2 offers four x1 PCI Express links, two USB 2.0 ports, two PCIe x4 links, two USB 3.0 ports, two SATA ports, and LPC.
CPU boards and peripherals may be designed as Type 1, Type 2, or Universal (which only uses the common subset of signals between the two types, PCIe x1 and/or USB 2.0). The Type 2 pinout was not introduced until Version 2.0 of the specification (released in 2011). PCI/104-Express products introduced prior to 2011 will be either Type 1 or Universal, but may not be explicitly labeled as such. A Type 1 bus is incompatible with Type 2 peripherals, or vice versa. The specification requires the system to remain in reset and not boot in the case of a Type mismatch (no physical damage will occur). Universal peripheral boards may be used with either Type 1 or Type 2 pinouts. Because the PCIe bus connector is surface-mount, not through-hole, it is also possible for a board to use different bus pinouts on the top side of the board vs the bottom side. For example, a CPU board may have a Type 1 bottom PCIe connector and a Type 2 top PCIe connector. Such a CPU board would be compatible with Type 1 and/or Universal peripherals on the bottom, and compatible with Type 2 and/or Universal peripherals on the top. Similar to PC/104-Plus, a PCI/104-Express CPU boards will provide active communication on both PCI and PCIe buses. A PC/104-Express CPU board may be used with PCI-104 and PC/104-Plus peripheral modules. However, a PCI/104-Express peripheral module will communicate on the PCIe bus only; the PCI connector is simply a pass-through connector for stackability. A PC/104-Express peripheral module may not be used with a PCI-104 or PC/104-Plus CPU board (unless an ISA bridge device is used).
PCIe/104 is similar to the PCI/104-Express standard, but omits the legacy PCI bus to increase available space on the board (similar to the relationship between PC/104-Plus and PCI-104). The PCI Express connector location and pinout options the same as PCI/104-Express (both Type 1 and Type 2). Because the PCI bus connector is omitted, a PCIe/104 board is incompatible with PC/104-Plus and PCI-104 systems (unless a PCIe-to-PCI bridge device is used).
In general, every PC/104 stack will contain a CPU board, power supply board, and one or more peripheral boards. The maximum number of boards supported by a PC/104 stack will depend on the which buses are used by the peripheral boards. ISA Bus – There is no strict limit to the number of ISA boards which can coexist in one system. However, there is a limited number of Base Addresses, IRQs, and DMA channels which may become a limiting factor. ISA boards may be stacked on either side of the CPU board. PCI Bus – The PC/104-Plus and PCI-104 specifications allows for four PCI “slots”. This imposes a hard limit of four PCI peripheral boards per system. All PCI peripheral modules must connect consecutively on one side of the controller due to the signaling requirements of the PCI bus. PCI Express – The total number of PCI Express peripheral boards will depend on the number of PCIe links provided by the CPU board. For example, if the CPU board provides four x1 PCIe links, then a maximum of four x1 PCIe peripheral cards may be installed. If one or more of the peripheral boards provide PCIe link repopulation, additional modules may be installed. PCIe links on the upper side of the CPU board are independent from the links on the underside. Installing a PCIe peripheral under the CPU board will not consume one of the top side links. The quantity and width of PCIe links available may vary between the top and bottom connectors of the CPU board. USB and SATA – The PCI/104-Express and PCIe/104 Specification provides signals for USB and SATA, which may be used by peripheral boards in the stack. Peripheral which use USB and SATA will be limited to the number of links provided by the CPU board. USB peripherals may provide link repopulation by incorporating an onboard USB hub. Regardless of the buses used, the maximum number of boards of a PC/104 stack may be limited due to size, weight, and power restrictions for the target application.