This article's lead section may be too long for the length of the article. (September 2020)
In computing, an expansion card, also known as an expansion board, adapter card or accessory card, is a printed circuit board that can be inserted into an electrical connector, or expansion slot, on a computer motherboard, backplane or riser card to add functionality to a computer system via the expansion bus.
An expansion bus is a computer bus which moves information between the internal hardware of a computer system (including the CPU and RAM) and peripheral devices. It is a collection of wires, connectors, form factors and protocols that allows for the expansion of a computer. In the simplest example, an expansion bus can be as simple as a ribbon cable that hangs out of the system unit which imposes no form factor constraints on the circuitry added, other than a maximum wire length for a given frequency of intended operation.
Note that the function of a wire is either power delivery or signalling, both of which can become exceedingly complex in the frequency domain. Below around 8 MHz wires can often be treated as DC elements, above 30 MHz wires on this length scale must be treated as transmission lines; in between a designer might get away with treating wires as DC elements if the ground plane is handled carefully and the wires are short. Hobby electronics rarely exceeds a 10 MHz signalling rate on parallel interconnects.
Once the signalling frequency passes into the transmission line regime, form factor constraints become arduous and expansion cards will typically feature standardized connectors with tight manufacturing tolerances, and the expansion card itself will likely interface to the bus through a dedicated interface chip designed to respect the narrow bus tolerances for timing and signal integrity. It will no longer be possible to prototype with breadboards or wire-wrapping, and the design must go straight to PCB, which are costly to fabricate in small volumes. In this regime, the expansion bus and the expansion card become largely synonymous.
Additionally, with high-speed electronics the electrical enclosure becomes important to shield the expansion card from electromagnetic interference and to comply with regulations on radiated emissions. Electrical enclosures, such as computer cases, are typically designed to accept expansion cards of predetermined dimensions, with standardized interconnects. Usually the chassis will provide an edge connector socket, and the expansion card PCB with expose a row of conductive fingers (typically double-sided) that seats securely into the connector. Most enclosures specify power consumption and cooling limits on the expansion card design. In modern computers, expansion cards are complex system elements constrained by a wide variety of complex design factors.
For compatibility reasons, expansion cards will often have a keying system which prevents cards from being inserted into inappropriate sockets (such as the wrong voltage of operation, which could damage one or both sides). For this reason, it often takes close inspection of a socket to determine what form factors are compatible. In some cases, a socket can accept a card with less than the exposed connection points, usually to operate at lower performance than the socket otherwise supports; it's not uncommon in this scenario that the socket is divided into a pair of two (rarely more than two) colinear sockets, where a short card will connect with the first socket only, but a long card will connect with both.
In personal computing, notable expansion buses and expansion card standards include the S-100 bus from 1974 associated with the CP/M operating system, the 50-pin expansion slots of the original Apple II computer from 1977 (unique to Apple), IBM's Industry Standard Architecture (ISA) introduced with the IBM PC in 1981, Acorn's tube expansion bus on the BBC Micro also from 1981, IBM's patented and proprietary Micro Channel architecture (MCA) from 1987 that never won favour in the clone market, the vastly improved Peripheral Component Interconnect (PCI) that displaced ISA in 1992, and PCI Express from 2003 which abstracts the interconnect into high-speed communication "lanes" and relegates all other functions into software protocol.
From the perspective of electrical design, in the early years of the microprocessor revolution, chip packaging costs were high. The Motorola 68000 from 1979 innovated a 64-pin DIP in plastic when 40-pin DIPs were still the norm, which became nicknamed the "Texas cockroach" by those involved because every possible deformity and defect was observed in early efforts (at that time, a 64-pin DIP in a proven ceramic package might cost USD $25 for the package alone). Under these constraints, a direct and cost effective way to implement a performant expansion bus was to bridge the CPU's existing memory interface to handle peripheral devices. The S-100, Apple II, ISA, and Acorn Tube were all developed within this model. The would usually open the entire contents of system memory to any expansion card present. There was usually no security model or access constraints. This ethos continued into the design of interface standards such as IEEE 1394 (also known as FireWire) which remain subject to what is now known as a DMA attack.
Unless the expansion card was dedicated to output only, the card would need a mechanism to alert the main CPU of an asynchronous event to be processed. If the time constraints were mild, this might be implemented on the cheap by having the main CPU perform periodic polling (generally considered inefficient), but otherwise the expansion card would implement an interrupt line dedicated to signalling an asynchronous event. However, it was common bus design practice to share a small number of distinct interrupt lines over a larger number of expansion slots (in particular the ISA bus) and this created many resource conflicts. Sometimes this could be resolved by manually tying the expansion card to a desired IRQ line. This could be accomplished with jumper blocks, DIP switches, or in later generations, by electrically programming an on-board configuration EEPROM.
Because expansion cards are typically mapped onto the main system bus, cards are commonly memory mapped. It is possible to design expansion slots so that each slot has a dedicated block of memory addresses for communication with the main processor. But for cost reasons, expansion buses were usually designed so that every slot was identical, and it was left to the user to select/configure devices which presently themselves in unique address blocks. This proved especially prone to conflict when a user wished to expand a system with multiple instances of the same expansion card, such as a large number of serial ports to implement a bulletin board system.
In the home setting, unsophisticated users invariably demanded auto-detection of newly inserted hardware cards, lacking the technical knowledge to take detailed configuration into their own hands. Many operating systems conduct a series of probes during the boot process to detect known devices by some observable electronic signature (e.g. responding to an I/O address where such a device is traditionally addressed). Microsoft's plug and play standard from 1995 was an extreme example of this practice (widely derided as "plug and pray" during its long teething stage where it seemed to actively interfere with manual efforts to correct its many mistakes).
From the earliest era, expansion cards often contained an option ROM where the expansion card would supply its own initialization firmware and sometimes its own device driver as well. This tended to simplify device enumeration. Especially disk controller expansion cards tended to implement complex options ROMs, because until the disk controller functioned, the host computer would not be able to connect to disk storage to complete its own boot function. If for some reason the option ROM proved incompatible with the BIOS of the host system, such a problem was generally impossible to resolve without a firmware upgrade on one side or the other; a failed firmware upgrade could turn the target device into a brick in short order, so firmware upgrades were generally regarded as a last resort.
Even vacuum-tube based computers had modular construction, but individual functions for peripheral devices filled a cabinet, not just a printed circuit board. Processor, memory and I/O cards became feasible with the development of integrated circuits. Expansion cards allowed a processor system to be adapted to the needs of the user, allowing variations in the type of devices connected, additions to memory, or optional features to the central processor (such as a floating point unit). Minicomputers, starting with the PDP-8, were made of multiple cards, all powered by and communicating through a passive backplane.
The first commercial microcomputer to feature expansion slots was the Micral N, in 1973. The first company to establish a de facto standard was Altair with the Altair 8800, developed 1974–1975, which later became a multi-manufacturer standard, the S-100 bus. Many of these computers were also passive backplane designs, where all elements of the computer, (processor, memory, and I/O) plugged into a card cage which passively distributed signals and power between the cards.
IBM PC and descendants
IBM introduced what would retroactively be called the Industry Standard Architecture (ISA) bus with the IBM PC in 1981. At that time, the technology was called the PC bus. The IBM XT, introduced in 1983, used the same bus (with slight exception). The 8-bit PC and XT bus was extended with the introduction of the IBM AT in 1984. This used a second connector for extending the address and data bus over the XT, but was backward compatible; 8-bit cards were still usable in the AT 16-bit slots. Industry Standard Architecture (ISA) became the designation for the IBM AT bus after other types were developed. Users of the ISA bus had to have in-depth knowledge of the hardware they were adding to properly connect the devices, since memory addresses, I/O port addresses, and DMA channels had to be configured by switches or jumpers on the card to match the settings in driver software.
IBM's MCA bus, developed for the PS/2 in 1987, was a competitor to ISA, also their design, but fell out of favor due to the ISA's industry-wide acceptance and IBM's licensing of MCA. EISA, the 32-bit extended version of ISA championed by Compaq, was used on some PC motherboards until 1997, when Microsoft declared it a "legacy" subsystem in the PC 97 industry white-paper. Proprietary local buses (q.v. Compaq) and then the VESA Local Bus Standard, were late 1980s expansion buses that were tied but not exclusive to the 80386 and 80486 CPU bus. The PC/104 bus is an embedded bus that copies the ISA bus.
Intel launched their PCI bus chipsets along with the P5-based Pentium CPUs in 1993. The PCI bus was introduced in 1991 as a replacement for ISA. The standard (now at version 3.0) is found on PC motherboards to this day. The PCI standard supports bus bridging: as many as ten daisy chained PCI buses have been tested. Cardbus, using the PCMCIA connector, is a PCI format that attaches peripherals to the Host PCI Bus via PCI to PCI Bridge. Cardbus is being supplanted by ExpressCard format.
Intel introduced the AGP bus in 1997 as a dedicated video acceleration solution. AGP devices are logically attached to the PCI bus over a PCI-to-PCI bridge. Though termed a bus, AGP usually supports only a single card at a time (Legacy BIOS support issues). From 2005 PCI-Express has been replacing both PCI and AGP. This standard, approved[Like whom?] in 2004, implements the logical PCI protocol over a serial communication interface. PC/104(-Plus) or Mini PCI are often added for expansion on small form factor boards such as Mini-ITX.
For their 1000 EX and 1000 HX models, Tandy Computer designed the PLUS expansion interface, an adaptation of the XT-bus supporting cards of a smaller form factor. Because it is electrically compatible with the XT bus (a.k.a. 8-bit ISA or XT-ISA), a passive adapter can be made to connect XT cards to a PLUS expansion connector. Another feature of PLUS cards is that they are stackable. Another bus that offered stackable expansion modules was the "sidecar" bus used by the IBM PCjr. This may have been electrically comparable to the XT bus; it most certainly had some similarities since both essentially exposed the 8088 CPU's address and data buses, with some buffering and latching, the addition of interrupts and DMA provided by Intel add-on chips, and a few system fault detection lines (Power Good, Memory Check, I/O Channel Check). Again, PCjr sidecars are not technically expansion cards, but expansion modules, with the only difference being that the sidecar is an expansion card enclosed in a plastic box (with holes exposing the connectors).
Most other computer lines, including those from Apple Inc. (Apple II, Macintosh), Tandy, Commodore, Amiga, and Atari, offered their own expansion buses. The Amiga used Zorro II. Apple used a proprietary system with seven 50-pin-slots for Apple II peripheral cards, then later used the NuBus for its Macintosh series until 1995, when they switched to a PCI Bus. Generally, PCI expansion cards will function on any CPU platform if there is a software driver for that type. PCI video cards and other cards that contain a BIOS are problematic, although video cards conforming to VESA Standards may be used for secondary monitors. DEC Alpha, IBM PowerPC, and NEC MIPS workstations used PCI bus connectors. Both Zorro II and NuBus were plug and play, requiring no hardware configuration by the user.
Even many video game consoles, such as the Sega Genesis, included expansion buses; at least in the case of the Genesis, the expansion bus was proprietary, and in fact the cartridge slots of many cartridge based consoles (not including the Atari 2600) would qualify as expansion buses, as they exposed both read and write capabilities of the system's internal bus. However, the expansion modules attached to these interfaces, though functionally the same as expansion cards, are not technically expansion cards, due to their physical form.
External expansion buses
Laptops generally are unable to accept most expansion cards. Several compact expansion standards were developed. The original PC Card expansion card standard is essentially a compact version of the ISA bus. The CardBus expansion card standard is an evolution of the PC card standard to make it into a compact version of the PCI bus. The original ExpressCard standard acts like it is either a USB 2.0 peripheral or a PCI Express 1.x x1 device. ExpressCard 2.0 adds SuperSpeed USB as another type of interface the card can use. Unfortunately, CardBus and ExpressCard are vulnerable to DMA attack unless the laptop has an IOMMU that is configured to thwart these attacks.
The primary purpose of an expansion card is to provide or expand on features not offered by the motherboard. For example, the original IBM PC did not have on-board graphics or hard drive capability. In that case, a graphics card and an ST-506 hard disk controller card provided graphics capability and hard drive interface respectively. Some single-board computers made no provision for expansion cards, and may only have provided IC sockets on the board for limited changes or customization. Since reliable multi-pin connectors are relatively costly, some mass-market systems such as home computers had no expansion slots and instead used a card-edge connector at the edge of the main board, putting the costly matching socket into the cost of the peripheral device.
In the case of expansion of on-board capability, a motherboard may provide a single serial RS232 port or Ethernet port. An expansion card can be installed to offer multiple RS232 ports or multiple and higher bandwidth Ethernet ports. In this case, the motherboard provides basic functionality but the expansion card offers additional or enhanced ports.
One edge of the expansion card holds the contacts (the edge connector or pin header) that fit into the slot. They establish the electrical contact between the electronics on the card and on the motherboard. Peripheral expansion cards generally have connectors for external cables. In the PC-compatible personal computer, these connectors were located in the support bracket at the back of the cabinet. Industrial backplane systems had connectors mounted on the top edge of the card, opposite to the backplane pins.
Depending on the form factor of the motherboard and case, around one to seven expansion cards can be added to a computer system. 19 or more expansion cards can be installed in backplane systems. When many expansion cards are added to a system, total power consumption and heat dissipation become limiting factors. Some expansion cards take up more than one slot space. For example, many graphics cards on the market as of 2010 are dual slot graphics cards, using the second slot as a place to put an active heat sink with a fan.
Some cards are "low-profile" cards, meaning that they are shorter than standard cards and will fit in a lower height computer chassis. (There is a "low profile PCI card" standard that specifies a much smaller bracket and board area). The group of expansion cards that are used for external connectivity, such as network, SAN or modem cards, are commonly referred to as input/output cards (or I/O cards).
A daughterboard, daughtercard, mezzanine board or piggyback board is an expansion card that attaches to a system directly. Daughterboards often have plugs, sockets, pins or other attachments for other boards. Daughterboards often have only internal connections within a computer or other electronic devices, and usually access the motherboard directly rather than through a computer bus.
Daughterboards are sometimes used in computers in order to allow for expansion cards to fit parallel to the motherboard, usually to maintain a small form factor. This form are also called riser cards, or risers. Daughterboards are also sometimes used to expand the basic functionality of an electronic device, such as when a certain model has features added to it and is released as a new or separate model. Rather than redesigning the first model completely, a daughterboard may be added to a special connector on the main board. These usually fit on top of and parallel to the board, separated by spacers or standoffs, and are sometimes called mezzanine cards due to being stacked like the mezzanine of a theatre. Wavetable cards (sample-based synthesis cards) are often mounted on sound cards in this manner.
Some mezzanine card interface standards include the 400 pin FPGA Mezzanine Card (FMC); the 172 pin High Speed Mezzanine Card (HSMC); the PCI Mezzanine Card (PMC); XMC mezzanines; the Advanced Mezzanine Card; IndustryPacks (VITA 4), the GreenSpring Computers Mezzanine modules; etc.
Examples of daughterboard-style expansion cards include:
- Enhanced Graphics Adapter piggyback board, adds memory beyond 64 KB, up to 256 KB
- Expanded memory piggyback board, adds additional memory to some EMS and EEMS boards
- ADD daughterboard
- RAID daughterboard
- Network interface controller (NIC) daughterboard
- CPU Socket daughterboard
- Bluetooth daughterboard
- Modem daughterboard
- AD/DA/DIO daughter-card
- Communication daughterboard (CDC)
- Server Management daughterboard (SMDC)
- Serial ATA connector daughterboard
- Robotic daughterboard
- Access control List daughterboard
- Arduino "shield" daughterboards
- Beaglebone "cape" daughterboard
- Raspberry Pi "HAT add-on board"
- Network Daughterboard (NDB). Commonly integrates: bus interfaces logic, LLC, PHY and Magnetics onto a single board.
- PCI Extended (PCI-X)
- PCI Express (PCIe)
- Mini PCIe
- Accelerated Graphics Port (AGP)
- Conventional PCI (PCI)
- Industry Standard Architecture (ISA)
- Micro Channel architecture (MCA)
- VESA Local Bus (VLB)
- CardBus/PC card/PCMCIA (for notebook computers)
- ExpressCard (for notebook computers)
- Audio/modem riser (AMR)
- Communications and networking riser (CNR)
- CompactFlash (for handheld computers and high speed cameras and camcorders)
- SBus (1990s SPARC-based Sun computers)
- Zorro (Commodore Amiga)
- NuBus (Apple Macintosh)
- Compatibility card
- Host adapter
- M-Module, an industrial mezzanine standard for modular I/O
- Network card
- Physics card
- POST card
- Riser card
- Sound card
- TV tuner card
- Video card
- "What is expansion bus". Webopedia.
- "Motorola 68000 oral history panel : development and promotion". computerhistory.org. Computer History Museum. 23 July 2007. Retrieved 18 September 2020.
- "MB-54VP". ArtOfHacking.com. Retrieved 2012-11-17.
- "NX586". ArtOfHacking.com. Retrieved 2012-11-17.
- "LEOPARD 486SLC2 REV. B". ArtOfHacking.com. Retrieved 2012-11-17.
- "Motherboards". Artofhacking.com. Retrieved 2012-11-17.
- "PCI Mechanical Working Group ECN: Low Profile PCI Card" (PDF). Pcisig.com. Retrieved 2012-11-17.
- IEEE Std. 100 Authoritative Dictionary of IEEE Standards Terms, Seventh Edition, IEEE, 2000,ISBN 0-7381-2601-2, page 284
- Jens Kröger. "Data Transmission at High Rates via Kapton Flexprints for the Mu3e Experiment". 2014. p. 43 to 44.
- Altera. "High Speed Mezzanine Card (HSMC) Specification". p. 2-3.
- Market Looks to EGA as De Facto Standard, InfoWorld, Aug 19, 1985
- Product Comparison: 16-Bit EMS Memory, InfoWorld, Sep 7, 1987
- "Add-on boards and HATs". GitHub. Raspberry Pi Foundation. Retrieved 19 June 2020.