When using a window-API for instance, the window buffer must fit into a 32 kByte memory bank, and because this includes the margin, it limits the maximum window size. Therefore, it also indirectly sets an upper limit on TP_FIR_LEN
.
In addition, the single_buffer() constraint is needed to implement window buffers of > 16 kB. For more details, refer to: Single Buffer Constraint.
As a guide, a single rate symmetric FIR can support up to:
- 8k for 16-bit data, i.e., int16 data
- 4k for 32-bit data, i.e., cint16, int32, float
- 2k for 64-bit data, i.e., cint32, cfloat
Another limiting factor when considering an implementation of a high order FIRs is the Program Memory and sysmem requirements.
Increasing the FIR length requires greater amounts of heap and stack memory to store coefficients. Program Memory footprint also increases as the number of instructions grows.
As a result, a single FIR kernel can only support a limited amount of coefficients. Longer FIRs have to be split up into a design consisting of multiple FIR kernels using the
TP_CASC_LEN
parameter.