Renamed SDF to Compute Graph - Static Flow

Updated examples.
pull/53/head
Christophe Favergeon 4 years ago
parent a11e026e4f
commit 8e4c71fd0d

@ -8,7 +8,7 @@
<url>https://www.keil.com/pack/</url>
<releases>
<release version="0.0.0">
<release version="1.12.0">
Active development ...
</release>
</releases>
@ -49,7 +49,7 @@
<components>
<!-- CMSIS-DSP component -->
<component Cclass="CMSIS" Cgroup="DSP" Cvariant="Source" Cversion="0.0.0" isDefaultVariant="true" condition="CMSISCORE">
<component Cclass="CMSIS" Cgroup="DSP" Cvariant="Source" Cversion="1.12.0" isDefaultVariant="true" condition="CMSISCORE">
<description>CMSIS-DSP Library for Cortex-M and Cortex-A</description>
<files>
<!-- CPU independent -->
@ -105,12 +105,12 @@
</files>
</component>
<component Cclass="CMSIS" Cgroup="DSP" Csub="Synchronous Dataflow" Cvariant="Source" Cversion="0.0.0" isDefaultVariant="true" condition="CMSISDSPLIB">
<description>CMSIS-DSP Synchronous Dataflow (SDF)</description>
<component Cclass="CMSIS" Cgroup="DSP" Csub="Compute Graph Static Flow" Cversion="1.12.0" isDefaultVariant="true" condition="CMSISDSPLIB">
<description>CMSIS-DSP Compute Graph - Static Flow</description>
<files>
<file category="header" name="SDFTools/sdf/src/GenericNodes.h"/>
<file category="include" name="SDFTools/sdf/nodes/cpp/"/>
<file category="include" name="SDFTools/sdf/src/"/>
<file category="header" name="ComputeGraph/cg/static/src/GenericNodes.h"/>
<file category="include" name="ComputeGraph/cg/static/nodes/cpp/"/>
<file category="include" name="ComputeGraph/cg/static/src/"/>
</files>
</component>
</components>

@ -59,11 +59,11 @@
// </e>
// <q> SDF_VHT_TX_RX_ORDERING: Force TX RX ordering
#define SDF_VHT_TX_RX_ORDERING 0
// <q> CGSTATIC_VHT_TX_RX_ORDERING: Force TX RX ordering
#define CGSTATIC_VHT_TX_RX_ORDERING 0
// <<< end of configuration section >>>
#define SDF_AUDIO_CONFIG
#define CGSTATIC_AUDIO_CONFIG
#endif

@ -13,12 +13,12 @@
// <<< end of configuration section >>>
#if defined(SDF_AUDIO_CONFIG)
#if defined(CGSTATIC_AUDIO_CONFIG)
#define RING_BUFSIZE_RX (AUDIO_DRV_NBSAMPLES_RX * AUDIO_DRV_NBCHANNELS_RX * AUDIO_DRV_CHANNEL_ENCODING_RX)
#define RING_BUFSIZE_TX (AUDIO_DRV_NBSAMPLES_TX * AUDIO_DRV_NBCHANNELS_TX * AUDIO_DRV_CHANNEL_ENCODING_TX)
#endif
#if defined(SDF_VIDEO_CONFIG)
#if defined(CGSTATIC_VIDEO_CONFIG)
#define RING_BUFSIZE_RX (VIDEO_DRV_WIDTH * VIDEO_DRV_HEIGHT * VIDEO_DRV_PIXEL_SIZE)
#define RING_BUFSIZE_TX 0
#endif

@ -30,6 +30,6 @@
// <<< end of configuration section >>>
#define SDF_VIDEO_CONFIG
#define CGSTATIC_VIDEO_CONFIG
#endif

@ -1,6 +1,6 @@
# RingBuffer
It is a way to connect the SDF graph to an audio source or sink.
It is a way to connect the compute graph with static flow to an audio source or sink.
The node part is implemented in the AudioSource and AudioSink parts.

