Multichannel Pulse Height Analyzer

Some interesting links on radiation spectroscopy:

Hardware

This application requires the Zmod Digitizer module to be connected to the ZMOD A connector of the USB104 A7 board.

This system is designed to analyze the height of Gaussian-shaped pulses and it expects a signal from a pulse-shaping amplifier. It is also known to work with non-overlapping exponentially rising and exponentially decaying pulses.

The basic blocks of the system are shown in the following diagram:

Multichannel Pulse Height Analyzer

The width of the pulse at the input of the pulse height analyzer module can be adjusted by varying the decimation factor of the CIC filter.

The baseline is automatically subtracted. The baseline level is defined as the minimum value just before the rising edge of the analyzed pulse.

The embedded oscilloscope can be used to check the shape of the pulse at the input of the pulse height analyzer module.

The projects/mcpha directory contains four Tcl files: block_design.tcl, pha.tcl, hst.tcl, osc.tcl. The code in these files instantiates, configures and interconnects all the needed IP cores.

The source code of the R script used to calculate the coefficients of the FIR filter can be found in projects/mcpha/filters/fir_0.r.

Software

The projects/mcpha/ui directory contains the source code of the control program (mcpha.py).

MCPHA control program

Getting started

Building from source

The structure of the source code and of the development chain is described at this link.

Setting up the Vitis and Vivado environment:

source /opt/Xilinx/Vitis/2020.2/settings64.sh

Cloning the source code repository:

git clone https://github.com/pavel-demin/usb104-a7-notes
cd usb104-a7-notes

Building mcpha.bit:

make NAME=mcpha bit

Configuring the FPGA:

make NAME=mcpha run