We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for
Did you mean:
356 Views
Registered: ‎07-27-2010

## calculate arcsin using CORDIC 6.0

Hi

I need to implement arcsin using Xilinx system generator

Can any body please help how can I do that using CORDIC 6.0 or any other method

Regards

Uzmeed

6 Replies
Contributor
290 Views
Registered: ‎12-10-2018

## Re: calculate arcsin using CORDIC 6.0

Hi!

As we know CORDIC IP-Core can calculate arctan, so it's enough to find arcsin(x) as a function of arctan(x). So let's do that!

* Assume t = arcsin(x)

sin(t) = x --> cos(t) = sqrt (1-x^2) --> tan(t) = x/(sqrt(1-x^2)) -->

t = arcsin(x) = arctan ( x / (sqrt (1-x^2) )

So you can use the above formula to find arcsin(x)!

I hope this be useful for you, Good luck.

** Please accept this as solution if it helped you to solve your problem. **

262 Views
Registered: ‎07-27-2010

## Re: calculate arcsin using CORDIC 6.0

Thank you so much

But wont it introduce a big delay

Regards

Uzmeed

Scholar
254 Views
Registered: ‎06-21-2017

## Re: calculate arcsin using CORDIC 6.0

by delay, you mean latency, than yes especially if you use another CORDIC to calculate the square root.  Is latency or throughout your concern?  It may take 50 clock cycles for the answer to appear for your first value of x, but you can generate a CORDIC that can accept a new input much sooner than that.  If you can generate a CORDIC that can accept a new input every other clock cycle, then you will have 25 samples in the calculation pipeline at any given time, giving you a throughput of one sample at half your clock rate.  This may use a lot of resources to achieve the parallelism to meet this rate.  An interesting thing about a CORDIC is that the latency is a function of the number of bits of precision needed at the output.  This is something to look at for a trade off.  Also, how many bits is x?  If x is small enough you can just use a look up table for the square root.

Scholar
229 Views
Registered: ‎05-21-2015

## Re: calculate arcsin using CORDIC 6.0

1. If you want low latency, use a table look up
2. If you want better accuracy than the table lookup alone can achieve, then lookup polynomial coefficients and interpolate between the points
3. While I don't have ARCSIN, I've done this using a quadratic polynomial and sin/cos.  The result is cheaper and faster than CORDICs, but does require two multiplies.

Dan

Highlighted
Contributor
204 Views
Registered: ‎12-10-2018

## Re: calculate arcsin using CORDIC 6.0

Our friends mentioned important notes.
Just to confirm that, you can have a pipeline architecture and have one output at each clock edge after specific number of clocks. This is called latency, not delay. And it can be acceptable or not, it depends on your design requirements.

** Please accept this as solution if it helped you to solve your problem. **
148 Views
Registered: ‎07-27-2010

## Re: calculate arcsin using CORDIC 6.0

Hi

thank you all for your continous support . I had been implementing the arcsin  and for that calculating the square root but the answer I am getting is wrong I tried alot but could not succeed

My design is as attached

Due to the reason that the cordic requires the input UFix48_47

I am not getting the output as needed

Another question is that what is the input range of CORDIC 6.0 to calculate the sqrt

Regards

Uzmeed