@ -1,7 +1,7 @@
/* ----------------------------------------------------------------------
* Project: CMSIS DSP Library
* Title: RingBuffer.h
* Description: Ring buffer to connect the SDF to audio sources and sinks
* Description: Ring buffer to connect the compute graph with static flow to audio sources and sinks
*
* $Date: 30 July 2021
* $Revision: V1.10.0

@ -38,7 +38,7 @@ extern ring_config_t ringConfigRX;
#ifdef __FVP_PY
__attribute__((section(".ARM.__at_0x90000000")))
#endif
#if SDF_VHT_TX_RX_ORDERING
#if CGSTATIC_VHT_TX_RX_ORDERING
__ALIGNED(16) static uint8_t dmaRX[AUDIO_BLOCK_SIZE_RX];
int rxCount=0;
#endif
@ -52,7 +52,7 @@ extern ring_config_t ringConfigTX;
#ifdef __FVP_PY
__attribute__((section(".ARM.__at_0x9FFF0000")))
#endif
#if SDF_VHT_TX_RX_ORDERING
#if CGSTATIC_VHT_TX_RX_ORDERING
__ALIGNED(16) static uint8_t dmaTX[AUDIO_BLOCK_SIZE_TX];
int txCount=0;
#endif
@ -84,7 +84,7 @@ static void AudioEvent (uint32_t event) {
if (event & AUDIO_DRV_EVENT_RX_DATA)
{
#if SDF_VHT_TX_RX_ORDERING
#if CGSTATIC_VHT_TX_RX_ORDERING
memcpy(reservedBufRX,dmaRX,RING_BUFSIZE_RX);
(void)AudioDrv_Control(AUDIO_DRV_CONTROL_RX_DISABLE);
(void)AudioDrv_Control(AUDIO_DRV_CONTROL_TX_ENABLE);
@ -99,7 +99,7 @@ static void AudioEvent (uint32_t event) {
#if AUDIO_DRV_TX_ENABLED
if (event & AUDIO_DRV_EVENT_TX_DATA)
{
#if SDF_VHT_TX_RX_ORDERING
#if CGSTATIC_VHT_TX_RX_ORDERING
memcpy(dmaTX,reservedBufTX,RING_BUFSIZE_TX);
(void)AudioDrv_Control(AUDIO_DRV_CONTROL_TX_DISABLE);
(void)AudioDrv_Control(AUDIO_DRV_CONTROL_RX_ENABLE);
@ -135,7 +135,7 @@ int32_t AudioDrv_Setup(void) {
int reservedRX=ringInterruptReserveBuffer(&ringConfigRX);
reservedBufRX=ringGetBufferAddress(&ringConfigRX,reservedRX);
#if SDF_VHT_TX_RX_ORDERING
#if CGSTATIC_VHT_TX_RX_ORDERING
ret = AudioDrv_SetBuf(AUDIO_DRV_INTERFACE_RX,
dmaRX, 1,AUDIO_BLOCK_SIZE_RX);
#else
@ -146,7 +146,7 @@ int32_t AudioDrv_Setup(void) {
return ret;
}
#if !SDF_VHT_TX_RX_ORDERING
#if !CGSTATIC_VHT_TX_RX_ORDERING
ret = AudioDrv_Control(AUDIO_DRV_CONTROL_RX_ENABLE);
if (ret != 0) {
return ret;
@ -177,7 +177,7 @@ int32_t AudioDrv_Setup(void) {
int reservedTX=ringInterruptReserveBuffer(&ringConfigTX);
reservedBufTX=ringGetBufferAddress(&ringConfigTX,reservedTX);
#if SDF_VHT_TX_RX_ORDERING
#if CGSTATIC_VHT_TX_RX_ORDERING
ret = AudioDrv_SetBuf(AUDIO_DRV_INTERFACE_TX,
dmaTX, 1 ,AUDIO_BLOCK_SIZE_TX);
#else

@ -1,7 +1,7 @@
/* ----------------------------------------------------------------------
* Project: CMSIS DSP Library
* Title: Sched.h
* Description: C++ support templates for the SDF scheduler
* Description: C++ support templates for the compute graph with static scheduler
*
* $Date: 29 July 2021
* $Revision: V1.10.0
@ -383,7 +383,7 @@ public:
};
#if !defined(CHECKERROR)
#define CHECKERROR if (sdfError < 0) \
#define CHECKERROR if (cgStaticError < 0) \
{\
break;\
}

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

@ -26,13 +26,13 @@ function(sdf TARGET)
target_sources(${TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/generated/scheduler.cpp)
endfunction()
set(SDFDIR ${CMAKE_CURRENT_SOURCE_DIR}/../sdf)
set(CGSTATICDIR ${CMAKE_CURRENT_SOURCE_DIR}/../cg/static)
set(DSP ${CMAKE_CURRENT_SOURCE_DIR}/../..)
function(add_sdf_dir TARGET)
target_include_directories(${TARGET} PRIVATE ${SDFDIR}/src)
target_include_directories(${TARGET} PRIVATE ${SDFDIR}/nodes/cpp)
target_include_directories(${TARGET} PRIVATE ${CGSTATICDIR}/src)
target_include_directories(${TARGET} PRIVATE ${CGSTATICDIR}/nodes/cpp)
target_include_directories(${TARGET} PRIVATE ${CMSISCORE})
target_include_directories(${TARGET} PRIVATE ${DSP}/Include)
endfunction()

@ -1,6 +1,6 @@
/*
Generated with CMSIS-DSP SDF Scripts.
Generated with CMSIS-DSP Compute Graph Scripts.
The generated code is not covered by CMSIS-DSP license.
The support classes and code is covered by CMSIS-DSP license.
@ -31,7 +31,7 @@ float32_t buf1[BUFFERSIZE1]={0};
uint32_t scheduler(int *error,int someVariable)
{
int sdfError=0;
int cgStaticError=0;
uint32_t nbSchedule=0;
int32_t debugCounter=1;
@ -49,47 +49,47 @@ uint32_t scheduler(int *error,int someVariable)
Source<float32_t,5> source(fifo0);
/* Run several schedule iterations */
while((sdfError==0) && (debugCounter > 0))
while((cgStaticError==0) && (debugCounter > 0))
{
/* Run a schedule iteration */
sdfError = source.run();
cgStaticError = source.run();
CHECKERROR;
sdfError = source.run();
cgStaticError = source.run();
CHECKERROR;
sdfError = filter.run();
cgStaticError = filter.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = source.run();
cgStaticError = source.run();
CHECKERROR;
sdfError = filter.run();
cgStaticError = filter.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = source.run();
cgStaticError = source.run();
CHECKERROR;
sdfError = source.run();
cgStaticError = source.run();
CHECKERROR;
sdfError = filter.run();
cgStaticError = filter.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = source.run();
cgStaticError = source.run();
CHECKERROR;
sdfError = filter.run();
cgStaticError = filter.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = source.run();
cgStaticError = source.run();
CHECKERROR;
sdfError = filter.run();
cgStaticError = filter.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
debugCounter--;
nbSchedule++;
}
*error=sdfError;
*error=cgStaticError;
return(nbSchedule);
}

