Fixed Point vs Floating Point
Digital signal processing can be separated into two categories - fixed point and floating point. These designations refer to the format used to store and manipulate numeric representations of data. Fixed-point DSPs are designed to represent and manipulate integers – positive and negative whole numbers – via a minimum of 16 bits, yielding up to 65,536 possible bit patterns (216). Floating-point DSPs represent and manipulate rational numbers via a minimum of 32 bits in a manner similar to scientific notation, where a number is represented with a mantissa and an exponent (e.g., A x 2B, where 'A' is the mantissa and ‘B’ is the exponent), yielding up to 4,294,967,296 possible bit patterns (232).
The term ‘fixed point’ refers to the corresponding manner in which numbers are represented, with a fixed number of digits after, and sometimes before, the decimal point. With floating-point representation, the placement of the decimal point can ‘float’ relative to the significant digits of the number. For example, a fixed-point representation with a uniform decimal point placement convention can represent the numbers 123.45, 1234.56, 12345.67, etc, whereas a floating-point representation could in addition represent 1.234567, 123456.7, 0.00001234567, 1234567000000000, etc. As such, floating point can support a much wider range of values than fixed point, with the ability to represent very small numbers and very large numbers.
With fixed-point notation, the gaps between adjacent numbers always equal a value of one, whereas in floating-point notation, gaps between adjacent numbers are not uniformly spaced – the gap between any two numbers is approximately ten million times smaller than the value of the numbers (ANSI/IEEE Std. 754 standard format), with large gaps between large numbers and small gaps between small numbers.
Dynamic Range and Precision
The exponentiation inherent in floating-point computation assures a much larger dynamic range – the largest and smallest numbers that can be represented - which is especially important when processing extremely large data sets or data sets where the range may be unpredictable. As such, floating-point processors are ideally suited for computationally intensive applications.
It is also important to consider fixed and floating-point formats in the context of precision – the size of the gaps between numbers. Every time a DSP generates a new number via a mathematical calculation, that number must be rounded to the nearest value that can be stored via the format in use. Rounding and/or truncating numbers during signal processing naturally yields quantization error or ‘noise’ - the deviation between actual analog values and quantized digital values. Since the gaps between adjacent numbers can be much larger with fixed-point processing when compared to floating-point processing, round-off error can be much more pronounced. As such, floating-point processing yields much greater precision than fixed-point processing, distinguishing floating-point processors as the ideal DSP when computational accuracy is a critical requirement.
Key Considerations – Costs, Ease Of Development, And Performance
Dynamic range and precision considerations typically define the criteria used by designers to determine whether fixed-point or floating-point processors are ideally suited for an application – where computational demands are high, floating point is favored. But there are many other important interrelated factors to consider when choosing between the two formats.
Processor cost: A designer’s ability to lower bill of materials (BOM) costs for a product has a direct impact on competitive pricing, market penetration and profitability. Fixed-point DSPs are used in a greater number of high volume applications than floating-point DSPs, and therefore are typically less expensive that floating-point DSPs due to the scale of manufacturing. System- on-a-chip (SOC) variables, including on-board memory, integrated application-specific peripherals, and connectivity options can also affect the cost - and functionality - of both fixed-point and floating-point processors.
Ease of development: The easier it is for a designer to develop a product, the more likely it is that the product can be brought to market ahead of the competition. It is generally easier to develop algorithms for floating-point DSPs, as fixed point-algorithms require greater manipulation to compensate for quantization noise. As such, designers typically choose floating-point DSPs when implementing complex algorithms. Here again, SOC variables can shorten product development cycles, as can the ecosystem of associated product development tools and third-party support software.
Performance: The speed with which a DSP executes operations in an application is a critical consideration. Designers should implement the DSP format that will process algorithms with the greatest efficiency. While it is possible to program fixed-point code for a floating-point processor and vice versa, significant performance limitations may arise. Performance efficiency can also impact power efficiency. For example, in a case where a floating-point processor is implemented to execute fixed-point tasks, the power draw might be greater than what it would be if a fixed-point processor had been implemented, which can impact power source and cooling requirements, as well as associated BOM costs.
In summary, floating-point DSPs are optimized for specialized, computationally intensive applications, whereas fixed-point DSPs are optimized for high-volume, general purpose applications. Development costs can be higher for fixed point, owing to the relative difficulty of algorithm implementation, but the cost of the final product will often be reduced. Product costs for applications that leverage floating-point DSPs can be higher, owing to processor cost and lower manufacturing volumes, but designers will realize ease-of-development benefits and greater overall system precision. Ultimately, the data set requirements associated with the target application will dictate the need for fixed-point or floating-point processing.
- WikiNote Foundation