new TV Tuner Chip, the Si2177

Jürgen Kahrs juergen.kahrs at
Tue Sep 24 10:32:33 UTC 2013

Hello Adam,
>> The signal processing of the channelizer
>> runs on my graphics card (nvidia GTX 660TI with 1344 GPU cores).
>> I guess that the noise removal for the raindrops can also be done
>> on the graphics card, even with 200 MHz.
> This is something I am *very* interested in.  How do you do the
> processing on the GPU?  Do you use OpenGL, OpenCL, CUDA, etc?  Did you
> write the code yourself or are you using an existing GPGPU library?

I use OpenCL (no OpenGL), only the C level API, not the C++ level API.
I have tested my software against the OpenCL- implementations of
nvidia, AMD, and also Intel (). This was hard work but the channelizer
is really portable now. When I began, I hoped that I could use an
existing GPGPU library, but such libraries usually suplly some kind of
FFT and that's all about signal processing they offer. There is no library
available for channelizer or filtering with FIR or IIR that I am aware of.
Therefore I wrote the source code myself and decided to do it with
real-valued signals (since I sample the antenna directly) and not with
complex-valued signals that are commonplace in the SDR community.

> What sort of performance do you get?

This is hard to tell in numbers since there are so many parameters
that can be tuned. One example: The demodulated short-wave signals
are saved in a .wav file with all audio channels with 16 bit PCM at 8 kHz.
I have tested increasing the audio output sample rate to 44.1 kHz.
The sound quality improved significantly and I liked this quality.
But this sound quality comes at a high price: a 5 fold increase in GPU load.

My channelizer uses real-valued Goertzel filters and not the usual FFT.
Therefore the GPU load increases with the number of channels used.
Channelizers based on the usual FFT would be faster whenever the
number of channels is known in advance to be a power of 2.
There are many other design decisions like this that influence performance.

As a rough estimate about what the graphics card can do:
With an input sample rate of 200 MHz (1 channel, 16 bit) and an
audio output sample rate of 8 kHz (for each channel, 16 bit)
the channelizer can process more than 120 channels. At that
rate there is no buffer overflow.

>> Why don't you put the source code into a Subversion repository at
>> SourceForge ? Storing the source code there costs nothing and
>> simplifies access.
> Or you could use GitHub - having used SourceForge and GitHub, GitHub
> is a lot easier to set up, providing you are already familiar with Git
> of course!

Indeed, "providing you are already familiar with Git" is usually an obstacle.
Most developers don't want to learn repo management.
Therefore I prefer Subversion. But this thread is not the right place
for discussing personal preferences about SCM systems.

My main point is this: Is there an existing SDR tool fit for handling
data that comes in at 200 MS/s ?

Thanks for your comments and suggestions.

More information about the osmocom-sdr mailing list