Follow on:

VUHF Radio


While working on the TT&C of the first Portuguese Cubesat, ISTSat-1, I started to wonder what would be the simplest and cheapest way to receive and send data to this Cubesat. The TT&C uses UHF on the Uplink (436.45 MHz) and VHF (145.895 MHz) on the Downlink. The primary modulation and demodulation is AFSK, this to be compatible with HAM Radio stations. Other modulations used are G3RUH, a FSK modulation scheme also used by HAM Radios, (G)MSK, BPSK and QPSK. It also has a Morse Beacon on the VHF link.

Knowing this, the module needed to be able to handle AFSK Modulation in both VHF and UHF at a minimum, and at best all other modulations as well. Now this can be achieved with an SDR and GNURadio, using the cheap and ubiquitous RTL.SDR. For this a Linux PC with GNU Radio installed is needed. Also, the RTL.SDR is only a receiver, to have transmission as well a more expensive SDR is required, like a ADALM-Pluto or LimeSDR. Because of this, and because I wanted a simpler way and preferably not more expensive, I went a different route. The solution was using a Sub-GHz transceiver and a MCU to control it and decode the frames. Communicating with the PC is done over USB using Virtual COM.

Now finding a Sub-GHz transceivers is very easy, all of the major Semiconductor manufacturers have one kind or another. The difficult part was finding one that was able to use AFSK. This because it’s a double modulation and not very commonly used outside of HAM Radios. I only found one such transceiver, the AX5043. As a bonus, this transceiver also supports many other modulations. From my findings it is actually the most versatile Sub-GHz transceivers out there.

Currently this module can modulate and demodulate AFSK, (G)FSK and (G)MSK, both in UHF and VHF, with HDLC and AX.25 Framing. Morse decoding is also working, using the RSSI.


Version History

Revision 3

Schematic: VUHF_Radio_Schematic_R3.pdf


This version fixes all the hardware problem discovered in Revision 2, namely the power distribution and analog output filter and amplifier. The RF performance is the same as Revision 2, the new S11 values can be downloaded from the Matching Network section. Besides that the PCB color was changed to blue, which looks much better as can be seen in the figure below:

Revision 2

Schematic: VUHF_Radio_Schematic_R2.pdf


This version some design errors that needed to be fixed with a new version:

  • The connections of the current sense amplifiers are wrong, the positive and negative inputs are switched up. I connected the input side of the sense resistor to the negative input of the amplifier instead of to the positive input…

  • The TCXO interface circuit to the Radios is wrong, I used the schematic for a Clipped Sine Wave TCXO but the TCXO I have is a CMOS one. This is also the more common and therefore more easily available version. Below is visible the circuit needed for each one:

  • Also the pinout of the single output Op-Amp is wrong, which is connected to the DAC output of the AX5043. I will also use this opportunity to change the filter architecture for the DAC output to a second order low pass one, from a first order. This change in circuit is in the Figure below:

Revision 1

Schematic: VUHF_Radio_Schematic_R1.pdf


This version never got to test as it took over 2 months to ship and while waiting for it I found some errors and ordered the second version which arrived before the first one.


The PCB dimensions where chosen so that the module can fit inside a cheap and small aluminium enclosure, 80x50x20mm, widely found on eBay and AliExpress. For this enclosure the PCB has to be 48mm wide to fit snugly inside the support rails and can have a maximum length of 80mm. For this module the PCB length is 78mm to give space for the flange of the SMA connector.

I’m currently on the third Hardware version. The different functional blocks are arranged according to the figure bellow.

Power Domain

The module is powered from the USB port. The output of the USB is first down converted from 5V to 3.7V to improve efficiency. From there each power domain is powered from its own LDO, splitting the power into three separate domains. One for each of the Radios and one for the MCU and other ICs. This was done to improve noise isolation between these domains. Specially the radios, when emitting, can generate a lot of noise in the supply lines.

Each of these domains, as well as at the USB Power input, has a current sense circuit using the INA138. The current to voltage conversion gain of the INA138 is mainly determined by the load resistance, as can see in its datasheet:

So, to get a high voltage swing with a low sense resistor, to reduce the voltage drop across it, a high load resistor is needed. In the order of 100’s of kOhms. But with that the output can’t be directly connected to the STMs ADC input because the maximum recommended connected impedance is < 50kOhms, which goes down with increasing sampling rate. Therefore the output has to be buffered by an Op-Amp, in this case the TLV9004.

