SM2000 Part 2 – RF Amp Design

For the SM2000 I need some VHF small signal RF amplifiers, for example a driver amplifier for the transmit PA. So I figured it was about time I learned to design RF transistor amplifiers. The S-parameter method seems to be the way to go, and I have some BRF92 transistors that have S params on the data sheet.

Unless you are experienced in RF design this post may not make much sense. I estimate the eye glazing to interest ratio at 20dB. However as a RF noob I am documenting my experience to help me remember what I have learned.

I spent a day reading the small signal transistor amplifier chapters of “EMRFD” and “RF Circuit Design” by Chris Bowick, and getting my head around Smith Charts. I scratched about on a bunch of paper, complex numbers flying everywhere. Lots of errors and rework. The next morning, to cross check my manual work, I wrote s_param_rf.m to handle the tedious calculations.

I also found these helpful RF and Microwave Stuff Octave scripts, e.g. Smith Chart plotting, including stability circles.

The transistor and operating point I chose was not unconditionally stable, so I had get my head around “stability circles” and find an input and output load that would be stable, and design input and output matching networks. The “RF Circuit Design” book walked me through everything.

Here is the Smith Chart for my operating point:

The red and blue arcs are “no go” circles for the input and output impedance the transistors sees. The green is a 20dB constant gain circle. Any output reflection coefficient gammaL on the gain circle will give you an amplifier with 20dB gain. The source reflection coefficient gammaS is a function of gammaL. So I tried a few different gammaL (red star) until I found a stable gammaS (purple star).

The Smith Chart is rather “busy”. The output reflection coefficient gammaL = 0.8 – 0.4j is the same point as the load or output impedance Zo = 1 – 4j (normalised to 50 ohms which is 50 -200j without normalisation). Even though they map to identical points on the chart, they are read off different axis as different values.

Here is a sample run of the Octave script:

octave:207> s_param_rf
K =   250.5885e-003
-----Frequency: 1.00 - potentially unstable - plotting stability circles
Red is the gammaIn=1, for all loads (gammaL)
Blue is the gammaOut=1, for all sources (gammaS)
Green is the 20.0 dB constant gain circle for gammaL
Input: Zi = 67.6 + 26.9j ohms
       In parallel form Rp = 78.3 Xp = 197.1j ohms
       So for a conjugate match transistor input wants to see:
         Rp = 78.3 Xp = -197.1j ohms
       Rs = 50.0 to Rl = 78.3 ohm matching network Xs = 37.6j Xp = -104.1j
       with conj match to Zi Xs = 37.6j Xp = -301.1j
       matching components Ls = 0.040 uH Cp =  3.5 pF
       Ls can be made from 3.1 turns on a 6.25 mm diameter air core
Output: Zo = 50.0 + -200.0j ohms
        So for a conjugate match transistor output wants to see:
          Rl = 50.0 Xl = 200.0j ohms
        Which is a series inductor Lo = 0.212 uH
        Lo can be made from 7.1 turns on a 6.25 mm diameter air core

I then designed the bias network and came up with this circuit, which I soldered together:

You can just see the little SOT-23 surface mount transistor in the centre of the photo.

Much to my surprise it worked! They say anyone can design a RF oscillator but it takes skill to design an RF amplifier. This actually works as an amplifier! Here is the gain swept between 0 and 300MHz:

Gain was 23dB, return loss at both ports about 8dB at 150MHz. I’m not sure if the return loss is a problem, it represents about 1dB loss (15%) in the reflected signal. I figure getting within 15% is OK given component and S-param tolerances at VHF.

The noise figure was measured at 4dB, and 1dB compression point around 0dBm. The compression point feels a bit low, perhaps as I used a collector resistor rather than a RF choke. I’ll read up on that next, see if I can get a 10dBm output, suitable for driving the SM2000 PA.

Version 2 with 10dBm Output

After another day of head scratching and 3 tries with different collector currents, collector loads, and finally an increased Vce (10V), I have arrived at a version that can handle 10dBm output:

Two tricks were required to get the 10dBm power output:

  1. Setting the load impedance for the collector Z=P/(Irms*Irms). I worked out the required impedance assuming a RMS current of 2mA, which was a reasonably “small signal” variation from the 14mA bias I selected for this version.
  2. Raising Vce from 4V to 10V by using an inductor in the collector rather than a resistor. This meant Vc could bounce around a bit more without being clipped. When I tried increasing the collector impedance without raising Vce the output power was still distorted at 0dBm, so this was an important step. The inductor ended up being part of the matching network and now my circuit looks like everyone else’s so I must be doing something right.

If the above doesn’t sound very convincing it’s because I don’t quite know what I’m doing. EMRFD and RF Circuit Design has a better explanation.

The output is a nice clean 10dBm sine wave, with 2nd order nasties 35dB down:

The Octave script was modified to do the calculations for this version:

