Numerical Error Minimizing Floating-Point to Fixed-Point ANSI C Compilation

This paper presents an ANSI C floating-point to fixed-point conversion capability currently being integrated within an application specific processor architecture/compiler co-development project at the University of Toronto. The conversion process utilizes profiling data to capture the dynamic range of floating-point variables and intermediate calculations to guide in the generation of scaling operations. An algorithm for generating shift operations resulting in a minimization of numerical error due to truncation, rounding and overflow is presented along with a novel DSP-ISA operation: fractional-multiplication with integrated left-shift. Improvements in SQNR over previous approaches of up to 6.5 dB, 3.0 dB, 7.9 dB and 12.8 dB, equivalent to 1.1, 0.5, 1.0, and 2.1 extra bits of precision carried throughout the computations are shown for, respectively, a 4th order IIR filter, 16th order lattice filter, radix-2 FFT, and a non-linear feedback control law.

[1]  Mazen A. R. Saghir,et al.  Application-Specific Instruction-Set Architectures for Embedded DSP Applications , 1998 .

[2]  V. John Mathews,et al.  Fixed-point error analysis of stochastic gradient adaptive lattice filters , 1990, IEEE Trans. Acoust. Speech Signal Process..

[3]  Seehyun Kim,et al.  Fixed-point optimization utility for C and C++ based digital signal processing programs , 1995, VLSI Signal Processing, VIII.

[4]  Wonyong Sung,et al.  Fixed-point C language for digital signal processing , 1995, Conference Record of The Twenty-Ninth Asilomar Conference on Signals, Systems and Computers.

[5]  Seehyun Kim,et al.  A floating-point to fixed-point assembly program translator for the TMS 320C25 , 1994 .

[6]  H. Meyr,et al.  System Level Fixed-point Design Based On An Interpolative Approach , 1997, Proceedings of the 34th Design Automation Conference.

[7]  Corinna G. Lee,et al.  Software pipelining loops with conditional branches , 1996, Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture. MICRO 29.

[8]  Paul Chow,et al.  Application-driven design of DSP architectures and compilers , 1994, Proceedings of ICASSP '94. IEEE International Conference on Acoustics, Speech and Signal Processing.

[9]  Heinrich Meyr,et al.  FRIDGE: an interactive code generation environment for HW/SW codesign , 1997, 1997 IEEE International Conference on Acoustics, Speech, and Signal Processing.

[10]  Leland B. Jackson,et al.  On the interaction of roundoff noise and dynamic range in digital filters , 1970, Bell Syst. Tech. J..

[11]  Jeremy H. Lin An optimizing C compiler for DSP architectures , 1999 .

[12]  William Cammack,et al.  Fixpt: a C++ method for development of fixed point digital signal processing algorithms , 1994, 1994 Proceedings of the Twenty-Seventh Hawaii International Conference on System Sciences.

[13]  K. W. Leary,et al.  DSP/C: a standard high level language for DSP and numeric processing , 1990, International Conference on Acoustics, Speech, and Signal Processing.

[14]  Wonyong Sung,et al.  A floating-point to integer C converter with shift reduction for fixed-point digital signal processors , 1999, 1999 IEEE International Conference on Acoustics, Speech, and Signal Processing. Proceedings. ICASSP99 (Cat. No.99CH36258).

[15]  S. Bortoff Approximate state-feedback linearization using spline functions , 1994, Proceedings of 1994 American Control Conference - ACC '94.