MCU and Clocks

The MCU used is the very popular STM32F103C8T6, often referred to as the blue pill. Called that for the Blue PCB module that is sold from Chinese sellers. This MCU has an integrated USB controller, perfect for this application, removing the need for a FTDI chip.

The MCU and radios use a shared XO of 16MHz as clock source. This will/can later be changed to a TCXO to improve clock accuracy and stability, especially useful for the transceivers. Each radio has a dedicated SPI interface to the MCU.

The USB Port is connected directly to the MCU. Each line has a diode clamping protection, with the power lines also having noise filtering using ferrite beads. Important to note that the STM32F103 USB controller does NOT have an internal pull-up resistor on the D+ line, this needs to be added externally. A 1.5kOhm pull-up to MCU Vcc (3.3 V) is recommended by STM. I found this out the hard way by not adding it in Version 2 and therefore spent a good amount of time debugging the not working USB connection… It appears that this is also a common problem with the blue pill boards, as some come with a wrong resistor value installed, 4.7k or even 10k, and can therefore cause issues if not replaced by the correct value.


As explained before, the module is built around the AX5043, an ON Semiconductor Sub GHz RF Transceiver. This is one of the most versatile and configurable single chip sub GHz transceivers out there. It supports the widest variety of modulations, including AFSK which is the whole point of this project.

Basic characteristics of the AX5043:

  • Frequency range: 27 – 1050 MHz
  • Output power: Up to 16 dBm
  • Data-rates: 0.1 – 125 kBits/s
  • Modulations: ASK, FM, AFSK, (G)FSK, (G)MSK, 4-FSK, PSK, O-QPSK
  • Shared 256 bytes FIFO

Besides this it also handles HDLC frames: bit stuffing, flag framing and CRC calculation/validation. HDLC is used as the basis of AX.25.

To achieve simultaneous VHF and UHF communications two of this chip are used. The circuits for each chip are the same, only the installed components vary. This transceiver provides a data interface trough two GPIOs, DATA and DCLK, which are connected to the MCU. It also has an analog input to the internal ADC and output from the internal DAC which are also connected and is explained below in section “Analog Interface”.

Matching Network

The RF connection to the transceiver uses the matching networks recommended in the datasheet and is using the differential input/output using the internal switching mechanism. This matching network in shown in the figure bellow.

The datasheet also provides values for all the components in the matching network for 4 different operation frequencies as shown in the table bellow. Although none of them match the desired frequencies exactly they are close enough to be used as a starting point.

Freq. Band LC1,2 (nH) CC1,2 (pF) CT1,2 (pF) LT1,2 (nH) CM1 (pF) CM2 (pF) LB1,2 (nH) CB2 (pF) CF (pF) LF (pF) CA (pF)
169 MHz 150 10 10 120 12 NC 68 12 6.8 30 27
433 MHz 100 NC 4.3 43 11 5.6 27 5.1 NC 0 NC
470 MHz 100 NC 3.9 33 4.7 NC 22 4.7 NC 0 NC
868 MHz 18 NC 2.7 18 6.2 3.6 12 2.7 NC 0 NC

In the case for the VHF Band the PI filter is populated, as per the datasheet. The input matching (S11) with this PI filter can be seen in the figure bellow.

Two very close resonances are visible, one at around 131 MHz and one at around 179 MHz. The first resonances is created by the RX circuit of the transceiver. The second one is created by the PI filter. From this we can see that this filter is not designed for my desired frequency of 145.895 MHz. This makes sense when considering that the PI filter was specified for a frequency of 169 Mhz. Now it is possible to adjust the PI filter to the pretended frequency but I choose to remove it for now. With this the input matching is improved greatly but also results in a larger bandwidth. The input matching without the PI filter is shown below.

Without the PI filter a peak input reflection (S11) of -29.5 dB is achieved, at 155 MHz, with a -10dB bandwidth of 66 MHz (from 118 MHz to 184 Mhz). This means that at the frequency used, 145.895 MHz, the input reflection is well bellow -10 dB, which is great. The bandwidth is also reasonable considering no SAW is used.

In case of the UHF transceiver no adjustments where necessary. In part because there is no PI filter used and because the given matching network values from the datasheet are closer to the desired center frequency (Datasheet: 433 MHz, Desired: 436.45 MHz) then in the VHF case. The input matching for the UHF transceiver is visible below.

