Trigonometric Function Calculation in Integrated Circuits
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for calculating trigonometric functions in integrated circuit devices, such as the CORDIC algorithm, face inaccuracies for small input angles and inefficiencies in resource usage, particularly in FPGA architectures, due to deep arithmetic structures and large hardware requirements for precise results.
Innovation Solution
Implement modified CORDIC implementations using trigonometric identities to transform small input angles into larger angles for improved accuracy, and utilize multiplexers and look-up tables to simplify calculations for sine, cosine, tangent, inverse tangent, inverse cosine, and inverse sine functions, breaking down input ranges and applying specific identities to reduce computational complexity.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If the CORDIC algorithm is used to calculate trigonometric functions, then the functions can be computed in integrated circuit devices, but the accuracy deteriorates for small input angles
Solution Approach 1:
The input angle range is segmented into multiple sub-ranges (e.g., 0 to π/4, π/4 to π/2, and beyond). Different calculation methods or CORDIC iteration counts are applied to each segment. For small angles (0 to π/4), fewer iterations are used with appropriate scaling, while larger angles use more iterations or identity transformations to map them into the optimal range.
Solution Approach 2:
The algorithm dynamically adjusts parameters such as the number of CORDIC iterations, scaling factors, and initial vector values based on the input angle magnitude. For small angles, the scaling factor is adjusted and fewer iterations are performed to maintain accuracy while reducing error accumulation.
2Measurement precision
If the CORDIC algorithm is implemented with deep arithmetic structures to improve accuracy, then calculation precision increases, but the hardware resources and device complexity increase significantly
Solution Approach 1:
The calculation process is divided into segmented stages with different precision requirements. Early stages use lower precision arithmetic, and only critical stages require full precision. This segmentation allows the use of simpler adders and less complex arithmetic structures while maintaining overall accuracy.
Solution Approach 2:
The algorithm performs a limited number of CORDIC iterations (partial action) rather than exhaustive iterations, achieving sufficient accuracy for most applications without requiring the full computational depth that would demand excessive hardware resources. The iteration count is optimized to balance accuracy and resource usage.
3Measurement precision
If more CORDIC iterations are performed to improve accuracy for small angles, then the precision increases, but the calculation time and productivity decrease
Solution Approach 1:
The angle calculation is segmented into coarse and fine components. The coarse calculation uses fewer iterations for a quick approximation, and the fine calculation adds precision only when needed. This segmented approach reduces the average number of iterations required while maintaining accuracy for small angles.
Solution Approach 2:
The algorithm performs preliminary range classification of the input angle before initiating CORDIC iterations. Based on this preliminary action, it pre-determines the optimal number of iterations and scaling factors, avoiding unnecessary iterations and improving calculation speed while maintaining accuracy.
Data Source
AI summary
Circuitry for computing a tangent function of an input value includes first look-up table circuitry that stores pre-calculated tangent values of a limited number of sample values, circuitry for inputting bits of the input value of most significance as inputs to the first look-up table circuitry to look up one of the pre-calculated tangent values as a first intermediate tangent value, circuitry for calculating a second intermediate tangent value from one or more ranges of remaining bits of the input value, and circuitry for combining the first intermediate tangent value and the second intermediate tangent value to yield the tangent function of the input value.


