--:--:-- UTC
WEB VERSION V2.01 · WINDOWS 1.0.1 · NOVEMBER 2026
FM / SDR7020 / PROCESSOR + TRANSMITTER / FREE

DigiFM-Optimal

DigiFM-Optimal turns an SDR7020 into a complete FM broadcast transmitter. Everything is in the FPGA of the 7020: an audio processor like broadcasters use, a stereo coder with RDS, an FM transmitter and an FM receiver. Plain stereo sound goes in, an FM stereo broadcast with RDS comes out. No PC in the audio path and no delay. The Windows program is in Dutch.

The SDR7020
The SDR7020 · TX1, RX1, RX2, TX2 at the top
Program and SD card belong together: always use them together. If you notice something odd, send the log (see at the bottom: problems).
NEW: THE WEB VERSION V2.01
The web version of DigiFM-Optimal in the browser: rack, tabs and the meter bridge
The web version in the browser · the same rack, the same tabs and the same meter bridge as the Windows program

With the web version you no longer need a PC to transmit. Everything runs on the 7020, and you operate it in a web browser, also from another PC or a tablet. Nothing needs to be installed.

  1. Put everything from the folder SD-kaartje DigiFM-Optimal V2.01 straight onto an empty FAT32 card (not in a folder).
  2. Card into the 7020, network cable in, switch on.
  3. After about a minute, in the browser: http://IP-address/ (the IP address is in your router).
The rack of DigiFM-Optimal with lamps, display and the transmitter switch
The rack · frequency, power, presets, lamps, the meter and the transmitter switch

With the web version everything runs on the 7020 itself and the browser is the control desk. With the Windows version that is the program on the PC. Both look the same: you set everything with it, you see all the meters on it and you measure your own broadcast with it.

WHAT YOU NEED

HARDWARE

TransmitterSDR7020 (Zynq 7020 + AD9363)
Sound inI2S ADC board, 24 bit / 192 kHz
Sound out (optional)DAC board with PCM5102A
Cardmicro SD, FAT32
MeasuringTX1 via 30 dB to RX2, or a splitter

PC

SystemWindows 10 or 11
Processor2 cores or more
Networkcable, no Wi-Fi
Installingnot needed: unzip and start
MAKING THE CARD
  1. Take an empty micro SD card, FAT32. If you use your digiWUFFUM card, first keep a copy of all files on your PC.
  2. Unzip the zip. Put all files from the folder SD-kaart DigiFM-Optimal 1.0.1 straight onto the card, so not in a folder.
  3. Was there a config.txt with a fixed IP address on your old card? Put it back on.
  4. Card into the SDR7020, power on. After a good half minute it is ready.

A home network with 192.168.2.x (for example KPN) works too: the card then moves the USB address of the 7020 to 192.168.77.1 by itself.

CONNECTING TO THE GPIO PORT
Drawing of the GPIO port with the I2S connections
GPIO port · DAC (sound out) on 7, 11, 13; ADC (sound in) on 14, 16, 18

ADC BOARD (SOUND IN)

DATA / LRCK / BCKpin 14 / 16 / 18
Per line1 kΩ series, 1.2 kΩ to ground
GND / 5 Vpin 20 / pin 1
SettingMaster, 24 bit, 192 kHz
Inputsleft and right; external MPX on LEFT

DAC BOARD (SOUND OUT)

DATA / LRCK / BCKpin 7 / 11 / 13
Dividernone, direct (3.3 V)
GND / 5 Vpin 2 / pin 1
FMT jumperon I2S
Do not usepin 15, 17, 19
Voltage divider on pins 14, 16 and 18. Those pins run at 1.8 V, the ADC board outputs 3.3 V. Put 1 kΩ in series and 1.2 kΩ to ground in each of the three lines, as close to the GPIO port as possible. No divider to the DAC board.
THE FIRST START WITH WINDOWS (1.0.1)
  1. Put the folder programma DigiFM-Optimal somewhere on your PC, for example in C:\DigiFM-Optimal.
  2. Start DigiFM-Optimal.exe. Windows warns the first time (the program is not signed): click More info and then Run anyway.
  3. Press Zoek (search) next to the IP address. The program finds the 7020 via USB or on your network. Then Verbinden (connect).
  4. The log then shows FPGA DigiFM-Optimal 0.29. Switch the transmitter on at -10 dB, into a dummy load.
  5. On the modulation monitor switch Start monitor on, with Pluto/7020 and RX2.

In Task Manager you will then see more than one DigiFM-Optimal. That is as it should be: the monitor and the receiver each calculate on their own core of your PC.