A peak input reflection (S11) of -15.9 dB is achieved, at 431 MHz, with a -10 dBm bandwidth of 119 MHz (from 366 MHz to 485 MHz). Again we have a input reflection below -10 dB at the frequency used, 436.45 MHz. The bandwidth is larger then in the VHF case, almost double.

For the interested the S11 parameter files for the Hardware Version 2, the ones corresponding to the figures above, are available for download bellow:

VHF: VHF_S11.txt

UHF: UHF_S11.txt

And the S11 parameter files for the new Hardware Version 3 are also available bellow:

VHF: VHF_S11.txt

UHF: UHF_S11.txt

Analog Interface

The transceiver has two analog interfaces, an input through an ADC and an output through a DAC. They are connected, with a signal conditioning circuit, to a 4-pole phone jack, one for each transceiver. The pinout of each 4-pole phone jack is identical and is shown in the figure bellow:

Analog Output

The DAC of the transceiver is not a “normal” DAC where the output is simply the desired voltage. It is a 1 bit DAC, meaning that the output has to be encoded and filtered so that different voltages are achieved. The DAC can be setup to output either a Sigma-Delta modulated signal or a PWM modulated signal. Normally the Sigma-Delta output should be selected as it has a much greater frequency range. The output Sigma-Delta has a base frequency of 16 Mhz (when using a 16 MHz clock source and using the frequency doubling) while the PWM has a frequency of only 7.8 kHz. The typical output of the DAC in Sigma-Delta mode looks like this:

In the module the DAC output is mapped to the PWRAMP GPIO pin. This pin is connected to a simple RC first order low pass filter. This filter has a cutoff frequency given by $ F_c = {1 \over 2{\pi}RC} $ and has to be adjusted for different applications. For general use I use a $ F_c = 50 kHz $ by setting the resistor to 330 Ohm and the capacitor to 10 nF. The output of this filter is then fed into a buffer amplifier with a AC coupling capacitor to the phone connector output. This circuit is shown in the figure bellow:

This filter is good enough for debugging and monitoring applications but when the DAC is used to output Audio it has to be improved for better audio quality. In Hardware revision 3, an active second order low pass filter was added, substituting the previous simple first order RC filter. This new filter uses a capacitor in the feedback loop of the Amplifier to provide the second order filtering. During testing of the new filter it was observed that the output signal was worse then with the simple RC filter which was nto at all expected being a higher order filter.

After performing simulations on both filters, using LTSpice, it turned out that the RC Feedback filter has very high “ripple” in the stop band, and the attenuation close to the DAC frequency is very low which is not at all desirable. The DAC output filter therefore had to be changed again and it was switched to a double RC filter, mainly because it fit the already existing hardware well. This new filter is also a second order filter but without any ripple in the stop band improving the DAC output filtering significantly. It is the filter used in all experiments with Audio outputs, FM and AM demodulations.

To improve the filter performance further, while still keeping the current hardware design, another implementation was tested using LC filter instead of the RC filter. For this only the resistor of the RC filter has to be switched for an inductor. The resulting LC filter is a second order low pass filter and with two in series it is effectively a forth order low pass filter.

This filter gives promising results, further improved Sigma-Delta modulation suppression and therefore better audio quality then the other tested filters. Bellow is a comparison of all 4 filter designs used, with their respective circuit and simulation results of their frequency response.

The overshoot of the Double LC filter doesn’t seem to be a problem in practice, probably because it is much lower due to parasitic resistances. The overshoot can also be decreased further by adding a series resistor and/or a parallel resistor with the inductor, with the compromise of decreased attenuation.

Analog Input

The ADC of the transceiver that is used for the baseband signal sampling in the RX chain also has one multiplexed input mapped to the GPIO pins GPADC1 and GPADC2. The ADC has 10 bits with a maximum sampling rate of 1 MS/s and differential inputs with 50 kOhm input impedance. The common mode voltage (center voltage) is 0.8V and the input voltage range is from -500mV to 500mV. The ADC can also be used in single ended mode, with the GPADC2 pin connected to ground.

