These tutorials were constructed using Xilinx System Generator 14.3 and MATLAB 2012b. Other mutually compatible versions of Xilinx and MATLAB tools may work correctly, but have not been tested. In particular, some users have experienced problems with broken connections between blocks when using Xilinx 14.5.
These tutorials use the SKA-SA git commit 14d93e69bd7751a1527d731b8b53a1972de6c994
If you plan to use these tutorials on your own system, you are most likely to have success if you use these libraries. You can obtain them from github:
git clone git://github.com/ska-sa/mlib_devel.git
git checkout 14d93e69bd7751a1527d731b8b53a1972de6c994
We try to maintain working versions of the following tutorials:
Introduction to Simulink, communication with FPGAs. Build a simple program that flashes LEDs, counts and adds numbers on demand. Communicate with ROACH's FPGA using the PPC's BORPH operating system and also using raw KATCP commands. Includes step-by-step walkthrough for building your design, compiling it, loading onto ROACH and communicating with it.
Prerequisites: just your enthusiastic self, your computer with 11.4 libraries and a ROACH board.
Tutorial 2: 10GbE Interface
Construct a design that transmits a counter over 10GbE to another ROACH port. During this tutorial, you will learn more about the CASPER hardware interfaces, communicating with ROACH remotely using KATCP and the supplied Python libraries.
Prerequisites: Introduction tutorial (we expect conceptual understanding of software registers and PPC/FPGA mapped memory regions along with some basic Simulink experience). Also useful, but not required, is some experience in programming in Python, since the sample script for configuring and controlling the system is provided in Python. You will need a ROACH board and a 10GbE cable.
Tutorial 3: Wideband Spectrometer
Build a 512MHz "wideband" spectrometer with 2048 FFT channels on ROACH.
This will introduce the ADC boards, the CASPER DSP libraries including the wideband PFB and FFT blocks as well as demonstrate the use of vector accumulators, shared BRAMs and readout through the PPC's 1GbE port. We will make use of KATCP for remote control of the ROACHes using Python libraries to plot the output.
Prerequisites: tutorials 1 and 2. This design is complete and tested working. You'll need a ROACH board and either a katADC or an iADC board, as well as a synthesiser / clock source.
Tutorial 4: Wideband Pocket Correlator
Build a wideband 2 antenna x 2 polarization correlator, for use on ROACH. This is a good starting point for your field-deployable correlator and demonstrates the use of requantisation after the FFT.
Tutorial 5: Heterogeneous Instrumentation
In this tutorial, you will learn how to use a combination of FPGA and Graphics Processing Unit (GPU) technologies to build an astronomical signal-processing instrument. The aim of the tutorial is to use a ROACH board, along with a PC with an NVIDIA Fermi-class GPU to build a PFB spectrometer. This tutorial consists of three parts - an FPGA design that digitizes and transmits time-domain data from a ROACH board to a PC over a 10GbE link, a data acquisition program in Python that records this data to disk, and a CUDA/C GPU program that performs online spectrometry.
This tutorial gives a brief introduction to embedding Verilog (or VHDL) code in your Simulink models using the Xilinx "Black Box" block.
Tutorial 7: Creating a Yellow Block
This tutorial will guide you through the creation of a new yellow block interface. Starting with a compile of a skeleton ROACH model, you will learn how the various components of the CASPER toolflow work together to automatically instantiate custom IP in a simulink compile.
Clocking Options - Notes on how to choose a User IP Clock Source.
- Simulink Tutorial - Simulink Mask Scripting (embedded video)