===============================================================================================
              keyword spotting algorithm on Cortex-M4 boards. 
===============================================================================================
Copyright(C) Redpine Signals 2016
All rights reserved by Redpine Signals.

This program should be used on your own responsibility.
Redpine Signals assumes no responsibility for any losses
incurred by customers or third parties arising from the use of this file. 

===============================================================================================

===============================================================================================                                                       
Function description:
===============================================================================================
This application demonstrate keyword spotting on cortex-M4 board by using Deep neural network or
depth-wise separable convolution neural network.
Here neural network trained for following keywords bed,alexa,bird,nine,off,happy,house,wow,three,six.
if user speak none of the above keyword then KWS detect word as unknown word.
In this application if user speak alexa then KWS will return the index value as 3.

Following pipeline enabled
MIC->OPAMP->ADC->VAD->UDMA(collect 1 second data)->KWS algorithm->Result(alexa detect or not).

Following configuration used in application 
MIC -> For mic used audio peripheral card,here mic output connect to ULP_GPIO6.
OPAMP ->Configure opamp1 in non-inverting mode,Here non-inverting input to opamp from ULP_GPIO6(mic output)
        and inverting input to opamp from ULP_GPIO7(Constant voltage VDD12 (1.2V)).Here opamp gain configured
		as 2.5
ADC -> ADC configured as below.
       ADC sampling frequency : 8ksps  
       ADC ping address       : 0x24060800 (ULPSS Bank1)  	   
       ADC pong address       : 0x24060BFF (ULPSS Bank2)
       ADC operation mode     : Internal DMA (collect 1023 samples in each ADC interrupt)
       ADC input type         : Differential ended
       Positive input select  : OPAMP1 output   	   
       Negative input select  : ULP_GPIO7(Constant voltage VDD12 (1.2V))
VAD ->VAD used ACF and ZCR algorithm to detect voice.
UDMA -> UDMA use for collect the 1 second ADC data after VAD detect.here ULP uDMA used for memory copy
        operation,Configured ULPSS BANK0 for uDMA descriptor(0x24060000)
Keyword Spotting algorithm : After collection of 1 second ADC data will process in KWS for spoke
                             word is alexa or not.		
===============================================================================================
Environment
===============================================================================================
Test Board:
---------------------
Smark EVK Rev1.4

Assistance software:
---------------------
None

===============================================================================================
Usage Procedure:
===============================================================================================
Connect MIC enabled audio peripheral card to RS14100 board and run the application.
===============================================================================================
Pass criteria:
===============================================================================================
After alexa word spoke from user KWS will run on RS14100 board 
if KWS detect word as alexa then this test is pass.
===============================================================================================

===============================================================================================
Note : 
1.DNN give good performance so recommend to use DNN module.   
===============================================================================================