92 uint32_t tapCnt, blkCnt;
98 uint32_t uShift = ((uint32_t) S->
postShift + 1u);
99 uint32_t lShift = 32u - uShift;
103 pStateCurnt = &(S->
pState[(numTaps - 1u)]);
109 #ifndef ARM_MATH_CM0_FAMILY 116 *pStateCurnt++ = *pSrc++;
128 tapCnt = numTaps >> 2;
134 acc += ((
q63_t) (*px++)) * (*pb++);
137 acc += ((
q63_t) (*px++)) * (*pb++);
140 acc += ((
q63_t) (*px++)) * (*pb++);
143 acc += ((
q63_t) (*px++)) * (*pb++);
150 tapCnt = numTaps % 0x4u;
155 acc += ((
q63_t) (*px++)) * (*pb++);
163 acc_l = acc & 0xffffffff;
166 acc_h = (acc >> 32) & 0xffffffff;
168 acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
171 *pOut++ = (
q31_t) acc;
174 e = *pRef++ - (
q31_t) acc;
189 tapCnt = numTaps >> 2;
195 coef = (
q31_t) (((
q63_t) alpha * (*px++)) >> (32));
197 *pb = clip_q63_to_q31((
q63_t) * pb + (coef << 1u));
201 coef = (
q31_t) (((
q63_t) alpha * (*px++)) >> (32));
202 *pb = clip_q63_to_q31((
q63_t) * pb + (coef << 1u));
205 coef = (
q31_t) (((
q63_t) alpha * (*px++)) >> (32));
206 *pb = clip_q63_to_q31((
q63_t) * pb + (coef << 1u));
209 coef = (
q31_t) (((
q63_t) alpha * (*px++)) >> (32));
210 *pb = clip_q63_to_q31((
q63_t) * pb + (coef << 1u));
218 tapCnt = numTaps % 0x4u;
223 coef = (
q31_t) (((
q63_t) alpha * (*px++)) >> (32));
224 *pb = clip_q63_to_q31((
q63_t) * pb + (coef << 1u));
243 tapCnt = (numTaps - 1u) >> 2u;
248 *pStateCurnt++ = *pState++;
249 *pStateCurnt++ = *pState++;
250 *pStateCurnt++ = *pState++;
251 *pStateCurnt++ = *pState++;
258 tapCnt = (numTaps - 1u) % 0x4u;
263 *pStateCurnt++ = *pState++;
276 *pStateCurnt++ = *pSrc++;
293 acc += ((
q63_t) (*px++)) * (*pb++);
302 acc_l = acc & 0xffffffff;
305 acc_h = (acc >> 32) & 0xffffffff;
307 acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
309 *pOut++ = (
q31_t) acc;
312 e = *pRef++ - (
q31_t) acc;
332 coef = (
q31_t) (((
q63_t) alpha * (*px++)) >> (32));
333 *pb = clip_q63_to_q31((
q63_t) * pb + (coef << 1u));
352 tapCnt = (numTaps - 1u);
357 *pStateCurnt++ = *pState++;
int64_t q63_t
64-bit fractional data type in 1.63 format.
Instance structure for the Q31 LMS filter.
void arm_lms_q31(const arm_lms_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
Processing function for Q31 LMS filter.
int32_t q31_t
32-bit fractional data type in 1.31 format.