Embedded Open Modular Architecture/PCMCIA

= PCMCIA form-factor Open Modular Architecture =

This page describes the specification for re-purposing of the PCMCIA interface and form-factor as a portable Embedded Computing Module. Mass-volume "Lowest Common Denominator" interfaces have been chosen, all of which have existed for over a decade, but are low-power enough to be standard across virtually all mass-produced powerful Embedded CPUs. These interfaces are:
 * 24-pin RGB/TTL (for LCD Panels)
 * I2C
 * USB2
 * 10/100 Ethernet
 * SATA-II.
 * 16 pins of General-purpose I/O (GPIO).

The interfaces have been specifically chosen because they are either essential or they are multi-purpose buses, and surprisingly they are perfectly adequate despite being Lowest Common Denominator across a wide range of CPUs for at least a decade. The only interface which is not particularly common on mass-produced powerful Embedded CPUs is SATA-II: this can be constructed from a USB-to-SATA converter IC such as the Genesys Logic GL831A.

The reason for choosing I2C and USB2 is because they are both only two wires, are global buses that can address multiple devices, and they have been long-established proven Industry Standards in their fields. 10/100 Ethernet was chosen over Gigabit Ethernet because 10/100 Ethernet is more prevalent in the Embedded world, using less power. The extra 4 wires required for Gigabit Ethernet cannot be justified on a limited pin-count connector (especially when those 4 pins could be allocated as GPIO instead), especially when those 4 wires would be unused by CPU cards that do not support Gigabit Ethernet.

24-pin RGB/TTL was chosen over LVDS or MIPI so as to keep the cost down, and also to keep the signal speed down. Whilst LVDS seems initially to be a good candidate, Single-Channel LVDS is unsuitable for driving 1920x1080p60 LCD Panels: most 1920x1080 LCD panels require between 2 and 3 LVDS drivers. MIPI also requires multiple parallel channels to achieve higher data rates. So it makes sense to choose the proven, lower-speed, reliable 24-pin interface, thus making the EOMA/PCMCIA Standard suitable for use even with ultra-low-cost 320x240 RGB/TTL LCD Panels, right the way up to HDTV screen sizes.

= Pinouts (Version 1.0) =

These pinouts make no attempt to be electrically or electronically compatible with the legacy PCMCIA standard. 16 GPIO pins, 24-pin RGB/TTL, USB2, I2C, 10/100 Ethernet and SATA-II interfaces are included in the Version 1.0 specification.

Two 5.0v power inputs must be provided: all pins are rated at 0.5 amps, so the maximum power dissipation is limited to 5 watts. This limit is deliberate, to ensure that thermal dissipation in an enclosed fanless situation is not exceeded.

All High-speed signals (USB2, Ethernet, SATA-II) are balanced lines that are still separated using GND pins. All other pins are low frequency, with the exception of the LCD Pixel Clock and Pixel Data pins, which could go as high as 125mhz for 1920x1080 @ 60fps (not recommended). The sixteen GPIO pins are available, for general-purpose bi-directional use of digital data only.

The output from the 24-pin LCD RGB/TTL pins must be electrically compatible with a Texas Instruments SN75LVDS83B, which has electrical characteristics of 3.3V TTL but requires 5V TTL tolerance. Typical TTL High-level Voltage is 2.0 volts; Threshold is 1.4v; Low-level TTL voltage is 0.8v.

