--:--:-- UTC
NICAM-728 / PzN / SDR7020 / TRANSMITTER AND RECEIVER / FREE

Digital NICAM-728
directly on 70 MHz to 6 GHz

digiNICAM turns the SDR7020 (Zynq 7020 + AD9363 or AD9361, the boards are otherwise the same) into a NICAM-728 stereo transmitter that transmits directly on the frequency you choose, from 70 MHz to 6 GHz, without mixer or intermediate frequency. With a receiver too. The FPGA design is entirely home-built. And it contains an own, narrower system, PzN, that achieves the same with about 13 dB less transmit power.

The SDR7020 in use, with heat sinks and a connector on the GPIO header
The SDR7020 · TX1, RX1, RX2, TX2 at the top

What is PzN? An own digital sound system by PE1PzN for the SDR7020: narrower than NICAM and more robust, with error correction. You choose two things separately: the bit rate (80, 112, 192 or 256 kbit/s per channel) and the modulation: QPSK (narrow, linear power amplifier) or 4GFSK, also called DX (the power amplifier may be fully driven, as with FM). PzN 256 exists only with QPSK, and sounds as good as NICAM.

Which codec? The PzN codec, an own design: the sound is split into 32 frequency bands and the bits go where the sound is. It delays only 3 ms and runs entirely in the FPGA. It is not an existing codec like AAC or Opus.

digiNICAM in the browser, Modulation monitor tab, transmitter on PzN 192 QPSK
digiNICAM in the browser · Modulation monitor: sound from the I2S ADC, clipper on, transmitter on PzN 192 QPSK. At the bottom IQ, the system (NICAM I, NICAM B/G or PzN 80, 112, 192 and 256, with QPSK or 4GFSK) and the station ID
WHY NICAM, AND WHY NARROWER

NICAM-728 was designed in the late eighties for ordinary analogue TV, which was transmitted with AM. In the nineties almost every TV transmitter got a digital stereo sound carrier with it, next to the picture and the ordinary FM sound carrier.

Radio amateurs use NICAM with FM-ATV, as a subcarrier on 6.552 MHz in the baseband, together with the picture. That works, but FM-ATV is wide: a channel of 18 to 27 MHz. The sound then gets all the noise of that whole wide channel.

And the narrower you transmit, the further you get. The noise in a receiver grows with the bandwidth, and every 6 dB less noise is twice the distance in free space. That is why narrowband transmitters with SSB or CW get so far with a few watts. If you transmit NICAM directly as its own 728 kHz signal, instead of inside an FM-ATV channel, that already makes a big difference:

BANDWIDTH AND GAIN

FM-ATV channel18 to 27 MHz
NICAM-728 on its own728 kHz · 14 to 16 dB gain
PzN 112213 kHz · another 10 dB or more

WHAT THAT MEANS

6 dBtwice as far (free space)
NICAM apart from FM-ATVfive to six times as far
PzN against NICAM, measured13 dB, more than four times as far

Only part of the PzN gain comes from the narrower bandwidth. The rest comes from the error correction: NICAM only has a parity bit, PzN really corrects the errors. How that works is explained further down under PzN.

THE NICAM TRANSMITTER

The transmitter runs entirely in the FPGA. The sound comes in via I2S, is converted to 32 kHz in the FPGA and coded according to ETS 300 163: J.17 pre-emphasis, 14 to 10 bits per block of one millisecond, parity, interleaving, scrambling, DQPSK with RRC filter. A NICAM decoder from the nineties plays it without problems.

THE RECEIVER
digiNICAM in the browser, Receiver tab
digiNICAM in the browser · Receiver tab: input spectrum with channel filter, errors and SNR, constellation and the meters. Transmitter and receiver on PzN 192 QPSK
digiNICAM, receiver on NICAM I with a weak signal, still error-free
NICAM I with a weak signal: C/N 10.2 dB and MER 14 dB, and still BER 0, on the PC and in the SDR7020 (MER 12.4 dB, BER 0). Here NICAM is close to its limit