For this module the differential mode is used. The analog signal is connected from the phone connector through a AC coupling capacitor to a simple RC first order low pass filter, just like the DAC. Again this filter has to be adjusted for different applications. The output of the filter is then connected to a differential amplifier that converts the single ended input signal to a differential signal with a common mode voltage of 0.8V. This signal is then connected to the transceivers ADC input pins. This circuit can be seen in the figure bellow:


Costume drivers for both the Radio and the MCU peripherals where developed, with exception to the USB stack for the MCU. The peripheral drivers use the Low Level libraries from STM. For the USB stack the library provided by STM is used.

The communication protocol used to interface with the PC is based on AT commands.

Explanation on how to program/configure the AX5043 transceiver can be read in it’s dedicated page, where I try to explain as best as possible the steps to set up the transceiver using this projects set-up as examples.

The full software is available on my Github: VUHFRadio

Practical results

This section is dedicated to showing the practical results obtained with this module.

Power Consumption

The power consumption of the whole module for different scenarios/modes are listed in the tables below:

For the UHF Radio:

Radio Mode Pout (dBm) I VHF (mA) I MCU (mA) I Global (mA)
Power Down NA 0.5 42 42
RX NA 15 42 61
TX: AFSK 1200 15.8 46 42 90
TX: MSK 9600 15.8 46 42 93

For the VHF Radio:

Radio Mode Pout (dBm) I VHF (mA) I MCU (mA) I Global (mA)
Power Down NA 0.5 42 42
RX NA 11 42 61
TX: AFSK 1200 14 87 42 127
TX: MSK 9600 14 87 42 124

With this result we can calculate the radio efficiency in TX mode. For UHF it results in 19.2% and for VHF in 18.5%. This values are far from the 50% efficiency given in the datasheet. This lower efficiency is due to the 50% efficiency from the datasheet is only for the PA, not taking into account other parts, and when the PA is powered from 1.8V and not from 3.3V like in this module and therefore is downconverted to 1.8V by an internal LDO.

TX Results

The modulations that are working and tested are AFSK and (G)MSK. The results for both in VHF and UHF are very similar and therefore only figures for the UHF case are shown. Also, the configurations of the transceiver used are the ones explained in the AX5043 page, with the TX power set to the maximum.

The maximum measured output power (programmed to the maximum of 16 dBm) is over 14dBm for both tested modulations, giving a 2dBm loss in the matching network circuit.

The output spectrum in AFSK-1200 mode, AFSK @ 1200 bits/s and FSK deviation of 3000 Hz, is visible below:

And the output spectrum in MSK mode @ 9600 bits/s and FSK deviation of 4800 Hz, is visible below:

Both these modulations have a very clean spectrum, matching the ideal spectrums very well.

This is not the case for the PSK/BPSK mode, the spectrum is very distorted and completely unusable. As can be seen in the figure below.

I’m not sure at this point why this is, but I’m guessing it has to do with the matching circuit used. This because when probing the matching network, the above spectrum changes a lot, in some circumstances almost being the expected one. This is one of the points I’m still working on, it is a work in progress project after all. What was also observed is that in this mode the supply voltage is very disturbed, as visible in the comparison figure below. On the top is the clean supply voltage from when in AFSK or FSK TX mode, and on the bottom the one in PSK mode.

RX Results

Currently the working demodulations are AFSK-1200 and (G)MSK-9600. All test results shown here are using the configurations explained in the AX5043 page with the exception of when changes in those configurations are tested.

The first test performed was checking the accuracy and calibrating the RSSI value returned by the transceiver. For the UHF transceiver the RSSI value was about 11 dBm above the real input power and had to be calibrated by setting the RSSIREFERENCE register to -11. This register is there for this, to compensate for board effects. For the VHF transceiver this calibration value is also -11.

Next the BER performance of the AFSK-1200 demodulation was tested. To perform the BER test a continuos stream of 0s are passed through a scrambler and NRZI encoder which gives a good randomization, needed for accurate testing. This bitstream is then modulated and transmitted, using an ADALM-PLUTO SDR, to the Module. On the Module side, the transceiver is setup to output the demodulated, unscrambled and decoded bits on the DATA/DCLK lines which are monitored by the MCU. When all is correct, no bit errors, a continuos stream of 0s should be observed, any 1s represent a bit error. To note that the scrambling has an error multiplication factor equal to the number of feedback taps, here 3. The NRZI encoding also has an error multiplication factor, in this case of 2. This gives a global error multiplication factor of 6, meaning that the number of 1s measured by the MCU is 6 time higher then the actual number of wrong bits.

