

DRMradio
DRMscan software background
Instead of manually searching for DRM stations I have written a Windows .NET program called DRMscan to automatically control the G303i PCI radio and search the short wave broadcast bands looking for DRM stations. The program scans the short wave bands using a channel increment of 5 kHz and takes around 5 minutes to complete a scan.
DRMscan program no longer available.
DRMscan - how it works
After the G303i radio is tuned to a new frequency the 12 kHz IF is captured to create a 32 Kbyte block of data with 16 bit resolution, at sample rate of 48,000 Hz. The DRMscan program is multi-threaded with the capture routine running in its own asynchronous thread.
To establish that the current received broadcast is DRM the software uses two different algorithms - one algorithm is specific to DRM (FAC reference carriers) and the other algorithm is part of how OFDM is encoded to be immune to problems associated with multi-path reception. If the captured data passes both tests it is assumed to be a DRM broadcast.
FFT
Having captured the 32k IF data block the first step is to convert this data using a Fast Fourier Transform (FFT). FFT software converts the captured audio from the time domain into the frequency domain. The FFT program I’ve used is based on a public domain Pascal FFT program written by Don Cross. Conversion of the program from Pascal to C# is straight forward only requiring minor changes.
I have used a 16384 point FFT to convert the time sampled data into the frequency domain. The resolution for each ‘bin’ (which represents the signal’s energy / amplitude) is 2.93 Hz, derived from dividing the sampling frequency with the FFT resolution (48,000 Hz / 16384). This is much higher than would be normally needed for decoding DRM signals but the software does not attempt to synchronise to the DRM signal so a much finer frequency resolution is needed. The on-screen spectrum displays every 32nd reading.
FAC carrier routine
To determine if the signal is a DRM signal the program looks for three FAC (Fast Access Channel) reference carriers in the frequency domain data. It is not possible to directly look for these FAC frequencies in the FFT data as there will be an unknown frequency offset caused by the radio’s local oscillator not being exactly on frequency.
For successful OFDM decoding the transmitter and receiver need to be exactly on the same frequency. Although the software doesn’t know exactly where these carriers are in the frequency domain data, it does know the relative carrier frequency spacing will always be the same and will not change.
The recognition software uses three windows (±150 Hz) appropriately spaced to move through the frequency domain data created by the FFT summing the value of all the individual carriers. At a certain point there will be a correlation of the carrier amplitude that should coincide with the three boosted FAC carriers. From this peak the actual frequency can be determined and the offset can be calculated, this gives a coarse frequency offset. This is a necessary first part of the DRM synchronisation process in a software decoder but the offset value is not used in this application.
FAC finder – software sums the three outputs F1+F2+F3 to create FAC correlation data.

FAC reference carrier correlation for DRM RTL broadcast on 6095 kHz.
The above plot shows the FAC correlation for a RTL short wave broadcast, the X axis is the frequency offset centred on bin 50 (12 kHz), the correlation peak is at FFT bin 65, giving a frequency offset of (65 – 50) x FFT resolution = 15 x 2.93 = 43.95 Hz.
At any instance music on an AM station or interference could have these frequencies present so the FAC recognition routine is not perfect. Interference picked up from computers and monitors can cause particular problems as the frequency profile can be very similar to OFDM. If the captured data passes this FAC test then a DRM signal is assumed and the data is passed to the cyclic prefix routine for further evaluation.
cyclic prefix routine
Cyclic prefix correlation for symbol alignment.
The prefix correlation routine moves through the time domain samples calculating a correlation between two points which represent the distance between the guard interval and the same interval data at the end of each symbol (marked A and B). The distance between these two points is fixed depending on the mode. If the received signal is DRM then there is only one point in the samples where the two sets of data can match (as shown). Before and after this position the correlation routine will be comparing partial data from two different symbols so correlation will be poor.