Reception uses RX1 or RX2 of the SDR7020 itself. The receiver searches for the signal up to 200 kHz beside the tuning and recognises by itself which system comes in: NICAM I or B/G, normal or inverted, or one of the PzN modes. If your own transmitter is on, it tries that system first, and after switching it locks within a few seconds. You see the constellation, the spectrum in dBµV from the noise floor, the C/N, the MER, the bit errors over ten minutes and the station ID. A fixed interference spike in the middle of the channel is removed automatically, and with too many errors the sound mutes softly, as with the MSP 3400.

PZN, THE OWN NARROW SYSTEM
digiNICAM, receiver on PzN 112 with a weak signal
PzN 112 with a weak signal: C/N and MER 10.9 dB. The channel BER is 3e-4, but the error correction removes everything. The sound comes from the 7020: 120,911 frames, 0 errors
digiNICAM, receiver on PzN 80 DX, sound from the 7020
PzN 80 DX (4GFSK, 194 kHz) at C/N 14.5 dB. The receiver on automatic found it by itself. The sound comes from the 7020: 100,508 frames, 0 errors. The constellation shows the soft bits from the trellis

NICAM puts all its bits into sound quality and keeps nothing for error correction. PzN does it the other way round: a smarter codec needs only about a third of the bits at PzN 112, and the space that is freed goes to error correction and a narrower channel. PzN 256 sounds as good as NICAM, in less bandwidth. The codec, the PzN codec, splits the sound every millisecond into 32 frequency bands and gives the bits to the bands where the sound is: the NICAM idea of one scale factor per millisecond, but per band.

THE MODES

PzN 2562 x 256 kbit/s · QPSK 450 kHz
PzN 1922 x 192 kbit/s · QPSK 345 kHz · DX 473 kHz
PzN 1122 x 112 kbit/s · QPSK 213 kHz · DX 292 kHz
PzN 802 x 80 kbit/s · QPSK 160 kHz · DX 194 kHz
NICAM-7282 x 352 kbit/s · 728 kHz wide

HOW

ModulationQPSK, RRC alpha 0.1; DX: 4GFSK, BT 0.5
Error correctionViterbi K=7, rate 2/3, CRC-16
On an errorrepeat the frame, softer, no crackling
Delayabout 5 ms, suitable for duplex
Measured~13 dB less power than NICAM
THE PZN CODEC

The PzN codec is an own transform codec, from the same family as AAC, ATRAC and Opus, but built on the NICAM idea. NICAM gives the whole sound one scale factor every millisecond. The PzN codec does that per frequency band, and that is why it needs only about a third of the bits at PzN 112.

Why an own codec? Existing codecs like Opus or AAC get more quality out of fewer bits, but they are made for computers and phones: they need a processor with an operating system and delay the sound by 20 ms or more. The PzN codec is so simple that it fits entirely in the FPGA. It delays about 3 ms, and the sound does not have to pass through a PC or the operating system of the SDR7020. That suits NICAM: direct, robust, and without a delay you hear when working duplex.

THE CODEC

Typetransform codec (MDCT)
Bands32 x 500 Hz, in 8 scale bands
Block1 ms (32 samples), sine window
Sound32 kHz, up to 15 kHz, stereo

DELAY

PzN codecabout 3 ms
Whole PzN systemabout 5 ms
AAC, MP3, Opus20 to 100 ms
Thereforesuitable for duplex
CODECS, MODULATION AND SHOULDERS

Two steps. A digital transmitter does two things one after the other. First the codec makes the sound small: from many bits to fewer bits. Then the modulation puts those bits on the carrier. The codec decides how good it sounds. The modulation decides how wide the signal is and how far it gets.

NICAM-728. The codec of the old TV stereo. It cuts every sample from 14 to 10 bits and remembers per block how loud it was. Simple and fast. It has almost no error correction: only a check bit. One wrong bit is quickly heard as a click.

PzN. An own codec by PE1PzN. It divides the sound into 32 frequency bands, just like MP3. Each band gets only as many bits as your ear needs. That way it compresses much more than NICAM, but with very little delay: the codec about 3 ms, the whole system about 5 ms. It has real error correction (Viterbi). That repairs errors before you hear them. That is why PzN still works with a much weaker signal. PzN 112 means: 112 kbit/s per channel, so 224 kbit/s stereo.