THE AUDIO CHAIN
Input → AGC → Stereo → EQ → Multiband → Sub → HF limiter → Final limiter → Clipper → 15 kHz → Output
→ Stereo coder (pre-emphasis, composite clipper, pilot, RDS) → MPX clipper → channel filter 200 kHz → FM transmitter
The meter bridge of Audio processing with a meter per stage, IN/SET and the sliders
Audio processing · the meter bridge: a meter per stage, IN or BYPASS, and the main slider. Click a stage for all controls
The multiband compressor with six bands
The multiband compressor: six bands, per band threshold, ratio, attack, release and output mix. On the right the general controls
STAGEWHAT IT DOES
InputSetting the level right.
AGCSlowly evening out quiet and loud songs. With 3-band also the bass and the treble: play a song that sounds good and press Leer (learn).
StereoMaking the stereo image wider.
EQColouring the sound, with 7 bands.
MultibandMaking the sound dense and even, per frequency band. Klankvast (tone lock) keeps the tonal balance the same, even when it works hard.
SubExtra deep bass (0 to 20 dB), with Sub max as a calm limiter.
HF limiterTaming the S sounds and hi-hats, so it does not sibilate.
Final limiterCatching the peaks, without delay. Default drive 13.
ClipperCutting off the last peaks. It is fixed at -6 dB: the output can never get louder.
15 kHzEverything above 15 kHz removed, so the pilot stays clean.
OutputThe level to the stereo coder. With this you set the deviation.

There is no delay in the processor: no look-ahead and no buffer. You hear yourself back immediately, even on a radio in the same room.

AS LOUD AS POSSIBLE WITHIN 200 KHZ

An FM transmitter has a 200 kHz channel. Everything has to fit in there. Go outside it, and your neighbour suffers. The secret: the peaks may not go higher, but the average may go up. The closer the sound sits against the 75 kHz, the louder.

MPX POWERHOW IT SOUNDS
0 dBrNeat, spacious, lots of dynamics.
+2 dBrSolid, still very open.
+4.5 dBrThis is where most commercial broadcasters are. Loud and full.
+6 dBrThe maximum that can be reached cleanly with this transmitter. Above it, it starts to distort.

Step by step

  1. MPX clipper on the modulation monitor: Clipper aan (on), limit 73 kHz, knee 1.5 dB. A small knee is important: a large knee also rounds off the pilot, and then the gap around 19 kHz fills with junk. The channel filter is always fixed at 200 kHz.
  2. Stereo coder: pilot 9 %, RDS around 3 kHz, pre-emphasis 50 µs.
  3. Choose a preset to start with, for example PzN-Radio.
  4. Play solid music. Turn the Output of the processor until the peak deviation is around 70 to 75 kHz.
  5. Composite clipper: Comp. clip aan (on), and raise the drive step by step. This gives the most dBr. Watch the MPX power: +4.5 dBr is a nice target.
  6. Does it sibilate? Switch the HF limiter on, split point around 9500 Hz, and lower the threshold (around -30 dB) until it is gone.
  7. Does it distort? Less drive on the composite clipper, less clipper drive, or choose a slightly lower MPX power.
  8. Does it sound good? Opslaan als… (save as) under your own name. The clippers are saved along with it.
THE MODULATION MONITOR
Modulation monitor with peak deviation, MPX power, pilot, RDS and the MPX spectrum
Modulation monitor · peak deviation, MPX power, pilot, RDS and the MPX spectrum. On the second row Audio mute, Bron (source), dB MPX and ADC vol (ADC full)
The Source list: Intern, Toon 1 kHz -20 dB and Extern MPX
Bron (source): what the transmitter transmits. Intern (the processor), a test tone, or an MPX from outside
BUTTONWHAT IT DOES
Clipper aanThe MPX clipper, the last safeguard for the transmitter. Recommended: 73 kHz and knee 1.5 dB. The lamp shows how many dB it removes.
Comp. clipThe composite clipper on or off (green = on), with the drive in dB.
Audio muteMusic off, pilot and RDS stay on. The button turns red. After a restart mute is always off.
Bron: InternNormal: the sound via the processor and the stereo coder.
Bron: Toon1 kHz at -20 dB, that is 7.5 kHz deviation, mono, with pilot and RDS added. Handy to check your deviation and your receiver.
Bron: Extern MPXThe ADC (left input) goes straight to the transmitter, as with digiWUFFUM. Processor and stereo coder then do nothing; the MPX clipper stays on. First set dB MPX to -8 and then turn up to the deviation meter.
ADC volTurns red when the ADC is at full scale. Then turn the source itself down: the slider does not help there.
STEREO CODER AND RDS
Stereo coder / RDS tab
Stereo coder / RDS · on the left pre-emphasis, pilot, audio deviation, RDS level and the composite clipper; on the right what is transmitted in RDS
THE RECEIVER
Receiver tab with spectrum, waterfall and S-meter
Receiver · spectrum and waterfall (click to tune), S-meter, station name and RadioText
Panel Receiver in the 7020 (DAC)
The receiver in the FPGA, straight to the DAC

