Search papers, labs, and topics across Lattice.
This paper introduces a Dynamic Precision Math Engine for the ESP32 microcontroller, comprising a Q16.16 fixed-point arithmetic core, a CORDIC trigonometric module, and a tiled matrix multiplication kernel. The engine uses runtime precision switching via function pointers to dynamically select between fixed-point and floating-point execution paths. Experimental results on ESP32 hardware show that the CORDIC module achieves speedups of 18.5x and 24.7x for sine and cosine calculations, respectively, compared to the standard math library.
Get up to 24x faster sine/cosine calculations on ESP32 microcontrollers by dynamically switching between fixed-point and floating-point precision.
Low-cost embedded processors such as the ESP32 (Xtensa LX6, 32-bit dual-core, 240 MHz) are increasingly used in edge computing applications that require real-time physical simulation, sensor fusion, and control systems. Although the ESP32 integrates a single-precision IEEE 754 floating-point unit, floating-point operations introduce pipeline overhead and higher energy consumption compared to integer arithmetic, limiting throughput for floating-point intensive workloads. This paper presents the design, formal specification, and empirical evaluation of a Dynamic Precision Math Engine for the ESP32. The system integrates three main components: a Q16.16 fixed-point arithmetic core that maps mathematical operations onto the integer pipeline of the Xtensa LX6, a 16-iteration CORDIC trigonometric module that computes sine and cosine using only additions and bit shifts, and a cache-aware tiled matrix multiplication kernel with deferred correction to reduce rounding operations. The architecture introduces a runtime precision switching mechanism implemented through function pointer dispatch and a synchronization protocol compatible with FreeRTOS. This mechanism allows applications to dynamically transition between a fast fixed-point execution path and a precise IEEE 754 floating-point path without recompilation. Experimental evaluation on ESP32-WROOM-32 hardware using 300 paired measurements shows that the CORDIC trigonometric module achieves median latencies of 293 cycles for both sine and cosine, corresponding to mean speedups of 18.5x and 24.7x compared to the standard math library. The results demonstrate that precision-aware software architecture can significantly improve numerical performance on low-cost microcontrollers.