The growing field of the Internet of Things relies at the bottom on components with very scarce computing resources that currently do not allow complex processing of sensed data. Any computation involving Fast Fourier Transforms (FFT), Wavelet Transforms (WT), or simple sines and cosines is considered impractical on low-end devices due to the lack of floating point and math libraries. This article presents new techniques that make it possible to use these functions also on severely constrained target platforms.
Current literature abounds with schemes to compute sine and cosine functions, with focus on speed, hardware footprint, software size, target type, or precision. Even so, there is no practical exploration of the design space available for embedded devices with limited resources, in particular when only integer operations are possible. We select an efficient set of recursive sine and cosine generators and measure the frequency, amplitude, and phase error over a wide parameter range. We show that their simplicity allows them to be implemented on the most bare targets with good precision, reducing power consumption and size while being the fastest on integer-only processors. We also introduce specially tailored FFT and WT algorithms and show that they are usable in practice while having an extremely small code footprint, good precision, and high speed.