CFFT.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. ###########################################
  2. # Project: CMSIS DSP Library
  3. # Title: CFFTF.py
  4. # Description: Node for CMSIS-DSP cfft
  5. #
  6. # $Date: 30 July 2021
  7. # $Revision: V1.10.0
  8. #
  9. # Target Processor: Cortex-M and Cortex-A cores
  10. # -------------------------------------------------------------------- */
  11. #
  12. # Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.
  13. #
  14. # SPDX-License-Identifier: Apache-2.0
  15. #
  16. # Licensed under the Apache License, Version 2.0 (the License); you may
  17. # not use this file except in compliance with the License.
  18. # You may obtain a copy of the License at
  19. #
  20. # www.apache.org/licenses/LICENSE-2.0
  21. #
  22. # Unless required by applicable law or agreed to in writing, software
  23. # distributed under the License is distributed on an AS IS BASIS, WITHOUT
  24. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  25. # See the License for the specific language governing permissions and
  26. # limitations under the License.
  27. ############################################
  28. from .simu import *
  29. import cmsisdsp as dsp
  30. # The CMSIS-DSP CFFT
  31. class CFFT(GenericNode):
  32. def __init__(self,inputSize,outSize,fifoin,fifoout):
  33. GenericNode.__init__(self,inputSize,outSize,fifoin,fifoout)
  34. if fifoin.type == np.dtype(np.float32):
  35. self._cfft=dsp.arm_cfft_instance_f32()
  36. status=dsp.arm_cfft_init_f32(self._cfft,inputSize>>1)
  37. if fifoin.type == np.dtype(np.int16):
  38. self._cfft=dsp.arm_cfft_instance_q15()
  39. status=dsp.arm_cfft_init_q15(self._cfft,inputSize>>1)
  40. def run(self):
  41. a=self.getReadBuffer()
  42. b=self.getWriteBuffer()
  43. # Copy arrays (not just assign references)
  44. b[:]=a[:]
  45. if self._src.type == np.dtype(np.float32):
  46. dsp.arm_cfft_f32(self._cfft,b,0,1)
  47. if self._src.type == np.dtype(np.int16):
  48. dsp.arm_cfft_q15(self._cfft,b,0,1)
  49. return(0)