Also, because the GPIO pins can be reconfigured individually bi-directional for any digital purposes, they *must* be made to be 5V TTL tolerant and tri-state isolated, and Motherboards also must be 5.0v TTL tolerant as well as tri-state isolated. Levels when any GPIO pin is used either as an input or as an output should again operate at nominal 3.3v TTL levels, thus expect "High" Voltage of 2.0 volts, threshold of 1.4v and "Low" voltage of 0.8v.


 * 1 LCD Pixel Clock
 * 35 LCD Pixel data enable (TFT) output
 * 2 LCD Horizontal Synchronization
 * 36 LCD Vertical Synchronization
 * 3 LCD Pixel Data bit 0 (Red0)
 * 37 LCD Pixel Data bit 1 (Red1)
 * 4 LCD Pixel Data bit 2 (Red2)
 * 38 LCD Pixel Data bit 3 (Red3)
 * 5 LCD Pixel Data bit 4 (Red4)
 * 39 LCD Pixel Data bit 5 (Red5)
 * 6 LCD Pixel Data bit 6 (Red6)
 * 40 LCD Pixel Data bit 7 (Red7)
 * 7 LCD Pixel Data bit 8 (Green0)
 * 41 LCD Pixel Data bit 9 (Green1)
 * 8 LCD Pixel Data bit 10 (Green2)
 * 42 LCD Pixel Data bit 11 (Green3)
 * 9 LCD Pixel Data bit 12 (Green4)
 * 43 LCD Pixel Data bit 13 (Green5)
 * 10 LCD Pixel Data bit 14 (Green6)
 * 44 LCD Pixel Data bit 15 (Green7)
 * 11 LCD Pixel Data bit 16 (Blue0)
 * 45 LCD Pixel Data bit 17 (Blue1)
 * 12 LCD Pixel Data bit 18 (Blue2)
 * 46 LCD Pixel Data bit 19 (Blue3)
 * 13 LCD Pixel Data bit 20 (Blue4)
 * 47 LCD Pixel Data bit 21 (Blue5)
 * 14 LCD Pixel Data bit 22 (Blue6)
 * 48 LCD Pixel Data bit 23 (Blue7)
 * 15 GROUND
 * 49 GROUND
 * 16 10/100 Ethernet (TX+)
 * 50 10/100 Ethernet (TX-)
 * 17 10/100 Ethernet (RX+)
 * 51 10/100 Ethernet (RX-)
 * 18 GROUND
 * 52 GROUND
 * 19 USB2 (Data+)
 * 53 USB2 (Data-)
 * 20 GROUND
 * 54 GROUND
 * 21 I2C Clock (SCL)
 * 55 I2C Data (SDA)
 * 22 PWR (5.0V)
 * 56 PWR (5.0v)
 * 23 GPIO (0)
 * 57 GPIO (1)
 * 24 GPIO (2)
 * 58 GPIO (3)
 * 25 GPIO (4)
 * 59 GPIO (5)
 * 26 GPIO (6)
 * 60 GPIO (7)
 * 27 GPIO (8)
 * 61 GPIO (9)
 * 28 GPIO (10)
 * 62 GPIO (11)
 * 29 GPIO (12)
 * 63 GPIO (13)
 * 30 GPIO (14)
 * 64 GPIO (15)
 * 31 GROUND
 * 65 GROUND
 * 32 SATA-II Transmit (A+)
 * 66 SATA-II Transmit (A-)
 * 33 GROUND
 * 67 GROUND
 * 34 SATA-II Receive (B+)
 * 68 SATA-II Receive (B-)

= Start-up procedure =

It is required that all pins be disabled (floating tri-state) with the exception of the I2C Bus, the 5.0v Power and Ground Pins 20 and 54. I2C Bus Master is then enabled, to search for an I2C EEPROM. This EEPROM contains Linux Kernel "Device Tree" data, which specifies the devices available on the motherboard, as well as the actual pin-outs. The exact format of the EEPROM data is yet to be decided.

One important aspect of reading the I2C EEPROM is that the CPU card can then correctly access and initialise on-board devices. It also defines the purpose and use of the GPIO pins (if any are required). Also, the format of the LCD data is specified. For example, the pinout diagram on this page assumes 24-pin RGB TTL, but some motherboards may have LCD panels which only have an 18-pin RGB/TTL interface. The data in the I2C EEPROM therefore provides clear specifications on all the motherboard's peripherals.

= Future Versions =

All LCD and GPIO pins must be tri-state floating in order that future versions of this standard can provide faster (or merely alternative) interfaces. At the time of writing (2011), the interfaces in the 1.0 Specification are "Lowest Common Denominator" yet are still present across the majority of 2011's powerful embedded SoCs (OMAP4440, Enyxos4210, AML-8726-M etc.) However, in the future, the "Lowest Common Denominator" could well comprise MIPI instead of RGB/TTL, SATA-III instead of SATA-II, 2 lane PCI-express (or its successor), USB-3 instead of USB-2 (perhaps even a faster version of ULPI) and Gigabit Ethernet instead of just 10/100.

