Electronics Power Budgets - thepinkmile/Enigma-NG GitHub Wiki
Enigma-NG Power Budgets
Status: Draft Version: v.0.1.0 Associated Hardware Revision: Rev A Last Updated: 2026-09-11
Design Constraint Hierarchy
- TPS75733KTTRG3 LDO (Power Module U7): 3.0A maximum output - hard limit, component not to be changed.
- PM dock
J13V3_ENIG allocation:2 x 3V3_ENIGcontacts at 6A/contact - comfortably above the LDO limit. - Stator dock
J53V3_ENIG allocation:4 x 3V3_ENIGlarge blades plus additional guarded-return capacity - connector is not the bottleneck, the LDO is. - Available to Stator + Rotor stack: LDO output minus Controller-local consumption (CM5 GPIO reference, pull-ups, and local housekeeping) ≈ 2.95A (Controller overhead ≤ 50mA).
3V3_ENIG Load Analysis
Per-Device Current (Intel MAX II EPM570T100I5N [Encoder x6, Rotor x30, Stator x1] @ 3.3V)
| Operating condition | ICC (core) | Source |
|---|---|---|
| Static (no switching) | ~5 mA | Intel MAX II Datasheet ICC_STATIC |
| Typical cipher logic (50 MHz toggle) | ~25 mA | Intel MAX II Power Estimator (50% toggle, 50% resource use) |
| Worst-case (100 MHz, 80% resource use) | ~80 mA | MAX II Datasheet ICC_DYNAMIC worst case |
Design value used: 50 mA per CPLD (conservative typical - accounts for VHDL cipher switching without being an unachievable worst-case peak).
Per-Device Current (TI FDC2114RGHR Capacitive Sensor IC @ 3.3V)
| Condition | ICC |
|---|---|
| Active | 2.1 mA typ |
3V3_ENIG Allocation Table
| Consumer | Count | Per-unit (mA) | Total (mA) | Notes |
|---|---|---|---|---|
| Stator CPLD (U1, EPM570T100I5N) | 1 | 50 | 50 | JTAG forwarding + ENC signal routing |
| HID Encoder CPLDs (EPM570 x2) | 2 | 50 | 100 | Keyboard encode + lightboard decode CPLDs |
| Plugboard Encoder A CPLDs (EPM570 x2) | 2 | 50 | 100 | Stecker pass A encode/decode pair |
| Plugboard Encoder B CPLDs (EPM570 x2) | 2 | 50 | 100 | Stecker pass B encode/decode pair |
| FT232H (Cypher Board USB-JTAG bridge; VREGIN+VCCD+VCCIO+VPLL+VPHY, all 3V3_ENIG) | 1 | 100 | 100 | Self-powered, Rev C silicon, 3.0-3.6V VREGIN; see DEC-102 |
| Rotor CPLDs (EPM570T100I5N x30) | 30 | 50 | 1500 | All rotors cipher-active simultaneously |
| Rotor FDC2114RGHR capacitive sensor ICs (U2/U3 or U2/U4, 2 ICs per rotor, 60 ICs total) | 60 | 2.1 | 126 | Continuous position polling; two ICs per rotor add 4.2 mA to the 50 mA CPLD budget, giving 54.2 mA typ / 55 mA budget per rotor |
| INA219 current monitor (Stator) | 1 | 1 | 1 | Negligible |
| INA219 current monitor (Power Module) | 1 | 1 | 1 | Negligible |
| Stator GPIO expanders (MCP23017 x3) | 3 | 10 | 30 | U6, U7, U8 on shared I2C-1; monitor / control overhead only |
| PM-local GPIO expander (PCA9534A x1) | 1 | 5 | 5 | U14 @ 0x3F; PM status + SW1 runtime RGB handoff control |
| User Settings Module GPIO expanders (MCP23017 x3) | 3 | 25 | 75 | U1, U2, U3 on the shared Stator I2C-1 bus |
| Extension Buffer ICs (SN74LVC2G125DCUR) | 5 | 2 | 10 | TCK/TMS re-drive for each 5-rotor group; one per Extension board; negligible load |
| Stack-Input STM32G071K8T3TR MCUs (native Actuation Module, one per mini-stack) | 6 | 5 | 30 | Placeholder conservative estimate (Run mode ~2.9 mA typ @ 24 MHz per local stm32g071.md Table IDD(Run), rounded up for GPIO/peripheral overhead); actual figure TBD once firmware clock configuration and solenoid driver circuit are finalised - see Stack-Input/Design_Spec.md §4 |
| Controller-local housekeeping | - | - | 50 | Controller overhead subtracted before Stator distribution |
| Typical total | 2,283 mA | |||
| Rounded budget | ≤ 2.29 A |
Headroom vs LDO Limit
| Limit | Value | Margin |
|---|---|---|
| LDO hard limit | 3.00 A | - |
| Typical worst-case load | 2.29 A | +0.71 A (24%) |
| Controller↔Stator dock capacity | Above 3.00 A | Not the constraint |
✔ Conclusion: The 3A TPS75733KTTRG3 LDO provides ~24% headroom above the full downstream worst-case typical load. No LDO upgrade is required for the current 30-rotor design. Telemetry note: The Stator INA219 / shunt path still measures the rotor-stack distribution branch at about 2.05 A typical. The extra ~230 mA above that figure is the User Settings Module's local logic load, the Stack-Input STM32G071 MCU placeholder, and the FT232H's full 3.3V-
VREGINdraw on the shared3V3_ENIGrail.
3V3_ENIG Conflict Resolution
STA-05 / STA-06: Shunt resistor and power figure reconciliation
| Document | Old figure | Resolved value | Action |
|---|---|---|---|
| Stator §2 "5A peak" | 5.0 A | 2.05 A worst-case typical | ✔ Complete - Stator §2 updated to 2.05A worst-case typical; 5A figure retired |
| Controller↔Stator dock capacity | 5.5 A | Not the bottleneck - hybrid Molex dock remains above the 3.0 A LDO limit | ✔ Complete - Samtec Link-Beta constraint retired by DEC-038 |
| Rotor x30 claim "4.5A" | 4.5 A | 1.65 A (30 x 55 mA budget; 1.63 A typ) | ✔ Complete - Rotor DR-ROT-06 and §3.1 now use the 54.2 mA typical / 55 mA budget figure; 150 mA figure retired |
| Shunt resistor | Stator: 20 mΩ, Controller: 10 mΩ | 10 mΩ CSS2H (Stator R1 = CSS2H-2512R-R010ELF; Controller has no shunt) | ✔ Complete - Stator R1 updated to CSS2H-2512R-R010ELF (10mΩ, 2512 Kelvin) |
INA219 shunt selection rationale (10 mΩ CSS2H-2512R-R010ELF):
- V_drop at 2.05A: 2.05 x 0.010 = 20.5 mV - within INA219 ±80 mV PGA range.
- V_drop at 3.00A max: 3.00 x 0.010 = 30 mV - within ±80 mV range.
- Resolution: with 12-bit ADC at ±80 mV range, LSB = 2x80mV/4096 ≈ 39 µV/LSB → I_LSB = 39µV/0.010Ω ≈ 4 mA current resolution.
- Power dissipation at 2.05A: 2.05² x 0.010 = 42 mW - 2512 Kelvin package (rated ≥0.5W) is adequate with >10x margin.
- Power dissipation at 3.00A max: 3.00² x 0.010 = 90 mW - 2512 Kelvin package ≥0.5W still OK.
- CAL register: 0x0400 (1024) - unchanged. CAL = 0.04096 / (Current_LSB x R_SHUNT) = 0.04096 / (0.004 x 0.010) = 1024 ✔
- Part: CSS2H-2512R-R010ELF (Bourns 2512 Kelvin-sense, 10mΩ ±1%, 5A). Used on PM R10 (LTC3350 RSENSE), PM R16 (INA219 U10, 0x40, 5V_MAIN monitoring) and Cypher Board R1 (INA219 U2, 0x40, rotor-stack monitoring — same address as PM's U10, safe since the two devices are on independent I²C buses; see DEC-101). Total build qty: 3.
5V_MAIN Load Analysis
| Consumer | Current | Notes |
|---|---|---|
| CM5 (Raspberry Pi Compute Module 5) | 5.0 A max | CM5 boot-to-load current profile; 25W at 5V = 5A |
| 3V3_ENIG LDO quiescent (TPS75733KTTRG3) | 2.05 A | Sourced from 5V_MAIN; P_in = 5V x 2.05A = 10.25W |
| Status LEDs, RJ45, misc. | 0.1 A | |
| USB 3.0 external devices (TPS2065C rated max) | 1.60 A | System boundary: connected USB device load; TPS2065C hard-limits output |
| HDMI sink device | 0.05 A | System boundary: connected HDMI sink; AP2331W-limited |
| User Settings Module indicator rail (via Controller↔Stator dock → J13) | 0.10 A | Bank 1 only (5 LEDs x 20mA = 100mA max); Bank 2 (CFG_REFMAP switches/LEDs) removed 2026-08-16 - see User_Settings_Module/Design_Spec.md §1 and this board's own §11/§12 |
| Cypher-Input LED bank (via Cypher Board dock, 64-Character variant worst case) | 1.26 A | 42 LEDs x 3 colour channels x 10mA, all channels simultaneously active (mixed colour, e.g. white/yellow/cyan); broadcast onward to whichever Cypher-Output board is installed - see Cypher-Input/Design_Spec.md §5/§7 |
| Cypher-Output LED bank (via Cypher Board dock, any variant - worst case is variant-independent) | 0.03 A | Only one lens position is ever lit at a time (one-hot decode); 1 lens x 3 colour channels x 10mA, all channels simultaneously active (mixed colour); local 5V_MAIN-sourced colour-bank switching (U1-U3) - see Cypher-Output/Design_Spec.md §4/§7 |
Stack-Input Board solenoid actuation (via Cypher Board J4 power dock → mini-stack 5V_MAIN, one native instance per mini-stack) |
0.50 A | Placeholder worst-case figure carried forward from the retired Controller-side Actuation Module budget (DEC-100 relocated the physical host dock only, not the power draw); solenoid driver circuit and actual current are still TBD in Stack-Input/Design_Spec.md §4 pending a future design discussion - revisit once finalised |
| Total 5V_MAIN worst case (system boundary) | 10.69 A | |
| LMQ61460-Q1 dual-phase capacity | 12.0 A | 89.1% utilisation (10.69/12.0) - reduced margin, see note below |
Scope note: The 7.15 A board-level budget (internal consumers: CM5 + LDO + misc) covers internal consumers only. External device loads (USB 3.0 + HDMI) plus the Stator-fed User Settings Module load, the Cypher-Input and Cypher-Output LED bank loads, and the Stack-Input solenoid load add 3.54 A, giving a system total of 10.69 A. Component utilisation figures (e.g. LMQ61460-Q1) are calculated against the 10.69 A system total.
Reduced margin note (2026-08-16, updated 2026-08-17): adding the Cypher-Input LED bank's worst-case 1.26 A (64-Character variant, all 3 colour channels simultaneously active) raises total utilisation from 79.2% to 89.7% of the LMQ61460-Q1's 12.0 A dual-phase capacity - still within capacity, but with materially less headroom than before. This worst case assumes a mixed colour (not a single primary channel) is selected and every LED position is populated (64-Character variant, the largest); the 26-Char Classic and 10-Numeric variants draw proportionally less (0.78 A and 0.36 A worst case respectively). Cypher-Output's own LED bank was also previously unbudgeted (found 2026-08-17) but adds only a further 0.03 A worst case, since only one Cypher-Output lens is ever lit at a time regardless of variant (unlike Cypher-Input's whole-key-bank illumination) - this brought total utilisation to 89.9% at the time. Current utilisation is 89.1% (see
Document Historybelow for the intervening changes). Revisit this margin once the LED part is confirmed (seemerge-missing-components.md) and actual per-channel current is finalised - 10mA/channel is a target, not a measured figure. Separately, the User Settings Module row above was corrected from 0.24 A to 0.10 A this same session, reflecting the removal of Bank 2 (CFG_REFMAPswitches/ LEDs) - see DEC-089 andUser_Settings_Module/Design_Spec.md §1; this row previously carried a stale pre-removal figure.Stator dock 5V margin: The Stator-facing 5V branch uses four large
5V_MAINblades on the dedicated MolexJ4dock, with additional return capacity in the companion ground blades / guards. The current downstream budget remains 0.74 A, so the dock is not the limiting factor for Stator-side 5V peripherals.
Document History
| Date | Change |
|---|---|
| 2026-04-05 | Initial document - created to resolve STA-05/STA-06/ROT-04/PM-05 inconsistencies |
| 2026-08-16 | Added Cypher-Input LED bank to the 5V_MAIN Load Analysis table (1.26 A worst case, 64-Character variant, all 3 colour channels active) - was previously unbudgeted. Corrected User Settings Module indicator rail from a stale 0.24 A to 0.10 A, reflecting Bank 2 (CFG_REFMAP) removal earlier this session (DEC-089). Total 5V_MAIN worst case revised from 9.50 A to 10.76 A, LMQ61460-Q1 utilisation from 79.2% to 89.7% |
| 2026-08-17 | Added Cypher-Output LED bank to the 5V_MAIN Load Analysis table (0.03 A worst case, variant-independent since only one lens is ever lit at a time) - was previously unbudgeted; discovered while fixing an incorrect "not consumed by this board's own circuitry" claim in Cypher-Output/Design_Spec.md §6. Total 5V_MAIN worst case revised from 10.76 A to 10.79 A, LMQ61460-Q1 utilisation from 89.7% to 89.9% |
| 2026-09-04 | Relocated the "servo rail" line from a direct Controller-side draw (via the now-retired Controller J11 AM host dock, DEC-100) to "Stack-Input Board solenoid actuation" (via Cypher Board J4 power dock → mini-stack 5V_MAIN) - the actuator itself was never removed from the system, only its physical host dock moved off the Controller. Figure retained as a 0.50 A placeholder pending the still-TBD solenoid driver circuit in Stack-Input/Design_Spec.md §4. Total 5V_MAIN worst case unchanged at 10.79 A |
| 2026-09-08 | Corrected the shunt-part note: Cypher Board R1's INA219 (U2) I2C address changed from 0x45 to 0x40, matching the shunt-selection rationale text to the new address (see DEC-101) |
| 2026-09-11 | Added a placeholder 3V3_ENIG line for Stack-Input's native STM32G071K8T3TR MCUs (30 mA, 6x 5 mA conservative estimate derived from the local stm32g071.md datasheet's Run-mode IDD table) - this consumer had never been budgeted (a pre-existing gap predating this session, unrelated to the recent Controller/Cypher dock rework). Typical total revised from 2,163 mA to 2,193 mA; rounded budget 2.17 A → 2.20 A; LDO headroom 28% → 27% |
| 2026-09-11 | Moved FT232H's full current draw (100 mA) from 5V_MAIN to 3V3_ENIG, consolidating the previously-split VCCIO-only (10 mA, 3V3_ENIG) / VCC (100 mA, 5V_MAIN via the now-nonexistent 5V_USB net) entries into one 100 mA 3V3_ENIG line - see DEC-102 (FT232H now self-powered from 3V3_ENIG via Rev C VREGIN, no 5V rail required). 3V3_ENIG typical total revised from 2,193 mA to 2,283 mA (rounded 2.20 A → 2.29 A; LDO headroom 27% → 24%). 5V_MAIN total revised from 10.79 A to 10.69 A (LMQ61460-Q1 utilisation 89.9% → 89.1%) |