A Monitoring Algorithm for the TABs

updated: 10-Mar-03

Overview & Goals


Algorithm

Running Sum(Et) Calculation

  1. Parallelize serial input Et from ADFs ==> et_in[7..0]
  2. Delay et_in to keep in step with Et2 calculation
  3. et_in to n-deep delay register
  4. Subtract oldest Et from Sum(Et) register:
    sum_reg[31..0] - et_in_delay_n[7..0] ==> sum_sub[31..0]
  5. Update Sum(Et) register
    sum_sub[31..0] - et_in_delay_2[7..0] ==> sum_reg[31..0]

Running Sum(Et2) Calculation

  1. Parallelize serial input Et from ADFs ==> et_in[7..0]
  2. Multiply:
    et_in[7..0] x et_in[7..0] ==> et2_in[15..0]
  3. et2_in to n-deep delay register
  4. Subtract oldest Et2 from Sum(Et2) register:
    sum2_reg[31..0] - et2_in_delay_n[7..0] ==> sum2_sub[31..0]
  5. Update Sum(Et2) register
    sum2_sub[31..0] - et2_in_delay_2[7..0] ==> sum2_reg[31..0]

Running Average & RMS Calculation (if necessary)

  1. Note: this assumes n = 2x
  2. Average: Sum(Et) / n:
    ave = sum_reg[31..x]
    output ave[15..0]
  3. Average2: [Sum(Et)/n]2
    ave2[31..0] = sum_reg[15+x..x] x sum_reg[15+x..x]
  4. RMS: Sum(Et2)/n - <E>2
    rms = sum2_reg[31..x] - ave2[31..0]
    output rms[15..0]

Notes

  1. Types of Monitoring Requests
  2. Reading Out Running Sums Registers
    Delay registers should be cleared after information is transmitted to readout buffers.
  3. Truncation (for n = 8 BC's)