CASPER Tutorials

Welcome to the CASPER tutorials page! Here you will find all the current tutorials for the ROACH, SNAP and SKARAB platforms.

It is recommended to start with the introduction tutorial for the platform of your liking, then do that platform’s GBE tutorial and finally move onto the spectrometer or correlator tutorial.

Currently there are four hardware platforms supported through the CASPER Community:

  1. ROACH
  2. ROACH2
  4. SNAP

It is worth noting that even though SNAP (and SKARAB) require their firmwares to be developed using Xilinx’s Vivado (as opposed to ISE), the SNAP tutorials are very similar to the ROACH/2 tutorials. In fact, the only real difference is the choice of hardware platform that is made in Simulink. This is done by selecting the SNAP Yellow Block in the Simulink library under CASPER XPS Blockset -> Hardware Platforms

Tutorial Instructions

If you are new to astronomy signal processing, here is Tutorial 0: some basic introduction into astronomy signal processing. If you already have a lot of experience on it, you can go directly to the introduction tutorials below for CASPER FPGA design and implementation.

If you are a beginner, we recommend the Step-by-Step tutorials, however if you should get stuck, prefer a less tedious method of learning, or already have decent feel for these tools, links to Completed tutorials are available with commented models.



  1. Introduction Tutorial: Step-by-Step or Completed
  2. 10GbE Tutorial: Step-by-Step or Completed
  3. Spectrometer Tutorial Step-by-Step or Completed
  4. Correlator Tutorial Step-by-Step or Completed
  5. Yellow Block Tutorial: Bidirectional GPIO


  1. Introduction Tutorial Step-by-Step or Completed
  2. 40GbE Tutorial Step-by-Step or Completed
  3. HMC Tutorial Step-by-Step or Completed

Environment setup


It is recommended to use Ubuntu 14.04. 16.04 has also been known to work, although the setup process can be a bit of a headache.

Matlab and Xilinx

To use the tutorials you will need to install the versions of Matlab and the Xilinx tools particular to the hardware you plan to use. See the installation matrix below.

Hardware Matlab Version Xilinx Version
ROACH1/2 2013b ISE 14.7
SKARAB 2016b Vivado 2016.2
SNAP 2016b Viviado 2016.4

Modifications to be run after installs


Xilinx removed support for several hardware pcores we use for ROACH1/2 from ISE 14. So the current solution is to add the following pcores from the Xilinx 11 install to your XPS_ROACH_BASE/pcores folder or to your 14 install directory at Xilinx/14.7/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcore.

OPB pcores

  • bram_if_cntlr_v1_00_a
  • bram_if_cntlr_v1_00_b
  • ipif_common_v1_00_c
  • opb_arbiter_v1_02_e
  • opb_bram_if_cntlr_v1_00_a
  • opb_ipif_v3_00_a
  • opb_opb_lite_v1_00_a
  • opb_v20_v1_10_c
  • proc_common_v1_00_a

All installs

The syntax in the Xilinx Perl scripts is not supported under the Ubuntu default shell Dash. Change the symbolic link sh -> dash to sh -> bash:

cd /bin/
sudo rm sh
sudo ln -s bash sh

Point gmake to make by creating the symbolic link gmake -> make:

cd /usr/bin/
sudo ln -s make gmake

If you are not getting any blocks in Simulink (Only seen in CentOS) change the permissions on /tmp/LibraryBrowser to a+rwx:

chmod a+rwx /tmp/LibraryBrowser