AN307
Si4712/13/20/21 R
E CE I V E
P
O WE R
S
C A N
P
RI MER
1. Introduction
This document provides an overview of receive power scan (RPS), provides two algorithms for selecting the
optimal transmit frequency and details their implementation, and provides an algorithm test procedure and test
data.
The host controller uses the RPS feature of the Si4712/13/20/21 to select one or more optimal FM transmit
frequencies. This feature can eliminate the need for user intervention in the selection process, greatly reduce time
to select a transmit frequency, and select optimal frequencies because all channels in the band can be evaluated.
The Si4712/13/20/21 incorporates a power scan measurement function that provides total power received at the
antenna. This received power is referred to as the Receive Noise Level (RNL).
2. Algorithms for Selecting Candidate Channels
There are two algorithms for selecting candidate transmit channels using RPS. The first algorithm finds the
minimum noise level in a given band, and the second algorithm uses the minimum noise level averaged over
several channels in a given band. By averaging the received noise level over several channels, the second
algorithm will select candidate stations away from adjacent channels, which may improve performance in FM
receivers with poor adjacent channel selectivity. While averaging requires slightly more complexity on the host, it is
the recommended method.
2.1. Minimum Noise Level
The noise floor of the received spectrum is typically shaped with frequency due to environmental noise. To reduce
the effects of noise floor shaping, the algorithm divides the FM spectrum into several separate bands and finds the
lowest power in each. This prevents environmental noise from dominating the station selection criteria and spreads
the candidate stations throughout the FM band. Figure 1 shows an RPS spectrum along with the selected
candidate stations using this method.
.
Figure 1. Selecting Stations Using Minimum Noise Level in Five FM Frequency Bands
Rev. 0.2 3/08
Copyright © 2008 by Silicon Laboratories
AN307
AN307
2.2. Minimum Averaged Noise Level
By using the average of several frequency bins, the algorithm selects stations away from strong adjacent channels
because certain receivers suffer from poor blocker performance. The noise is averaged over the current frequency
±1 channel to arrive at the measurement. To reduce the effects of noise floor shaping, the algorithm divides the FM
spectrum into several separate bands and finds the lowest power in each (same as algorithm 1). Figure 2
illustrates an RPS spectrum (in red) along with the averaged noise level spectrum (in black).
Figure 2. Selecting Stations Using
Average
Minimum Power in Five FM Frequency Bands
Certain receivers may suffer from poor performance due to blockers at either adjacent (N±1) or alternate channels
(N±2). As a further enhancement, the RPS scan algorithm can incorporate alternate channels by averaging over
five channels (N–2, N–1, N, N+1, N+2). The averaging is weighted using the coefficients (1, 2, 6, 2, 1) and then
normalized by the sum of the coefficients. The current channel (N) has the most effect on the averaged value
(coefficient value 6), followed by the adjacent channels (coefficient value 2), and finally the alternate channels
(coefficient value 1). This algorithm improves performance with receivers that are sensitive to alternate channel
interference.
2
Rev. 0.2
AN307
3. RPS Algorithm Implementation
This section provides pseudocode for the algorithms for implementing the RPS scan algorithms discussed
previously.
In order to determine the noise level at a given frequency the Si4712/13/20/21 function TX_TUNE_MEASURE is
called with the desired frequency. The results are read using the TX_TUNE_STATUS command.
The GET_INT_STATUS command must be performed between sending the TX_TUNE_MEASURE command and
reading the TX_TUNE_STATUS to ensure that the measurement has completed. The measurement completion is
indicated by the Seek Tune Complete (STCINT) bit.
Pseudocode for this algorithm is shown below. TCL code that demonstrates scanning the entire US FM band is
included as Appendix A. This code allows the number of filter taps and the number of bands to break the scan into
to be set via variables. It is straightforward to modify this code to use a single RNL measurement when choosing
the minimum noise level rather than the filtered (averaged) version.
This algorithm requires the host to maintain 3 arrays: the filter values to average (e.g. 3, 5 or more consecutive
measurements), the filter coefficients (3, 5, or more matching the filter width), and the list of minimal values found
per FM frequency range.
INIT FilterData to {0 0 0 0 0}
//FilterData array holds the noise values of the current, adjacent,
// alternate channels. The values are arranged in the array as:
//{N+2, N-2, N-1, N, N+1}
INIT FilterCoefficients to {1 1 2 6 2}
//FilterCoefficients array holds the filter coefficients for weighing
//the value of each channel in the average.
INIT Minima to {0 0 0 0 0}
//Minima array stores the frequency with the lowest averaged noise
//level for each of the 5 bands.
INIT ChannelsPerBand to
( number of channels in the FM band) / ( number of bands )
//ChannelsPerBand stores how many FM channels exist
//in each of the bands
FOR each i = ( number of channels in the FM band + ( FilterWidth / 2 ) )
//Scan the entire FM band
SET CurrentChannel to ( StartingFreq + ( i * ChannelSpacing ) )
SET CurrentBand to ( i / ChannelsPerBand )
SET FilterPointer to ( i MODULUS ( FilterWidth ) )
//FilterPointer indicates the location in FilterData to fill
//with the next noise level reading
IF CurrentChannel > (top of the FM band)
SET FilterData at FilterPointer to 0
ELSE
//Tune and measure the noise level
CALL TX_TUNE_MEASURE with CurrentChannel and 1
REPEAT
CALL GET_INT_STATUS
UNTIL
SEEK TUNE COMPLETE
SET MeasuredRNL to ( CALL TX_TUNE_STATUS with 0 )
SET FilterData at FilterPointer to (MeasuredRNL)
IF i > ( FilterWidth / 2)
Rev. 0.2
3
AN307
//If half of the filter has been filled with noise level values,
//calculate the average noise level
SET AverageFreq to ( StartingFreq +
( i - ( FilterWidth / 2 ) ) * ChannelSpacing )
SET NewAverage to 0
SET FilterWeighting to 12
//Multiply the noise levels by with filter weight coefficients
FOR each j = 0 to FilterWidth
SET Index to ( ( j + FilterPointer ) MODULUS FilterWidth )
SET NewAverage to ( NewAverage +
( FilterData at Index ) * ( FilterCoefficients at j ) )
IF ( FilterData at Index ) = 0
SET FilterWeighting to
( FilterWeighting - ( FilterCoefficients at j ) )
SET NewAverage to ( NewAverage / FilterWeighting )
IF NewAverage < ( Minima at CurrentBand )
SET ( Minima at CurrentBand ) to NewAverage
//Record the lowest noise level in the current band
4
Rev. 0.2
AN307
4. Measuring RPS Algorithm Performance
4.1. Procedure
In order to characterize the performance of the RPS algorithm at selecting good candidate stations, testing should
be performed in several vehicles at different locations and with the transmitter at different locations inside the car.
This testing uses a qualitative scale measurement of Good, Acceptable, and Poor to characterize the FM receiver
performance. After the algorithm selects a candidate station, the car receiver is tuned to the station, the Si4712 is
set to transmit on the station at 115 dBuV power and the subjective audio performance is recorded. In order to
quantify the margin that the transmitter has on this particular station, the transmit power is reduced in 10 dB steps
until the audio can no longer be received. This margin is defined as the amount of power reduction from 115 dBuV
power that can be achieved while still maintaining a "Good" measurement.
4.2. Strong Signal Environment
Figure 3 shows three RPS spectra measured with a Si4712 EVB with a 10 cm board stub antenna at a location
with a direct line-of-sight view of several FM broadcast towers. This situation is representative of the strongest
signal environment likely to be encountered. Using the minimum average RNL method with the filter size set to five
channels to select candidate stations, four out of five showed good performance with the Si4712 positioned on the
dashboard. Repeating the procedure with the Si4712 on the passenger seat yielded three out of five good
candidate stations.
Dashboard (Scan 1)
Good (Scan 1)
Acceptable (Scan 1)
Poor (Scan 1)
Passenger Seat (Scan 2)
Good (Scan 2)
70
60
50
40
30
20
10
0
8750
Acceptable (Scan 2)
Poor (Scan 2)
Search Band Boundary
Strong Signal Environm ent
9250
9750
10250
10750
Figure 3. Si4712 RPS Station Scan Results in a Strong Signal Environment
Rev. 0.2
5