Community
cancel
Showing results for
Did you mean:
Highlighted
Honored Contributor I
891 Views

## Arccos calculation

Hello everyone,

I am using de0nano and need to perform arccos calculation.

I am aware that altera have floating point megafunction for arctan and sin/cos, but it does not have arcsin or arccos mega function.

What option do I have?

My data is two complement 12 bit width which means it has 4096 possibilities. If I have to use look up table(LUT) method, then I have to program it with 4096 cases.(which is way too much if I have to do it manually using LUT)

Thank you anyone for your help.

Gunardi :)
5 Replies
Highlighted
Honored Contributor I
24 Views

What is your input format? is it Re/Im or just cosine value?

Highlighted
Honored Contributor I
24 Views

If you're using HDL - you can create a LUT using the ROM template from the coding guidelines and you're allowed to use a function to initialise the ram. In VHDL you can use the arcsin and arccos functions from math_real package to generate the LUT.

Highlighted
Honored Contributor I
24 Views

and - you could tie it up with the new VHDL floating point package to convert the real types to std_logic_vectors.

Highlighted
Honored Contributor I
24 Views

@kaz: Thank you for your reply. It is just cosine value not Re/im input.

"If you're using HDL - you can create a LUT using the ROM template from the coding guidelines and you're allowed to use a function to initialise the ram."

What is ROM template or ram? How to create it? Is it possible to use verilog not vhdl?

Please be more specific, because I am a beginner in FPGA:)
Honored Contributor I
24 Views

Given cosine input range from 0 ~ 4095 representing 1 ~ -1

then use one of following options:

1) use full LUT, simple, needs 4096 * bitwidth as you know. Use cosine input as direct address.

2) use half LUT plus logic. since upper half is anti-symmetric with lower half. e.g.