Stereo, 32 kHzBit rateSmaller
no compression (16 bit)1024 kbit/s
NICAM640 kbit/s1.4 times
PzN 256512 kbit/s2 times
PzN 192384 kbit/sabout 2.7 times
PzN 112224 kbit/sabout 4.5 times
PzN 80160 kbit/sabout 6.4 times

Note: this is data compression, not dynamic compression. Loud stays loud and quiet stays quiet. Only the clipper flattens the peaks at -12 dBFS.

DQPSK and QPSK (NICAM and PzN QPSK). The transmitter jumps between four phases. To keep the signal narrow, it goes through a filter. Because of that the power keeps going up and down. The power amplifier has to follow that neatly: it must be linear. So it may not be fully driven: about 15 W instead of 150 W.

4GFSK (PzN DX). The transmitter jumps between four frequencies, softly rounded (Gaussian). The power always stays the same, just like with FM. So the power amplifier may be fully driven, as with FM. There are no shoulders as with DQPSK and QPSK. That is about 10 dB more. FSK does need some 3.5 dB more signal. So net you gain about 6.5 dB. That is more than twice as far.

What are the shoulders? If you look at a QPSK signal with a spectrum analyser, you see a flat hump: the channel. If you drive the power amplifier too hard, two lower edges grow left and right of the hump. Those are the shoulders. They arise because the power amplifier no longer neatly follows the up and down of the power. Mixing products are then added. The lower the shoulders, the cleaner your transmitter. Driving less hard makes them lower. That does cost power.

With 4GFSK you hardly have that problem. The power does not go up and down, so the power amplifier makes no shoulders. The skirts of an FSK signal come from the shaping itself. With BT 0.5 those skirts are steeper than with BT 0.7.

What is BT? A measure of how softly the transmitter slides from one frequency to the other. High BT: fast and sharp, wider signal. Low BT: soft, narrower signal with steep skirts, but the symbols run into each other more and the receiver has to work harder. GSM uses 0.3, Bluetooth 0.5. PzN DX uses 0.5: narrow, and it costs only 0.2 to 0.3 dB sensitivity.

A band-pass filter after the power amplifier stops the harmonics (2x, 3x the frequency). It does not stop the shoulders right next to the channel. You have to keep those clean at the source.

ModeModulationWidth (99 %)Error correctionPower amplifier
NICAM IDQPSK700 kHzcheck bitlinear
NICAM B/GDQPSK500 kHzcheck bitlinear
PzN 256QPSK450 kHzViterbilinear
PzN 192QPSK345 kHzViterbilinear
PzN 112QPSK213 kHzViterbilinear
PzN 80QPSK160 kHzViterbilinear
PzN 192 DX4GFSK473 kHzViterbifully driven (as FM)
PzN 112 DX4GFSK292 kHzViterbifully driven (as FM)
PzN 80 DX4GFSK194 kHzViterbifully driven (as FM)

Which bit rate? The more bits, the better the sound, but the wider the signal.

ModeQPSK4GFSKSound
NICAM I / B/G700 / 500 kHzthe reference
PzN 256450 kHz-As good as NICAM, in less bandwidth.
PzN 192345 kHz473 kHzFine. Very slightly affected.
PzN 112213 kHz292 kHzFine. Critical listeners hear a very slight artefact.
PzN 80160 kHz194 kHzEveryone hears that it is less. Nice for trying a difficult path, but not for the quality. Still cleaner than noisy FM.
THE RECEIVER IN THE SDR7020

The SD card also has a receiver in the FPGA, for NICAM and PzN. The sound then goes straight via I2S to a DAC board, without a PC in between and with little delay: handy when you work duplex with the transmitter on one band and the receiver on another. That works for NICAM and for all PzN modes, with QPSK and with 4GFSK (DX).

Transmitter and receiver share one sample rate in the AD9363. With the transmitter off, the receiver chooses the system: it follows whatever comes in, NICAM or PzN. When it transmits, the transmitter decides, and the receiver can only receive the same system. So duplex works when both sides use the same system, each on its own frequency.

CONNECTING
Drawing of the GPIO port of the SDR7020 with the I2S connections
GPIO port (above the network connector, some boards say GPO) · DAC (sound out) on 7, 11, 13; ADC (sound in) on 14, 16, 18