As of 2011 however, the total number of Embedded CPUs supporting all these newer interfaces and still keeping to a 1.5 watt budget is precisely zero. Support for these high-speed interfaces will therefore be re-evaluated in 2 to 3 years time, and a future version of this standard created when a large proportion of available embedded CPUs have these or other high-speed interfaces that are available at the time.

= Deliberate Mechanical Non-interoperability =

The re-use of the PCMCIA standard pinouts with no electrical or electronic compatibility requires mechanical means to ensure that newer cards cannot be inserted into legacy sockets. The proposed solution is therefore to deploy a fascia plate on the PCMCIA card that is both larger in width than the standard 55mm as well as recessed by some 8mm, along the length of one of the 85mm edges. The exact dimensions are yet to be determined, as specific PCMCIA housings need to be examined to ensure that one side can take the recessed "edge stop". The following part, PCMCIA Ejector Assembly from Tyco Electronics, is ideally suited: slimline and nothing at the left side.

= Physical Dimensions =

The physical dimensions are a maximum of "Type II" (i.e. 5.5mm maximum height). The 8mm "Type III" is not permitted, but the 3.5mm "Type I" is. The end of the PCMCIA card must however have a fascia plate that extends the PCMCIA card by an extra 7mm (85+7mm) and is of dimensions 5.5mm x 57mm, with a deliberate 2mm overlap to the *LEFT* of the PCMCIA card, if viewing it inserted into a PCMCIA slot. To clarify: whilst the PCMCIA card itself must be of the standard dimensions (3.5mm or 5.5mm x 55mm x 85mm) the end portion must be 5.5mm x 57mm x 7mm.

The reason for the standardisation is because the PCMCIA CPU cards will fit into a wide range of devices: the fascia plate must therefore fit flush with all devices into which the CPU cards will be inserted. The reason for the overlap of 2mm is to prevent the PCMCIA CPU card from being inserted into standard legacy devices.

= Header Connectors =

Within the physical dimensions, there is absolutely no restriction on the number of connectors, interfaces, headers, expansion headers or antenna protruding from the end of the device. For example: a PCMCIA CPU card may typically have, for best useability, a Micro-HDMI, a USB-OTG, a 5-pin Audio Jack and a Micro-SD Card Slot. These four interfaces fit neatly within the 57mm x 5.5mm fascia plate size limit.

Also, on the actual PCMCIA CPU Card PCB itself, there is no restriction on the number of expansion headers (populated or unpopulated) - the only consideration being that the PCMCIA CPU card clearly cannot have expansion headers except for Engineers and Embedded Device Designers, and also have a metal shield installed around the PCMCIA CPU card at the same time. However, there is no reason why the expansion headers should be unpopulated, supplied without a metal shield to Embedded Engineers, yet the exact same device shipped in mass-volume with a metal shield installed, for the average user.

The only issue to note is that there is a maximum power budget of about 5 watts (two 5.0V 0.5A pins) but also that there is a practical maximum power dissipation of PCMCIA cards of about 4 watts. There is no provision in the standard for air-cooling (fans) in the cases: most devices will be a passive-cooled layout.

If however the PCMCIA card is designed to operate "stand-alone", for example by being provided with a Power Connector on its user-facing edge or by making use of USB-OTG, then of course the designers are free to disregard these constraints. If however the CPU card is also expected to operate inside a conformant device, then it must adjust accordingly and stick within the 4 watt heat dissipation budget.

= Example Motherboards =

Here is a list of example designs which conform the the EOMA/PCMCIA Standard:


 * Mini Engineering Board - suitable for Free Software Developers, ODM Development, SoC "Board Support Packages", Experimentation, Prototyping, Electrical Engineers, Training and R&D purposes.
 * Monster Engineering Board - suitable for ODM Development "Demonstration" Purposes: designed to be "cut down to size", requiring the minimum amount of CAD/CAM Development effort and maximising return on investment.
 * The Obligatory Tablet - a simple tablet motherboard which could potentially be developed as a very low cost single-sided 2-layer PCB. Components are chosen to reduce development cost and risk, as well as reduce manufacturing cost.
 * Laptop - a laptop motherboard which could potentially be developed as a very low cost single-sided 2-layer PCB, through the use of modular and optional components for WIFI and 3G.
 * Passthrough or "Blank" Card - a special type of card which simply passes through the connectors.

= Contact and Discussion =

For questions, comments and general discussion, please use arm-netbook mailing list