FILTER - Filter

The filter block has two different modes of operation: Difference and Average. They both work by latching the values on the input and performing an operation comparing to the current value.

Fields

Name Type Description
ENABLE bit_mux Enable event
TRIG bit_mux Trigger event
INP pos_mux Input data
MODE param enum
Select operation mode
0 difference
1 average
READY bit_out Output Ready
OUT pos_out Output data
HEALTH read enum
Error
0 OK
1 Accumulator overflow
2 Divider retrigger

Difference

The difference operation works by latching the value on the input on the rising edge of the Enable signal. On a rising edge of the trigger signal the output is given as the the current input value minus the latched value.

(Source code, png, hires.png, pdf)

../_images/filter_doc-1.png

After the operation, the latched value is updated to be the current value on the input.

(Source code, png, hires.png, pdf)

../_images/filter_doc-2.png

The operation continues to work if the current value is less than the latched value: a negative result is outputted

(Source code, png, hires.png, pdf)

../_images/filter_doc-3.png

Average

The average function appends a sum value on each clock pulse. When a trigger signal is received it divides the summed value by the number of clock pulses that have passed.

(Source code, png, hires.png, pdf)

../_images/filter_doc-4.png

(Source code, png, hires.png, pdf)

../_images/filter_doc-5.png

(Source code, png, hires.png, pdf)

../_images/filter_doc-6.png

If a calculation is triggered before the calculation is ready, the system will show an error on the HEALTH output and will then need to be re-enabled before another calculation can be sent.

(Source code, png, hires.png, pdf)

../_images/filter_doc-7.png

(Source code, png, hires.png, pdf)

../_images/filter_doc-8.png