This article is about the embedded computer standard. For the keyboard layout that Linux/Unix documentation referred to as pc104, see IBM PC keyboard.
Computer form factors Name PCB size (mm) WTX 356 × 425 AT 350 × 305 Baby-AT 330 × 216 BTX 325 × 266 ATX 305 × 244 EATX (Extended) 305 × 330 LPX 330 × 229 microBTX 264 × 267 NLX 254 × 228 Ultra ATX 244 × 367 microATX 244 × 244 DTX 244 × 203 FlexATX 229 × 191 Mini-DTX 203 × 170 EBX 203 × 146 microATX (min.) 171 × 171 Mini-ITX 170 × 170 EPIC (Express) 165 × 115 ESM 149 × 71 Nano-ITX 120 × 120 COM Express 125 × 95 ESMexpress 125 × 95 ETX/XTX 114 × 95 Pico-ITX 100 × 72 PC/104 (-Plus) 96 × 90 ESMini 95 × 55 Qseven 70 × 70 mobile-ITX 60 × 60 CoreExpress 58 × 65
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 embedded 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 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.
Unlike the popular ATX form factor which utilizes the PCI bus and is currently used for most PCs, the PC/104 form factor has no backplane, and instead allows modules to stack together like building blocks. The stacking of buses is more rugged than typical bus connections in PCs. This is a result of mounting-holes in the corner of each module, which allow the boards to be fastened to each other with standoffs.
The standard size of boards complying to the form factor is 3.55 × 3.775 inches (90.17 × 95.89 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 their neighbors. 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.
While a typical system (also referred to as a stack) includes a motherboard, analog-to-digital converter, and digital I/O (data acquisition) module, other peripherals are finding their way into the market including GPS receivers, IEEE 802.11 controllers, and USB controllers.
The PC/104 computer bus (first released in 1992) utilizes 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 pinouts for the PCI-104 connector are as follows: 
Pin A B C D 1 GND Reserved 5V AD00 2 VI/O AD02 AD01 5V 3 AD05 GND AD04 AD03 4 C/BE0# AD07 GND AD06 5 GND AD09 AD08 GND 6 AD11 VI/O AD10 M66EN 7 AD14 AD13 GND AD12 8 3.3V C/BE1# AD15 3.3V 9 SERR# GND Reserved PAR 10 GND PERR# 3.3V Reserved 11 STOP# 3.3V LOCK# GND 12 3.3V TRDY# GND DEVSEL# 13 FRAME# GND IRDY# 3.3V 14 GND AD16 3.3V C/BE2# 15 AD18 3.3V AD17 GND 16 AD21 AD20 GND AD19 17 3.3V AD23 AD22 3.3V 18 IDSEL0 GND IDSEL1 IDSEL2 19 AD24 C/BE3# VI/O IDSEL3 20 GND AD26 AD25 GND 21 AD29 5V AD28 AD27 22 5V AD30 GND AD31 23 REQ0# GND REQ1# VI/O 24 GND REQ2# 5V GNT0# 25 GNT1# VI/O GNT2# GND 26 5V CLK0 GND CLK1 27 CLK2 5V CLK3 GND 28 GND INTD# 5V RST# 29 12V INTA# INTB# INTC# 30 -12V REQ3# GNT3# GND
The PCI/104-Express form factor includes the x16 PCI Express (PCIe) bus, and the PCI connector. The 156-pin PCI/104-Express interface can be used with PC/104, EPIC, and EBX form factors.
EBX (Embedded Board eXpandable) is a single board computer form factor, 5.75” x 8.00”. 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. 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 2003 PCI 1.1 PCI/104-Express 2008 PCI and PCIe 1.1 PCIe/104 2008 PCIe 1.1
- ^ "Why PC/104? The Need for an Embedded-PC Standard". http://www.pc104.org/technology/index.html. Retrieved 2008-01-29.
- ^ Himpe, Vincent (2006). Visual Basic for Electronics Engineering Applications (2nd ed.). India: Segment B.V. / Elektor Electronics. p. 407. ISBN 0905705688. http://books.google.com/books?id=tXlPznNdb4cC&pg=PT402&dq=pc-104+ampro+1987&sig=84YLbxps36DRu2E0SKT0_HS5-SQ. Retrieved 2008-01-29.
- ^ "PC/104 Embedded Consortium's History". http://www.pc104.org/history.html. Retrieved 2008-01-29.
- ^ Angel, Jonathan (2010-02-01). "Open standard defines tiny expansion modules". eWeek Linux for Devices. http://www.linuxfordevices.com/c/a/News/Diamond-Systems-mezzaninestyle-expansion-standard/?kc=rss. Retrieved 2010-02-08.
- ^ "PC/104 Bus Pinout". http://www.interfacebus.com/Design_PC104_Pinout.html. Retrieved 2008-10-14.
- ^ "PCI/104 Bus Pinout". http://www.interfacebus.com/Design_PCI104_Pinout.html. Retrieved 2008-10-14.
- Motherboard form factors
- Computer buses
- Embedded systems
Wikimedia Foundation. 2010.