The ADC board: I2S ADC Audio Capture Card Module, 24 bit, 192 kHz, Master/Slave · for example at Amazon

ADC BOARD (SOUND IN)

DATA / LRCK / BCKpin 14 / 16 / 18
GND / 5 Vpin 20 / pin 1
Voltage1.8 V: divider 1 kΩ series, 1.2 kΩ to ground
BoardMaster, 24 bit, 192 kHz

DAC BOARD (SOUND OUT, PCM5102A)

DATA / LRCK / BCKpin 7 / 11 / 13
GND / 5 Vpin 2 / pin 1
Voltage3.3 V, direct
Format32 kHz, 24 bit, I2S, no MCLK
Voltage divider on pins 14, 16 and 18. Those pins are on an FPGA bank that runs at 1.8 V. The ADC board outputs 3.3 V; without a divider the FPGA gets too much voltage on its inputs. So put a divider in each of the three lines, as close to the GPIO port as possible:
ADC board ---[ 1 kΩ ]---+---> GPIO pin 14 / 16 / 18
                        |
                   [ 1.2 kΩ ]
                        |
                      ground
3.3 V × 1.2 / 2.2 = 1.8 V. No divider to the DAC board (pins 7, 11, 13): those pins are on the 3.3 V bank and the PCM5102A itself also runs at 3.3 V.
Do not connect pins 15, 17 and 19: they have a fixed function on the board. And measure the supply pins with a multimeter before you connect anything.
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

Update 3 November 2026: digiNICAM V2.03. Everything is on the SD card, including your settings. Insert the card, switch on, and after about a minute the web page is ready. Nothing is written to or removed from the 7020's memory: take the card out, and the 7020 is as it was. The IP address stays the same.

Opruimen.bat (clean up). Are there still files from an older version or from other software (such as the ATV-RX of fm-atv.nl) in the 7020's memory? Opruimen.bat removes them, including the settings. After that it is as it was when bought. The IP address stays the same.

⬇ digiNICAM V2.03 (web version on the SD card)
The SD card with everything on it: FPGA, Linux and the web version. Insert the card, switch on, done. Your settings are on the card too; nothing is written to the 7020's memory.
Put the files straight onto an empty FAT32 card. In the folder Hulp: Controle.bat (read only) if something does not work.
File: … · …
STATUS: …
SHA-256: …
⬇ DOWNLOAD ZIP
⬇ Opruimen.bat: emptying the 7020's memory
For when the memory (flash) of the 7020 is full and a program does not fit. Removes everything from PE1PzN and from other software, including the settings; after that it is as it was when bought. The IP address stays the same. Runs on a Windows PC.
Unzip, start Opruimen.bat, type the IP address. You first see what will be removed and then choose j (yes) or n (no). The program speaks Dutch.
File: … · …
STATUS: …
SHA-256: …
⬇ DOWNLOAD ZIP
digiNICAM on the phone
On the phone everything is stacked
⬇ 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

The SHA-256 checksum is shown with the download. In PowerShell you check it with Get-FileHash filename.zip.

GETTING STARTED

WHAT YOU NEED

TransmitterSDR7020 (Zynq 7020 + AD9363 or AD9361)
NoteOnly the board with Zynq 7020 and GPIO header. Recognisable by the row of 2×10 holes next to the network connector and XC7Z020 on the chip. Boards with a Zynq 7010 (XC7Z010) look similar, but do not work (FPGA too small, no GPO).
Connectors4× SMA: TX1 (transmitter), RX1 and RX2 (receiver), TX2 not used
Sound inADC board via I2S, or the test tone
Sound outDAC board (PCM5102A) via I2S
ReceivingRX1 or RX2 of the SDR7020
ControlAny web browser: PC, tablet or phone, network cable to the SDR7020

FIRST TIME

1make the SD card, into the SDR7020, switch on
2wait about a minute; the IP address is in your router
3in the browser: http://IP-address/
4fill in your own call at Station ID
5set the input: peaks around 0 on the meter
6transmitter on
You are responsible for what you transmit. Only transmit on frequencies and with powers for which you hold a licence, and start testing into a dummy load.

Questions

Everything is explained step by step in the manual (pdf). Something not right, or a question about PzN? Let me know, and I will look into it.

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