# # Generated with CMSIS-DSP SDF Scripts. # The generated code is not covered by CMSIS-DSP license. # # The support classes and code is covered by CMSIS-DSP license. # import sys # To find SDF module sys.path.append("../..") import numpy as np import cmsisdsp as dsp from sdf.schedule.simu import * from appnodes import * from custom import * DEBUGSCHED=False # # FIFO buffers # FIFOSIZE0=256 buf0=np.zeros(FIFOSIZE0,dtype=np.float32) FIFOSIZE1=256 buf1=np.zeros(FIFOSIZE1,dtype=np.float32) FIFOSIZE2=256 buf2=np.zeros(FIFOSIZE2,dtype=np.float32) FIFOSIZE3=512 buf3=np.zeros(FIFOSIZE3,dtype=np.float32) FIFOSIZE4=512 buf4=np.zeros(FIFOSIZE4,dtype=np.float32) FIFOSIZE5=512 buf5=np.zeros(FIFOSIZE5,dtype=np.float32) FIFOSIZE6=256 buf6=np.zeros(FIFOSIZE6,dtype=np.float32) FIFOSIZE7=256 buf7=np.zeros(FIFOSIZE7,dtype=np.float32) def scheduler(dispbuf): sdfError=0 nbSchedule=0 debugCounter=42; # # Create FIFOs objects # fifo0=FIFO(FIFOSIZE0,buf0) fifo1=FIFO(FIFOSIZE1,buf1) fifo2=FIFO(FIFOSIZE2,buf2) fifo3=FIFO(FIFOSIZE3,buf3) fifo4=FIFO(FIFOSIZE4,buf4) fifo5=FIFO(FIFOSIZE5,buf5) fifo6=FIFO(FIFOSIZE6,buf6) fifo7=FIFO(FIFOSIZE7,buf7) # # Create node objects # audioOverlap = OverlapAdd(256,128,fifo6,fifo7); audioWin = SlidingBuffer(256,128,fifo0,fifo1); cfft = CFFT(512,512,fifo3,fifo4); icfft = ICFFT(512,512,fifo4,fifo5); sink = FileSink(192,fifo7,"output_example3.txt",dispbuf); src = FileSource(192,fifo0,"input_example3.txt"); toCmplx = ToComplex(256,512,fifo2,fifo3); toReal = ToReal(512,256,fifo5,fifo6); while((sdfError==0) and (debugCounter > 0)): nbSchedule = nbSchedule + 1 sdfError = src.run() if sdfError < 0: break sdfError = audioWin.run() if sdfError < 0: break i0=fifo1.getReadBuffer(256) o2=fifo2.getWriteBuffer(256) o2[:]=dsp.arm_mult_f32(i0,HANN) sdfError = 0 if sdfError < 0: break sdfError = toCmplx.run() if sdfError < 0: break sdfError = cfft.run() if sdfError < 0: break sdfError = icfft.run() if sdfError < 0: break sdfError = toReal.run() if sdfError < 0: break sdfError = audioOverlap.run() if sdfError < 0: break sdfError = src.run() if sdfError < 0: break sdfError = audioWin.run() if sdfError < 0: break i0=fifo1.getReadBuffer(256) o2=fifo2.getWriteBuffer(256) o2[:]=dsp.arm_mult_f32(i0,HANN) sdfError = 0 if sdfError < 0: break sdfError = toCmplx.run() if sdfError < 0: break sdfError = cfft.run() if sdfError < 0: break sdfError = icfft.run() if sdfError < 0: break sdfError = toReal.run() if sdfError < 0: break sdfError = audioWin.run() if sdfError < 0: break i0=fifo1.getReadBuffer(256) o2=fifo2.getWriteBuffer(256) o2[:]=dsp.arm_mult_f32(i0,HANN) sdfError = 0 if sdfError < 0: break sdfError = toCmplx.run() if sdfError < 0: break sdfError = cfft.run() if sdfError < 0: break sdfError = icfft.run() if sdfError < 0: break sdfError = audioOverlap.run() if sdfError < 0: break sdfError = sink.run() if sdfError < 0: break sdfError = toReal.run() if sdfError < 0: break sdfError = audioOverlap.run() if sdfError < 0: break sdfError = sink.run() if sdfError < 0: break debugCounter = debugCounter - 1 return(nbSchedule,sdfError)