octave:69> s_param_rf
K =   466.3534e-003
-----Frequency: 1.00 - potentially unstable - plotting stability circles
Red is the gammaIn=1, for all loads (gammaL)
Blue is the gammaOut=1, for all sources (gammaS)
Green is the 20.0 dB constant gain circle for gammaL
Transducer gain: 26.9 dB
Input: Zi = 8.4 + 3.2j ohms
       In parallel form Rp = 9.6 Xp = 25.4j ohms
       So for a conjugate match transistor input wants to see:
         Rp = 9.6 Xp = -25.4j ohms
       Rs = 50.0 to Rl = 9.6 ohm matching network Xs = 19.7j Xp = 24.4j
         with Xs a capacitor, and Xp and inductor Xs = -19.7j Xp = 24.4j
       With a conj match to Zi Xs = -45.2j Xp = 24.4j
       matching components Li = 0.026 uH Ci = 23.5 pF
       Li can be made from 2.5 turns on a 6.25 mm diameter air core
Output: Zo = 2500.0 + 0.0j ohms
        matching network Xp = 357.1 X = 350.0 ohms
        which is parallel Lo = 0.379 uH and series Co =  3.0 pF
        Lo can be made from 9.4 turns on a 6.25 mm diameter air core

My “transducer gain” is somewhat off (I’m getting 21dB), I know not why. Maybe as I’m using 100MHz s-params for a 150MHz circuit. Now time to look at diode TR switching and maybe a class C 1W PA.

I was studying EMRFD to understand the collector load thing and found what looked like a small typo. I emailed the author (the legendary Wes Hayward) who replied and sure enough I was right, and it will be added to the errata. Finding even a small error in a book like EMRFD makes me feel prouder than getting this amplifier working! Just like software – debugging someone else’s well written work is a great way to learn. Also like open source “release early and often” and let the community help improve the work.

SM2000 VHF Open Digital Voice Radio Part 1

For the last month I’ve been working hard on prototyping the SM2000 – an open source VHF radio. It’s purpose is to test some advanced VHF/UHF ideas I have for FreeDV.

The SM2000 will be a small box (like the SM1000), that contains a fully functional VHF SDR Digital Voice radio. It will run advanced . . . → Read More: SM2000 VHF Open Digital Voice Radio Part 1

Give Us Our Daily Bread

Last week I visited a modern Australian farm on the Eyre Peninsula of South Australia, about 500km from where I live in Adelaide.

This farm has been in one family for several generations, and has steadily grown to 8000 acres (3200 hectares). This same area was previously farmed by 7 families, and now provides a livelihood . . . → Read More: Give Us Our Daily Bread

Modems for VHF Digital Voice

I’ve been thinking about modems for a VHF FreeDV mode. The right waveform and a good demodulator is the key to high performance. However it would be nice to make some re-use of existing FM VHF radios. So is it possible to come up with a waveform that can pass through legacy FM radios, . . . → Read More: Modems for VHF Digital Voice

Simulating the DMR Modem

Brady O’Brien has been doing some fine work simulating the 4FSK DMR modem, based on the waveform description in the ETSI spec. It’s not a classic non-coherent 4FSK modem design. Rather it appears designed to easily integrate with legacy analog FM modulators and demodulators.

Here is the block diagram of a regular non-coherent 2FSK demod. . . . → Read More: Simulating the DMR Modem

All Your Modem are Belong To Us

Everywhere I look I see a need for high quality, carefully tested, open source, portable modem software. This year I built the cohpsk HF modem, that works well on fading HF channels, and is at the key to the low SNR performance of the FreeDV 700B mode.

In the past I’ve investigated the implementation of AFSK . . . → Read More: All Your Modem are Belong To Us

SNR and Eb/No Worked Example

German Hams Helmut and Alfred have been doing some fine work with FreeDV 700B at power levels as low as 50mW and SNRs down to 0dB over a 300km path. I thought it might be useful to show how SNR relates to Eb/No and Bit Error Rate (BER). Also I keep having to work . . . → Read More: SNR and Eb/No Worked Example

Codec 2 Masking Model Part 2

I’ve been making steady progress on my new ideas for amplitude quantisation for Codec 2. The goal is to increase speech quality, in particular for very low bit rate 700 bits/ modes.

Here are the signal processing steps I’m working on:

The signal processing algorithms I have developed since Part 1 are coloured in blue. . . . → Read More: Codec 2 Masking Model Part 2

Phase from Magnitude Spectra

For my latest Codec 2 brainstorms I need to generate a phase spectra from a magnitude spectra. I’m using ceptral/minimum phase techniques. Despite plenty of theory and even code on the Internet it took me a while to get something working. So I thought I’d post an worked example here. I must admit . . . → Read More: Phase from Magnitude Spectra

FreeDV Voice Keyer and Spotting Demo

I’ve added a Voice Keyer feature to the FreeDV GUI program. It will play a pre-recorded wave file, key your transmitter, then pause to listen. Use the Tools-PTT menu to select the wave file to use, the rx pause duration, and the number of times to repeat. If you hit space bar the . . . → Read More: FreeDV Voice Keyer and Spotting Demo