Thursday, January 17, 2013

Two repeaters, one frequency (part 4) - Voting receivers

This is an ongoing series of posts:  For the most recent, previous post in this series, see Part Three (link).

In the other three parts of this string of posts I described the two repeaters, how their operation is greater than the sum of their parts and how the two transmitters can share the same frequency without causing mutual interference.

This time, it's the "Voting Receivers".

In order to achieve reasonable parity with a multiple-transmitter system, we also need to duplicate the effect on receive which means that we have to take the users' signals from both sites and then decide how to use them on transmit and for this, we have a "Voter" system.

As its name implies, the voter "looks" at all of the signals that it is getting from the various receivers and somehow decides which one is best - and that one is sent to all of the transmitters in the system.  The result of this is that during a user's transmission, it's possible that the receiver being used might change several times as the signal fades from one receiver and is picked up by another - particularly in areas where coverage overlaps!

Now, then, does one "vote" on a signal?

First, let's talk a bit about what happens to an FM signal as it gets weaker.

Unlike AM, in which the audio can get weaker as the signal gets closer to the noise, the audio from an FM signal stays constant no matter how weak or strong the signal might be - although something interesting happens when it gets to be too weak:  It doesn't get quieter, it gets noisier!

What is happening is that as the signal gets weaker, the detector - which looks for the "frequency wobble" of an FM signal - starts to have trouble distinguishing between the desired signal and the background noise, so that noise starts to creep into the audio.  There is a threshold at which a slight decrease in signal starts to result in a very marked increase in noise and for a number of reasons, this is often referred to as the "limiting threshold."
Figure 1:
The front panel of the voting controller showing the indicators
of the input channel status (green) as well as various
status/health indicators of the unit itself (red.)  A DE-9
jack provides access to the RS-485 bus for configuration
and status monitoring.
Click on the image for a larger version.

What this means is that if you have two copies of the same signal from two different receivers, you can tell which one is the weaker signal NOT by how loud or quiet its audio might be, but looking at how much extra noise it contains:  If the receivers are otherwise identical, of the two versions of the same signal, the noisier one will always be the weaker one!

How, then, does one compare noise?

There are two common techniques:
  • Compare "quiet-ness".  In the pauses and spaces between words, there will be brief pauses of silence - or, at the very least, portions that aren't as loud as the peaks of the audio.  The weaker signal will have more noise, so it won't be as "quiet" during these pauses as the strong signal.  The receiver that has the highest "minimum" audio level will be the one that is weaker.
  • Compare total loudness.  As it turns out, as a signal gets weaker, the noise gets added to the audio which means that if you look at the total amplitude of the two signals, the one that's louder overall (that is, there's the audio plus noise) will be the one that is weaker.
One can also look at the level of ultrasonic noise from the discriminator, but this is not easily done on sites connected only via a voice-bandwidth audio link and may be discussed in a later blog entry.
For a number of reasons, we chose the second method for our voting system.

It makes the job a bit easier if one looks only at the higher-frequency audio - say, that above about 2 kHz - as this has less speech energy in it overall, yet the noise will increase at the high frequencies of the de-emphasized audio just as readily as it will at the lower frequencies.  By "looking" only at these higher frequencies it becomes a bit easier to ignore the voice energy when trying to make comparisons of quality between multiple channels of the same audio.

There are some complications, however:

As you can imagine, no matter what method of voting you pick, it's important that all of the audio sources are as identical to each other as possible in terms of amplitude (loudness) and frequency response.  Consider the following example.
  • One receiver is louder than the other due to a misadjustment.  The louder receiver - even if it has a perfectly good signal - will look "worse" than a quieter one since more total audio energy will be detected from it.  In other words, compared to the the other, quieter receiver, the loud one will be considered noisier.  Because of this, the voter will "prefer" the quieter signal, even if it is a bit noisier.
  • One receiver has better "highs" than the other.  Since the noise from a weak signal will readily appear in the "highs", if two equally-noisy signals appear at once, the receiver with the stronger "highs" will be considered the worse one and the voter will prefer the other signal.  Since our system looks at the audio above 2 kHz, a receiver with extra "highs" makes things even worse!
