Today, we share a project from a first-year student at the China University of Metrology who built a DVB-T digital video broadcasting system using ADALM PLUTO. He is the only student in Funpack Session 5 who chose to complete Task 3, achieving wireless video transmission. The documentation is also well-written and commendable.
Enjoy!
Funpack Session 5 ADI PLUTO Wireless Video Transmission
Platform Overview
ADALM-PLUTO is an active learning module (PlutoSDR) that is easy to use and helps introduce electrical engineering students to the fundamentals of Software Defined Radio (SDR), Radio Frequency (RF), and wireless communications. This module is designed for students of various levels and backgrounds and can be used for both teacher-guided and self-directed learning, aiming to provide a foundation in real-world RF and communication technologies for those pursuing degrees in science, technology, or engineering.When used in conjunction with a host computer, PlutoSDR acts as a portable laboratory that enhances classroom learning. MATLAB® and Simulink® are the two main software packages supported by PlutoSDR, providing an intuitive graphical user interface (GUI) that allows students to learn faster, work more cleverly, and explore more knowledge.PlutoSDR features independent receive and transmit channels, allowing it to operate in full-duplex mode. The active learning module can generate or capture RF analog signals at a maximum of 61.44MSPS within a frequency range of 325MHz to 3800MHz. PlutoSDR is very compact, fitting in a shirt pocket, fully self-sufficient, and powered via USB with default firmware. Since PlutoSDR is initialized through the libiio driver, it supports OS X®, Windows®, and Linux®, enabling students to learn and explore across multiple devices.
Development Environment
GNU Radio 3.7
This project uses built-in components of GNU Radio to connect and implement functionality.
Current Task
The basic requirement for building a DVB-T digital video broadcasting system using ADALM-PLUTO:
Can transmit H.264 encoded video files
After receiving the signal, the receiving channel decodes it and plays it via ffmpeg
Program Flow
The program is divided into three parts: sending, receiving, and streaming playback.01. SendingGenerate send.bin from the ts file. Of course, it can also be transmitted directly using Pluto. Considering transmission efficiency, the transmission content is first stored in a file. The Pluto interface is reserved in dvbt_tx.grc; right-click to enable it.02. ReceivingGenerate testout.ts from the send.bin file. Of course, it can also be received directly using Pluto. The Pluto interface is reserved in dvbt_rx.grc; right-click to enable it.Note: To better simulate the real environment, a noise source has been added.
Implementation Idea
Since DVB-T has been standardized, related documentation is relatively easy to find.DVB-T employs Forward Error Correction (FEC) (including inner code interleaving, inner convolution coding, outer code interleaving, outer RS coding) and Orthogonal Frequency Division Multiplexing (OFDM) technology, which effectively eliminates multipath interference, as well as Gray code mapping for modulation (4/16/64QAM). It sends digital TV programs within the originally simulated frequency bands of 6MHZ, 7MHZ, and 8MHZ. The bit rate for DVB-T transmission is variable. For example, in a 6MHZ band, it can choose a bit rate between 3.7-23.8Mbit/s; in an 8MHZ band, it can choose a bit rate between 4.9-31.7Mbit/s to adapt to different reception environments (e.g., for mobile reception, the transmission bit rate should be appropriately reduced).DVB-T uses OFDM modulators, employing multiple carriers (more than 2000 or more than 8000) in an orthogonal composite modulation manner. In a COFDM data frame, all carriers use the same Gray code mapping of QPSK, 16QAM, or 64QAM modulation, with the most complex modulation method.
In summary, during transmission, it passes through the audio and video coding layer, service information layer, baseband transmission layer, channel coding layer, and RF layer.
Audio and Video Coding Layer: Uses multiple standards such as MPEG1, 2, etc., to sample and compress analog audio and video signals.
Service Information Layer: Uses the DVB SI standard to generate PSI, SI, EPG, and other information services.
Channel Coding Layer: Uses various DVB-S, DVB-C, DVB-T channel coding.
RF Layer: Uses satellites, CATV (cable television networks), SFN (Single Frequency Network), Internet, etc., for signal transmission.
Receiving is just the reverse.01. SendingEnergy dispersion—Reed-Solomon encoder—Convolution interleaver—Built-in encoder—Bit interleaver—Symbol interleaver—DVB-T mapper—Reference signal generator—Add cyclic prefix and perform pulse shaping on OFDM symbols—Input *Complex constant—Resampling multi-phase FIR filter—Transmit
02. ReceivingJust reverse the transmission process.03. Streaming PlaybackStreaming playback is the simplest step. Use Potplayer to open the currently transmitted testout.ts. Because ffplay’s functionality is not very strong, and its progress bar and other features are not very complete, Potplayer is used instead.
Postscript
Thanks to the Hardhe team for their assistance and to the developers of GNU Radio. Using GNU Radio allows one to not worry about how the encoding is internally implemented, nor to solve interaction problems with hardware, reducing complexity to some extent.
END
Hardhe Academy
The Hardhe team is committed to providing standardized core skills courses for electronic engineers and related students, helping everyone effectively improve their professional abilities at all stages of learning and work.
Hardhe Academy
Exploring forward together in the field of electronics
Follow the Hardhe subscription account to reach the classroom anytime
Click to read the original text to see the latest Funpack activity