[amsat-bb] LDPC for FPGAs to do DVB-S2/X on SDRs - so many letters! What does it mean?
Michelle Thompson
mountain.michelle at gmail.com
Wed Oct 30 17:04:22 UTC 2019
LDPC for FPGAs to do DVB-S2/X on SDRs - so many letters! What does it mean?
Greetings all!
Plenty going on in the open source amateur satellite scene! Here's where
Open Research Institute is going next with advanced forward error
correcting codes. We are doing our best to get them into as many FPGAs as
possible. This will amplify the capabilities of all those SDRs out there.
Open Research Institute is a 501(c)(3) dedicated to open source R&D for
amateur radio. We are particularly interested in technology that enables
modern digital microwave-band amateur satellite ground stations and
payloads. All of the work directly benefits all AMSAT organizations.
LDPC stands for low density parity check coding. It is a powerful forward
error correcting code, meaning it provides a huge amount of durability and
error correction for digital signals. LDPC is one of two error correcting
codes in DVB-S2 and DVB-S2X. The other is called BCH.
DVB-S2 is the most widely used satellite downlink standard and has become
widely adopted in amateur satellite work. DVB stands for digital video
broadcast. The S is satellite and the 2 is second edition. We replace the
MPEG layer, which is appropriate for commercial video broadcast, with a
generic data layer, which is more useful for hams. This switch boosts
bandwidth. MPEG has a lot of overhead. This "generic stream encapsulation"
protocol is called GSE. It comes from the same organization that makes DVB
standards. It's an open standard, like DVB-S2, and is already available in
GNU Radio and Wireshark due to some excellent volunteer work. GSE is a
drop-in replacement for MPEG in DVB-S2/X.
DVB-S2 will be heavily used on Gateway, is used by ARISS, and is a strong
contender for a wide variety of payloads currently being designed,
developed, integrated, and tested. It's also used terrestrially by a lot of
DATV enthusiasts.
The DVB-S2X (X means extension) codes work down to an SNR of -10dB on the
low signal strength end. The extension also adds more codes to the
higher-end. This allows for very powerful signals that are used by
high-throughput satellites. For amateur radio, we are generally more
interested in the very low SNR capabilities of DVB-S2X, but don't overlook
the available codes at the high SNR end!
Why is LDPC so great? It approaches the physical limits of what error
correcting codes can do. The only better code out there right now are Polar
codes, used in 5G. They're slightly better, but heavily encumbered by
licensing. Becoming familiar with LDPC gives you knowledge of a code with
cutting edge performance.
I gave a talk on coding theory and how LDPC works at TAPR DCC in 2018.
Here's a link to the video.
https://www.youtube.com/watch?v=XoEBps_J988&list=PLs_Ab58w9LI-p-j9C3uN8TjKh2SeKlIvp&index=16
We have supported several types of LDPC work. Charles Brain's Nvidia
implementation (graphical processing unit) was demonstrated at Reno
Symposium in 2017. A copy of this work is in the Phase 4 Ground repository.
Ahmet Inan's general purpose processor implementation has been incorporated
into GNU Radio and leandvb and more. His original work can be found here:
https://github.com/xdsopl/LDPC
This is all open source work that is needed for projects like Phase 4
Ground and Space. It's freely available for anyone to use, and people are
using it.
Now, we're working on getting LDPC decode into field programmable gate
arrays, or FPGAs. Why? Because it's the best architectural fit for the very
parallel algorithms in LDPC codes. Another huge benefit is that decode can
be moved from a general purpose processor to an FPGA co-processor. This
frees up resources in any off the shelf software defined radio (SDR) and
makes for much more powerful receivers for amateur satellites that use
DVB-S2/X.
Getting to this stage took three years of hard work from a long list of
amazing volunteers and enthusiasts and donors. Many of them are on this
list. Thank you so much for the support. There is no way that this could
happen without you.
The beginning of the VHDL implementation is here:
https://github.com/aicodix/cnp
What do we need? Review and feedback, awareness and support. Advice on
formal verification would be helpful. Documentation is a must.
What's the next major milestone? We hope to demonstrate a complete Lunar
Gateway style station that uses this FPGA work next year at the Tokyo Ham
Fair. We aim to have this be part of our Openrotor project.
Openrotor is a heavy-duty open source rotator and controller project. If
you are interested in that, let me know - it's off to a good start with
volunteers on three continents, but there's some expertise gaps that still
need filling. It must support a 2m dish at 10 GHz and not be so loud the
neighbors complain. It will speak MQTT and use other common interfaces
(hamlib, N1MM).
More soon!
-Michelle W5NYV
More information about the AMSAT-BB
mailing list