Texas Instruments MSP50C6xx User Manual
Page 189
Individual Instruction Descriptions
4-103
Assembly 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.