The results of the BER test for AFSK-1200 in UHF are shown in the table bellow, where the error multiplication factor is already taken into account. A variable attenuator was used in the chain and the input power (Pin) of the module was measured with a signal analyzer, measuring the channel power with a BW equal to the RX BW of the transceiver. For a good BER estimate a minimum of 30 bit errors have to be observed.

Attenuation (dBm) Pin (dBm) RSSI (dBm) #Bit Errors #Bits BER
0 -22.2 -30 0 3031028 >10-5
10 -31.3 -34 NA NA NA
20 -41.3 -42 NA NA NA
30 -51.4 -51 NA NA NA
40 -61.2 -63 NA NA NA
50 -71.4 -72 NA NA NA
60 -81.6 -81 NA NA NA
70 -91.4 -90 NA NA NA
80 -102.5 -101 0 3003073 >10-5
85 -106.6 -107 51 2839277 1.8x10-5
90 -111.6 -116 1935 301038 6.4x10-5

From this table it is visible that after calibration the RSSI value of the transceiver is very close to the real one, only at -22dBm input power there is a big difference and which is a very uncommon situation anyways. For input powers above -105 dBm the BER is over 10-5. I didn’t want to wait until I get 30 bit errors, which could take hours, and stopped when it was clear that it was over 10-5 by receiving at least 30x105 bits with no errors.

The same BER test was also performed for GMSK-9600 with a BT of 0.5, with the results for the UHF transceiver shown in the table bellow:

Attenuation (dBm) Pin (dBm) RSSI (dBm) #Bit Errors #Bits BER
0 -20.8 -28 NA NA NA
10 -29.8 -28 NA NA NA
20 -39.6 -38 NA NA NA
30 -49.7 -47 NA NA NA
40 -59.6 -59 NA NA NA
50 -69.7 -68 NA NA NA
60 -80.0 -79 NA NA NA
70 -90.0 -85 0 3006194 >10-5
80 -101.0 -96 2 4632745 >10-5
85 -106.4 -102 60 1878145 3.2x10-5
90 -110.6 -106 17351 505266 3.4x10-2

The performance is very similar to AFSK-1200 for input powers over -105 dBm, with a BER over 10-5.At the lowest tested power level the BER performance is much worse then for AFSK-1200, this is not expected as the required SNR for GMSK-9600 is lower then for AFSK-1200 and is likely do to testing inaccuracies.

Both BER tests where also performed for the VHF transceiver with the results shown in the tables bellow.

For AFSK-1200:

Attenuation (dBm) Pin (dBm) RSSI (dBm) #Bit Errors #Bits BER
0 -25.5 -30 NA NA NA
10 -32.4 -31 NA NA NA
20 -42.4 -42 NA NA NA
30 -52.5 -51 NA NA NA
40 -62.4 -63 NA NA NA
50 -72.5 -72 NA NA NA
60 -82.8 -81 NA NA NA
70 -92.7 -89 2 3002802 >10-5
75 -97.1 -93 425 1311193 3.2x10-4
80 -102.7 -97 267 124733 2.1x10-3
85 -107.1 -100 10057 161809 6.2x10-2

And for GMSK-9600:

Attenuation (dBm) Pin (dBm) RSSI (dBm) #Bit Errors #Bits BER
0 -23.7 -30 NA NA NA
10 -30.8 -28 NA NA NA
20 -41.6 -38 NA NA NA
30 -51.0 -47 NA NA NA
40 -61.1 -59 NA NA NA
50 -71.0 -68 NA NA NA
60 -81.1 -78 NA NA NA
70 -91.3 -85 2 3004398 >10-5
75 -96.4 -89 30 1940245 1.5x10-5
80 -101.2 -94 1285 505715 2.5x10-3
85 -105.4 -98 10166 306756 3.3x10-2

From this it can be seen that the performance of the VHF transceiver is worse then the UHF one. I don’t know why this is but it is very clear and visible for both modulations.

Another test that was performed was changing the receiver BW and seeing the impact of this on the BER. This test was performed using the GMSK-9600 modulation on the UHF transceiver using a 80 dBm attenuation, -100 dBm input power, and a 85 dBm attenuation, -105 dBm input power. The results are shown in the Tables bellow:

Attenuation of 80 dBm, -100 dBm input power:

