Zaawansowana kompresja wideo w oparciu o układy FPGA

Nowoczesne algorytmy kompresji sygnału wideo, takie jak H.264/AVC charakteryzują się bardzo korzystnym współczynnikiem jakości obrazu do ilości pamięci zajmowanej przez tak skompresowane dane. Pewną trudnością związaną z ich stosowaniem jest duża złożoność, przez którą wydajna implementacja wymaga odpowiednio dużej mocy obliczeniowej.

O ile w przypadku klasycznych komputerów i procesorów w nich stosowanych, problem implementacji kodera i dekodera H.264/AVC (Advanced Video Codec) sprowadza się do napisania odpowiedniego programu i uruchomieniu go na wystarczająco wydajnym komputerze, w przypadku implementacji sprzętowych sprawa jest dużo bardziej skomplikowana.

Posłuchaj
00:00

Wersje sprzętowe algorytmów mogą być zrealizowane w ogólności na trzy sposoby. Po pierwsze do kodowania lub dekodowania może być wykorzystywany główny procesor urządzenia. Rozwiązanie to wymaga bardzo wydajnej centralnej jednostki obliczeniowej i zazwyczaj jest nieosiągalne w niewielkich urządzeniach przenośnych. Drugą możliwością jest wykorzystanie dodatkowego procesora sygnałowego, który może służyć jako pewnego rodzaju koprocesor dla tych danych, które wymagają przetwarzania strumieniowego. Takie podejście do tematu pozwala wygodnie dysponować zużyciem mocy i wybudzać układ DSP ze stanu uśpienia tylko na czas przetwarzania sygnału wideo. Dodatkowy procesor sygnałowy zabezpiecza też system operacyjny urządzenia przed „zawieszeniem” związanym ze zbytnim przeciążeniem obliczeniowym CPU.

Rys. 1. Schemat blokowy fragmentu urządzenia wykorzystującego procesor sygnałowy i układ FPGA do obsługi kompresji H.264

Jeszcze inną możliwością jest wykorzystanie odpowiednio zaprogramowanego układu FPGA, który wykonywałby niektóre lub wszystkie z operacji typowych dla H.264. Sposób przetwarzania danych przez układ programowalny może być na tyle dostosowany do specyfiki algorytmu, że z teoretycznego punktu widzenia wykorzystanie FPGA jest optymalnym rozwiązaniem. Dzieje się tak głównie dzięki licznym domenom czasowym, jakie mogą funkcjonować w ramach jednego programowalnego układu scalonego. Pozwala to podzielić poszczególne rodzaje zadań kodera lub dekodera pomiędzy grupy skonfigurowanych komórek logicznych i taktować je z takimi częstotliwościami, aby każde z nich wykonywały swoje zadania w ściśle określonym czasie. Czas ten nie zawsze musi być najkrótszy, gdyż złożoność algorytmów wykonywanych przez poszczególne bloki nie jest identyczna i część z nich może być taktowana niższym zegarem niż maksymalnym możliwym. Odpowiednia synchronizacja poszczególnych etapów i elementów algorytmu prowadzi do konstrukcji optymalnej pod względem szybkości pracy i mocy pochłanianej przez cały układ.

Układ FPGA może zostać także zastosowany jako koprocesor dla procesora sygnałowego, który to w danym urządzeniu służy nie tylko przetwarzaniu sygnałów wideo H.264, ale także i innych strumieni danych. Duża elastyczność konfiguracji FPGA pozwala na zaimplementowanie tylko wybranych fragmentów algorytmu AVC, a nawet zwielokrotnienie niektórych bloków w celu przyspieszenia przetwarzania danych. Koncepcja ta została zilustrowana na rys. 1. Oczywiście, rozwiązanie to nie musi być optymalne pod względem kosztu, rozmiarów PCB, a czasami nawet wydajności. Wszystko zależy od tego, jakie są priorytety i ograniczenia, do których muszą się dostosować projektanci urządzenia.

Co w FPGA?

Fot. 1. Płytka deweloperska firmy Xilinx polecana również jako narzędzie do rozwoju projektów urządzeń multimedialnych wykorzystujących algorytm H.264

