Skip to content

Pixie Booting Procedure

ksmith0 edited this page Aug 30, 2016 · 3 revisions

A special thanks to H. Tan of XIA, LLC. for providing this information.

#Booting Procedure The booting of the Pixie-16 works like this: the host computer sends the FPGA configuration words (stored in the firmware files) to the onboard CPLD word by word with a software controlled delay between two consecutive words; the CPLD receives the FPGA configuration word and then converts it into a serial data stream and programs the serial data stream into the FPGA. It takes the CPLD a little bit less than 1 microsecond to complete serializing and programming each FPGA configuration word. So the host computer has to leave sufficient time in between two consecutive words, otherwise, those configuration words could get corrupted if the CPLD has not finished programming the previous word to the FPGA.

The ​NSMULTIPLIER is a method introduced to adjust the time delay between two consecutive FPGA configuration words. Since the delay generated by the host computer will very much depend on the speed of the host computer processors, the NSMULTIPLIER will probably need to be adjusted based on the specifications of the computer.

There is not a rule, per se, for how to set the ​NSMULTIPLIER. If you look at the boot code in pixie16sys.c file, you can see we require a 2 us delay after each FPGA configuration word download. The question is how to ensure the wait is indeed at least 2 us. The function get_ns_per_cycle in tools.c is supposed to report the correct time that takes to execute one cycle in a particular CPU, but if the computer is already working with a heavy load at the time of booting, the returned value by the function get_ns_per_cycle might be skewed to the high side, and therefore the actual wait when downloading the FPGA configuration words might be less than expected. So I agree it might still involve some form of trial and error, unfortunately.

#Changing NSMULTIPLIER

  1. Edit the value of NSMULTIPLER in /opt/xia/current/software/sys/pixie16sys_defs.h
  2. Recompile the software in /opt/xia/current/software/ to generate the updated libPixie16Sys.a
  3. Recompile and reinstall PAASS to link to the new libraries. Use the following commands in the PAASS build directory.
make clean
make install

Clone this wiki locally