G3PLX's Software IQ transmitter
Updated version now available. For latest changes see SDRtx.txt contained within the .ZIP file

This program is designed to take audio input, via a soundcard, and convert it to a form which, when fed out via a second soundcard to a pair of RF balanced modulators, will generate most common kinds of modulated RF signal. When used to generate SSB, the analogue version of this system is usually known as a phasing exciter. The two RF modulators are driven with their oscillators in quadrature, one oscillator is shifted 90 degrees in phase relative to the other. To cancel the unwanted sideband generated in the two double-sideband RF modulators, the audio signals must also be generated in quadrature. In the analogue world this is done by a complex phasing network.

In the digital world it is done (as in this program) by software, and the two inphase and quadrature audio signals are fed to the external RF modulators through a stereo soundcard. This IQ modulation method is not confined to SSB generation. This program also generates AM and FM modulation. However, because the stereo soundcard doesn't have DC-coupled outputs, it's not actually possible to generate an AM or FM signal with a continuous carrier on the centre-frequency of the RF modulators. There are ways round this.


Copy the latest version of the supplied ZIP file SDRtxr.zip into a new folder (directory) and unpack it. Run the SDRTX.EXE program. The program generates a file called sdrtx.ini in this folder. The program does not write to any other part of the computer, not even the registry. To remove the program from the computer, simply delete the entire folder.

Computer hardware.

A modern computer is needed, running Windows, fitted with at least one soundcard, the output of which must be stereo. The input is only used in mono mode, but it should have the capability to take a microphone input. The input soundcard should be capable of operating at a sample rate of 8kHz and the output should be capable of operating at 12kHz sample rate.

RF hardware.

A variety of different configurations are possible, depending on the band to be used. Typically for the lower frequencies, a stable oscillator, on 4-times the desired output frequency, will be fed to a divide-by-four counter, and the outputs of this counter connected so as to give a pair of signals on the desired output centre-frequency, one of which is 90 degrees phase-shifted relative to the other. These are fed to two RF modulators, which may be integrated circuits (e.g. MC1496), or diode ring mixers. There are a number of alternative configurations using 2-way or 4-way analogue multiplexer chips. For VHF and microwave bands, 90-degree RF hybrids and Schottky diode ring mixers may be used. Whichever setup is used for the RF side, the common factor is the I/Q audio inputs. The stereo audio signals from the soundcard should be connected to the modulator inputs, taking care to match the impedances where this is important, as in the case of diode rings. It's also important, especially if this system is to be used for AM or FM, to make sure that the connection between the soundcard and the RF modulator inputs has a good low-frequency response - at least down to 67Hz and preferably even lower. Of course, the soundcard itself needs to meet this requirement too. For SSB-only this is not so important. Some RF designs by G4JNT are shown here Tested IQ Upconverter designs


Getting started.

Connect a microphone to the input of the soundcard, and make sure you know how to use the soundcard mixer program to select the microphone and set the mike gain. Make sure also that you know how to use the soundcard output mixer and set the output level. Note that if the soundcard output mixer panel has a 'balance' control, it's important that this is precisely at it's centre-point at all times.

