From 76177aa280494bb36d7a0bcbda1078d4db717020 Mon Sep 17 00:00:00 2001 From: Ali Labbene Date: Mon, 9 Dec 2019 11:25:19 +0100 Subject: Official ARM version: v4.5 --- ...arm_signal_converge_example_f32_8c-example.html | 319 +++++++++++++++++++++ 1 file changed, 319 insertions(+) create mode 100644 Documentation/DSP/html/arm_signal_converge_example_f32_8c-example.html (limited to 'Documentation/DSP/html/arm_signal_converge_example_f32_8c-example.html') diff --git a/Documentation/DSP/html/arm_signal_converge_example_f32_8c-example.html b/Documentation/DSP/html/arm_signal_converge_example_f32_8c-example.html new file mode 100644 index 0000000..6450350 --- /dev/null +++ b/Documentation/DSP/html/arm_signal_converge_example_f32_8c-example.html @@ -0,0 +1,319 @@ + + + + + +arm_signal_converge_example_f32.c +CMSIS-DSP: arm_signal_converge_example_f32.c + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-DSP +  Version 1.4.7 +
+
CMSIS DSP Software Library
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
arm_signal_converge_example_f32.c
+
+
+
/* ----------------------------------------------------------------------
+
* Copyright (C) 2010-2012 ARM Limited. All rights reserved.
+
*
+
* $Date: 17. January 2013
+
* $Revision: V1.4.0
+
*
+
* Project: CMSIS DSP Library
+
* Title: arm_signal_converge_example_f32.c
+
*
+
* Description: Example code demonstrating convergence of an adaptive
+
* filter.
+
*
+
* Target Processor: Cortex-M4/Cortex-M3
+
*
+
* Redistribution and use in source and binary forms, with or without
+
* modification, are permitted provided that the following conditions
+
* are met:
+
* - Redistributions of source code must retain the above copyright
+
* notice, this list of conditions and the following disclaimer.
+
* - Redistributions in binary form must reproduce the above copyright
+
* notice, this list of conditions and the following disclaimer in
+
* the documentation and/or other materials provided with the
+
* distribution.
+
* - Neither the name of ARM LIMITED nor the names of its contributors
+
* may be used to endorse or promote products derived from this
+
* software without specific prior written permission.
+
*
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
* POSSIBILITY OF SUCH DAMAGE.
+
* -------------------------------------------------------------------- */
+
+
#include "arm_math.h"
+
#include "math_helper.h"
+
+
/* ----------------------------------------------------------------------
+
** Global defines for the simulation
+
* ------------------------------------------------------------------- */
+
+
#define TEST_LENGTH_SAMPLES 1536
+
#define NUMTAPS 32
+
#define BLOCKSIZE 32
+
#define DELTA_ERROR 0.000001f
+
#define DELTA_COEFF 0.0001f
+
#define MU 0.5f
+
+
#define NUMFRAMES (TEST_LENGTH_SAMPLES / BLOCKSIZE)
+
+
/* ----------------------------------------------------------------------
+
* Declare FIR state buffers and structure
+
* ------------------------------------------------------------------- */
+
+ + +
+
/* ----------------------------------------------------------------------
+
* Declare LMSNorm state buffers and structure
+
* ------------------------------------------------------------------- */
+
+ + + +
+
+
/* ----------------------------------------------------------------------
+
* Function Declarations for Signal Convergence Example
+
* ------------------------------------------------------------------- */
+
+ +
+
+
/* ----------------------------------------------------------------------
+
* Internal functions
+
* ------------------------------------------------------------------- */
+ +
uint32_t blockSize);
+
+
void getinput(float32_t* input,
+
uint32_t fr_cnt,
+
uint32_t blockSize);
+
+
/* ----------------------------------------------------------------------
+
* External Declarations for FIR F32 module Test
+
* ------------------------------------------------------------------- */
+ + +
extern const float32_t FIRCoeff_f32[32];
+ +
+
/* ----------------------------------------------------------------------
+
* Declare I/O buffers
+
* ------------------------------------------------------------------- */
+
+ + + + +
+
/* ----------------------------------------------------------------------
+
* Signal converge test
+
* ------------------------------------------------------------------- */
+
+
int32_t main(void)
+
{
+
uint32_t i;
+ +
uint32_t index;
+
float32_t minValue;
+
+
/* Initialize the LMSNorm data structure */
+ +
+
/* Initialize the FIR data structure */
+ +
+
/* ----------------------------------------------------------------------
+
* Loop over the frames of data and execute each of the processing
+
* functions in the system.
+
* ------------------------------------------------------------------- */
+
+
for(i=0; i < NUMFRAMES; i++)
+
{
+
/* Read the input data - uniformly distributed random noise - into wire1 */
+
arm_copy_f32(testInput_f32 + (i * BLOCKSIZE), wire1, BLOCKSIZE);
+
+
/* Execute the FIR processing function. Input wire1 and output wire2 */
+
arm_fir_f32(&LPF_instance, wire1, wire2, BLOCKSIZE);
+
+
/* Execute the LMS Norm processing function*/
+
+
arm_lms_norm_f32(&lmsNorm_instance, /* LMSNorm instance */
+
wire1, /* Input signal */
+
wire2, /* Reference Signal */
+
wire3, /* Converged Signal */
+
err_signal, /* Error Signal, this will become small as the signal converges */
+
BLOCKSIZE); /* BlockSize */
+
+
/* apply overall gain */
+
arm_scale_f32(wire3, 5, wire3, BLOCKSIZE); /* in-place buffer */
+
}
+
+
status = ARM_MATH_SUCCESS;
+
+
/* -------------------------------------------------------------------------------
+
* Test whether the error signal has reached towards 0.
+
* ----------------------------------------------------------------------------- */
+
+ +
arm_min_f32(err_signal, BLOCKSIZE, &minValue, &index);
+
+
if (minValue > DELTA_ERROR)
+
{
+ +
}
+
+
/* ----------------------------------------------------------------------
+
* Test whether the filter coefficients have converged.
+
* ------------------------------------------------------------------- */
+
+ +
+ +
arm_min_f32(lmsNormCoeff_f32, NUMTAPS, &minValue, &index);
+
+
if (minValue > DELTA_COEFF)
+
{
+ +
}
+
+
/* ----------------------------------------------------------------------
+
* Loop here if the signals did not pass the convergence check.
+
* This denotes a test failure
+
* ------------------------------------------------------------------- */
+
+
if( status != ARM_MATH_SUCCESS)
+
{
+
while(1);
+
}
+
+
while(1); /* main function does not return */
+
}
+
+
+
+ + + + -- cgit