Forum Discussion
Altera_Forum
Honored Contributor
16 years agoOne method is LUT based(other cordic possibly, not sure?)
LUT can be useful for many mathematical functions. Decide data resolution(bitwidth) and LUT resolution(how many values). Get say 1024 values of arcsin and arccos from a software tool(Matlab ...etc). The LUT values to cover the range for one cycle(pointer range 0 to 1023). Then address the table with your input value and compute the arcsin from nearest table value + a difference derived from your input value remainder and arccos(i.e. interpolate the function to get new point). By remainder, I mean if your value = 31.723 then your nearest LUT value is the table value at 31(nearest towards 0) and the remainder is .723. What is left is add a value derived from effect of this remainder and using the arccos as indicating the rate of change(function is not linear). There are various techniques of this interpolation itself... See DDS methodology(same principles, DDS computes uses full LUT or small LUT + interpolation, it can also be done in cordic version).