BW (kHz) RSSI (dBm) #Bit Errors #Bits BER
14.4 -97 2 4632745 >10-5
28.8 -99 0 3008934 >10-5
57.6 -98 5 3006816 >10-5
115.2 -111 67 1532975 4.4x10-5

Attenuation of 85 dBm, -105 dBm input power:

BW (kHz) RSSI (dBm) #Bit Errors #Bits BER
14.4 -102 60 3180917 1.9x10-5
28.8 -104 60 542033 1.1x10-4
57.6 -103 884 505601 1.7x10-3
115.2 -117 6824 507738 1.3x10-2

The results are as expected, with increasing BW the BER gets worse, confirming that using the smallest BW possible is very important.

Special Modes

AM Audio Demodulation

Over at Hackaday, a member asked me if it was possible to use the transceiver as a basic Audio AM demodulator which sparked my interest as I remembered that the transceiver could output many different tracking variables on its DAC. One of those variables is the amplitude tracking information, which is exactly what is needed to output an AM demodulated audio signal. This functionality is the basis for using this transceiver as a simple AM receiver. Modulation is, as far as I can tell, not possible.

For this, the first thing to do is to configure the internal DAC to output the amplitude tracking information. This is done by setting the DACCONFIG (0x07) register to 0x01 (TRKAMPLITUDE). The DACSHIFT bits in the DACVALUE registers (0x330-0x331) should be set to 0x0C and using the DAC in $ \Sigma\Delta $ mode is required. The DAC output, as discussed before, has to be low pass filtered, preferably with a high order filter as will be seen later.

The next step is to set the $ F_{Center} $ while taking into account that for the amplitude tracking to work the IF stage of the receiver has to have a signal with the amplitude modulation. With the settings used here the best working IF frequencies where in the 2 kHz to 6 kHz range. This means that the programmed $ F_{Center} $ has to be 2 kHz to 6 kHz bellow (or above) the transmitted signal frequency. As an example, for a programmed $ F_{Center}=436.449 MHz $ the modulated input signal has to fall in one of the following ranges:

  • Lower Range: 436.447 MHz to 436.443 MHz
  • Upper Range: 436.451 MHz to 436.455 MHz

Another consequence of this is that the AFC function has to be disabled as it will try to correct the $ F_{Center} $ and therefore can change the IF frequency to outside the usable range. To disable the AFC the MAXRFOFFSET (0x109-0x10B) register is set to 0x00.

With this set up, the IF Filter (Decimation) and RX Datarate can be configured. The RX Datarate sets the sampling frequency of the IF signal and therefore has to be set high enough to sample the 2 kHz to 6 kHz IF signal so that the amplitude tracking works well. From my observations the sampling frequency seems to be slightly above the set RX datarate (~1.2x higher). The RX Datarate used is 200 kbits/s and the IF filter bandwidth is set to 50 kHz (decimation set to 20). Both the IF frequency setting (IFFREQ), which only affects the second IF frequency, as well as what demodulation is used doesn’t seem to affect the amplitude tracking performance (AM demodulation). FSK is used as the demodulation (modulation) setting and the IF frequency is set to 25 kHz.

Finally, both the AGC as well as amplitude processing have to be configured. The AGC is set to the slowest possible setting without disabling it so to not distort the AM signal. This is done by setting the AGCATTACK0 and AGCDECAY0 bits of the AGCGAIN0 (0x120) register to 0x0E. The AGC target amplitude (AGCTARGET0) is set to 192, a bit bellow the mid-range, which gives a good range for the amplitude variations from the AM modulation without saturations. The Amplitude gain register (AMPLGAIN0) is set to 0x04, which trough experimentation gave the best results. Playing with both the AGCTARGET0 and AMPLGAIN0 values changes the demodulated audio signal quality significantly.

To generate the AM signal, a signal generator is used with the external modulation source input connected to the audio output of a computer. The following settings were used for the signal generator:

  • Frequency: 436.444500 MHz
  • Output Power: -70 dBm
  • AM Source: External Audio (<500mV p-p)
  • AM Type: Exponential
  • AM Depth: 25 dB (25 dB/V Sensitivity)

These settings give a AM modulation index of around 50%, which gave the best results. This limitation are due to a combination of the signal generator and the transceiver. The signal spectrum generated by a white noise audio source is shown in the figure bellow..

