Saturday, 7 April 2012

Noise floor and frequency response evaluation

Frequency response of the fc0012:

Continuing from my last post, I've had some time to look at the frequency response and noise floor behaviour of my fc0012 tuner more closely.

To determine the frequency response of the fc0012 in finer steps a script was written in bash and matlab that changes the frequency of the signal generator and the tuning frequency of the fc0012 in sync. Matlab was used to control the signal generator using a USB->GPIB adatper and a bash script was used to set the tuning frequency using rtl-sdr.

The power of the CW from the signal generator was set to -50dBm and it was connected in a similar way as in the previous blog post but with a 30dB attenuator placed inline to deal with any possible reflections from the impedance mismatch. In 15MHz steps from 15-1800MHz the scripts were run and the spectrum displayed to look for the presence of the CW from the signal generator.

In the figure below the power spectrum is shown for the block of data recorded at 690MHz using a 100ms pwelch power spectrum estimate. The peak from the CW from the signal generator is visible. There are also two other spikes which are due to the internal noise of the tuner:

At some frequencies in the previous estimated coarse frequency response the fc0012 was deaf. This is evident at 225MHz for example. There is also a lot of ripple visible in the power spectrum which could be due to the shape of a front-end filter:

There were also frequencies where the CW appeared much stronger and began to oversaturate the ADC in the front-end. This was most evident in the 90-135MHz band. The frequency response is strongest here and attenuation may be need for best performance. In the figure below the power spectrum is shown around the peak of the CW for the data block taken at 120MHz. There are a number of harmonics visible which is due to the power of the CW being too strong to be captured smoothly by the limited dynamic range of the 8-bit ADC.

From this data it can be assumed that the frequency response of the fc0012 covers the following bands: 30-60 MHz, 90-135 MHz, 180-210 MHz, 240-285 MHz, 345-435 MHz, 465-585 MHz, 690-945 MHz.

Noise floor estimation for the fc0012:

To estimate the noise floor of the fc0012 the antenna input was connected to a 50ohm load and data recorded at a number of different tuning frequencies using rtl-sdr and a bash script.

Above about 240MHz spectral leakage becomes visible which only occurs at the centre frequency when tuning. To compensate for this when measuring the overall noise-floor only a select frequency range of each power spectrum is used for the overall plot ignoring the parts with the leakage. This process was completed in 770kHz steps from 1 to 1800 MHz. An overview of this process for noise-floor measurements at three frequencies is shown in the figure below:

In the figure below the combined power spectrums are shown between 1 to 1GHz with the tuner passbands found above shown in red. There are a number of spurs visible across the entire spectrum. The spurs are multiples of either 14.4MHz or 28.8MHz. As the local oscillator on the board used is 28.8MHz it can be assumed that harmonics of the local oscillator are leaking in.

Below is the noise floor over the 45-60MHz band. At some points in these plots the spectrum will appear to jump around, this is an artifact of the way the noise floor spectrum jumps around at different frequencies due to either sampling or the AGC. In reality the noise part should be essentially flat. In the plot below there are a couple of spikes but a nice clean band between 45-51MHz is visible:

Below is the noise floor over the 90-135MHz band:

Below is the noise floor over the 180-210MHz band. This band is relatively clean except for one spike, the jumps every 770kHz are artifacts of the way I'm measuring the noise floor:

Below is the noise floor over the 345-435MHz band. The leakage from the local oscillator can be seen here with harmonics with 28.8MHz separation visible:

Below is the noise floor over the 465-585MHz band. This band like the 180-210MHz is relatively clean as well:

Below is the noise floor over the 690-945MHz band. Again leakage from the local oscillator is visible here, but this time the harmonics are separated by 14.4MHz (half the clock frequency).

In conclusion, the fc0012 comes across as a tuner especially designed for DVB and not much else in mind. The e4000 based ones are probably more general purpose, but I won't know for sure until I or someone else can test their frequency and noise floor behaviour. For DVB purposes the kinds of peaks visible wont present that much of a problem as long as the television station signals come in relatively strong. For AM and FM signals they will be more of a problem. Fortunately most of the harmonics appear to be from clock harmonics and will be relatively constant in amplitude over time so they can be notch filtered effectively.

If you want to look at the noise floor behaviour in a particular band in more detail I have put the data on-line in .csv format. The first column is the frequency and the second column is the power spectral density at that frequency.

Monday, 2 April 2012

Initial frequency range estimate

A couple of days ago I read about the rtl-sdr project. By chance a usb digital tv dongle I purchased ages ago was compatible. Here are my findings from my ezcap 646 with a fc0012 tuner.

To investigate the performance I have been recording samples with the dongle connected to a RF signal generator:

A number of adapters are used to connect the 75ohm antenna port to the 50ohm connector on the signal generator. No impedance matching is done, which may cause issues but I'm no RF expert. To explore the frequency range of the fc0012 tuner I enabled a -80dBm CW at different frequencies on the signal generator and calculated the power spectral density from recorded samples at 3.2MS/s. A power of -80dBm was chosen at it was the highest value before aliasing effects became visible (probably ADC oversaturation caused by the behaviour of the AGC).

The data was recorded using the drivers provided by the librtlsdr branch of the rtlsdr git project. The rtl-sdr program was used to save samples to disk, and this was then processed using MATLAB.

Here are the results for a CW at 50MHz (located at an effective frequency of 3.2MHz) using a pwelch power spectrum estimate using 100ms of samples:

These are nice clean results, looking as good as what I would expect out of something like a USRP. There's a spur located a couple of MHz away, but this is nothing out of the ordinary for a tuner of this price.

With the RF off at 50MHz the histogram of the samples look fine as shown below. This implies that at this input power at-least the AGC is operating nominally:

At other frequencies it is not as clean though, but I've never had trouble decoding channels using it as a digital tv receiver. Here are the results at 191MHz:

At 600MHz the tuner is deaf to outside signals. There is also some spectral leakage visible, possible from a local oscillator. Here are the results at 600MHz:

Interestingly the CW reappears at 700MHz as shown below. The spectral leakage is still there as well as some minor spurs a couple of MHz above.

Through testing with a CW every 100MHz the frequency range of the fc0012 (with the current experimental drivers) appears to be from 45-500MHz and 700-930MHz. The E4000 tuner has a claimed range of 64-1700MHz (and tested for GMR signals). From these results it can be concluded that the E4000 has a larger frequency range than the fc0012. I have ordered a dongle with a E4000 and will do some comparisons when it arrives.

Continuing with the testing of the fc0012, below 45MHz the spectrum becomes quite distorted. Past 30MHz the CW can still be seen, but there are also a number of spurs of strong power. Here's the results for a CW at 30MHz:

Past 930MHz the tuner again becomes deaf to any incoming signals:

From these results it looks like adapters with the fc0012 tuner can be used up to part of the first ISM band (900MHz). If your interests are below 930MHz, the fc0012 may be a viable alternative you can't source a receiver with a E4000 tuner easily or cheaply. Over the next couple of days I plan to write some scripts to automate the testing (the signal generator can be controlled over the ancient gpi-b bus) across the whole frequency band (45-930MHz) to locate and characterise the spurs and frequency response of the tuner in a more robust way.