User Tools

Site Tools


project:sdr:fcl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project:sdr:fcl [2016/07/10 08:32] – [Usage] spectrum oversample jendaproject:sdr:fcl [2016/11/25 07:29] (current) – ↷ Links adapted because of a move operation ruza
Line 1: Line 1:
 ====== FCL, a fast spectrum channelizer ====== ====== FCL, a fast spectrum channelizer ======
  
-FCL splits wideband spectrum from your SDR into narrowband channels. This is useful for networks that have lots of transmitters side-by-side, like for example [[http://jenda.hrach.eu/gitweb/?p=fmrec;a=summary|FM broadcast]], [[:project:sdr:tetra|TETRA]], [[:project:sdr:tetrapol|Tetrapol]] and [[:project:gsm|GSM]].+FCL splits wideband spectrum from your SDR into narrowband channels. This is useful for networks that have lots of transmitters side-by-side, like for example [[http://jenda.hrach.eu/gitweb/?p=fmrec;a=summary|FM broadcast]], [[:project:sdr:tetra|TETRA]], [[project:tetrapol:start|Tetrapol]] and [[project:gsm:start|GSM]].
  
 It supports everything you would expect from a decent channelizer: It supports everything you would expect from a decent channelizer:
Line 11: Line 11:
  
 We use a straightforward implementation that is cache- and vector-friendly and we have a sane pthreads scheduler. At least on our computers, FCL is 2 to 5 times faster than [[http://gnuradio.org/doc/doxygen/classgr_1_1filter_1_1pfb__channelizer__ccf.html|the GnuRadio implementation]]. Hence //fcl// stands for //Fastest Channelizer in [[https://en.wikipedia.org/wiki/Litom%C4%9B%C5%99ice|Litoměřice]]//. We use a straightforward implementation that is cache- and vector-friendly and we have a sane pthreads scheduler. At least on our computers, FCL is 2 to 5 times faster than [[http://gnuradio.org/doc/doxygen/classgr_1_1filter_1_1pfb__channelizer__ccf.html|the GnuRadio implementation]]. Hence //fcl// stands for //Fastest Channelizer in [[https://en.wikipedia.org/wiki/Litom%C4%9B%C5%99ice|Litoměřice]]//.
 +
 +You can find description of the mathematical principles of the channelizer in Chapter 2 of [[https://jenda.hrach.eu/thesis.pdf|my thesis]].
  
 The following chart compares FCL with GnuRadio 3.7.10. FCL was tuned using the hints below on this page, GnuRadio was profiled using volk_profile. Frequency correction in FCL was disabled. The following chart compares FCL with GnuRadio 3.7.10. FCL was tuned using the hints below on this page, GnuRadio was profiled using volk_profile. Frequency correction in FCL was disabled.
Line 20: Line 22:
 ===== Downloads ===== ===== Downloads =====
  
-http://jenda.hrach.eu/gitweb/?p=fcl;a=summary+https://jenda.hrach.eu/gitweb/?p=fcl;a=summary
  
 ===== Usage ===== ===== Usage =====
Line 35: Line 37:
 <code> <code>
 mkfifo /tmp/myout.ch mkfifo /tmp/myout.ch
-mkfifo /tmp/pipe 
  
-rtl_sdr -f 90e6 -s 2e6 -g 49 -p 44 - | ./fcl -n 20 -s 13 -f "./fir.py 2e6 55e3 11e3" -c 3,8 -i U8 -r /tmp/pipe -o /tmp/myout.ch+rtl_sdr -f 90e6 -s 2e6 -g 49 -p 44 - | ./fcl -n 20 -s 13 -f "./fir.py 2e6 55e3 11e3" -c 3,8 -i U8 -o /tmp/myout.ch
 </code> </code>
-i.e. read data as uint8_t, channelize to 20 channels with 20/13 oversample, select channels 3 and 8 (they are interleaved in the output stream, use the GnuRadio Deinterleave block to get them), read frequency correction from /tmp/pipe, output to /tmp/myout.ch+i.e. read data as uint8_t, channelize to 20 channels with 20/13 oversample, select channels 3 and 8 (they are interleaved in the output stream, use the GnuRadio Deinterleave block to get them), output to /tmp/myout.ch
  
-The tool listens on localhost:3333 (can be changed with -and -p) and supports these commands:+The tool listens on localhost:3333 (can be changed with -and -p) and supports these commands:
   * setrot - set frequency correction in //milliradians per sample//   * setrot - set frequency correction in //milliradians per sample//
   * getrot - print current frequency correction   * getrot - print current frequency correction
Line 47: Line 48:
   * getpwr - print relative power of your channels. You can use this to e.g. detect BTSs   * getpwr - print relative power of your channels. You can use this to e.g. detect BTSs
     * getpwn N - increase number of FFT bins N-times (i.e. get much more detailed view of the spectrum); 1 <= N <= 32     * getpwn N - increase number of FFT bins N-times (i.e. get much more detailed view of the spectrum); 1 <= N <= 32
 +  * gethisto - print histogram (evenly spaced at [0, 1] absolute values of input floats) of samples
  
 There is a convenient wrapper around gnuradio firdes called fir.py. There is a convenient wrapper around gnuradio firdes called fir.py.
project/sdr/fcl.1468139561.txt.gz · Last modified: 2016/07/10 08:32 by jenda