Frequently Asked Questions
about the FMC DEL 1ns 4cha board

General

Q: What to do if I have questions about the FMC DEL 1ns 4cha board?

A: First, try to read the different wiki pages and manuals and browse through this FAQ to see if your question is already answered. Then, if you have not found it there, really do not hesitate to send your question to the mailing list fmc-delay-1ns-8cha@ohwr.org. You can find more information about this mailing list and register yourself to it at the Mailing List tab.


Hardware

Q: The FMC DEL card runs quite hot when used in a PC on a SPEC carrier. Is that normal?

A: Indeed, due to high precision 1.5GHz LVPECL Programmable Delay chips used on the board, indeed the FMC DEL board heats up.
The power consumption of the FMC DEL board is 7 Watt (200 mA from 12V, 1.5 A from 3V3). This, combined with the fact that plug-in cards in a PC are usually not well cooled makes the card run quite hot. Note that the FMC TDC board does not have these LVPECL components and does not run hot.

One user (AW) has seen a temperature reading of the sensor on the FMC DEL board of 1393 = 87.06 degrees C. When the number of fans in the PC were increased the temperature reading lowered to 1142 = 71 degrees C. On an industrial PC used at CERN we've seen even typical temperatures of 80-84 degrees. But on other PCs we have seen temperatures between 65 and 70 degrees C, without any specific cooling added.
For comparison, the FMC DEL board on a SVEC carrier in an VME crate runs typically at 65-68 degrees C as is shown in the Long Term test report. This was in a crate were no other cards were nearby and the front was completely left open. We've seen with another VME crate with a lot of fdelays in it (six SVECs in contiguous slots 7-12) temperatures between 39 and 68 degrees C.

We believe that temperature readings around 70 degrees are acceptable and will not have an impact to the lifetime of the card. Only when you switch on an off the card every day there may be an impact due to the thermal cycling effects.

Regarding the 70 degrees - it's a safe temperature for this card, measured in the hottest spot (LVPECL delay lines, rated to +85 degrees). More temperature sensitive components such as decoupling capacitors are at least 15 degrees cooler (tested with a thermal vision camera). The TDC and output stages are continuously temperature-calibrated, so it has little effect on jitter and delay stability. (update 18/6/14)

Q: Did you take the high temperature into account when designing this card?

A: The most sensitive component, where lifetime may be affected by the temperature are the tantalium capacitors. We have designed the board with high temperature tantalium capacitors (SANYO/Panasonic OSCON 16TQC10M, rated at 105 degrees). They have a lifetime of 63245 hours=2635 days when used at 75 degrees. This was in an early datasheet. Normal aluminium capacitors would have a lifetime four times as short. Likely the capacitors anyway have a temperature lower than the reading of the internal sensor.
The latest datasheet (May. 2014) Conductive Polymer Tantalum Solid Capacitors Poscap, Product catalog, pdf page 22 specifies 200,000h at 65 degrees and 20,000h at 85 degrees. Then again, it reads "Please contact Sanyo for TQC series". To be checked indeed.

Update 11 February 2014:

Received by mail the following info from Sanyo Panasonic regarding the life time of the 16TQC10M. 
Life time of 16TQC10M is as below;

105℃ x 2,000
80℃=11,313 hours (1.3 yr)
75℃=16,000 hours (1.8 yr)
70℃=22,627 hours (2.6 yr)
65℃=32,000 hours (3.7 yr)

These numbers are worse than expected and we may have a look into this (understand better what is the failure type, possibilities of replacing by other types).

See also Issue 931

Update 24 September 2014:

The solutions for temperature issues are discussed here

Q: How can I read the card's temperature?

