Skip to main content

Pinout

All Alp Lab modules conform to the E1M open standard, which fixes the pad-to-signal assignments at the default-function level plus GPIO as a universal secondary on every digital pad.

Form factorOutlinePad countLGA pitch
E1M35 × 35 mm3120.8 mm
E1M-X45 × 65 mm4960.8 mm

Machine-readable pinout

The canonical pinout is published as JSON in alplabai/e1m-spec:

FileDescription
pinout/v1.jsonE1M (35 × 35 mm) pinout, every pad's coordinate + signals
pinout/x-v1.jsonE1M-X (45 × 65 mm) pinout
pinout/schema/loom-v1.schema.jsonJSON Schema validating both pinouts

Consume the JSON directly in EDA tools, schematic generators, or the ALP SDK's orchestrator at scripts/alp_orchestrate.py. The schema is named Loom v1.

Signal groups

The E1M interface carries the following classes (every pad declares a default function plus the alt-functions it can carry):

Power

  • VBAT / VIN — main system input
  • V3V3 / V1V8 — internal voltage rails (output by the SoM)
  • VBAT_BACKUP — RTC / backup-domain rail
  • GND — ground reference (many pads)

Communication

  • SPI — multiple controllers (SPI0..SPI3)
  • I²C / I³C — multiple buses (I2C0..I2C3); some pads support I³C
  • UART — multiple channels (UART0..UART5)
  • CAN / CAN-FDCAN0
  • USB — USB 2.0 (E1M) and USB 3.0 (E1M-X)
  • SDIOSDIO0, SDIO1

High-speed (E1M-X only)

  • Ethernet — dual RGMII MACs + MDIO (V2N module exposes both via RTL8211FDI PHYs)
  • PCIePCIE0, PCIE1
  • MIPI CSI-2 — multiple lanes for camera input
  • MIPI DSI — display output
  • Parallel LCDLCD0

Audio

  • I²S / SAII2S0, I2S1
  • PDMPDM0 (digital microphone input)

Analog

  • ADCADC0..ADC2
  • DACDAC0, DAC1
  • Quadrature encoderENC0..ENC3

Control / system

  • PWMPWM0..PWM7
  • GPIO — universal secondary on every digital pad
  • SWD / JTAG — debug interface
  • RESET#, BOOT#, MODULE_EN, WDT_INT — system control signals
  • BOARD_ID ADC — hw_rev detect (see <alp/hw_info.h>)

Default-function vs alt-function

Each pad has exactly one default function that every conformant SoM shall carry on that pad. The default is what a generic carrier should wire if it wants vendor-portable behaviour.

Beyond default + GPIO, pads may carry alt-functions chosen by the SoM vendor. These are declared in the per-SoM manifest (metadata/e1m_modules/<MPN>.yaml in the ALP SDK). Alt-functions are not part of E1M conformance — relying on them locks you to a specific SoM family.

Naming convention

Pad identifiers follow the BGA-style column-letter / row-number convention in the coordinate space of the form factor:

  • A1, B2, … on E1M (35 × 35)
  • A1, …, AQ15 on E1M-X (45 × 65)

Signal names match the silkscreen field of the corresponding pad in the JSON pinout.

ALP SDK access

In firmware, address peripheral instances through the portable IDs in <alp/e1m_pinout.h>:

alp_i2c_t *bus = alp_i2c_open(&(alp_i2c_config_t){
.bus_id = E1M_I2C0,
.bitrate_hz = 400000u,
});

E1M_<CLASS>_COUNT macros document the cross-SoM-portable instance count per class — apps that respect these bounds work across every conformant SoM. See the <alp/peripheral.h> reference.

Carrier-board design

For routing rules, decoupling, and footprint guidance, see the Design Guide.

Questions about this page? Discuss in Community Forum