discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Easiest way to perform vector cross correlation o


From: Brian Padalino
Subject: Re: [Discuss-gnuradio] Easiest way to perform vector cross correlation on USRP?
Date: Fri, 3 Nov 2006 10:24:45 -0500

With a Cyclone part with no dedicated multipliers, you are asking a
lot of logic to create your multipliers.  I would not suggest trying
to do this type of calculation in this particular FPGA.

If you want to know how to do it in Verilog, you need to take into
consideration your sample rate along with your clock rate.  Given
this, you have N clock cycles to perform the calculations.  If you
were to do something like this, you could possibly have a block that
performs the two FFT's in parallel and puts the results into a
BlockRAM.  By the time this is done, the next frame is ready for the
FFT, so while this is processing you can perform the cross correlation
and store those results in the next BlockRAM.  After doing this, you
can do the IFFT out of that BlockRAM and pass the results into a small
block to calculate the max value.

You can get Altera tools to generate cores that will perform FFTs and
IFFTs for you.  The cross correlation would then be the handcoded part
along with the max logic.

http://www.altera.com/products/ip/dsp/transforms/m-ham-fft.html

You can also try opencores.org and check out their FFT section, but as
I said earlier - without dedicated multipliers, it would require a
HUGE part and slow down your design significantly.

Hope this helps!

Brian

On 11/3/06, Lin Ji <address@hidden> wrote:
Hi,
  I wonder what if the easiest way to perform real-time cross correlation in
the FPGA on USRP? I've worked weeks on writing a close form algebra doing
cross correlation,but since all my algorithms are based on floating points
and multiplication/division, I'm afraid it's hard to convert that to Verilog
code later.
  All I need to do is for 2 sequence A and B, perform this:
 max(ifft(fft(A).*conj(fft(B))));
 It's really easy to do in MATLAB and relativly simple in C++, but in
Verilog? I have no idea...
 Please people, if any one has done this before or anything related, share
some information with me, I would really preciate that!
/Lin Ji
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio







reply via email to

[Prev in Thread] Current Thread [Next in Thread]