The 7020 also contains its own FM receiver. The sound goes straight to the DAC board, without delay. Transmitting and receiving work at the same time.

Squelch softly mutes the sound when the signal is too weak. Ruis (noise, 0 to 10) suppresses noise: first stereo gradually goes to mono, then the treble goes down as well. Set it as low as you can.

When you close the program, the DAC goes silent.

ALIGNMENT
Alignment with the test tone and the alignment aid
Alignment · image and carrier leakage live in dBc, automatically or by hand (here: image -81 dBc, leakage -73 dBc, and the list per frequency)

A transmitter like this always makes a little image and a little carrier leakage, and how much differs per frequency. Connect TX1 via 30 dB to RX2, or use a splitter. Click Automatisch afregelen (automatic alignment), or go through a whole band in steps of 5 MHz with Band afregelen. Every frequency goes into a list.

New: the alignment stays. The AD9363 aligned itself slightly differently at every start-up, and then your list was no longer right the next day. Now the program also stores the state of the chip, and puts everything back exactly after off and on. Frequencies you aligned with an older version, align once more.

Home-made splitter with three SMA connectors
Home-made splitter · three SMA connectors with 16.5 Ω in each branch, in a star
PRESETS
PRESETCHARACTER
PzN-RadioThe all-round radio station of PE1PzN. Full bass, open treble.
PROBLEMS

Does something not work as you expect? First look in the manual (chapter on solving problems).

Sending the log: go to the Logboek (log) tab, click in the text, press Ctrl+A (select all) and Ctrl+C (copy), and paste it into an e-mail or message to PE1PzN. Add a line about what you were doing when it went wrong.

Only for radio amateurs and radio research, not for commercial use. Everything on this page (program, files and description) is given free of charge as it is, without any warranty. Use is at your own risk: PE1PzN is not liable for damage to equipment, interference to others or other consequences of use. Transmitting is only allowed within the conditions of your own licence and on frequencies where you are allowed to; that is your own responsibility.
DOWNLOADS
⬇ DigiFM-Optimal V2.01 (web version)
SD card for the 7020, operated in the browser: unzip, put it on the card, nothing to install.
With a README, the manual (English and Dutch) and in the folder Hulp: Controle.bat and MAC-adres-7020.zip.
File: … · …
STATUS: …
SHA-256: …
⬇ DOWNLOAD ZIP
⬇ DigiFM-Optimal 1.0.1 (Windows)
Program for Windows and SD card in one zip: unzip, nothing to install.
With a LEESMIJ (read me, Dutch). Program and card belong together.
New in 1.0.1: transmit power remembered per frequency (new band: -10 dB), the source remembered, and receiver bandwidths like a TEF (also in the 7020, up to 300 kHz).
File: … · …
STATUS: …
SHA-256: …
⬇ DOWNLOAD ZIP
⬇ MAC-adres.bat: two or more 7020s on one network
Every 7020 leaves the factory with the same MAC address (00:0a:35:00:01:22). With two on the same network, only one gets a connection. MAC-adres.bat gives a 7020 its own address, and can also set it back. The address then belongs to the board, with every program and every SD card.
Switch on only one 7020, start MAC-adres.bat, type the IP address and choose 1. After the restart it finds the 7020 again via pluto.local and shows the new IP address. Runs on a Windows PC. The program itself speaks Dutch: 1 = own address, 2 = back to standard, 0 = stop, j = yes.
File: … · …
STATUS: …
SHA-256: …
⬇ DOWNLOAD ZIP
Questions, or want to join in? Join the Telegram group. Visit the DigiNicam group
WINDOWS WARNS, AND THAT IS RIGHT

The program is not signed with a certificate. So Windows warns at the first start with Windows protected your PC. Click More info and then Run anyway. If you want to be sure you have exactly my file: check the SHA-256 checksum in PowerShell with Get-FileHash filename.zip.

Thanks

The FPGA design it started from, with the FM modulator, is by Willem, PE1PCF (on GitHub). Thanks to Willem for the enormous amount of time he put into it. The processor, the stereo coder, the Windows software and the manual are by PE1PzN.

Questions, or want to join in? Join the Telegram group. Visit the DigiNicam group