A: The driver makes the temperature of it available for the user (fdelay_get_board_temp() API function and "temperature" ZIO attribute).
Or, you can use a simple script:

  morgana% grep temp lib/*h
  extern float fdelay_read_temperature(struct fdelay_board *b);

Q: I'd like to change the card's VCXO DAC value to fine-tune output pulse rate/frequency when not using White Rabbit. How can I do it?

A: We are sorry, but accessing the VCXO tune is not supported by the software. We will consider adding this feature in future releases.

Q: I'm using the card in the pulse generator mode and I'm setting the output pulse period to 99 ns. Measuring the output frequency shows no difference than when the output is set to 100 ns (10 MHz) period.

A: If output pulse width or spacing is less than 200 ns, the resolution is limited to 4 ns due to hardware constraints. For more info, look at section 3.4 of the Design Notes.

Q: I'm using lower period than in the previous question and adjusting it by 2 picoseconds. I see no difference in output frequency.

A: The output stage resolution is 10 ps.


Firmware

Q: How can I get and synthesise myself the gateware?

A: To download and compile all required modules, please run the following commands:

git clone git://ohwr.org/fmc-projects/fmc-delay-1ns-8cha/fine-delay-sw.git
cd fine-delay-sw
git submodule update --init
make

Q: The FMC DEL card doesn't seem to work and I see "EEPROM has no FRU information"

Q: I am trying to get started with fmc-fine-delay, but have no success.
I tried following the instructions in "Fine Delay User’s Manual" from February 2013.

Board is recognized:
$ lscpi
01:00.0 Non-VGA unclassified device: CERN/ECP/EDU Device 018d (rev 03)

on bootup "spec" is loaded, I see this without manually doing any insmod/modprobe:
$ dmesg
[ 8.088795] spec 0000:01:00.0: probe for device 0001:0000
[ 8.537652] spec 0000:01:00.0: got file "fmc/spec-init.bin", 1484404 (0x16a674) bytes
[ 8.728894] spec 0000:01:00.0: FPGA programming successful
[ 9.074281] spec 0000:01:00.0: mezzanine 0
[ 9.074292] EEPROM has no FRU information

Answer:
This is the way to solve it:
(put fdelay-eeprom.bin into /lib/firmware/fmc/fdelay-eeprom.bin)

sudo insmod fmc-bus/kernel/fmc-write-eeprom.ko busid=0x0100 file=fmc/fdelay-eeprom.bin
[ 3149.521002] fmc_write_eeprom fmc-0100: write_eeprom: success
sudo rmmod fmc_write_eeprom
sudo rmmod spec
sudo modprobe spec
[ 3201.611115] spec 0000:01:00.0: remove
[ 3204.599946] spec 0000:01:00.0: probe for device 0001:0000
[ 3204.604856] spec 0000:01:00.0: got file "fmc/spec-init.bin", 1484404 (0x16a674) bytes
[ 3204.796095] spec 0000:01:00.0: FPGA programming successful
[ 3205.145341] spec 0000:01:00.0: mezzanine 0
[ 3205.145348] Manufacturer: INCAA Computers BV
[ 3205.145351] Product name: FmcDelay1ns4cha
sudo modprobe fmc-fine-delay
[ 3242.665930] fmc_fine_delay FmcDelay1ns4cha-0100: fd_read_temp: Temperature 0x539 (12 bits: 83.562)
[ 3243.539197] fmc_fine_delay FmcDelay1ns4cha-0100: fd_calibrate_outputs: ch1: 8ns @811 (f 807, off 4, t 83.62)
[ 3243.647386] fmc_fine_delay FmcDelay1ns4cha-0100: fd_calibrate_outputs: ch2: 8ns @804 (f 807, off -3, t 83.62)
[ 3243.754771] fmc_fine_delay FmcDelay1ns4cha-0100: fd_calibrate_outputs: ch3: 8ns @787 (f 807, off -20, t 83.62)
[ 3243.862381] fmc_fine_delay FmcDelay1ns4cha-0100: fd_calibrate_outputs: ch4: 8ns @778 (f 807, off -29, t 83.62)
[ 3244.001824] fmc_fine_delay FmcDelay1ns4cha-0100: fmc_fine_delay: Found i2c device at 0x50
[ 3244.010605] spec 0000:01:00.0: Using interrupts for input

Q: Can you give me an idea of the Xilinx resources used in a typical application?

The SPEC uses the modestly sized XC6SLX45T. Typical resource use is given below.

FMC DEL 1ns 4cha
  • 29 % FF (16132)
  • 57 % LUTs (15801)
  • 77 % BRAMs (90 x RAMB16BWER, most of it used by the LM32 CPU in the WR Core)

Software

Q: What is the maximum impulse pulse rate that I can read out by software?

A: If you want to read out all the timestamps, with the current code (January 2014), people have been reading out signals with a repitition rate in the range of 30 kHz to 50 kHz, depending on the computer type. Possibly with optimisations in software this number could be made higher.
The hardware will continue to work and delay pulses up to a maximum input pulse rate of 1 MHz. It's just that the software to read out the timestamps is not able to follow.
You may find some more information in the mailing list archive. http://lists.ohwr.org/sympa/arc/white-rabbit-dev/2014-01/msg00011.html (you may need to click on "I'm not a spammer" and then retry the link). Note that this is on the mailing list of White Rabbit and not of the Fine Delay card.
Update 7/2/14: new software has been developed that can pull up to 150 k samples/second. Please check the fmc-delay-1ns-8cha mail archive.

Q: How to select between timer and interrupt mode?

A: This is done using the module parameter timer_ms

#interrupt mode
insmod fmc-fine-delay.ko timer_ms=0

# timer mode
insmod fmc-fine-delay.ko timer_ms=<any-value-greater-than-0>

This parameter set up the time to wait between each read of the hardware buffer. If you set timer_ms=0 you are enabling the interrupt mode because you are asking to the driver to read from the hardware buffer as soon as time-stamps are available. For any other value of timer_ms you are using the timer mode.

Q: What is the difference between timer and interrupt mode?

A: In interrupt mode the driver read from the hardware buffer as soon as time-stamps are available. This is what you want if your application needs to analyze data as soon as possible. On the other side the timer mode periodically reads the entire hardware buffer. You can configure the timer period using the kernel parameter timer_ms. So, the throughput rapidly converge to the same value for both modes.

Q: Interrupt or timer mode can affect the time-stamp precision?

No. The measurements are done by the hardware and then stored in its buffer. So, the accuracy of the measurements stays as precise, independent of the fact that the interrupts are enabled or not.

Q: The software does not detect any FMC DEL mezzanine, what to do?

A: There is not a specific answer to this question. What you can do is trying to diagnostic the problem; here a simple procedure.
  1. If you are using a SPEC carrier, check the SPEC compatibility table
  2. If you are using a SPEC carrier, run lspci and verify that you card is properly detected
  3. after driver loading, check if the driver recognized the SPEC+FD by looking in /sys/bus/zio/devices/. If you can see only the device with prefix hw-, then the driver didn't load the device
  4. look for driver's errors by using the command dmesg

If you can find/solve the problem by yourself you can us ask for support. Dump the output of points 2,3,4 in separate files and write to us.

Q: The driver fails initialization with "Error in GPIO communication (got 0x0, expected 0xaa)" message

A: Check the 3.3V and 12 V fuses on the SPEC/SVEC carrier.

Q: Installation of the driver fails with "fmc_fine_delay: Unknown symbol fmc_scan_sdb_tree (err -22)"

A: A diagnostic like "Unknown symbol fmc_*" indicates absence of the prerequisite module fmc.ko. Somehow, the build process for the modules has failed to produce fmc.ko, or fmc.ko has not been installed before the fine delay driver.

Correct build is even simpler than the general process described in the Fine Delay manual
(http://www.ohwr.org/attachments/1455/spec-sw-2012-07-24.pdf)
section 4.4 'Software installation'. The build system of today contains appropriate defaults, so that in most systems, a simple

$ make modules_install

will leave all the necessary modules in the proper subdirectories, e.g.:
pcbe13089:fine-delay-sw$ find /lib/modules/3.16.0-4-amd64/ -name fmc.ko                                                                                                                      
/lib/modules/3.16.0-4-amd64/extra/fmc.ko                      

After this, and possibly a depmod -a, modprobe of the module should work.


Erik van der Bij, Federico Vaga - 13 February 2017