Bellow the AM modulated IF signal at the transceiver is visible, in blue, as well as the original audio source, in yellow. This is the output of the DAC when either SAMPLE_ROT_I or SAMPLE_ROT_Q is used as the DAC input. This is useful during debugging to see if there is a IF signal and what the frequency and amplitude of it is. When zoomed in, the IF sine wave would be visible with a frequency between 2 kHz and 6 kHz.

The amplitude tracking information, demodulated AM signal, output by the DAC can be seen in the figure bellow in blue, with the original audio source shown in yellow:

From this figure it is visible that the original audio signal is indeed being demodulated and output by the transceiver! But it is also visible that it is involved in a lot of noise, which is also very audible. Below is a recording of the demodulated audio output from the module, it starts around the 30s mark:

The audio recording from above was recorded directly from the audio jack of the module with no further post-processing. A standard headphone can be plugging into this jack to listen to the AM demodulated audio. Only on one side of the headphones though as it is a mono output and demodulation. This is actually much better audio quality than was expected, I didn’t even expect to be able to get AM demodulation working at all.

Further analysis of the noise shows that the main source of it is the DAC modulation that is not filtered very well even when using the dual RC, second order, low pass filter, with a $ F_C = 25 kHz $. The figure bellow shows this noise where the $ \Sigma\Delta $ modulation of the DAC is still very visible:

Bellow is the spectrum of this noise, which shows that it is concentrated around 10 kHz explaining why the demodulated audio has much better clarity in the low frequencies (Bass).

This shows that improving the DAC output filtering can significantly improved the audio quality. This was also observed when switching from a simple RC, first order, low pass filter to a dual RC, second order, low pass filter, reducing the noise from ~10 mV RMS to ~7 mV RMS. Further tuning and experimentation with the transceiver settings also promises to improve the AM demodulation and the audio quality.

FM Audio Demodulation

Analog FM demodulation, and modulation, is a unique and officially supported special feature of this transceiver. ON Semiconductor even provides an application note on how to set up and use the transceiver as an analog FM transceiver, “AX5043 Use as Analog FM Transceiver". The application node is used as the basis for this section.

I wanted to use and test the FM demodulation with FM Radio stations, and not only with a signal generator. For that the external VCO inductor had to be changed because the “originally” used inductor is for use in the 144MHz band and the FM Radio Band is in the 100 MHz band, between 87.5MHz and 108MHz. Therefore, the external VCO inductor was changed from 100nH to 56nH giving the synthesizer a working range between 91MHz and 101MHz, keeping all the other synthesizer and PLL settings the same.

Both the settings used here and presented in the application note are for a Wideband FM (WBFM) transmissions, the kind used in FM Radio. To use the transceiver for Narrowband FM (NBFM) transmissions, the one used by HAM Radios for voice communications, the settings have to be tweaked/adapted. I have plans to do this in the future. The Table bellow shows the characteristics and differences between WBFM and NBFM.

Modulation Index greater then 1 less then 1
Frequency Deviation less then 75 kHz less then 5 kHz
Modulating Frequency 30 Hz - 15 kHz 3 kHz
Bandwidth over 100 kHz 15 - 20 kHz
Application FM Radio Broadcast Voice Communications

As with AM demodulation, the first thing is to set up the DAC output, here the frequency tracking value should be used as the DAC output. This is done by setting the DACCONFIG (0x07) register to 0x03 (TRKFREQUENCY). The other DAC settings are the same as for the AM demodulation mode.

Next, the modulation/demodulation mode has to be set to FM (0x08) in the MODULATION (0x010) register and the RF center frequency is programmed. The RF center frequency has to be set either 50 kHz above or bellow the actual center frequency of the FM signal so that the downconverted IF signal contains the full FM signal centered around a none zero IF frequency. The 50 kHz are only a reference value used for the settings shown here. The IF frequency is set (IFFREQ) to 10 kHz, the DECIMATION to 0x02, which gives a RX BW of 500 kHz, and RX datarate (RXDATARATE) is set to 200 kBits/s. AFC can be used or be disabled, here it is enabled and set to a maximum offset tracking range (MAXRFOFFSET) of 50 kHz with the frequency correction preformed at the first LO.

