G3PLX's Software IQ transmitter


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'. That is, 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's 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, but there are ways round this.




Copy 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 samplerate of 8kHz and the

output soundcard should be capable of operating at 12kHz samplerate.


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.


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



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, unless it drifts. 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.


The clipper.


This is equivalent to the device known as a "Speech processor" on a

conventional SSB transmitter, but here it's used on AM and FM too. The

microphone audio is boosted and clipped. This is a clever clipper in that

it will not generate harmonics of single-frequency tones. This is very like

the type of clipper known as an RF envelope clipper, but the process is done

in software and not at RF. It improves the readability if the signal is weak,

at the expense of some distortion if the signal is strong, but without

introducing any out-of-band distortion (splatter). Enter the desired number of

dB of clipping into the box. The first time you run the program this will be

0.0 dB representing no clipping. The dB figure is saved when you terminate the



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.

But in this case the buzz will be present with either method of avoiding the

hardware notch.


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. The SSB is generated using a third-method process.

The clipper works by splitting the audio into two paths, I and Q, with Q

phase-shifted by 90 degrees relative to I. These are combined in a sqrt(I^2+Q^2)

process to give a DC signal representing the amplitude of the audio input. This

signal has no 'ripple' at the audio frequency. If the audio signal exceeds

full-scale, it's divided by it's own amplitude, and because there is no ripple,

the output contains no harmonics of the audio frequency. This clipper therefore

doesn't sound as bad as a conventional audio peak clipper.


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. Don't use a soundcard which clips it's output at fullscale.


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



Peter Martinez G3PLX September 2007.

modified clipper March 2008.