graph.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. floatType=CType(F32)
  8. ### Define nodes
  9. src=FileSource("src",AUDIO_INTERRUPT_LENGTH)
  10. src.addLiteralArg("input_example3.txt")
  11. sliding=SlidingBuffer("audioWin",floatType,256,128)
  12. overlap=OverlapAdd("audioOverlap",floatType,256,128)
  13. window=Dsp("mult",floatType,WINSIZE)
  14. toCmplx=ToComplex("toCmplx",floatType,WINSIZE)
  15. toReal=ToReal("toReal",floatType,WINSIZE)
  16. fft=CFFT("cfft",floatType,WINSIZE)
  17. ifft=ICFFT("icfft",floatType,WINSIZE)
  18. hann=Constant("HANN")
  19. sink=FileSink("sink",AUDIO_INTERRUPT_LENGTH)
  20. sink.addLiteralArg("output_example3.txt")
  21. g = Graph()
  22. g.connect(src.o, sliding.i)
  23. # Windowing
  24. g.connect(sliding.o, window.ia)
  25. g.connect(hann,window.ib)
  26. # FFT
  27. g.connect(window.o,toCmplx.i)
  28. g.connect(toCmplx.o,fft.i)
  29. g.connect(fft.o,ifft.i)
  30. g.connect(ifft.o,toReal.i)
  31. # Overlap add
  32. g.connect(toReal.o,overlap.i)
  33. g.connect(overlap.o,sink.i)
  34. print("Generate graphviz and code")
  35. conf=Configuration()
  36. conf.debugLimit=40
  37. #conf.memoryOptimization=True
  38. #print(g.nullVector())
  39. sched = g.computeSchedule(conf)
  40. #print(sched.schedule)
  41. print("Schedule length = %d" % sched.scheduleLength)
  42. print("Memory usage %d bytes" % sched.memory)
  43. #
  44. #conf.dumpFIFO=True
  45. #conf.codeArray=True
  46. sched.ccode("generated",config=conf)
  47. with open("test.dot","w") as f:
  48. sched.graphviz(f)