This page will attempt to provide design and construction documentation for the OpenRadio Miniconf Software-Defined Radio (SDR) board.
The OpenRadio Miniconf SDR board (hereafter referred to as 'the SDR'), is a SDR receiver board based on Tony Park's 'Softrock' SDR design. A few design changes have been made to reduce costs, and extend functionality somewhat. One of the main changes is the use of a different oscillator with multiple outputs, allowing a basic transmitter to be implemented.
The SDR is a direct-conversion quadrature receiver. It mixes incoming radio signals (within the range 1-30MHz) with a local oscillator, producing a quadrature baseband output. A brief introduction to quadrature (or 'complex') signals, can be found here. The local oscillator we're using has multiple outputs, so we've configured the radio to use one as a transmitter. With appropriate filtering and software, this can be used to transmit Amplitude, Frequency, or Phase shift keyed data. The kit is designed to target the 27MHz ISM band, though if you have an appropriate level of amateur radio license, it can be used on most other amateur radio bands with appropriate filtering.
Host PC and Microcontroller
The Host PC will be responsible for the following functions:
- Sampling of quadrature baseband signals, using the host PC's inbuilt sound card.
- Important Note: To do quadrature demodulation you will need a sound card with a stereo line-in. We were unable to find a cost-effective USB sound card solution that we could package with the SDR kit. The SDR is still usable with a mono input, but with considerably reduced functionality.
- Calculation of Local Oscillator control parameters, and passing of the parameters to the microcontroller via a USB-serial interface.
The Host PC will be provided by you the kit-builder. This means you will need a laptop to be able to program and use the SDR kit. There is a fair amount of open source SDR software out there, for both Linux, OSX and Windows. We'll be compiling a list of suitable software.
The microcontroller accepts commands from the host PC, and:
- Programs the local oscillator via I2C to change receive frequency
- Programs and re-programs the alternate local oscillator output to produce a modulated carrier wave.
- Performs phase-shift-keying modulation via the toggling of an IO pin (see below).
At this stage, the microcontroller will be an Arduino Nano Clone, socketed onto the main PCB. Software for the Arduino will be open-source and published on Github.
The local oscillator is a Silicon Laboratories Si5351A clock generator IC. It provides independently programmable outputs, with a frequency range of 8kHz to 160MHz. A 25MHz crystal acts as a reference, and programmable fractional PLLs produce the desired output frequency. Programming of the Si5351 is quite involved, but some libraries already exist (one within the Linux kernel!). We have mainly been making use of the Si5351Arduino library, but will likely be modifying it to support faster programming, and allow storage of PLL registers for faster frequency update rates.
Information about the phase noise performance of the chip is available here.
The oscillator will likely require calibration, which can be done in software. There will be a calibrated receiver at the miniconf to assist with this.
Quadrature Clock Generator
To perform quadrature mixing, a quadrature clock is required. That is, two clock signals, with a 90 degree phase difference between them. We're using a variation on a Johnson Ring counter to produce the quadrature clock. This method requires that the input clock be 4 times the desired output frequency, hence why we need an oscillator that goes up to 120MHz if we wish to receive at 30MHz. The Johnson Counter circuit is constructed using two D-type flip-flops. Since the input frequency is quite high (up to 120MHz), we are using 'very-high speed' CMOS logic, capable of operating up to 170MHz. The flip-flop chip in use is a NXP 74VHC74, which comes in a SOIC-14 package.
Quadrature Sampling Detector (Mixer)
The quadrature sampling detector (QSD) acts like a direct-conversion mixer, in that it 'shifts' signals from radio frequencies to 'baseband' (audio) frequencies.
The QSD in the LCARadio is a variation on the Tayloe Detector. It is not a true mixer, in that signals are not multiplied. Instead, it acts as a sample-and-hold detector. A good description of the QSD can be found here.
Baseband Amplifier & Filter
The purpose of the baseband amplifier is to amplify the very weak signals that exit the mixer, bringing them up to levels which can be detected by a computer sound card. At the same time it acts as a filter, to reduce the total available bandwidth, increasing selectivity. The baseband amplifier is an active low-pass filter, using a LT6231 low-noise operational amplifier. It has a voltage gain of 53dB, and a low-pass cutoff frequency of 82KHz. As we are receiving signals in quadrature, our available receive bandwidth ends up being 2 times this cutoff frequency, or 164KHz. However, to actually make use of this bandwidth you would need a 192KHz sample rate sound card, which are quite hard to obtain.
Transmit Modulator & Amplifier
Since the local oscillator has multiple outputs, we can use one of them as a simple radio transmitter. By programming the registers in the local oscillator IC, we are able to turn the output on and off producing Amplitude-shift keying. By reprogramming the frequency at a particular symbol rate, we can produce [http://en.wikipedia.org/wiki/Frequency-shift_keying Frequency-shift keying.
Finally, we can produce Binary phase-shift keying, by shifting the phase of the output signal backwards and forwards by 180 degrees. A basic way of achieving this is by inverting the RF signal using logic chips. We use an Exclusive-OR gate to do this. One input of the gate is connected to the local oscillator, and the other to a GPIO from the micro-controller. The phase can then be controlled by changing the state of the GPIO line.
We are using a 74AC84 Quad-XOR IC. One of the gates acts as the modulator, while the others are used in parallel to act as an amplifier.
Transmit/Receive (TX/RX) Switching
This section consists of a small relay, to switch the (filtered, see below) antenna port between the transmitter and receiver. Since driving a relay coil directly from a microcontrollers IO line is generally bad practice, there is a small relay driver circuit, consisting of a 2N3904, a 1K resistor, and a diode.
The purpose of this filter is twofold:
- When in receive mode, allow only the signals we wish to receive to enter the mixer. This helps to reduce the total amount of noise present at the output of the receiver, and give it better sensitivity.
- When in transmit mode, limit the spurious emissions of the transmitter to comply with regulatory requirements.
In most use-cases, the receiver will be operating on or near the frequency of the transmitter. As the filtering requirements for both the transmitter and receiver are similar, this means we can use a single filter for both.
Our requirements for the receiver are derived from how the quadrature sampling detector operates. Since it performs mixing using a square wave local oscillator, it is susceptible to interference from signals present near the odd harmonics of the desired receive frequency. Ideally these should be completely suppressed, but we'll set a more realistic target of 40dB suppression.
The transmitter and modulator output a square wave signal, which is composed of many harmonics. In theory, only odd harmonics should be present, but this isn't quite the case. To comply with Australian and NZ regulatory requirements, we need to suppress all spurious emissions (i.e. the harmonics of our desired signal) to less than 2.5uW. Some derivation of the filter requirements, based on measurements of the transmitter, are here: Filters
In short, we can meet the requirements for both TX and RX with a 7-element low-pass filter.
On the PCB is a prototyping section, which allows the construction of filters with a few different topologies. Since building a filter directly onto the PCB limits the board to a single band, there will also be filter 'daughter-boards' available, so multiple filters can be constructed and plugged in as required.