When we first installed the voter, we had all of these problems, but we expected that we'd have to tweak a few things, but several things caught us off-guard:

  • The first one was that the "local" receiver was connected to the voter via copper wire, while the other receiver was connected via a UHF radio link.  The local receiver had better "highs" in its audio than the receiver on the UHF radio link and the "highs" in the voices of the users on the local receiver caused the voter to "think" that the signal was worse than it really was and it would jump back-and-forth while people were talking.
  • Due to a design flaw in the local receiver it was discovered that it would start to clip if the received signal's deviation was greater than about +/-3 kHz.  Interestingly, this flaw had gone unnoticed in the 30 years that this receiver had been used because no-one had looked for it, and it really didn't sound that bad since the transmitter removed the speech harmonics, anyway.  Coupled to this was the fact that pre-emphasized audio - common on our VHF and UHF bands - boosts the highs as compared to the lows, further masking the clipping.  With all of that distortion, the voter was "seeing" plenty of audio energy above 2 kHz and voting "away" from it in favor of the receiver connected via the UHF radio link.
The first problem required that we put a low-pass filter on the audio from the local receiver to make it "look" like the audio coming across the UHF link and for this, a filter was installed that scraped off the audio above about 3 kHz.

The second problem - the receiver distorting - was a bit trickier.  Once on the workbench, I noticed that the clipping was asymmetrical and I traced it to an emitter-follower audio stage coupling from the discriminator chip with insufficient headroom, trying to go "below" ground.  Poking around with an oscilloscope, I noticed that the input signal to this emitter-follower stage was "clean", so I modified it by turning it "upside-down" and using a PNP with its collector connected to the ground side instead of an NPN with its collector connected to the V+.  Doing this moved its clipping threshold "upwards", toward the V+ supply instead of ground.

That problem solved, I then noticed that I still couldn't go above about +/- 3 kHz deviation without significant distortion - but this time I traced it down to the 10.7 MHz IF crystal filters.  As it turned, one or more of these had gone bad and the filtering was no longer "flat" across the required 15 kHz IF bandwidth of this single-conversion receiver.

Fortunately - because of another project - I had on hand some extra 10.7 MHz crystal filters and I was able to replace those in the receiver and nicely flatten out the response.  The ultimate result was that the receiver could accept about +/-7 kHz of deviation modulated with a 1 kHz tone before it started to distort badly.  The measured IF bandwidth was now about 16 kHz at the -3dB points and much more than 20dB down at 20 kHz.

Re-installing the receiver, the audio levels from the remote receiver (via the UHF link) and the local receiver were very carefully matched and the voter behaved a bit better - but it was still favoring the "remote" receiver slightly.  Fortunately, when I designed the voter I included a number of software parameters that could be tweaked and I was able to "bias" the voter slightly toward the local receiver.

The voting controller:

Figure 2:
The main voter board.  As you can see, it is all hand-wired on
glass-epoxy prototyping board.
Click on the image for a larger version.
The voter itself is homebrew and uses a PIC18F4620 processor at its heart.  Capable of accepting up to 8 receivers, it has two voting channels:  The "current" receiver - the one that is being selected for on-air, and the "other" channel that is being compared to the on-air receiver.

If there is just one receiver active, the choice is simple:  Select it - no voting required!

If there are two receivers active they are compared against each other, the "better"one being put on-air and the worse one on the "other" channel:  If, at any time the signal on the "other" receiver gets to be better of quality than the one that is on-air, they flip positions.

If more than two receiver go active at the same instant it will grab the lowest-number receiver first and then compare, one-at-a-time, the quality of the other receivers against it.  If it finds that one of these other receivers has a better signal, it will put that receiver on the air and the process repeats itself with the processor constantly seeing if any of the other receivers have a better signal than the one that's currently on-air.

In the audio chain of the voter is a digitally-programmable potentiometer that is used to set the gain of each selected receiver (on both the main, on-air channel and the "other" channel) to the levels that allow the audio of each receiver to be perfectly matched.  There is also a "phase selector" switch that allows either a 0 or 180 degree phase change of the receiver to account for the fact that there may be an audio inversion somewhere earlier in the audio chain.

Both the selected "on-air" and the "other" receiver are passed through a 2 kHz high-pass filter which then goes to a rectifier circuit, the result being that a DC voltage is produced that is proportional to the amount of audio energy.  While some of the energy above 2 kHz is going to be voice energy, some of it will also be the added noise on a weaker signal, so that "noisy" channel (e.g. the one with the poorer signal) will have a higher voltage than the other.  The two voltages are digitized by the computer and used to make the decision as to which receiver has the better signal.