Na algorytmy kodowania i dekodowania H.264 składa się wiele nowych metod przetwarzania danych i zabiegów, które mają na celu polepszenie jakości obrazu lub zmniejszenie wielkości plików wynikowych. Metody te mogą być w bardzo wydajny sposób implementowane właśnie wewnątrz FPGA. Przykładem może być kompensacja ruchu typu „Quarter Pixel”, która polega na tym, że wykrywane są przemieszczenia o jedną czwartą piksela, zamiast o połowę piksela, tak jak to było we wcześniej stosowanych algorytmach. Tego typu interpolacja wymaga większej ilości obliczeń i warto ją zapisać w postaci odpowiedniego bloku FPGA. Innym zabiegiem charakterystycznym dla AVC jest przeszukiwanie obrazu w celu znalezienia przemieszczających się bloków różnej wielkości. O ile w klasycznych algorytmach kompresji wykorzystywano jedynie bloki o wymiarach 16 na 16 pikseli, to nowy algorytm pozwala na kompresje z uwzględnieniem bloków prostokątnych o bokach 16, 8 i 4 piksele. Wprowadzenie wyszukiwania bloków różnej wielkości jako odrębnych grup komórek FPGA umożliwia znaczne zrównoleglenie obliczeń, a więc i ich przyspieszenie.

Opisane powyżej elementy algorytmu AVC to tylko niektóre z wielu, jakie mogą być z powodzeniem zaimplementowane w układach programowalnych. Na potwierdzenie tej teorii wystarczy podać przykłady prawdziwych realizacji H.264, jakie pojawiły się niebawem po ustanowieniu nowego standardu. Pierwszym z nich było zaprezentowane w kwietniu 2005 roku urządzenie wykorzystujące do kompresji AVC układ Stratix II firmy Altera. Pięć miesięcy później firma Xilinx przedstawiła własną implementację kodera H.264 w postaci FPGA. Tym razem stworzono kod w języku VHDL i Verilog, który mógł być wgrany do układów z rodziny Virtex lub Spartan. Rozwiązanie to przewyższało projekt Altery, gdyż była to pierwsza implementacja algorytmu AVC w całości, a nie tylko w części wykonana w postaci programu układu FPGA.

Podsumowanie

Obecnie na rynku dostępne są odpowiednie moduły IP realizujące kompresję i dekompresję H.264. Ich ceny różnią się w zależności od dostawcy i obsługiwanych opcji. Często udostępniane są także w wersji testowej do zastosowań niekomercyjnych. Dobrym pomysłem może być także wykorzystanie układów programowalnych ze zintegrowanymi modułami DSP.

Marcin Karbowniczek

Powiązane treści
FPGA z szybszym wzrostem niż reszta rynku
Zobacz więcej w kategorii: Technika
PCB
Obwody drukowane z grubą warstwą miedzi
Optoelektronika
Technologia OLED - charakterystyka oraz przegląd zastosowań
Optoelektronika
Wyświetlacze OLED - nowe technologie
Elektromechanika
Czym jest antytampering i dlaczego warto go zrealizować
Komunikacja
Automatyka przemysłowa i budynkowa na dwóch przewodach
Optoelektronika
Wyświetlacze OLED w ofercie Unisystemu
Zobacz więcej z tagiem: Artykuły
Magazyn
Lipiec 2025
Magazyn
Czerwiec 2025
Targi zagraniczne
Elmässan Stockholm 2025

Komponenty indukcyjne

Podzespoły indukcyjne determinują osiągi urządzeń z zakresu konwersji mocy, a więc dążenie do minimalizacji strat energii, ułatwiają miniaturyzację urządzeń, a także zapewniają zgodność z wymaganiami norm w zakresie EMC. Stąd rozwój elektromobilności, systemów energii odnawialnej, elektroniki użytkowej sprzyja znacząco temu segmentowi rynku. Zapotrzebowanie na komponenty o wysokiej jakości i stabilności płynie ponadto z aplikacji IT, telekomunikacji, energoelektroniki i oczywiście sektorów specjalnych: wojska, lotnictwa. Pozytywnym zauważalnym zjawiskiem w branży jest powolny, ale stały wzrost zainteresowania klientów rodzimą produkcją pomimo wyższych cen niż produktów azjatyckich. Natomiast paradoksalnie negatywnym zjawiskiem jest fakt, że jakość produktów azjatyckich jest coraz lepsza i jeśli stereotyp "chińskiej bylejakości" przestanie być popularny, to rodzima produkcja będzie miała problem z utrzymaniem się na rynku bez znaczących inwestycji w automatyzację i nowe technologie wykonania, kontroli jakości i pomiarów.
Zapytania ofertowe
Unikalny branżowy system komunikacji B2B Znajdź produkty i usługi, których potrzebujesz Katalog ponad 7000 firm i 60 tys. produktów