@ -1,6 +1,6 @@
/*
Generated with CMSIS-DSP SDF Scripts.
Generated with CMSIS-DSP Compute Graph Scripts.
The generated code is not covered by CMSIS-DSP license.
The support classes and code is covered by CMSIS-DSP license.

@ -1,4 +1,4 @@
from cmsisdsp.sdf.scheduler import *
from cmsisdsp.cg.static.scheduler import *
### Define new types of Nodes

@ -1,6 +1,7 @@
digraph structs {
node [shape=plaintext]
rankdir=LR
@ -31,17 +32,17 @@ source [label=<
source:i -> filter:i [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >7</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >5</FONT>
</TD></TR></TABLE>>,label="f32(11)"]
source:i -> filter:i [label="f32(11)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >7</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >5</FONT>
</TD></TR></TABLE>>]
filter:i -> sink:i [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >5</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >5</FONT>
</TD></TR></TABLE>>,label="f32(5)"]
filter:i -> sink:i [label="f32(5)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >5</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >5</FONT>
</TD></TR></TABLE>>]
}

@ -1,6 +1,6 @@
/*
Generated with CMSIS-DSP SDF Scripts.
Generated with CMSIS-DSP Compute Graph Scripts.
The generated code is not covered by CMSIS-DSP license.
The support classes and code is covered by CMSIS-DSP license.

@ -1,4 +1,4 @@
from cmsisdsp.sdf.scheduler import *
from cmsisdsp.cg.static.scheduler import *
AUDIO_INTERRUPT_LENGTH = 160

@ -1,6 +1,7 @@
digraph structs {
node [shape=plaintext]
rankdir=LR
@ -116,62 +117,61 @@ srcDelay [label=<
</TABLE>>];
src:i -> srcDelay:i [taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >320</FONT>
src:i -> srcDelay:i [label="",taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >320</FONT>
</TD></TR></TABLE>>]
srcDelay:i -> toMono:i [label="f32(330)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >320</FONT>
</TD></TR></TABLE>>]
toMono:o1 -> arm_scale_f321:ia [label="f32(160)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>]
toMono:o2 -> arm_scale_f322:ia [label="f32(160)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>]
arm_scale_f321:o -> arm_add_f321:ia [label="f32(160)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>]
srcDelay:i -> toMono:i [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >320</FONT>
</TD></TR></TABLE>>,label="f32(330)"]
toMono:o1 -> arm_scale_f321:ia [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,label="f32(160)"]
toMono:o2 -> arm_scale_f322:ia [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,label="f32(160)"]
arm_scale_f321:o -> arm_add_f321:ia [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,label="f32(160)"]
arm_scale_f322:o -> arm_add_f321:ib [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,label="f32(160)"]
arm_add_f321:o -> audioWin:i [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >320</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>,label="f32(320)"]
audioWin:i -> mfcc:i [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >640</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >640</FONT>
</TD></TR></TABLE>>,label="f32(640)"]
mfcc:i -> mfccWind:i [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >250</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >10</FONT>
</TD></TR></TABLE>>,label="f32(250)"]
mfccWind:i -> TFLite:i [headlabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >500</FONT>
</TD></TR></TABLE>>,taillabel=<
<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >500</FONT>
</TD></TR></TABLE>>,label="f32(500)"]
arm_scale_f322:o -> arm_add_f321:ib [label="f32(160)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>]
arm_add_f321:o -> audioWin:i [label="f32(320)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >320</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >160</FONT>
</TD></TR></TABLE>>]
audioWin:i -> mfcc:i [label="f32(640)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >640</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >640</FONT>
</TD></TR></TABLE>>]
mfcc:i -> mfccWind:i [label="f32(250)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >250</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >10</FONT>
</TD></TR></TABLE>>]
mfccWind:i -> TFLite:i [label="f32(500)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >500</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >500</FONT>
</TD></TR></TABLE>>]
HALF [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">

@ -1,6 +1,6 @@
/*
Generated with CMSIS-DSP SDF Scripts.
Generated with CMSIS-DSP Compute Graph Scripts.
The generated code is not covered by CMSIS-DSP license.
The support classes and code is covered by CMSIS-DSP license.
@ -55,7 +55,7 @@ float32_t buf7[BUFFERSIZE7]={0};
uint32_t scheduler(int *error)
{
int sdfError=0;
int cgStaticError=0;
uint32_t nbSchedule=0;
int32_t debugCounter=40;
@ -84,12 +84,12 @@ uint32_t scheduler(int *error)
ToReal<float32_t,512,float32_t,256> toReal(fifo5,fifo6);
/* Run several schedule iterations */
while((sdfError==0) && (debugCounter > 0))
while((cgStaticError==0) && (debugCounter > 0))
{
/* Run a schedule iteration */
sdfError = src.run();
cgStaticError = src.run();
CHECKERROR;
sdfError = audioWin.run();
cgStaticError = audioWin.run();
CHECKERROR;
{
float32_t* i0;
@ -97,22 +97,22 @@ uint32_t scheduler(int *error)
i0=fifo1.getReadBuffer(256);
o2=fifo2.getWriteBuffer(256);
arm_mult_f32(i0,HANN,o2,256);
sdfError = 0;
cgStaticError = 0;
}
CHECKERROR;
sdfError = toCmplx.run();
cgStaticError = toCmplx.run();
CHECKERROR;
sdfError = cfft.run();
cgStaticError = cfft.run();
CHECKERROR;
sdfError = icfft.run();
cgStaticError = icfft.run();
CHECKERROR;
sdfError = toReal.run();
cgStaticError = toReal.run();
CHECKERROR;
sdfError = audioOverlap.run();
cgStaticError = audioOverlap.run();
CHECKERROR;
sdfError = src.run();
cgStaticError = src.run();
CHECKERROR;
sdfError = audioWin.run();
cgStaticError = audioWin.run();
CHECKERROR;
{
float32_t* i0;
@ -120,18 +120,18 @@ uint32_t scheduler(int *error)
i0=fifo1.getReadBuffer(256);
o2=fifo2.getWriteBuffer(256);
arm_mult_f32(i0,HANN,o2,256);
sdfError = 0;
cgStaticError = 0;
}
CHECKERROR;
sdfError = toCmplx.run();
cgStaticError = toCmplx.run();
CHECKERROR;
sdfError = cfft.run();
cgStaticError = cfft.run();
CHECKERROR;
sdfError = icfft.run();
cgStaticError = icfft.run();
CHECKERROR;
sdfError = toReal.run();
cgStaticError = toReal.run();
CHECKERROR;
sdfError = audioWin.run();
cgStaticError = audioWin.run();
CHECKERROR;
{
float32_t* i0;
@ -139,29 +139,29 @@ uint32_t scheduler(int *error)
i0=fifo1.getReadBuffer(256);
o2=fifo2.getWriteBuffer(256);
arm_mult_f32(i0,HANN,o2,256);
sdfError = 0;
cgStaticError = 0;
}
CHECKERROR;
sdfError = toCmplx.run();
cgStaticError = toCmplx.run();
CHECKERROR;
sdfError = cfft.run();
cgStaticError = cfft.run();
CHECKERROR;
sdfError = icfft.run();
cgStaticError = icfft.run();
CHECKERROR;
sdfError = audioOverlap.run();
cgStaticError = audioOverlap.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = toReal.run();
cgStaticError = toReal.run();
CHECKERROR;
sdfError = audioOverlap.run();
cgStaticError = audioOverlap.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
debugCounter--;
nbSchedule++;
}
*error=sdfError;
*error=cgStaticError;
return(nbSchedule);
}

