Difference between revisions of "Fast Auto-correlation"
m (→GRC Block) |
|||
Line 16: | Line 16: | ||
[[File:GRC-FAC.png]] | [[File:GRC-FAC.png]] | ||
+ | |||
+ | == Download == | ||
+ | |||
+ | * [http://spench.net/drupal/files/facsink.py] | ||
+ | * [http://spench.net/drupal/files/facsink.xml] | ||
+ | |||
+ | Make sure you either place the Python code where Python will find it, or to a location that you add to your PYTHONPATH environment variable | ||
+ | |||
+ | The XML block definition needs to be found by GRC. You can place it in ~/.grc_gnuradio, alongside all the other blocks (usually /usr/local/share/gnuradio/grc/blocks) or elsewhere (see [http://gnuradio.org/redmine/projects/gnuradio/wiki/GNURadioCompanion GRC] documentation about other options). | ||
+ | |||
+ | Please [http://spench.net/contact let me know] how this block works for you! |
Revision as of 21:46, 18 July 2011
Intro
Frank of radiorauch fame put together an excellent page (and some code) on performing real-time auto-correlation with GNU Radio and the USRP.
Unfortunately the code no longer works with the new version of GNU Radio, so I upgraded it and wrote some XML block definitions enabling its use as a graphical sink in GRC (GNU Radio Companion).
Please refer to Frank's page for the gory details. Suffice to say that his FAC (Fast Auto-Correlation) implementation exploits the Wiener Khinchin theorem, which in this context essentially means that if you take the FFT of the power spectrum of a signal (i.e. two FFTs), "we have a particularly fast way of calculating auto-correlations" - Frank.
GRC Block
Auto-correlation of a W-CDMA downlink channel, showing the pilot channel's radio frames repeating every 10ms:
In GRC, the FAC sink appears as such:
Download
Make sure you either place the Python code where Python will find it, or to a location that you add to your PYTHONPATH environment variable
The XML block definition needs to be found by GRC. You can place it in ~/.grc_gnuradio, alongside all the other blocks (usually /usr/local/share/gnuradio/grc/blocks) or elsewhere (see GRC documentation about other options).
Please let me know how this block works for you!