Skip to content

feat(fpga): L-DPC1 CLOSED — GF16 dot4 + phi-heartbeat verified on XC7A100T#39

Open
gHashTag wants to merge 1 commit into
mainfrom
feat/l-dpc1-gf16-dot4
Open

feat(fpga): L-DPC1 CLOSED — GF16 dot4 + phi-heartbeat verified on XC7A100T#39
gHashTag wants to merge 1 commit into
mainfrom
feat/l-dpc1-gf16-dot4

Conversation

@gHashTag
Copy link
Copy Markdown
Owner

@gHashTag gHashTag commented May 9, 2026

🎯 L-DPC1 Hardware Bench — CLOSED ✅

GF16 dot4 с phi-константами и 3-фазный phi-heartbeat верифицированы одновременно на реальном железе XC7A100T.

Verified on hardware (2026-05-10)

Компонент Пин Статус
phi-heartbeat phase 0 D5 (R23) ✅ BLINKS
phi-heartbeat phase 1 D6 (T23) ✅ BLINKS
gf16_dot4 LSB output J26 ✅ BLINKS

Файлы (fpga/vivado/)

  • gf16_add.v — GF(2⁴) сложение: побитовый XOR
  • gf16_mul.v — GF(2⁴) умножение: LUT-based, poly x⁴+x+1 (0x13). No DSP48 — abc9 routing issue (tracked separately)
  • gf16_dot4.v — 4-элементный dot product с параметрическими phi-константами
  • gf16_heartbeat_top.v — топ-модуль: phi-heartbeat (3-phase) + gf16_dot4 + STARTUPE2.CFGMCLK

Toolchain

openXC7 → FASM → xc7frames2bit → XVC (ESP32-JTAG) → XC7A100T
Clock: STARTUPE2.CFGMCLK ~66MHz (no external oscillator)

Design decisions

  • LUT-based GF16 mul вместо DSP48 — abc9 placement/routing fails on Artix-7 для этого дизайна при текущем toolchain. Решение через чистые LUT работает идеально.
  • STARTUPE2.CFGMCLK как canonical clock — не требует внешнего осциллятора, доступен всегда.
  • Phi-constants параметрические (W0..W3) — легко менять для разных экспериментов.

Next steps (не в этом PR)

  • ROM via $readmemh — после решения DSP48 routing
  • L-DPC2: headscale/tailscale Node-0 mesh
  • Testbench (sim/) для gf16_mul и gf16_dot4

…A100T

- gf16_mul: GF(2^4) multiply via LUT (no DSP48, abc9 routing issue tracked separately)
- gf16_add: GF(2^4) addition = bitwise XOR
- gf16_dot4: 4-element dot product with phi-constant weights [1,1,1,1]
- gf16_heartbeat_top: top-level — phi-heartbeat on D5/D6 (R23/T23) + dot4 on J26
- Both subsystems run simultaneously on real XC7A100T silicon — BLINKS CONFIRMED

Toolchain: openXC7 → FASM → xc7frames2bit → XVC (ESP32) → board
Clock: STARTUPE2.CFGMCLK ~66MHz, no external oscillator

Next: ROM via $readmemh after DSP48 routing resolved
EPIC: L-DPC1 CLOSED ✓"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant