UPGRADE YOUR BROWSER

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 
Search instead for 
Did you mean: 
Adventurer
Adventurer
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

0 Kudos
6 Replies
Contributor
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. **

Adventurer
Adventurer
262 Views
Registered: ‎07-27-2010

Re: calculate arcsin using CORDIC 6.0

Hi @hermanfisher1994 

 

Thank you so much 

But wont it introduce a big delay 

 

Regards

Uzmeed

0 Kudos
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.

0 Kudos
Scholar dgisselq
Scholar
229 Views
Registered: ‎05-21-2015

Re: calculate arcsin using CORDIC 6.0

@uzmeed,

  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

0 Kudos
Highlighted
Contributor
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. **
0 Kudos
Adventurer
Adventurer
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

 

 

 

 

 

 

0 Kudos