The first thing to do when you start the SDRTX.EXE program is to click the button at the right end of the top-centre box labelled "Mike Input Soundcard". A list will drop down. Select from this list the soundcard to which the microphone is connected. Speak into the microphone and check that the "Audio Input Level" bargraph deflects. Set the microphone gain (in it's mixer program) so that this deflects well upscale but does not hit the right end.

Do the same to select the IQ output soundcard from it's drop-down list. Select the "1kHz tone" modulation and look at the soundcard output on a scope (or just listen to it) and adjust the output level using the relevant controls on the appropriate mixer panel. Make sure that there is no clipping of the output waveform.

Now you can connect the soundcard outputs to the RF modulators. If you listen to the RF output with a suitable receiver, and switch to "Microphone" modulation, you should have SSB coming out. If it's LSB instead of USB, swap the L and R soundcard output cables. If it's double-sideband, you have one channel only working and you need to trace through the signal paths to find the problem.

Once you have recognisable USB at the output, you can select LSB on the screen and the RF output will swap to LSB. The next job is to adjust the amplitude and phase balance. To do this, it will help to select the "1kHz tone" modulation, and, with the receiver set to a narrow bandwidth, tune to the single tone in the upper sideband, then swap the program to LSB. Ideally the tone should vanish. The RF modulators may well have their own amplitude and phase adjustments, in which case adjust these first, aiming to get the unwanted tone as low as possible. If the RF modulators have no adjustments, or you need to make fine adjustments after replacing the lid of the RF box, this can be done by means of the two balance edit boxes on the program screen. Edit the number in the box, either positive or negative, to get the desired null. Note that the two adjustments interact slightly so you will have to go back and forth between the two. The two balance values could end up either positive or negative, but they should be smaller than 0.1. If they end up larger than this, go back and check the hardware balance.

The balance adjustments should only need to be set once for a given RF modulator system. The adjustments are saved to disk when the program terminates and are re-loaded next time the program is run.

Note that if the RF modulators have carrier balance adjustments, these should be done separately, with no input from the soundcard.

Operating controls.

A number of useful features are available...

1kHz tone.

If you select "1kHz tone" instead of "Microphone", a sinewave at this frequency will replace the microphone audio. In SSB mode this gives an output in the selected sideband which is at the peak envelope amplitude. This will be useful for setting drive levels in the RF hardware. In FM mode the deviation of this tone is 2.5kHz. On AM it's 100% modulation depth.

Auto Mike Gain.

If you check the "Auto Mike Gain" checkbox, the mike gain will rise to the point where the resulting audio just fully drives the output and maintains that level. This can be useful where the level may vary between operators. If the background level is obtrusive when no-one is talking, uncheck this box while talking in a normal voice, and the gain will be held at that level.

Offset Frequency.

The "Offset Frequency" box allows the emitted RF signal to be 'fine-tuned' either side of the RF centre frequency. Enter a value in Hz, which may be positive or negative. Note that the overall bandwidth is limited to +/- 6kHz, which means that the sum of highest offset frequency and the highest modulating audio frequency must not exceed 6kHz. The Offset Frequency value will turn red if the displayed frequency is more that +/-3000Hz, but you can go higher than this if you know the modulation frequency will be less that 3000Hz. Note that it is possible to apply a positive offset, of say 1000Hz, to an LSB transmission or a negative offset to a USB transmission, either of which will result in the SSB signal 'straddling' the RF centre frequency. There is no problem with this except in the special case of the modulating frequency being exactly the same as the offset frequency. In this case the output frequency from the soundcard will be at exactly zero frequency and will not pass through the AC coupling between the soundcard and the modulators. The same applies in the other transmit modes - there is always a 'hardware notch' at the very centre of the transmitter passband. Don't use an Offset Frequency of 1000Hz (on any mode) with the 1kHz tone modulation selected. Don't use an Offset Frequency of F if the modulation will be a single tone at a frequency F.

SSB clip.

This works on SSB only. It's equivalent to the device known as a "Speech processor" on a conventional SSB transmitter (but it doesn't process the speech). It shapes the I/Q outputs into a form which, when fed through the two RF modulators, clips the RF envelope to increase the mean output power. This improves the readability of weak signals at the expense of some in-band distortion which will be apparent on a strong signal, but without introducing any out-of-band distortion (splatter). The dB figure next to this checkbox shows the amount of gain added before the clipper. The first time you run the program this will be 10dB. You can change this by editing the "clipperdb=" figure in the sdrtx.ini file after the program has been run at least once.

AM and FM transmission.

Before trying these modes, it's important to understand some limitations, which arise from the 'hardware notch' mentioned earlier. To radiate a plain carrier on the centre-frequency, from a balanced RF modulator, requires a steady DC input to the modulator. But a soundcard is incapable of outputting a steady DC component, so this cannot be done directly. In this program, this snag can be overcome in either of two ways. The first method uses a sub-audible 'carrier bias' tone which 'wobbles' the carrier either side of centre so that it radiates no energy on the centre frequency. The bias tone has a modulation index of precisely 2.405, a value known as the first Bessel zero. At this value of modulation index the carrier nulls. This is done entirely in software. The only hardware constraint is that the audio path from the soundcard to the RF modulators should have a flat response right down to the sub-audio tone frequency, which in this program has been chosen as 67Hz.

