Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
12 years ago

How to find magnitude of source_real and source_imag after FFT in VERILOG code?

Hi, i want to find the peaks after FFT, and i need to find the magnitudes of source_real and source_imag in order to find the peaks... how to achieve this?

4 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Hi, i want to find the peaks after FFT, and i need to find the magnitudes of source_real and source_imag in order to find the peaks... how to achieve this?

    --- Quote End ---

    mag = square root(re^2+im^2).

    if too much resource is needed then use cordic algorithm.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    mag = square root(re^2+im^2).

    if too much resource is needed then use cordic algorithm.

    --- Quote End ---

    of course i know the equation for the magnitude... but it's impossible to write like that in Verilog code right?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    You certainly can get re^2 (re*re) and im^2(im*im) then you add both results. What is left is square root and that is the hard bit. You can use altera's square root ip or use a lookup table for that.

    Verilog should allow you to infer mults and adder but I am not sure if you can infer sqrt so I will go for ip instantiation.

    The cordic amp is far more popular as it requires very little resource but output is ready after some few iterations (6 or so depending on required accuracy)
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    You certainly can get re^2 (re*re) and im^2(im*im) then you add both results. What is left is square root and that is the hard bit. You can use altera's square root ip or use a lookup table for that.

    Verilog should allow you to infer mults and adder but I am not sure if you can infer sqrt so I will go for ip instantiation.

    The cordic amp is far more popular as it requires very little resource but output is ready after some few iterations (6 or so depending on required accuracy)

    --- Quote End ---

    i don't have much time to complete it... however i'll try, hope that it won't be too complicated... thank you!