Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

arcsin() implementation by FPGA

Status
Not open for further replies.
A

ahmadagha23

Guest
conv_signed

hi,
Can any one answer my following questions:

1- How can I find FPGA implementation of arcsin() and do you know any references?

2- In MATLAB, how MathWork implement the arcsin() function do you know its algorithm?

regards
 

arcsin lookup

ahmadagha23 said:
hi,
Can any one answer my following questions:

1- How can I find FPGA implementation of arcsin() and do you know any references?

2- In MATLAB, how MathWork implement the arcsin() function do you know its algorithm?

regards

Dear Mr.

I have same problem with you now, I need to calculate the arcsin() function.
I use a look up table, but it slow down my design. Do you have any way to apply arcsin() function, except LUT method.
 

matlab arcsin

in matlab u can open the arcsin function using edit to know how it's implemented.
 

fpga look up table atan

quy1001 said:
ahmadagha23 said:
hi,
Can any one answer my following questions:

1- How can I find FPGA implementation of arcsin() and do you know any references?

2- In MATLAB, how MathWork implement the arcsin() function do you know its algorithm?

regards

Dear Mr.

I have same problem with you now, I need to calculate the arcsin() function.
I use a look up table, but it slow down my design. Do you have any way to apply arcsin() function, except LUT method.



Slow ??

I think LUT-methode is fastest method you can get, other implementation using lot of iteration from taylor-series and/or polynoms and take long time to execute compare to LUT.

One metode with shifting register operation is a CORBA-methode, buts still needs couple of iteration

see:

**broken link removed**
 

arcsine lookup

HI
i hope cordic coregen can help u.think in tht way and if it helps dont forget to press help button.
 

arcsine look up table

xxargs said:
Slow ??

I think LUT-methode is fastest method you can get, other implementation using lot of iteration from taylor-series and/or polynoms and take long time to execute compare to LUT.

function arcsine_table(sin_val : integer range -32767 to 32767) return signed is --input is 16bit
variable angle_value: signed(15 downto 0);
variable sin_val_temp: integer range -32767 to 32767; --16 bit Q15
begin
sin_val_temp := sin_val;
case sin_val_temp is
when 0 to 205 => angle_value := conv_signed( 0 ,16);
when 206 to 411 => angle_value := conv_signed( 1 ,16);
when 412 to 617 => angle_value := conv_signed( 2 ,16);
when 618 to 822 => angle_value := conv_signed( 3 ,16);
when 823 to 1028 => angle_value := conv_signed( 4 ,16);
when 1029 to 1234 => angle_value := conv_signed( 5 ,16);
when 1235 to 1440 => angle_value := conv_signed( 6 ,16);
when 1441 to 1645 => angle_value := conv_signed( 7 ,16);
when 1646 to 1851 => angle_value := conv_signed( 8 ,16);
when 1852 to 2057 => angle_value := conv_signed( 9 ,16);
when 2058 to 2262 => angle_value := conv_signed( 10 ,16);
when 2263 to 2467 => angle_value := conv_signed( 11 ,16);
when 2468 to 2673 => angle_value := conv_signed( 12 ,16);
when 2674 to 2878 => angle_value := conv_signed( 13 ,16);
when 2879 to 3083 => angle_value := conv_signed( 14 ,16);
when 3084 to 3288 => angle_value := conv_signed( 15 ,16);
when 3289 to 3492 => angle_value := conv_signed( 16 ,16);
when 3493 to 3697 => angle_value := conv_signed( 17 ,16);
when 3698 to 3902 => angle_value := conv_signed( 18 ,16);
...

end case;

return angle_value;
end;


My LUT like this, so the input is checked in a range. And after synthesis, the input clock is limited significaly.

Is there any one have another solution for LUT of arcsine function ?
 

cordic arcsine

ahmadagha23 said:
hi,
Can any one answer my following questions:

1- How can I find FPGA implementation of arcsin() and do you know any references?

2- In MATLAB, how MathWork implement the arcsin() function do you know its algorithm?

regards

Regards geometric functions:
The optimal way is to use ROM which its contents are the function(x) while:
ADDRESS is related to X values
DATA is related to f(x) result.

Example:
in my pervious project I had to implement SIN(x).
I builded in EXCEL table with SIN(x) then I attached it to ROM.

address data
00000000(x=0) 00000000 [f(x)=0]
. .
. .
01011010(x=90) 10000000 [f(x)=0.5]

the ROM address space depened on the resolution of X
 

arcsine, matlab

xxargs said:
quy1001 said:
ahmadagha23 said:
hi,
Can any one answer my following questions:

1- How can I find FPGA implementation of arcsin() and do you know any references?

2- In MATLAB, how MathWork implement the arcsin() function do you know its algorithm?

regards

Dear Mr.

I have same problem with you now, I need to calculate the arcsin() function.
I use a look up table, but it slow down my design. Do you have any way to apply arcsin() function, except LUT method.



Slow ??

I think LUT-methode is fastest method you can get, other implementation using lot of iteration from taylor-series and/or polynoms and take long time to execute compare to LUT.

One metode with shifting register operation is a CORBA-methode, buts still needs couple of iteration

see:

h**p://www.fpga-guru.com/cordic.htm

Yes, I am wrong, LUT is the fastest way.
My problem is about style of programming it make my design is slow. :)
 

arcsin cordic

All of these functions are done using "Taylor Extension" or "Mac loren" ! , i just don't remember extension for arcsin , i remember arctan !!! you can ask it from a mathemetician to write it's extension for you , then you can calculate arcsin ....
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top