Skip to content

capture_la up to 48 MS/s, pre-trigger and early-stop reporting (gateware v50+) - #59

Merged
wardviaene merged 5 commits into
mainfrom
la-48msps
Nov 3, 2026
Merged

wardviaene merged 5 commits into
mainfrom
la-48msps

Conversation

@wardviaene

@wardviaene wardviaene commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

capture_la(samples, sample_rate_hz) is unchanged. With gateware v50 (benchpod-firmware#91), the pod runs requests above 12 MS/s at 48, 24 or 16 MS/s, records only the changes, and replies in the usual form.

Additions (all optional, all backward compatible)

  • Trigger(la, edge, pre_samples=N): capture_la also returns up to N samples from before the trigger, at any rate up to 48 MS/s. LaCapture.pre_samples says how many it holds, and the trigger is at that index.
  • LaCapture.truncated: "busy" or "memory" when a capture above 12 MS/s stopped early and holds fewer samples than asked. This is also logged as a warning.
  • MCP capture_la: a new trigger_pre_samples parameter, and the result reports pre_samples and truncated.
  • Docs and snapshots: the README, docstrings and API/tool surface snapshots are updated (additive only).

Tests

  • Unit tests for the new reply fields and Trigger validation.
  • New e2e tests: 4 us pulses measure exactly 192 / 96 / 64 samples at 48 / 24 / 16 MS/s, and a pre-trigger capture returns its 2000 samples of history with the trigger on the rising edge.
  • Both pass on hardware (benchpod-30a9f1, gateware v50); the rest of the e2e suite shows no regressions.

🤖 Generated with Claude Code

wardviaene and others added 4 commits November 3, 2026 09:26
No API change: above 12 MS/s the pod captures the changes and replies in the
usual form. The SDK and MCP docstrings say so, with the one limit (a signal
changing over ~6 million times per second for long ends the capture).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Trigger(la, edge, pre_samples=N): capture_la also returns up to N samples
  from before the trigger; LaCapture.pre_samples says how many it holds (the
  trigger's index).
- LaCapture.truncated: "busy" or "memory" when a capture above 12 MS/s
  stopped early and holds fewer samples than asked (logged as a warning).
- MCP capture_la: trigger_pre_samples; the result reports pre_samples and
  truncated.
- README, API and tool surface snapshots updated (additive).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…50+)

FPGA-timed 4 us pulses on a free LA channel must measure exactly 192 / 96 / 64
samples at 48 / 24 / 16 MS/s, and a pre-trigger capture must return the
requested samples before the trigger with the trigger on the rising edge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he arm

The trigger fired before 2000 samples of history existed (the train started
before the capture armed). Now the line is a low GPIO output and a second
connection starts the train 100 ms after the arm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wardviaene wardviaene changed the title docs: capture_la goes up to 48 MS/s on gateware v50+ capture_la up to 48 MS/s, pre-trigger and early-stop reporting (gateware v50+) Nov 3, 2026
The MCP's minimum embeddedci (2.13.6) has no Trigger(pre_samples) or
LaCapture.pre_samples/truncated: read them with getattr and build a plain
Trigger unless a pre-trigger is asked for (then a clear upgrade message).
Tested against embeddedci 2.13.6 from PyPI, as the mcp-min-sdk job does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wardviaene
wardviaene merged commit 8a92494 into main Nov 3, 2026
20 checks passed
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