| ECC1C 145-944-00

Conditioning Filter

Output conditioning filter system base ID: 0xD8

Output conditioning filter is a part of output conditioning stage of Signal flow. Stage can use up to four filter instances in series. Activation of filters is via mask of active filters, in system registers.

Loading filter coefficients uses simple protocol state machine:

- set register SELECT_FILTER_INSTANCE:0x01 with value (0, 1, 2, 3) as an index of filter instance
- set vector: INPUT_COEFF_COMM:0x00 - loading filter input samples coefficients OUTPUT_COEFF_COMM:0x01 - loading filter output samples coefficients
  - coefficients can be loaded in sequence of vectors up to 100 coefficient items
  - one vector is limited to max. 11 coefficients
- set register LOAD_FILTER_COEFF:0x02 with value (false:0/true:1)
  - value 0 - loads filter coefficients only, filter continue with running calculation
  - value 1 - erases filter internal status additionally, i.e. filter start from zero If any error appears during coefficients loading, protocol has to start from beginning.

Getting actual filter coefficients is possible by getting vector within recommended command sequence:

- set register SELECT_FILTER_INSTANCE:0x01 with value (0, 1, 2, 3) as an index of filter instance
- get register GET_IN_COEFF_NBR:0x03 - to get actual number of selected filter input coefficients GET_OUT_COEFF_NBR:0x04 - to get actual number of selected filter output coefficients
- get vector: INPUT_COEFF_COMM:0x00 - getting filter input samples coefficients OUTPUT_COEFF_COMM:0x01 - getting filter output samples coefficients
  - coefficients values can be uploaded in sequence of getting vectors up to 100 coefficient items
  - one vector is limited to max. 11 coefficients

Generic filter formula:

         1

y(k) = — * { SUM[i=0:i=n](b_i * x(k-i)) - SUM[j=1:j=m](a_j * y(k-j)) } a0

### Register Map:

Address | Name | Default | Description | Type | Access
--- | --- | --- | --- | --- | ---
0xD[8-F]00 | mskActiveFilters | 0.0 | mask of active filters | uint | read/write
0xD[8-F]01 | selectedFilterComm | 0 | select filter for coeff. reception | uint | read/write
0xD[8-F]02 | n/a | n/a | cmd: load coeff. to filter | uint | n/a
0xD[8-F]03 | inCoeffCommNbr | 1 | read selected filter input coeffs. | uint | read only
0xD[8-F]04 | outCoeffCommNbr | 1 | read selected filter output coeffs. | uint | read only
0xD[8-F]10 | inputValue | 0.0 | OCF input value | float | read only
0xD[8-F]1[1-4] | inputStatus[0] | 0.0 | input value of particular filter | float | read only
0xD[8-F]20 | outputValue | 0.0 | OCF output value | float | read only
0xD[8-F]2[1-4] | outputStatus[0] | 0.0 | output value of particular filter | float | read only

### Vector Map:

Address | Name | Default | Description | Type | Access
--- | --- | --- | --- | --- | ---
0xD[8-F]00 | inFilterCoeffComm | 0.0 | buffer of input coeffs from comm. | float array | read/write
0xD[8-F]01 | outFilterCoeffComm | 0.0 | buffer of output coeffs from comm. | float array | read/write