# PM_K-1 Core Board ("brain") — design-of-record VARASYS PolyMeter · heirloom pro-audio · modular brain/face architecture Status: **design-of-record / pre-layout.** Component selection complete; PCB routing is the remaining interactive step (see [Open items](#open-items)). --- ## 1. Philosophy This is meant to be a device people hand down to their great-grandkids. The core board carries **all the active electronics** and is specced to pro/audiophile tier with longevity and serviceability as first-class goals. We do **not** value-engineer the audio path. The user selects the face/enclosure/connector components; this document specs only the **core**. ## 2. Architecture — modular brain/face - **Core ("brain"):** RP2350 + power + RTC + the full pro-audio analog chain + control logic. One core design is reused across every form factor. - **Face ("form factor"):** display, touch, joystick, buttons, LED, speaker, the physical audio/MIDI connectors, panel switches, enclosure. **The core never decides connector type.** - **Two interconnects, deliberately separate** (§7): 1. a **digital ribbon** whose pinout mirrors the Raspberry Pi Pico, so a stock Pico/Pico 2 on a test adapter can drive any face board for bring-up; 2. an **analog interconnect** (+ a small MIDI interconnect) kept physically away from the fast digital ribbon, because a balanced audio signal must never run parallel to the 24 MHz display SPI. ## 3. Block diagram ``` USB-C 5V ─┬─► 3V3 LDO ──────────────────────► RP2350 (core reg + ext L) + W25Q128 16MB + RV-8803 RTC(+CR2032) │ │ I²S + low-jitter MCLK └─► TPS65131 ±18V ─► TPS7A49/30 LDO ─► clean ±15V ▼ PCM5102A DAC ──► [summing: click + input] │ bal IN ─[ESD/DC-block/clamp/series-R]─► [LINE/INST relay] ─┬─ THAT1240 receiver ──┘ (analog interconnect) └─ OPA1641 Hi-Z DI buffer (+gain) │ THAT1646 balanced driver ─[47Ω build-out]─► [MUTE relay]─► bal OUT shield ─[panel SW]─[GND-LIFT relay]─ gnd sig/clip peak detect ─► LM393 ─► RP2350 GPIO (UI) + LED lines (interconnect) RP2350 UART ─► [DNP: H11L1 opto IN + 74LVC14 buffer OUT] ─► MIDI interconnect (USB-MIDI = default) ``` ## 4. Functional blocks ### 4.1 MCU + digital - **RP2350A** (QFN-60, 30 GPIO). Chosen over RP2040 as the newest in-house part: dual M33+RISC-V, 520 KB RAM, secure boot, longest production runway. Firmware runs unchanged. - **Erratum E9:** high-impedance inputs can latch — every input we read (face switches, buttons) gets an **external pulldown**, never relies on the internal pad alone. - Core supply via the RP2350 on-chip switched-mode regulator (external inductor); 3V3 IO from an external LDO (AP2112K-3.3 / TLV75533). - **Flash:** Winbond **W25Q128JV** (16 MB) — genuine part; the CircuitPython appliance bundles the editor + tracks on a USB drive. Firmware does wear-leveling for `history.json`. - **Crystal:** 12 MHz ±30 ppm. - **Debug/service:** SWD 2×5 Cortex-Debug header + labeled test points (rails, I²S, audio nodes). ### 4.2 Click source (DAC) - **TI/Burr-Brown PCM5102A** I²S DAC — reliability-first, widely stocked for future repair. - Fed by a **dedicated low-jitter audio oscillator** (22.5792/24.576 MHz MEMS XO), **not** an MCLK jittered out of the RP2350 PIO — jitter is audible as a raised noise floor. ### 4.3 Analog audio chain (the heart) - **Input (balanced, switchable line/instrument):** - **Line mode:** THAT1240 laser-trimmed balanced receiver (~high CMRR, no hand-matched resistors). - **Instrument mode:** OPA1641 JFET Hi-Z buffer (≥1 MΩ) + ~+10–15 dB gain (active DI). - Selected by a **gold-contact signal relay** on the core (1 GPIO; touchscreen toggle, optional face panel switch on a separate GPIO input). - **Protection (non-negotiable):** series DC-blocking film cap (blocks +48 V phantom — the real input-killer), clamp diodes/TVS to the rails, series current-limit resistor. A wrong-mode plug then only *sounds* wrong; nothing is damaged. - **Mix:** digital/firmware (touchscreen). Analog stage at unity; click level set via the DAC. - **Output driver:** THAT1646 balanced line driver, **47 Ω build-out per leg** for cable-capacitance stability and short-circuit tolerance (§5.1). - **No electrolytics in the signal path** — film coupling caps (WIMA). 0.1 % thin-film resistors. ### 4.4 Output protection / conditioning - **Power-up/down mute relay** — fail-safe, **de-energized = muted** (shorts hot+cold to gnd). A hardware rail supervisor + RC turn-on delay un-mutes only after ±15 V settles; on power loss the coil drops and mutes *faster than the rails can thump*. **Not MCU-dependent.** The MCU can *also* assert mute (for clean line/inst flips and DAC reconfig). - **Ground-lift** — both a **face panel switch** and a **core GPIO relay**, wired in **series** in the shield-ground path: bonded only when both closed, either opening lifts it. **Soft lift = 100 Ω ∥ 10 nF** (not a hard open) so RF/safety keeps a path. ### 4.5 RTC - **Micro Crystal RV-8803** (integrated 32.768 kHz crystal → no second crystal near the RP2350's own) + **CR2032 in a socketed holder**. Shares the touch I²C bus (no extra GPIO). Drift is irrelevant for a practice-log timestamp; reliability and zero-fuss layout win. ### 4.6 MIDI (default USB, hardware optional) - **USB-MIDI is the default** and already in firmware — IN/OUT/THRU are software routing to a computer/tablet host. Zero extra parts. - **Dedicated DIN/TRS MIDI is a DNP populate-option:** the RP2350 UART lines route to the MIDI interconnect with **H11L1 opto IN + 74LVC14 buffered OUT/THRU footprints left unpopulated**. A "stage" face can populate them for laptop-free hardware sync. (USB-MIDI can't peer-to-peer with standalone DIN gear — the device is a USB *peripheral*, not a host — which is why the hardware option stays available.) Analog pulse/clock sync: **not included** (MIDI only). ### 4.7 Monitor speaker - **DNP-optional** class-D amp (PAM8302) footprint on the core; speaker +/- routed on the analog interconnect. Populated only for form factors that want a built-in monitor. ## 5. The five remaining pro details (decided) ### 5.1 Output impedance & level calibration - THAT1646 source impedance is near-zero; **47 Ω build-out resistors** per leg give stable driving into long/capacitive cables and survive a shorted output. - **Level calibration:** a 25-turn precision trimmer (Bourns 3296W) in the driver gain network, factory-set so DAC full-scale → **+4 dBu nominal**, leaving ~**+24 dBu** peak headroom on ±15 V. Set-and-forget on the core; not a face control. ### 5.2 Signal / clip indication - A peak detector (Schottky + hold cap) on the input (signal-present, ~−40 dBu) and on the driver-input/summing node (clip, within ~3 dB of rail) feeds an **LM393** dual comparator. - Comparator outputs go to **RP2350 GPIOs** (clip/signal shown on the touchscreen) **and** are mirrored to **SIG/CLIP LED drive lines on the digital interconnect** so a face can fit discrete LEDs. ### 5.3 ESD / EMI hardening - **USB-C:** USBLC6-2SC6 (or TPD4E05U06) ESD array on D±/CC/VBUS; common-mode choke on the data pair; shell bonded to chassis via RC; ferrite + TVS + bulk on VBUS. - **Interconnects:** ~33 Ω series on fast SPI lines for edge-rate control; ESD clamp arrays on any line reaching a user-touchable cable; interleaved ground pins; ferrite beads where 3V3/5V cross into the analog domain. - **Board:** full ground planes + stitching vias; the boost/inverter switcher lives in a guarded corner away from the analog section; analog/digital grounds meet at a single **star point**. - **Heirloom option:** conformal coating for humidity/longevity (build-time choice). ### 5.4 Chassis / strain-relief (core-side) - 4× **M3 mounting holes** with keep-outs; a dedicated chassis-ground pad/pin. - **Through-hole-anchored USB-C** jack (SMD-only tabs shear off with cable wiggle — unacceptable for a 50-year device). - **Shrouded, keyed, latching** interconnect headers (can't insert backward or vibrate loose). - Panel strain-relief and connector mounting live on the face/enclosure. ### 5.5 Interconnect pinout — see §7. ## 6. Power tree | Rail | Source | Part | Notes | |---|---|---|---| | +5 V | USB-C VBUS | — | ferrite + TVS + bulk | | +3V3 (IO) | LDO from 5 V | AP2112K-3.3 / TLV75533 | digital domain | | +1.1 V core | RP2350 internal SMPS | (external inductor) | per RP2350 ref | | ±18 V (raw) | dual boost/inverter from 5 V | **TPS65131** | switcher, guarded corner | | **±15 V (clean)** | ultra-low-noise LDO | **TPS7A4901 (+) / TPS7A3001 (−)** | feeds all audio op-amps | ## 7. Interconnect pinouts ### 7.1 Digital ribbon — 2×13 (26-pin) IDC, Pico-pinout-compatible Grounds interleaved around SPI. A Pico/Pico 2 test adapter maps these to the listed GP. | Pin | Signal | GP | | Pin | Signal | GP | |----|--------|----|--|----|--------|----| | 1 | +5V | — | | 2 | GND | — | | 3 | +3V3 | — | | 4 | GND | — | | 5 | SPI_SCK | GP2 | | 6 | GND | — | | 7 | SPI_MOSI | GP3 | | 8 | LCD_CS | GP5 | | 9 | LCD_DC | GP6 | | 10 | LCD_RST | GP7 | | 11 | GND | — | | 12 | I2C_SDA | GP8 | | 13 | I2C_SCL | GP9 | | 14 | GND | — | | 15 | JOY_X (ADC0) | GP26 | | 16 | JOY_Y (ADC1) | GP27 | | 17 | BTN_A | GP15 | | 18 | BTN_B | GP14 | | 19 | WS2812 | GP12 | | 20 | GND | — | | 21 | GNDLIFT_SW (in) | GP21 | | 22 | LINEINST_SW (in) | GP22 | | 23 | SIG_LED | GP19 | | 24 | CLIP_LED | GP20 | | 25 | GND | — | | 26 | GND | — | *I²S (BCK/LRCK/DOUT), the relays (line/inst route GP16, mute GP18, gnd-lift GP17), and MCLK stay on-core — they are not on the ribbon. A Pico test brain drives the digital/face I/O above but **cannot** drive the analog chain (DAC/op-amps are core-only).* > **Display TE line — route it on the production face.** The table above mirrors the EP-0172 > prototype, which wires only SCK/MOSI/CS/DC/RST and **no TE (tearing-effect) output**. Per the > ST7796S datasheet §10.8, the panel rescans its frame memory to the glass at 60 Hz and the *only* > sanctioned way to avoid tearing is to feed the **TE output back to the MCU** and write during > vblank (`tvdh`). Without it, large updates tear and only small sub-region writes hide it (this is > why MicroPython/CircuitPython, which draw glyph-by-glyph, look clean and the Rust full-frame blits > don't). **Add the LCD `TE` pin to a spare GPIO (e.g. GP4)** on the face interconnect — and > optionally LCD `MISO`/`SDO` for `GSCAN`(45h)/status reads. Then firmware can do > `TEON`(35h)+vblank-synced writes and be fully tear-free even on full repaints. ### 7.2 Analog audio interconnect — 2×5 (10-pin), twisted/shielded, away from digital | Pin | Signal | | Pin | Signal | |----|--------|--|----|--------| | 1 | AOUT_HOT | | 2 | AGND | | 3 | AOUT_COLD | | 4 | CHASSIS/SHIELD (face side of ground-lift) | | 5 | AIN_HOT | | 6 | AGND | | 7 | AIN_COLD | | 8 | SPK+ (DNP) | | 9 | AGND | | 10 | SPK− (DNP) | ### 7.3 MIDI interconnect — 1×6, only if DNP MIDI populated | Pin | Signal | |----|--------| | 1 | MIDI_OUT_A (TRS-A tip/ring leg) | | 2 | MIDI_OUT_B | | 3 | MIDI_IN_A (to opto) | | 4 | MIDI_IN_B | | 5 | +5V (OUT drive) | | 6 | GND / shield | ## 8. BOM Full part list with manufacturer numbers and rough costs in **`hardware/BOM.csv`**. Headline parts: RP2350A · W25Q128JV · PCM5102A · THAT1240 + THAT1646 · OPA1641 · OPA1612 · TPS65131 + TPS7A4901/3001 · RV-8803 · USBLC6-2SC6 · 3× Panasonic TQ2SA gold-contact relays · H11L1 (DNP). ## 9. Manufacturing - **PCB:** ENIG (gold) finish — non-negotiable for decades of reliable contacts/solderability. - **Assembly:** JLCPCB/PCBWay PCBA, ~5-board prototype minimum; ~$80–200 first run. Core parts cost ~$25–40/board one-off (pro op-amps + relays dominate), trending toward ~$15–20 at qty 100. - Most expensive items are the THAT audio ICs and the relays — that's where "heirloom" lives. ## 10. Open items - **PCB layout/routing is the interactive next step** — placement, controlled-impedance USB pair, star ground, switcher isolation, copper pours, DRC. The KiCad project under `hardware/kicad/` is a documented schematic canvas + design-of-record; symbol placement and wiring happen in Eeschema. `kicad-cli` is used here for ERC and PDF export verification. - Confirm the exact 3.5" ST7796/GT911 panel connector (FPC vs header) before finalizing the face. - Decide MIDI connector (TRS-MIDI Type-A vs DIN-5) per form factor — face decision.