Individual Instruction Descriptions
4-103Assembly Language Instructions
4.14.19 FIRK FIR Filter Function (Coefficients in ROM)
Syntax
[label] name dest, src Clock, clk Word, w With RPT, clk Class
FIRK An, *Rx 2 1 2(n
R
+2) 9a
Execution With RPT N–2:
(mask interrupts)
RPT counter = N–2
MR = h[0] = first filter coefficient
x = sample data pointed by Rx
even
h[1] = second filter coefficient pointed by DP
y = result stored in three consecutive accumulators (32 bit) pointed by An
[between every accumulation}
IF TAG = 1
Rx
even
= Rx
even
+ R5 {for circular buffering}
ELSE
Rx
even
++ { if Rx++ is specified in the instruction}
ENDIF
PC ⇐ PC + 1
{final result}
y
k 0..N–1
h[k] · x[N–1–k]
(Execution is detailed in section 4.11)
Flags Affected None
Opcode
Instructions 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FIRK An, *Rx 1 1 1 0 1 0 0 An 0 0 0 Rx 1 1
Description Finite impluse response (FIR) filter. Execute finite impulse response filter taps
using coefficients from program memory and samples from data memory.
Address reference for data memory is indirect using specified Rx and address
reference for program memory is contained in DP register.
This instruction must be used with RPT instruction. When used with the repeat
counter it will execute 16 × 16 multiplication between indirect addressed data
memory buffer and program memory (coef), 32-bit accumulation, and circular
buffer operation. Each tap executes in 2 cycles. See section 4.11 for more
detail on the setup of coefficents and sample data. Selected register Rx must
be even. During FIRK execution, interrupts are queued.
See Also RPT, FIR, COR, CORK
Example 4.14.19.1 RPT 0
FIRK A0, *R0
Computes the calculation for 2 tap FIR filter with 32 bit accumulation. See section 4.11 for more detail
on the setup of coefficients and sample data.