The Calan-MBF project aims to build a platform for multiple-beamforming applications, based on CASPER hardware.
The core software for development is Matlab 2013a and Xilinx ISE 14.7, running in a Ubuntu 12.04 machine (newer versions are also apt, but this is the OS we use at the lab).
Some other softwares needed are Ruby 1.9.1 (with RubyGems) and Python 2.7.
Important libraries can be obtained/installed as follows:
- CASPER
mlib_devel
: Open a terminal and execute these commands
git clone https://github.com/FranciscoCasado/mlib_devel.git
This repo is a fork from casper-astro (0c3f334) with downgraded pcores in order to compile and work with test files (detailed later).
-
Missing
pcores
: As as the CASPER toolflow settings page says, there are some tweaks to be able to compile. The most important is to download the compressed folder that has the missingpcores
from Xilinx. Extract the files tomlib_devel/xps_base/XPS_ROACH2_base/pcores
. -
Set local environment variables: In the
mlib_devel
folder, there is the filestartsg
, which can be run from a terminal and opens matlab and loads the necessary CASPER libraries. This file requieres de definition of at least three environment variables that can be written into another file (created by each user) namedstartsg.local
:
MATLAB_PATH=/usr/local/MATLAB/R2013a/
XILINX_PLATFORM=lin64
XILINX_PATH=/opt/Xilinx/14.7/ISE_DS
Replace the correct Matlab and Xilinx version numbers in each path. Also verify that these are the actual installation felder paths.
- CASPER
corr
library: install it via pip
pip install corr
This python library includes katcp
, which is required to stablish communication between your PC and a ROACH2.
- Ruby files for testing - by davidm
gem install --source http://astro.berkeley.edu/~davidm/gems adc16
git clone git://github.com/david-macmahon/casper_adc16.git
gem install pgplot
gem install --source http://astro.berkeley.edu/~davidm/gems pgplotter
gem install gsl
If gsl
installation fails, this page should help.
A ROACH2 rev2 and an ADC16x250-8 coax rev 2 (single ended SMB input). The clock is generated by a Valon Synthesizer 5007, at a frequency of 200 MHz.
This project also considers four down-conversion boards from 5 GHz to <20 MHz, based on the MAX2851 chip. More info on these boards can be found in the folder utils/down_converters
.
The utils
folder contains the source written by davidm (in Ruby). Every model that includes an adc16 yellow block is useful for testing the board.
- Power up the ROACH2 and connect it to the local network (same as your PC). Connect the clock source to the ADC16 board (at the lab we have a Valon Synthesizer) and plug the ADC16 inputs to some RF signal. Make sure the clock source supplies 6 dBm (valon_synth lvl. 4) and the RF signal of each input is near 0 dBm.
- On your PC, open an iPython session to upload the .bof file to the ROACH2 with katcp. In a terminal, type
$ ipython
and enter the following commands:
In [1]: import corr
In [2]: fpga = corr.katcp_wrapper.FpgaClient('ROACH2_ip_address')
In [3]: fpga.upload_bof('utilities/adc16_test/model/<bof_file.bof>', 60000)
The number 60000 in the third line corresponds to the port that the file transfer will use, as the default katcp 7147 is already in use. Any number greater than 10000 should also work. To check that the bof_file arrived, type
In [4]: fpga.listbof()
- Open another terminal and execute the following scripts
./adc16_init <bof_file.bof>
./adc16_check
The first line programs the model into the ROACH2. The later reads data directly from the adc16 board and plots 16 signals, one from each channel. In normal operation, feeding a pure sine wave below 20 MHz to every channel should look "good" in each plot. . This script runs two ruby routines that turn ADC boards on, calibrates all channels (A,B,C,D) and then plots a snapshot of every signal. These routines can be run individually from the terminal:
cd utils/adc16_test/src/bin
ruby1.9.1 ./adc16_init.rb --demux 1 ROACH2_ip_address adc16_1brd_200_rev2a.bof
ruby1.9.1 ./adc16_plot_chans.rb ROACH2_ip_address
Note that the .bof file name does not contain the path, as it is the copy uploaded to the ROACH2.
Current state of the project is calibrating amplitude and phase for each channel. Coarse amplitude calibration is achieved by setting the vga_gain of the down-converter chips. Fine amplitude calibration and phase calibration are to be managed by the ROACH2.
The down-converters (MAX2851) have programmable analog gain adjustment. In order to monitor the amplitude while changing the gain, a simple model and python scripts are available in the models/read_power
folder. The model consists of snapshots and power integrators; the python script is permanently reading the data and displaying them in two figures: RMS-power and snapshots of everys ignal.
To run this script, the user must have programmed the ROACH2 and calibrated the ADC board. After that, the python script can be run:
./adc16_init read_power_16chan.bof
python read_power_16chan.py
This script plots the power in arbitrary units (dB) of every channel and also shows a snapshot of every channel. This information allows the user to compare all averaged powers and the state of each signal.
Currently under development
The FFT of each channel must be computed by exploiting the result of a complex spectrum.