Skip to Main Content
This paper describes a method of converting floating-point expressions into equivalent fixed-point code in DSP software. Replacing floating-point expressions with specialized integer operations can greatly improve the performance of embedded applications. This is a new method that is developed for Direct-Form I filters with constant coefficients and input variables whose low/high bounds are known. Two conflicting objectives are considered simultaneously: computational complexity and accuracy loss. The algorithm presented here can construct multiple fixed-point solutions for the same floating-point code: from “high-complexity-high-accuracy” to “low-complexity-low-accuracy”. A so-called cost function conducts the data flow transformation decisions. By changing the cost function coefficients, different fixed-point forms can be obtained. The data flow transformation takes very little time: less than 100 milliseconds for a 32-tap FIR filter. The generated fixed-point code is tested on 8-bit (AVR ATmega), 16-bit (MSP430), and 32-bit (ARM Cortex-M3) microcontrollers. It provides, in all cases, execution speeds better than if using floating-point code.