PC/104 (or PC104) is an embedded computer standard controlled by the PC/104 Consortium which defines both a form factor and computer bus. PC/104 is intended for specialized computing environments where applications depend on reliable data acquisition despite an often extreme environment. The form factor is often sold by COTS vendors, which benefits many consumers who want a customized rugged system without committing months of design and paperwork.
The PC/104 bus and form factor was originally devised by Ampro in 1987 (led by CTO Rick Lehrbaum), 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.
Unlike other popular form factors such as ATX, which rely on a motherboard or backplane, the PC/104 form factor instead allows modules to be stacked together like building blocks. The stacking of buses is more rugged than typical bus connections in PCs and is achieved through the use of mounting holes positioned in the corner of each module, which allow the boards to be fastened to each other using standoffs.
The standard size of boards complying to the PC/104 form factor is 3.550 × 3.775 inches (90 × 96 mm), while the height is typically constrained to the boundaries of the connectors. A constrained height region is intended to guarantee that modules will not interfere with other neighbors stacked above or below. Vendors often follow these design restrictions to ensure proper stacking of modules, although it is not uncommon to find boards which ignore the form factor requirements. The traditional spacing between stacked PC/104 boards is 0.600 inches (15.24 mm). However, later revisions of the PCI/104-Express and PCIe/104 specifications introduced an optional taller 0.866 inch (22.00 mm) connector that is compatible with the traditional height connector. The taller connector is intended to allow for taller heatsinks and additional airflow required by higher-power processors and components.
A typical PC/104 system (commonly referred to as a "stack") will includes a CPU board, power supply board, and one or more peripheral boards, such as a data acquisition module, GPS receiver, or Wireless LAN controller. A wide array of peripheral boards are available from various vendors. Users may design a stack that incorporates boards from vendors.
The PC/104 computer bus (first released in 1992) uses 104 pins. These pins include all the normal lines used in 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 pinouts for the PC/104 connector can be obtained here. 
The PC/104-Plus form factor 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 PCI-104 connector (PCI).
The PCI-104 form factor includes the PCI connector, but not the ISA connector, in order to increase the available board real estate. The PCI-104 standard is incompatible with PC/104 boards. The PCI-104 connector has more than 104 pins, but the established name was kept.
The pinouts for the PCI-104 connector are as follows: 
The PCI/104-Express standard incorporates the PCI Express bus in addition to the previous-generation PCI bus. The standard defines a 156-pin surface mount connector for the PCI Express signals. The new PCIe connector occupies the same location as the legacy PC/104 ISA connector. The standard defines both a Type 1 and a Type 2 pinout for the connector. Type 1 includes a x16 PCI Express link, as well as four x1 PCI Express links and two USB 2.0 ports. Type 2 replaces the PCIe x16 link with two PCIe x4 links, two USB 3.0 ports, two SATA ports, and LPC. Boards may be built as Type 1, Type 2, or universal (only using the common subset of signals).
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 is the same as PCI/104-Express.
EBX (Embedded Board eXpandable) is a single board computer form factor, 5.75 × 8 in (146 × 203 mm). The EBX is based on the IEEE-P996 (ISA), PC/104, PC/104-Plus, PCI and PCMCIA. EBX supports PC/104 daughter boards.
EPIC (Embedded Platform for Industrial Computing) is a single board computer form factor which, like EBX, supports PC/104 daughter boards but is smaller than EBX at 6.5 × 4.5 in (165 × 114 mm). It allows I/O connections to be implemented as either pin headers or PC-style ("real world") connectors. The standard provides specific I/O zones to implement functions such as Ethernet, serial ports, digital and analog I/O, video, wireless, and various application-specific interfaces.
EPIC Express is based on EPIC, but adds the PCI Express.
A system composed of PC/104, PC/104-Plus, or PCI-104 modules is often referred to as a "stack". Although many stacks include modules which are all the same form factor, it is not uncommon to find PC/104 modules in a stack with PC/104-Plus modules.
Each stack must contain at least one motherboard or CPU, which acts as a controller for the peripheral components. The motherboard is often referred to as a single-board computer (SBC), for it often has interfaces for all standard PC components (i.e. keyboard, mouse, serial ports, etc.). This controller must support the signaling buses used on all add-in modules. It's possible, however, that a peripheral card may perform a stand alone function without requiring a separate motherboard to control it.
There is no strict limit to the number of PC/104 cards which can coexist in one system. However, as more modules are added, the stack height increases, and signaling requirements may not be maintained. A PC/104 stack will usually have a motherboard controller which is also PC/104. Peripheral PC/104 cards can reside on either side of the CPU.
A stack which has any PC/104-Plus modules must be controlled by a PC/104-Plus motherboard controller. Not counting the PC/104-Plus controller, the number of PC/104-Plus peripheral cards in a stack may not exceed four module slices. This is due to the PCI specification, which allows four PCI components in a system. (More PCI devices may be added if a bridge device is used.) The same rule applies to PCI-104 stacks.
When the PCI bus connector is used (PC/104-Plus or PCI-104 modules), all peripheral PC/104-Plus modules must connect consecutively on one side of the controller due to the signaling requirements of the PCI bus. Each card with a PCI bus should include a mechanism to assign its position in reference to the controller. Note that this is not required for traditional backplane motherboards, because a card "knows" which slot it is in. A PC/104-Plus or PCI-104 system may also have PC/104 cards, which may be positioned on either side of the CPU farthest away from the PC/104-Plus card(s) (so the PCI bus is not broken).
These small and rugged PC/104 systems often require small non volatile storage devices. Popular storage devices include Compact Flash as well as solid state disk (SSD) devices. These are often more popular than mechanical (rotating) hard drives, which are larger, and are more susceptible to failure in harsh environments. Flash based storage has a more limited amount of writes compared to a mechanical hard drive, but consume less power.
|Form Factor||Release Year||Bus Communication||Current[update] Version|
|PC/104||1992||ISA (AT and XT)||2.6|
|PC/104-Plus||1997||ISA and PCI||2.3|
|PCI/104-Express||2008||PCI and PCIe||1.1|
|Wikimedia Commons has media related to PC/104.|
- "Why PC/104? The Need for an Embedded-PC Standard". Retrieved 2008-01-29.
- Himpe, Vincent (2006). Visual Basic for Electronics Engineering Applications (2nd ed.). India: Segment B.V. / Elektor Electronics. p. 407. ISBN 0-905705-68-8. Retrieved 2008-01-29.
- "PC/104 Embedded Consortium's History". Retrieved 2008-01-29.
- Angel, Jonathan (2010-02-01). "Open standard defines tiny expansion modules". LinuxDevices.com. Retrieved 2014-03-18.
- "PC/104 Consortium - History". Retrieved 2014-08-14.
- "PC/104 Embedded Consortium Approves PCI/104-Express Specification". Retrieved 2014-08-14.
- "PC/104 Bus Pinout". Retrieved 2008-10-14.
- "PCI/104 Bus Pinout". Retrieved 2008-10-14.
- "What is PCIe/104?". Retrieved 2014-08-08.