Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • prescaling data by x amount over register
  • simulation of modules inside TimeToolCore.vhd
  • peak-finding (final parameters)
  • programming weights by axi-stream
  • emulate LCLS2 timing system in firmware
  • divide by the goosedelayed-minus-pedestal (use LUT?)
  • virtual evg. (should only require gui tweaks. check with ILA)
  • how to handle the git large files
  • get rid of gui
    • gui fully removed,
    • still need to make smart and stream line
  • programmable event-code & trigger delay (axi bus)
  • emulate epix model (send timestamp to front-end board. time stamp should be at the beginning of image packet.).  later:  maybe this isn't necessary because in future we would support camlink-over-fiber cameras with no front-end board?
  • save hdf5
  • full/deca mode (only 8 bit for deca or full)
  • get test stand in 901 working
  • start with Matt matched filter algorithm or Abdullah algorithm
  • feedback results to Joe Frisch as udp packets or accelerator-style-pgp
  • is 8-bits OK for deca? (answer: yes, for interferometry mode)
  • understand how system behaves at high rates (do we drop frames? timestamps correct?)
    • reuse matt's firmware for timestamping
    • add in LCLS2 timing (triggering)
    • send full signal to Matt
    • switch from python to C
    • think about running the camera all the time (to send feedback data continuously)
  • difference kc705  revisions 1.1 vs 1.2.:  no significant difference according to https://www.xilinx.com/support/answers/59751.html.  Either an FMC problem, or subtle timing issue, or need to specify board rev somehow when synthesizing?
  • interface to DRP?
  • new front-end boards
  • touch base with Ryan on code structure issues
  • prepare for running in LCLS-I?  If yes:
    • spy on the timestamp multicasts in software (maybe not necessary)
    • take real pictures with lens from Ryan
    • trigger delay and event-code programmable via AXI
    • eliminate gui and save hdf5
    • put all setup commands in python script
    • do we need feedback for laser? (no)
    • run at 120Hz  overnight and validate
  • resolve vhdl axi-lite offset constants

...

  • Giacomo is doing spatial, Ryan is spectral (roughly speaking)
    • both are interferometric, so the background we had in LCLS1 is mostly gone, but still have some background from stray light, for example
  • Formula that should work for both:  (S-B)/(S(goosedelayed)-B(delayed)). (note: division is similar to normalized subtraction:  (S-GB)/G B = (S/GB)-1
  • B is different for S and S(goosedelayed) (background at time goose "delayed" is taken)
  • Giacomo thinks we won't need the Goose "delayed" subtraction/division for 80% of the experiments
  • Giacomo will ensure that we run in a regime where (S(goosedelayed)-B(delayed)) is not close to zero
  • sxrx34917 (being analyzed by Giacomo and Stefan Droste).  this data is "zoomed out" in the time dimension, but will be more zoomed-in for LCLS-II.
  • S(goosedelayed) comes from moving the laser out of the time window, and is done "offline" according to Giacomo every few hours
  • Giacomo wants a fit to the minimum of dI/dt (derivative of I-B) to a parabola
  • Giacomo thinks that the feedback will be slower (millisecond level).  Contradicts what we learned before where Joe Frisch was going to do fpga stuff with the laser-locking system
  • algorithm should be same for spatial/spectral
  • Giacomo wants a way to look at S-Goose when Delay when the timing edge is out of the window.  Tells them if it's on the "right" or the "left".
  • Questions for Giacomo:
    • the edge looks big in sxrx34917, do we definitely need to divide? Answer: no, as long as we can set an ROI.  i.e. don't need
    • does the goose contain "delayed" contain background from stray light, for example?  Answer:  goose is "delayed" is the pump laser delayed off the end of the camera image
    • is B just pedestal, or does B include laser-pump?  If it's laser-pump, do we need to use IIR to compute B?  Answer:  B is remaining background (same as LCLS-I) not eliminated by interferometric approach.
    • do we use the same B in the numerator/denominator?  Answer: no

Conversation with Ben Reese (2/13/20)

feb fpga version on feb. 13 2020:
ClinkFebPgp2b_1ch built Tue 16 Jul 2019 10:39:15 AM PDT by ruckman on rdsrv222

_TimeToolKcu1500Root.py has register settings
https://github.com/slaclab/lcls2-timetool/blob/master/software/config/config_20200207_152212.yml

ConfigureXpmMiniSim
TimingRx->TimingPhyMonitor->UseMiniTpg (selects minitpg)
(check clock freq's under TimingPhyMonitor)
switching to real timing need an xpm txreset: see this as RxClkFreq not being the same at TxClkFreq
pipelinedepthfids=90
config_l0_select_ratesel=0x7
7 = 1Hz
5 or 4 is 100Hz
confg_l0_select_enabled=1 starts triggers
TriggerEventManager->TriggerEventBuffer[0]
- has l0 counts
- has xpmpause/xpmoverflow (too much data). xpmoverflow is a sign backpressure not working well enough: reduce pausethreshold. xpmoverflow is latched version of fifooverflow. permanently latch deadtime. needs a clearreadout to reset.
- missing clearreadout going to front end board
- pausethreshold sets when to send deadtime to XPM
XpmMessageCount increments @1MHz
clinkfeb[0]->->clinktop->trigcontrol[0] has a trigger rate
TriggerEventManager->TriggerEventBuffer[0]->masterenable enables triggers going to frontend
TriggerEventManager->TriggerEventBuffer[0]->eventbufferenable enables the fifo that receives the timing frames (and sends the\
m to the batcher eb)
mostly masterenable/eventbufferenable should go together?
eventbufferenable first, masterenable second

xpmmini is only partition(rog) 0.

to switch to realxpm:
- Kcu1500Hsio->TimingRx->ConfigLclsTimingV2
- toggle UseMiniTpg to false

watch kcu1500hsio->timingrx->timingframerx->RxDown (resets to 0 on ConfigLclsTimingV2, latches when link drops)

todo:
- clear readout (workaround TimeToolKcu1500->Application->AppLane[0]->EventBuilder->Blowoff)
- trigger 10us feedback
- edge calculation