Shop OBEX P1 Docs P2 Docs Learn Events
Performance questions — Parallax Forums

Performance questions

EdgarEdgar Posts: 8
edited 2008-03-29 01:11 in Propeller 1
I was wondering whether the Propeller could do
DFT or Goertzel algorithm for signals less than 1kHz,
and how fast it could save a word to USB flash memory
or SD memory.

- Thanks.

Comments

  • RaymanRayman Posts: 14,225
    edited 2008-03-26 18:49
    I think the Prop can do DFT on any signal.· I guess you want to ask how fast can this be done?· This would depend on the size of the sample vector and whether you needed floating point, or could use fixed point calculations.

    Saving to SD is very fast.· This would not be a limiting factor.
  • EdgarEdgar Posts: 8
    edited 2008-03-26 19:04
    Because I had never done digital signal processing before,
    I don't know how to translate a requirement in sampling
    rate to a requirement on the code size or memory size.
    That is the my missing knowledge.

    I read a post on the Basic Stamps forum that the Basic Stamps
    board could not do DFT. The problem was in both speed and
    memory. I was also considering the Arduino processor, but
    it seemed that the Arduino was similar to a Basic Stamp.

    The acceptable sampling rate was 2000 per second.
    I don't know how to translate this to hardware requirement.
    It would be ok to do DFT on 1024 points. Although this could be
    much fewer using Goertzel. Are these two parameters enough
    to estimate the performance with or without floating point?

    ( I have just realized that I was asking for a benchmark. )

    About saving:

    Did you imply that saving to USB is a lot slower? and might be
    a limiting factor?

    - Thanks


    Reference to Basic Stamp:
    http://forums.parallax.com/forums/default.aspx?f=19&m=42878&g=42895#m42895


    Reference to another post on FFT using Propeller
    http://forums.parallax.com/forums/default.aspx?f=25&m=119048&g=120533#m120533

    Post Edited (Edgar) : 3/26/2008 7:34:48 PM GMT
  • RaymanRayman Posts: 14,225
    edited 2008-03-26 20:08
    Ok, so you want to·process 1024 points every 0.5 seconds?· That sounds pretty easy.


    There is no native way to send large amounts of data via USB. You'd need some kind of 3rd party device.

    (although, if you are using the PropPlug, that will let you send data up to 2MBPS or so to the PC over USB).

    Post Edited (Rayman) : 3/26/2008 8:26:52 PM GMT
  • RaymanRayman Posts: 14,225
    edited 2008-03-26 20:22
    You might want to look at implementing it in fixed point though because floating point would definitely slow things down. Also, fixed point could be converted more easily to assembly, if that winds up being required.

    I ported some mDCT and iFFT routines into SPIN when I was looking into MP3 decoding, but these were only 32 samples...
  • Bob Lawrence (VE1RLL)Bob Lawrence (VE1RLL) Posts: 1,720
    edited 2008-03-26 21:30
    You may find the FFT info that epmoyer posted interesting:

    Use this URL:
    http://forums.parallax.com/showthread.php?p=711145

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Aka: CosmicBob
  • EdgarEdgar Posts: 8
    edited 2008-03-29 01:11
    From the link you gave me, I found this post

    http://forums.parallax.com/forums/default.aspx?f=25&m=204569

    on 1-bit delta-sigma ADC. I read the concept from this page

    http://members.cox.net/brookhaven-north/Parallax/PropellerSpectrumAnalyzerforAudio.html

    and tried different parameters using on Excel. It looks like it works,
    but I am missing the theoretical background to justify that it works.

    I am going to post the algorithm so that people can tell whether
    something is wrong with it or how I estimate the performance.

    - Thanks
Sign In or Register to comment.