Bob Peterson

pulser

A simple FPGA application written in Amaranth HDL to generate programmable pulse sequences

Overview

Recently, more photonics experiments are incorporating feedback or feedforward based on detection patterns of single photons. Existing readout chains are adequate for digitization and later analysis of detection data, but a key missing piece is the ability to quickly perform (often simple!) combinatorial logic on output signals and send an appropriate pulse sequence back to the experiment (for example, to a fast switch to re-route photons). Using Amaranth's domain-specific language implemented in Python, the desired logic can be easily defined, compiled using an open-source FPGA toolchain, and uploaded to the board in seconds. This permits experiment control code to programatically modify the FPGA between runs. All of this is possible with a $25 ICEstick evaluation board, and offers more features and flexibility than commercial pulse generator solutions costing over ten thousand dollars. A walkthrough of the installation and build process is included for newcomers to FPGA applications, along with example programs and simulations to illustrate the capabilities and ease of use of modern FPGA tooling.