Cleaning up the squelch noise:

One issue with using a link receiver for connecting receivers for voting is the fact that if there's a "choppy" signal, the remote receiver's squelch will constantly open and close - but how do you convey that fact to the voter?

One way is to simply turn the UHF transmitter on and off and follow receiver squelch, but this gets a bit messy, particularly since there will be a burst of noise every time that happens (e.g. the "ker" in "kerchunk"!)

To avoid this, the instant the squelch of the remote receiver closes, a 3.2 kHz "voting tone" is sent down the link.  At the voter, this tone is detected and treated in the same way as dropping of the link transmitter and this causes a "squelch" indication from that remote receiver to show that the input signal has gone away.  After the tone is detected, the link transmitter can shut off and that extra "ker" (e.g. burst of noise) won't ever be heard by the user!

This tone also has another purpose:  Since it is a very strong 3.2 kHz tone it will be intercepted by the voter's noise detector as a full-scale indication of "bad signal noise" and the voter will instantly "see" it as a signal of inferior quality and jump away from it in favor of another signal, if available.

Other circuits:

In order to meet FCC rules, the UHF link transmitter must occasionally ID and this is done using a 2.44 kHz tone frequency, a frequency above most of the audio content.  2.44 kHz notch filters are used in front of the tone detector (but NOT in the audio path to the audio output of the voter) in each of the voter's channels (e.g. the one that is on-air, and the "other" one) to remove the link IDer and keep it from affecting the voting as well as a notch filter to remove the 3.2 kHz "voting tone" that is sent on the UHF link.  If the link IDs with no-one talking, the 3.2 kHz voting tone will already be on, keeping an "open squelch" indication from being passed to the voter and prevent that ID from even keying up the repeater.  If an ID happens to occur while someone is talking through the voter, there's no harm as the pitch of the ID is fairly high and most people don't ever notice it!
Figure 3:
Inside the voter's die-cast metal box with the circuit board removed.
All input/output signal lines go through feedthrough capacitors
and ferrites to remove any RF energy that might be coupled
onto them - an absolute necessity since the repeater site
has extremely high levels of RF energy!
Click on the image for a larger version.

Another circuit an 8-channel multiplexed input that is very rapidly scanned to determine which COS (squelch) output lines from the receivers are active, this being done so that the voter knows which receivers are actually active!  The voter also has the capability of producing "courtesy beep" tones which are used to identify the various remote receivers by pitch allowing users to determine into which a particular user is being received.  Since most of our users come across the main receiver, this one doesn't have a beep!

The voter - like the disciplined oscillator - has an RS-485 bus on it which allows it to be configured via a serial port as well as be queried and configured remotely.  As it turns out, one can kludge an RS-485 interface to talk to most RS-232 ports by using just one of the receive/transmit lines and this is brought out on a DE-9 front-panel connector.  In this way, one can look at the configuration of the voter - even make adjustments - while on-site as well as talk to any other device that is also hanging on the RS-485 bus!

Finally, the voter has 16 front-panel LEDs, 8 of which indicate which receiver is (or recently was) active while the other 8 LED indicate the various states of the hardware for monitoring and diagnostic purposes.

Final comments:

This voter was installed in October of 2009 and has been in continuous service ever since.  In the first month, the code was tweaked slightly to allow more-detailed tweaking of the noise detection algorithm to minimize the likelihood of "false voting" and to permit one receiver to be favored slightly more than the other.  The only "major" change was to add a minimum "dwell" time to the voting - that is, once a particular receiver was selected, it had to stay there for a minimum amount of time before another receiver was allowed to be selected unless, of course, that receiver dropped out!

The only hardware tweak was increasing the gain of the noise detectors to allow the voter to better-determine the relative quality of signals that were already nearly "full-quieting":  Before doing this the voter couldn't tell the difference between signals that were better than about 18dB quieting, but now this has been extended to about 25-27dB quieting - a noise level below that which most users even notice!


This page stolen from

No comments:

Post a Comment


While I DO appreciate comments, those comments that are just vehicles to other web sites without substantial content in their own right WILL NOT be posted!

If you include a link in your comment that simply points to advertisements or a commercial web page, it WILL be rejected as SPAM!