If you select FM mode and listen to the RF output on a receiver, you will see that, inspite of the fact that there is no DC coupling between the soundcard and the RF modulators, there is a full-amplitude carrier present on the RF centre-frequency, with a low-level sub-audio tone modulation, exactly like the sub-audio tones known as CTCSS tones used to key repeaters. If you examine the spectrum close to the carrier itself, you will see that the carrier is actually in a null and all the energy is in a group of sidebands spaced at 67Hz intervals either side.

The same FM sub-audible bias tone is applied in AM mode.

If the soundcard-to-modulator path has insufficient LF response, thie technique can sometimes result in a buzz on the modulated signal, rather than a pure 67Hz tone, and this can be obtrusive. At the same time, the RF envelope, which should be constant with only the FM bias tone modulation, can become AM-modulated at the bias tone frequency, and this too may be undesirable. If this occurs, the second method of overcoming the AC coupling problem can be used, and that is to use the Offset Frequency feature. To do this, set an Offset Frequency of 150Hz and uncheck the Carrier Bias Tone checkbox. Of course, this also offsets the RF output frequency, so you need to allow for that (or at least tolerate it). The 150Hz offset figure is chosen so that the offset carrier (at 150Hz) is well above the LF cut-off frequency of the soundcard-modulator interface, but well below the 300Hz lowest audio frequency that is passed from the microphone.

Note that if you try to uncheck the Carrier Bias Tone checkbox when the Offset Frequency value is less than 50Hz, it won't let you do it.

Poor carrier balance in the RF modulators can also cause a buzz on the audio when using the Bias Tone method. But in this case the buzz will ALSO be present if the Offset Frequency method is used.

For Technical and Advanced users.

This program opens the input soundcard at 8kHz samplerate, 16-bit mono, and opens the output soundcard at 12kHz 16-bit stereo. Some older soundcards may not work because they cannot open the input and output at different samplerates.

The program dynamically retimes the input audio to synchronise with the output. This means that it's OK to have the input and output on different soundcards which derive their samplerates from different sources. The retiming process is monitored on a display which can be accessed by dragging the bottom edge of the program window downwards. The bargraph shows the buffer status and the Hz display shows the estimated samplerate of the input card relative to an assumed value of 12kHz for the output card.

The audio input is band-limited to the range 300-3100Hz on all modes. On FM there is 750uS pre-emphasis and 10dB clipping. On AM there is 6dB clipping and on SSB the clipping can be switched-in and adjusted in level. The SSB is generated using a hybrid process, equivalent to the phasing method, which incorporates an envelope clipper between two 2800Hz-wide bandpass filters. The outputs of the program drive the soundcard to fullscale digital output at the SSB peak envelope level, the FM carrier level, and the peak modulation of the AM modulation.

The Auto Mike Gain feature can increase the gain by up to 30dB compared to the non-auto value when the program starts-up.

Note that because of the dynamic retiming of the input audio, a pure tone at the microphone input is subjected to some timing jitter, typically less than 1Hz peak-to-peak at 1kHz. If applications are proposed in which this is a problem, consult the program author. The internally-generated 1kHz tone is not subjected to this jitter.

When the program terminates, the names of the selected input and output soundcards, the Offset Frequency value, the balance settings, and the chosen setttings of the Carrier Bias Tone, Auto Mike Gain, and SSB Clip checkboxes, are all saved in a file named SDRTX.INI, and these values are reloaded from this file when the program is restarted. The "clipperdb=" parameter is also to be found in this file although it doesn't have an edit box in the program window. The program may not start correctly if a previously-used soundcard has been removed from the system. In this case, delete the SDRTX.INI file, or delete the reference to the dead soundcard from this file, and restart the program.

Peter Martinez G3PLX September 2007.

Back to Index