@ -1,6 +1,6 @@
/*
Generated with CMSIS-DSP SDF Scripts.
Generated with CMSIS-DSP Compute Graph Scripts.
The generated code is not covered by CMSIS-DSP license.
The support classes and code is covered by CMSIS-DSP license.

@ -1,6 +1,6 @@
import numpy as np
from cmsisdsp.sdf.scheduler import *
from cmsisdsp.cg.static.scheduler import *
FS=16000

@ -0,0 +1,143 @@
digraph structs {
node [shape=plaintext]
rankdir=LR
edge [arrowsize=0.5]
fontname="times"
arm_mult_f321 [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD PORT="ia"><FONT POINT-SIZE="9.0">ia</FONT></TD>
<TD ALIGN="CENTER" ROWSPAN="2">arm_mult_f32<BR/>(CMSIS-DSP)</TD>
<TD PORT="o"><FONT POINT-SIZE="9.0">o</FONT></TD>
</TR>
<TR>
<TD PORT="ib"><FONT POINT-SIZE="9.0">ib</FONT></TD>
<TD></TD></TR>
</TABLE>>];
audioOverlap [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">audioOverlap<BR/>(OverlapAdd)</TD>
</TR>
</TABLE>>];
audioWin [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">audioWin<BR/>(SlidingBuffer)</TD>
</TR>
</TABLE>>];
cfft [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">cfft<BR/>(CFFT)</TD>
</TR>
</TABLE>>];
icfft [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">icfft<BR/>(ICFFT)</TD>
</TR>
</TABLE>>];
sink [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">sink<BR/>(FileSink)</TD>
</TR>
</TABLE>>];
src [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">src<BR/>(FileSource)</TD>
</TR>
</TABLE>>];
toCmplx [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">toCmplx<BR/>(ToComplex)</TD>
</TR>
</TABLE>>];
toReal [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">toReal<BR/>(ToReal)</TD>
</TR>
</TABLE>>];
src:i -> audioWin:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >128</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >192</FONT>
</TD></TR></TABLE>>]
audioWin:i -> arm_mult_f321:ia [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>]
arm_mult_f321:o -> toCmplx:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>]
toCmplx:i -> cfft:i [label="f32(512)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>]
cfft:i -> icfft:i [label="f32(512)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>]
icfft:i -> toReal:i [label="f32(512)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>]
toReal:i -> audioOverlap:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>]
audioOverlap:i -> sink:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >192</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >128</FONT>
</TD></TR></TABLE>>]
HANN [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">HANN</TD>
</TR>
</TABLE>>];
HANN:i -> arm_mult_f321:ib
}

@ -25,12 +25,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
############################################
from cmsisdsp.sdf.nodes.simu import *
from cmsisdsp.cg.static.nodes.simu import *
from custom import *
from cmsisdsp.sdf.nodes.host.FileSink import *
from cmsisdsp.sdf.nodes.host.FileSource import *
from cmsisdsp.sdf.nodes.CFFT import *
from cmsisdsp.sdf.nodes.ICFFT import *
from cmsisdsp.sdf.nodes.ToComplex import *
from cmsisdsp.sdf.nodes.ToReal import *
from cmsisdsp.cg.static.nodes.host.FileSink import *
from cmsisdsp.cg.static.nodes.host.FileSource import *
from cmsisdsp.cg.static.nodes.CFFT import *
from cmsisdsp.cg.static.nodes.ICFFT import *
from cmsisdsp.cg.static.nodes.ToComplex import *
from cmsisdsp.cg.static.nodes.ToReal import *

@ -1,6 +1,6 @@
import numpy as np
from cmsisdsp.sdf.scheduler import *
from cmsisdsp.cg.static.scheduler import *
FS=16000

@ -1,5 +1,5 @@
#
# Generated with CMSIS-DSP SDF Scripts.
# Generated with CMSIS-DSP Compute Graph Scripts.
# The generated code is not covered by CMSIS-DSP license.
#
# The support classes and code is covered by CMSIS-DSP license.
@ -10,7 +10,7 @@ import sys
import numpy as np
import cmsisdsp as dsp
from cmsisdsp.sdf.nodes.simu import *
from cmsisdsp.cg.static.nodes.simu import *
from appnodes import *
from custom import *
@ -71,7 +71,7 @@ for i in range(FIFOSIZE7):
def scheduler(dispbuf):
sdfError=0
cgStaticError=0
nbSchedule=0
debugCounter=42
@ -99,99 +99,99 @@ def scheduler(dispbuf):
toCmplx = ToComplex(256,512,fifo2,fifo3)
toReal = ToReal(512,256,fifo5,fifo6)
while((sdfError==0) and (debugCounter > 0)):
while((cgStaticError==0) and (debugCounter > 0)):
nbSchedule = nbSchedule + 1
sdfError = src.run()
if sdfError < 0:
cgStaticError = src.run()
if cgStaticError < 0:
break
sdfError = audioWin.run()
if sdfError < 0:
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
i0=fifo1.getReadBuffer(256)
o2=fifo2.getWriteBuffer(256)
o2[:]=dsp.arm_mult_f32(i0,HANN)
sdfError = 0
cgStaticError = 0
if sdfError < 0:
if cgStaticError < 0:
break
sdfError = toCmplx.run()
if sdfError < 0:
cgStaticError = toCmplx.run()
if cgStaticError < 0:
break
sdfError = cfft.run()
if sdfError < 0:
cgStaticError = cfft.run()
if cgStaticError < 0:
break
sdfError = icfft.run()
if sdfError < 0:
cgStaticError = icfft.run()
if cgStaticError < 0:
break
sdfError = toReal.run()
if sdfError < 0:
cgStaticError = toReal.run()
if cgStaticError < 0:
break
sdfError = audioOverlap.run()
if sdfError < 0:
cgStaticError = audioOverlap.run()
if cgStaticError < 0:
break
sdfError = src.run()
if sdfError < 0:
cgStaticError = src.run()
if cgStaticError < 0:
break
sdfError = audioWin.run()
if sdfError < 0:
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
i0=fifo1.getReadBuffer(256)
o2=fifo2.getWriteBuffer(256)
o2[:]=dsp.arm_mult_f32(i0,HANN)
sdfError = 0
cgStaticError = 0
if sdfError < 0:
if cgStaticError < 0:
break
sdfError = toCmplx.run()
if sdfError < 0:
cgStaticError = toCmplx.run()
if cgStaticError < 0:
break
sdfError = cfft.run()
if sdfError < 0:
cgStaticError = cfft.run()
if cgStaticError < 0:
break
sdfError = icfft.run()
if sdfError < 0:
cgStaticError = icfft.run()
if cgStaticError < 0:
break
sdfError = toReal.run()
if sdfError < 0:
cgStaticError = toReal.run()
if cgStaticError < 0:
break
sdfError = audioWin.run()
if sdfError < 0:
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
i0=fifo1.getReadBuffer(256)
o2=fifo2.getWriteBuffer(256)
o2[:]=dsp.arm_mult_f32(i0,HANN)
sdfError = 0
cgStaticError = 0
if sdfError < 0:
if cgStaticError < 0:
break
sdfError = toCmplx.run()
if sdfError < 0:
cgStaticError = toCmplx.run()
if cgStaticError < 0:
break
sdfError = cfft.run()
if sdfError < 0:
cgStaticError = cfft.run()
if cgStaticError < 0:
break
sdfError = icfft.run()
if sdfError < 0:
cgStaticError = icfft.run()
if cgStaticError < 0:
break
sdfError = audioOverlap.run()
if sdfError < 0:
cgStaticError = audioOverlap.run()
if cgStaticError < 0:
break
sdfError = sink.run()
if sdfError < 0:
cgStaticError = sink.run()
if cgStaticError < 0:
break
sdfError = toReal.run()
if sdfError < 0:
cgStaticError = toReal.run()
if cgStaticError < 0:
break
sdfError = audioOverlap.run()
if sdfError < 0:
cgStaticError = audioOverlap.run()
if cgStaticError < 0:
break
sdfError = sink.run()
if sdfError < 0:
cgStaticError = sink.run()
if cgStaticError < 0:
break
debugCounter = debugCounter - 1
return(nbSchedule,sdfError)
return(nbSchedule,cgStaticError)

@ -0,0 +1,143 @@
digraph structs {
node [shape=plaintext]
rankdir=LR
edge [arrowsize=0.5]
fontname="times"
arm_mult_f321 [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD PORT="ia"><FONT POINT-SIZE="9.0">ia</FONT></TD>
<TD ALIGN="CENTER" ROWSPAN="2">arm_mult_f32<BR/>(CMSIS-DSP)</TD>
<TD PORT="o"><FONT POINT-SIZE="9.0">o</FONT></TD>
</TR>
<TR>
<TD PORT="ib"><FONT POINT-SIZE="9.0">ib</FONT></TD>
<TD></TD></TR>
</TABLE>>];
audioOverlap [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">audioOverlap<BR/>(OverlapAdd)</TD>
</TR>
</TABLE>>];
audioWin [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">audioWin<BR/>(SlidingBuffer)</TD>
</TR>
</TABLE>>];
cfft [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">cfft<BR/>(CFFT)</TD>
</TR>
</TABLE>>];
icfft [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">icfft<BR/>(ICFFT)</TD>
</TR>
</TABLE>>];
sink [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">sink<BR/>(FileSink)</TD>
</TR>
</TABLE>>];
src [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">src<BR/>(FileSource)</TD>
</TR>
</TABLE>>];
toCmplx [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">toCmplx<BR/>(ToComplex)</TD>
</TR>
</TABLE>>];
toReal [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">toReal<BR/>(ToReal)</TD>
</TR>
</TABLE>>];
src:i -> audioWin:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >128</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >192</FONT>
</TD></TR></TABLE>>]
audioWin:i -> arm_mult_f321:ia [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>]
arm_mult_f321:o -> toCmplx:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>]
toCmplx:i -> cfft:i [label="f32(512)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>]
cfft:i -> icfft:i [label="f32(512)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>]
icfft:i -> toReal:i [label="f32(512)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >512</FONT>
</TD></TR></TABLE>>]
toReal:i -> audioOverlap:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >256</FONT>
</TD></TR></TABLE>>]
audioOverlap:i -> sink:i [label="f32(256)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >192</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >128</FONT>
</TD></TR></TABLE>>]
HANN [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">HANN</TD>
</TR>
</TABLE>>];
HANN:i -> arm_mult_f321:ib
}

@ -25,16 +25,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
############################################
from cmsisdsp.sdf.nodes.simu import *
from cmsisdsp.cg.static.nodes.simu import *
from custom import *
# Host only nodes
from cmsisdsp.sdf.nodes.host.NumpySink import *
from cmsisdsp.sdf.nodes.host.WavSource import *
from cmsisdsp.cg.static.nodes.host.NumpySink import *
from cmsisdsp.cg.static.nodes.host.WavSource import *
# Embedded nodes
from cmsisdsp.sdf.nodes.StereoToMono import *
from cmsisdsp.sdf.nodes.MFCC import *
from cmsisdsp.cg.static.nodes.StereoToMono import *
from cmsisdsp.cg.static.nodes.MFCC import *

@ -1,6 +1,6 @@
import numpy as np
from cmsisdsp.sdf.scheduler import *
from cmsisdsp.cg.static.scheduler import *
from sharedconfig import *

@ -0,0 +1,960 @@
#
# Generated with CMSIS-DSP Compute Graph Scripts.
# The generated code is not covered by CMSIS-DSP license.
#
# The support classes and code is covered by CMSIS-DSP license.
#
import sys
import numpy as np
import cmsisdsp as dsp
from cmsisdsp.cg.static.nodes.simu import *
from appnodes import *
from custom import *
DEBUGSCHED=False
#
# FIFO buffers
#
FIFOSIZE0=384
buf0=np.empty(FIFOSIZE0,dtype=np.int16)
for i in range(FIFOSIZE0):
buf0[i] = 0
FIFOSIZE1=768
buf1=np.empty(FIFOSIZE1,dtype=np.int16)
for i in range(FIFOSIZE1):
buf1[i] = 0
FIFOSIZE2=1024
buf2=np.empty(FIFOSIZE2,dtype=np.int16)
for i in range(FIFOSIZE2):
buf2[i] = 0
FIFOSIZE3=377
buf3=np.empty(FIFOSIZE3,dtype=np.int16)
for i in range(FIFOSIZE3):
buf3[i] = 0
FIFOSIZE4=754
buf4=np.empty(FIFOSIZE4,dtype=np.int16)
for i in range(FIFOSIZE4):
buf4[i] = 0
def scheduler(mfccConfig,dispbuf):
cgStaticError=0
nbSchedule=0
debugCounter=12
#
# Create FIFOs objects
#
fifo0=FIFO(FIFOSIZE0,buf0)
fifo1=FIFO(FIFOSIZE1,buf1)
fifo2=FIFO(FIFOSIZE2,buf2)
fifo3=FIFO(FIFOSIZE3,buf3)
fifo4=FIFO(FIFOSIZE4,buf4)
#
# Create node objects
#
audioWin = SlidingBuffer(1024,256,fifo1,fifo2)
mfcc = MFCC(1024,13,fifo2,fifo3,mfccConfig)
mfccWin = SlidingBuffer(754,377,fifo3,fifo4)
sink = NumpySink(754,fifo4,dispbuf)
src = WavSource(384,fifo0,True,"test_stereo.wav")
toMono = StereoToMono(384,192,fifo0,fifo1)
while((cgStaticError==0) and (debugCounter > 0)):
nbSchedule = nbSchedule + 1
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = src.run()
if cgStaticError < 0:
break
cgStaticError = toMono.run()
if cgStaticError < 0:
break
cgStaticError = audioWin.run()
if cgStaticError < 0:
break
cgStaticError = mfcc.run()
if cgStaticError < 0:
break
cgStaticError = mfccWin.run()
if cgStaticError < 0:
break
cgStaticError = sink.run()
if cgStaticError < 0:
break
debugCounter = debugCounter - 1
return(nbSchedule,cgStaticError)

@ -0,0 +1,87 @@
digraph structs {
node [shape=plaintext]
rankdir=LR
edge [arrowsize=0.5]
fontname="times"
audioWin [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">audioWin<BR/>(SlidingBuffer)</TD>
</TR>
</TABLE>>];
mfcc [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">mfcc<BR/>(MFCC)</TD>
</TR>
</TABLE>>];
mfccWin [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">mfccWin<BR/>(SlidingBuffer)</TD>
</TR>
</TABLE>>];
sink [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">sink<BR/>(NumpySink)</TD>
</TR>
</TABLE>>];
src [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">src<BR/>(WavSource)</TD>
</TR>
</TABLE>>];
toMono [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
<TR>
<TD ALIGN="CENTER" PORT="i">toMono<BR/>(StereoToMono)</TD>
</TR>
</TABLE>>];
src:i -> toMono:i [label="q15(384)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >384</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >384</FONT>
</TD></TR></TABLE>>]
toMono:i -> audioWin:i [label="q15(768)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >768</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >192</FONT>
</TD></TR></TABLE>>]
audioWin:i -> mfcc:i [label="q15(1024)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >1024</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >1024</FONT>
</TD></TR></TABLE>>]
mfcc:i -> mfccWin:i [label="q15(377)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >377</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >13</FONT>
</TD></TR></TABLE>>]
mfccWin:i -> sink:i [label="q15(754)"
,headlabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >754</FONT>
</TD></TR></TABLE>>
,taillabel=<<TABLE BORDER="0" CELLPADDING="2"><TR><TD><FONT COLOR="blue" POINT-SIZE="12.0" >754</FONT>
</TD></TR></TABLE>>]
}

@ -1,6 +1,6 @@
/*
Generated with CMSIS-DSP SDF Scripts.
Generated with CMSIS-DSP Compute Graph Scripts.
The generated code is not covered by CMSIS-DSP license.
The support classes and code is covered by CMSIS-DSP license.
@ -39,7 +39,7 @@ float32_t buf3[BUFFERSIZE3]={0};
uint32_t scheduler(int *error,arm_mfcc_instance_f32 *mfccConfig)
{
int sdfError=0;
int cgStaticError=0;
uint32_t nbSchedule=0;
int32_t debugCounter=1;
@ -61,47 +61,47 @@ uint32_t scheduler(int *error,arm_mfcc_instance_f32 *mfccConfig)
FileSource<float32_t,192> src(fifo0,"input_example6.txt");
/* Run several schedule iterations */
while((sdfError==0) && (debugCounter > 0))
while((cgStaticError==0) && (debugCounter > 0))
{
/* Run a schedule iteration */
sdfError = src.run();
cgStaticError = src.run();
CHECKERROR;
sdfError = audioWin.run();
cgStaticError = audioWin.run();
CHECKERROR;
sdfError = mfcc.run();
cgStaticError = mfcc.run();
CHECKERROR;
sdfError = mfccWin.run();
cgStaticError = mfccWin.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = src.run();
cgStaticError = src.run();
CHECKERROR;
sdfError = audioWin.run();
cgStaticError = audioWin.run();
CHECKERROR;
sdfError = mfcc.run();
cgStaticError = mfcc.run();
CHECKERROR;
sdfError = mfccWin.run();
cgStaticError = mfccWin.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = audioWin.run();
cgStaticError = audioWin.run();
CHECKERROR;
sdfError = mfcc.run();
cgStaticError = mfcc.run();
CHECKERROR;
sdfError = mfccWin.run();
cgStaticError = mfccWin.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
sdfError = sink.run();
cgStaticError = sink.run();
CHECKERROR;
debugCounter--;
nbSchedule++;
}
*error=sdfError;
*error=cgStaticError;
return(nbSchedule);
}

@ -1,6 +1,6 @@
/*
Generated with CMSIS-DSP SDF Scripts.
Generated with CMSIS-DSP Compute Graph Scripts.
The generated code is not covered by CMSIS-DSP license.
The support classes and code is covered by CMSIS-DSP license.

@ -1,6 +1,6 @@
import numpy as np
from cmsisdsp.sdf.scheduler import *
from cmsisdsp.cg.static.scheduler import *
from sharedconfig import *

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save