Finally, the AGC, IF frequency tracking and timing loops need to be configured. The RXPARAMSETS register should be set to 0x00 to ensure that only the RX parameters 0 are used, at all times. As in the AM mode, the AGC attack speed is set to the slowest response by setting the AGCATTACK0 bits of the AGCGAIN0 (0x120) register to 0x0E. The decay speed (AGCDECAY0) is set to a slightly faster response, set to 0x0A, to prevent peaking. The target magnitude (AGCTARGET0) is set to 0x80. Both the timing and datarate recovery loops are disabled by setting both the TIMEGAIN0 (0x124) and DRGAIN0 (0x125) registers to 0x00. The frequency gain registers are set as shown in the table bellow, where it is also shown what each of them do/affect, as is described in the application note.

Register Value Note
FREQGAINA0 (0x127) 0x0F Off
FREQGAINB0 (0x128) 0x04 Bandwidth of “inner” AFC loop used for FM demodulation. F3dB = 0.115*BR
FREQGAINC0 (0x129) 0x1F Off
FREQGAIND0 (0x12A) 0x08 Bandwidth of “outer” AFC loop (tracking frequency mismatch)

With this the Wideband FM receiver mode is configured and ready to use. The first tests where performed with a RF signal generator where the external modulation source input is connected to the audio output of a computer. The following configurations are used for the RF signal generator:

  • Frequency: 93.200 MHz
  • Output Power: -70 dBm
  • FM Source: External Audio (<500mV p-p)
  • FM Mode: Normal
  • FM Deviation: 75 kHz (75 kHz/V Sensitivity)

The figure bellow shows the spectrum generated when using a white noise audio file as the source, this generates the “purest” and widest spectrum. In yellow is the spectrum of these when using 100% volume (~1Vp-p), and in red when using 50% volume (~400mVp-p). In blue is the spectrum of a FM radio station for comparison.

Bellow is a figure showing the FM modulated signal at the IF stage of the transceiver, with a audio file as the modulation source, shown in blue. The original audio source is shown in yellow. This is the output of the DAC when either SAMPLE_ROT_I or SAMPLE_ROT_Q is used as the DAC input.

The FM modulation is not very clearly visible in this figure because it is a composition of a complex signal. To see the FM modulation better, at the IF stage of the transceiver, a single tone is used as the modulating audio source. The result is shown in the figure bellow, in blue again the FM modulation at the IF stage and in yellow the pure 500 Hz audio tone used as the modulating audio source. Here the FM modulation is clearly visible.

The frequency tracking information, demodulated FM signal, output by the DAC can be seen in the figure bellow in blue, with the original audio source shown in yellow.

This shows the actual FM demodulated audio signal and which can be listened to with headphones plugged into the audio jack of the module. A recording of this, the demodulated audio output from the module, is presented bellow, it starts around the 30s mark. This uses the signal generator as the FM signal source:

And bellow is also a recording of the demodulated audio output from the module when using an FM Radio Station as the source, obtained connecting a VHF antenna to the module.

As already discussed in the AM demodulation section, the audio quality is not great and the majority of the loud and constant background noise is due to the way the transceivers DAC works and needs to be better suppressed with a better filter. The above results are with a double RC, second order, low pass filter. Besides this, further tuning and experimentation with the transceiver settings also promises to improve the FM demodulation and therefore the audio quality.

After revisiting the DAC output filtering, and looking up different low pass filter designs, a different low pass filter was tested, one that is compatible with the current hardware, a dual LC filter. For this the resistor of both RC filter stages are substituted with inductors which results in a two stage LC filter, second order filters, that effectively gives a forth order low pass filter. A comparison of the circuits and frequency responses of all the tested filters can be seen in the Hardware/Analog Output section.

Bellow is a figure that shows the filtered DAC output, in blue, when using the dual LC filter with a cutoff frequency of 23 kHz (L=22uH and C=2.2uF). Compared to the results above, when a dual RC filter was used, the noise reduction is visible. This is also noticeable when listening to the audio signal.

This filter needs further tuning as now the audio signal, although clearer with less noise, has a lower pitch/tone. This can be heard in the recording bellow, with the signal generator as the FM signal source:

The high frequency tone present in the signal is not present when listening trough headphones so it can be an artefact from the recording or it is filtered when using headphones, they are much lower impedance then the line in of a PC, which is used for the recording. Also, the improved audio quality in contrast to the recording with the RC filter is not all from changing the filter but also from the better way of recording the audio signal in general, with less peaking.