Practical Usage

Downloading a firmware with iMPACT

Since Kalliope uses Spartan-6 as its FPGA, the firmware may not be developed by Vivado, the most recent environment for Xilinx FPGA. Kalliope have to use ISE, an outdated developing environment. The size of the FPGA used is 100T, which is out of the support of ISE-WebPack (free), and a license for ISE may have to be purchased. There are a few PCs with an ISE licence at KEK, and may be consulted. (ISE runs on Linux, Windows XP or 7; there are issues about running ISE on Windows 10, and some discussions are found on the web. It may be possible that iMPACT enclosed in ISE-Webpack may be able to download MCS, but someone let us know.)

The firmware is distributed at the Open-it page for Kalliope after user registration. The directory has the structure:

├── 16.05.16-VOLUME2014-MPPC
├── 16.05.18-VOLUME2012-MPPC
├── 16.08.22-VOLUME2012-NIM
└── 16.11.15-RCNP-OPU
    ├── DCTOT_NIM
    ├── DCTOT_VOLUME2012
    ├── DCTOT_VOLUME2014
    ├── SRC
    └── MPCBIT


Refer to the Version history in the firmware section. The MCS is in the directory named FPGA-final-MCS. Identify the MCS file of the version, which you would like to download to Kalliope.

Downloading MCS (firmware file) by iMPACT
Connect the JTAG cable to the socket on Kalliope digital board, which is powered on. The LED of the download cable will turn green, if correctly connected. If it stays orange, the USB connection is not established. If ISE is running on a guest OS, it may be the host OS taking the USB.

  • Open iMPACT software from the Windows start menu. A DOS window opens and a graphical window starts up.
  • On the left side panel of the graphical window, select Boundary Scan.
  • On the right side panel, right click and select "Initialize Chain".
  • There should be two icons visible. One is EEPROM (xfc32p) and the other is FPGA (xc6slx100t).
  • iMPACT will ask if you would like to assign configuration files. See figure. Press Yes.
  • A file selection window will open. If the file type includes .mcs, identify and open the MCS file you want. Bypass to .bit file type for FPGA.
  • A "Device Programming Property" window pops up. It is safer to check on verify. See figure. Press OK.
  • Right click on the right panel and press "Program". A "Configuration Operation Status" window pops up and takes ~ min to complete. See figure.
  • If "Program Succeeded" appears, the downloading was successful. If there should be a problem, "Program Failed" should appear.
Figure 1: After Boundary Scan -> Initialize Chain is completed.
Figure 2: After choosing a MCS file. It is safer to check on 'verify' at the first line.
Figure 3: During the download of the firmware.

Quick start of Kalliope

Refer to each section for more detail.


  • Connect digital board, analog board and the detectors (A=anode to the center of coax for NIF cables).
  • Plug-in SFP, select mode on DIP SW bit 3 (PMA/SGMII, i.e. fiber or metal SFP). Connect the network cable/fiber to PC.
  • Connect the power supply to digital board, and turn ON the power. LED4 should blink in ~1Hz.
  • On the analog board, adjust
    • VR1&2, input polarity jumper (S-G or S-V) (Volume2012), or
    • four VRs (Volume2014).
  • Set the IP address. DIP SW bit 4 OFF to be forced default IP mode ( ON to be the user-defined IP mode.
  • Make sure ping reaches and replies to the IP address set.
  • Turn on HV to the detectors.

Software (install)

  • Install SlowControl and a DAQ package: sitcp-dump (DC) or Run44 (Pulse).


  • ./SlowControl/read-registers_ip 192.168.10.x to know the current firmware version.
  • Use iMPACT to download the firmware, if necessary.

Software (SlowControl)

  • Write DAC parameters to FPGA by ./pc201x_ip 192.168.10.x 1 VOLUME201xAllON.txt
  • Send the DAC parameters to ASIC by ./pc201x_ip 192.168.10.x 1 1

Software (DAQ: sitcp-dump or Run44)

  • Start a DAQ program for (DC).
    • ./sitcp-dump/sitcp-dump --dir /data 192.168.10.x:24
  • Start a DAQ program for (Pulse):

    • edit ./Run44/module_numbers.h and ./Run44/module_ip.h and recompile.
    • ./Run44/worker_x11
  • Open another terminal and send commands to DAQ program

    • telnet localhost 2222
      • start N / stop / pause / resume


KalliopeTune is a python-based program to scan ThDAC or BiasDAC and take the count rate, developed by Visual Information Center, Ltd. It also finds the DAC settings which returns the maximum counts. There are four versions corresponding to Volume2012/2014 x DC/Pulse-DAQ.

├── Documents
└── SourceCode
    ├── KalliopeTune_131_2012_dc
    ├── KalliopeTune_131_2012_pulse
    ├── KalliopeTune_131_2014_dc
    └── KalliopeTune_131_2014_pulse
        ├── config
        └── decoder_src

The config and decoder_src exists for all directories, but here, they are shown only for the 2014_pulse package.

  • To setup, run $ python on the package root.
  • You are required to copy kalliope_config.h (DC) or module_numbers.h and MLFdatum.h (Pulse) to ./decoder_src. Supply those files and run the undil no errors are found.
  • The ./config directory has two files: and The former has the list of IP address and the convention for data directory and filename. The latter defines the scan and tune behavior.
  • Run the appropriate DAQ program: sitcp_dump (DC) or worker_x11 (Pulse).
  • $ mkdir work and run commands from there (to keep run directories in ./work).
$ cd work
$ python ../
$ ls 000035              (count information)             (tuned DAC parameters)
  • If the KalliopeTune runs successfully, there should be a IP_plot.csv (e.g. found in the run folder (e.g. 000035). To plot, Masatoshi Hiraishi's is convenient:
$ ../ 000035

A window pops up with four panels of plots with 8 channels each. gnuplot is required.

For more, refer to KalliopeTune manual [4].


How to purchase modules from GND Ltd
Send an email to GND Co., Ltd., telling the GND catalog number (GN-number) and the number of purchase. If in stock, the modules will be delivered immediately. Make sure that MAC address and SiTCP license comes with Kalliope digital. If the module is out of stock, we must consult the manufacture plan. An independent order will result to a higher price, because the initial cost for the production will be split to the number of modules manufactured.