graph.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import numpy as np
  2. from cmsisdsp.sdf.scheduler import *
  3. FS=16000
  4. # You can try with 120
  5. AUDIO_INTERRUPT_LENGTH = 192
  6. WINSIZE=256
  7. OVERLAP=128
  8. floatType=CType(F32)
  9. ### Define nodes
  10. src=FileSource("src",AUDIO_INTERRUPT_LENGTH)
  11. src.addLiteralArg("input_example3.txt")
  12. sliding=SlidingBuffer("audioWin",floatType,WINSIZE,OVERLAP)
  13. overlap=OverlapAdd("audioOverlap",floatType,WINSIZE,OVERLAP)
  14. window=Dsp("mult",floatType,WINSIZE)
  15. toCmplx=ToComplex("toCmplx",floatType,WINSIZE)
  16. toReal=ToReal("toReal",floatType,WINSIZE)
  17. fft=CFFT("cfft",floatType,WINSIZE)
  18. ifft=ICFFT("icfft",floatType,WINSIZE)
  19. hann=Constant("HANN")
  20. sink=FileSink("sink",AUDIO_INTERRUPT_LENGTH)
  21. sink.addLiteralArg("output_example3.txt")
  22. sink.addVariableArg("dispbuf")
  23. g = Graph()
  24. g.connect(src.o, sliding.i)
  25. # Windowing
  26. g.connect(sliding.o, window.ia)
  27. g.connect(hann,window.ib)
  28. # FFT
  29. g.connect(window.o,toCmplx.i)
  30. g.connect(toCmplx.o,fft.i)
  31. g.connect(fft.o,ifft.i)
  32. g.connect(ifft.o,toReal.i)
  33. # Overlap add
  34. g.connect(toReal.o,overlap.i)
  35. g.connect(overlap.o,sink.i)
  36. print("Generate graphviz and code")
  37. #print(g.nullVector())
  38. sched = g.computeSchedule()
  39. #print(sched.schedule)
  40. print("Schedule length = %d" % sched.scheduleLength)
  41. print("Memory usage %d bytes" % sched.memory)
  42. #
  43. conf=Configuration()
  44. conf.debugLimit=42
  45. conf.pyOptionalArgs="dispbuf"
  46. #conf.dumpFIFO=True
  47. #conf.prefix="sched1"
  48. sched.pythoncode(".",config=conf)
  49. with open("test.dot","w") as f:
  50. sched.graphviz(f)