Szybki rozwój przetwarzania brzegowego i wizji maszynowej w czasie rzeczywistym postawił rygorystyczne wymagania dotyczące rozwiązań do przechwytywania i przetwarzania obrazu o wysokiej wydajności i niskim opóźnieniu. Układy FPGA (Field-Programmable Gate Arrays) charakteryzują się potężnymi możliwościami przetwarzania równoległego, konfigurowalną logiką sprzętową i wysoką efektywnością energetyczną, co czyni je idealnymi do zastosowań skoncentrowanych na wizji, w tym automatyki przemysłowej, obrazowania medycznego i inteligentnych systemów IoT. Kamery USB są szeroko stosowane w scenariuszach wbudowanych i przemysłowych ze względu na ich opłacalność, kompatybilność plug-and-play oraz zróżnicowane specyfikacje produktów obejmujące klasy konsumenckie i przemysłowe. Jednak integracja kamer USB z platformami FPGA od dawna jest ograniczona przez nieodłączne wyzwania, takie jak niezgodność protokołów, nadmierne opóźnienia systemowe oraz niewystarczająca kontrola parametrów kamery w czasie rzeczywistym, co znacznie ogranicza pełny potencjał wydajnościowy przetwarzania wizji w czasie rzeczywistym opartego na FPGA. Tradycyjne architektury integracyjne wykorzystują ramę transmisji danych pośredniczoną przez CPU, gdzie procesor odbiera i buforuje dane wideo z kamer USB przed przekazaniem ich do układów FPGA. Architektura ta wprowadza zbędne opóźnienia transmisji, nie wykorzystuje w pełni zasobów sprzętowych FPGA oraz łamie zalety przetwarzania równoległego układów FPGA. Niniejszy dokument systematycznie przedstawia dwie architektury integracyjne bez udziału CPU w celu rozwiązania powyższych wąskich gardeł technicznych, a także zapewnia kompleksowe wytyczne obejmujące dobór sprzętu, procedury wdrożeniowe oraz metody debugowania inżynieryjnego do budowy systemów wizyjnych o wysokiej niezawodności i niskim opóźnieniu.
Zalety integracji kamery USB i układu FPGA
Układy FPGA i kamery USB tworzą wysoce komplementarne połączenie dla aplikacji wizji brzegowej z rygorystycznymi ograniczeniami dotyczącymi przepustowości, opóźnień i zużycia energii. Kluczowe zalety obu urządzeń idealnie odpowiadają wymaganiom technicznym przetwarzania obrazu w czasie rzeczywistym.
• Zalety rdzenia FPGA: W przeciwieństwie do sekwencyjnego trybu wykonywania instrukcji w procesorach CPU, układy FPGA obsługują równoległe przetwarzanie danych na wielu kanałach, co jest bardzo odpowiednie dla zadań wizyjnych wrażliwych na czas, takich jak filtrowanie obrazu, wykrywanie obiektów i analiza trajektorii ruchu.
• Zalety rdzenia kamery USB: Kamery USB obsługują zakres rozdzielczości od VGA do 4K oraz wiele popularnych formatów obrazu, w tym YUV, RGB i MJPEG. Ich kompaktowa konstrukcja umożliwia elastyczne wdrażanie w różnych urządzeniach wizyjnych typu embedded.
Typowe scenariusze zastosowań
1. Automatyka przemysłowa: Układy FPGA przetwarzają strumienie wideo w czasie rzeczywistym z kamer USB, aby realizować wykrywanie defektów PCB, śledzenie ruchu na linii montażowej oraz wizyjne sterowanie ramionami robotów z opóźnieniem poniżej milisekundy.
2. Obrazowanie medyczne: Integracja danych o niskim opóźnieniu wspiera przetwarzanie w czasie rzeczywistym obrazów endoskopowych i ultrasonograficznych, pomagając klinicystom w szybkiej i dokładnej diagnozie.
3. Inteligentne urządzenia IoT: Połączenie układów FPGA i kamer USB umożliwia pracę o niskim poborze mocy inteligentnych systemów monitoringu bezpieczeństwa, kontroli dostępu opartej na rozpoznawaniu twarzy oraz systemów wizyjnych do wykrywania ruchu drogowego.
4. Systemy wizyjne w motoryzacji: W zaawansowanych systemach wspomagania kierowcy (ADAS), układy FPGA przetwarzają dane wideo z kamer USB w czasie rzeczywistym, aby wykrywać pieszych, linie pasów ruchu i pojazdy, zwiększając bezpieczeństwo jazdy.
Kluczowe wąskie gardła tradycyjnych schematów integracji USB-FPGA
Większość konwencjonalnych rozwiązań integracyjnych opiera się na procesorach CPU jako pośrednich jednostkach przekazujących dane. Ta uproszczona metoda implementacji wprowadza cztery krytyczne wąskie gardła wydajnościowe, które nie spełniają wymagań precyzyjnych systemów wizyjnych działających w czasie rzeczywistym.
1. Wysokie opóźnienia: Buforowanie, przetwarzanie i przekazywanie danych przez CPU wprowadza 10–100 ms opóźnienia systemowego, co jest krytyczne dla scenariuszy wrażliwych na czas, takich jak przemysłowa detekcja wad i motoryzacyjne ADAS, łatwo prowadząc do pominięcia wykrycia i opóźnionej reakcji.
2. Niewystarczające wykorzystanie zasobów FPGA: Tryb przekazywania danych przez CPU wymusza pracę FPGA w sekwencyjnym trybie oczekiwania na dane, co uniemożliwia wykorzystanie cech przetwarzania równoległego, powodując bezczynność jednostek logicznych i zasobów DSP.
3. Ograniczona możliwość sterowania kamerą w czasie rzeczywistym: Większość kamer USB zgodnych ze standardem UVC jest sterowana przez API oprogramowania po stronie CPU, co uniemożliwia FPGA dynamiczną regulację ekspozycji, wzmocnienia, balansu bieli i innych parametrów w czasie rzeczywistym. Ta wada ogranicza zdolność adaptacji systemów wizyjnych do zmiennych warunków oświetleniowych.
4. Wady kompatybilności protokołów: FPGA nie obsługują natywnie protokołów hosta USB. Tradycyjne rozwiązania wymagają polegania na zewnętrznych kontrolerach USB lub parsowaniu protokołów przez CPU, co zwiększa złożoność systemu i wprowadza dodatkowe opóźnienia.
Chociaż profesjonalne interfejsy wizyjne, takie jak Camera Link i MIPI, mogą uniknąć powyższych problemów, kamery USB mają niezastąpione zalety pod względem kosztów i kompatybilności. Podstawowym rozwiązaniem przełamującym ograniczenia wydajności jest zastosowanie architektury komunikacyjnej bezpośrednio między kamerami USB a FPGA, bez udziału CPU.
Innowacyjne strategie integracji o niskim opóźnieniu bez użycia procesora
Usunięcie pośredniego ogniwa CPU jest sednem integracji o niskim opóźnieniu. Poniżej zaproponowano dwie sprawdzone w terenie architektury bezpośredniego połączenia sprzętowego, aby zrealizować wydajną wymianę danych między kamerami USB a układami FPGA.
Strategia 1: Implementacja kontrolera hosta USB i stosu protokołu UVC opartego na FPGA
Ta architektura implementuje kompletny kontroler hosta USB i stos protokołu UVC (USB Video Class) oparty na logice sprzętowej FPGA, umożliwiając FPGA bezpośrednie wykonanie parsowania protokołu, odbioru danych i kontroli parametrów kamer USB bez udziału procesora. Rozwiązanie to może zmniejszyć opóźnienie systemu do mniej niż 1 milisekundy i osiągnąć pełną kontrolę parametrów kamery na poziomie sprzętowym.
Zasada implementacji i kroki
1. Wybór układu PHY USB: Dopasuj szybkie układy warstwy fizycznej USB 3.0/3.2, takie jak FTDI FT602 i Cypress CYUSB3014. Układy komunikują się z układami FPGA poprzez magistrale równoległe. FT602 jest preferowanym urządzeniem do integracji przemysłowej ze względu na niski koszt, niskie zużycie energii i prostą adaptację sterowników.
2. Rozwój stosu protokołu UVC FPGA: Użyj języków opisu sprzętu Verilog lub VHDL do ukończenia rozwoju logiki rdzenia, w tym wyliczania urządzeń USB, konfiguracji punktów końcowych sterowania parametrami kamery oraz szybkiej transmisji danych wideo opartej na punktach końcowych izochronicznych.
3. Integracja sprzętowego potoku przetwarzania obrazu: Zaimplementuj logikę wstępnego przetwarzania obrazu, taką jak wykrywanie krawędzi, korekcja kolorów i redukcja szumów, w logice sprzętowej FPGA, aby zrealizować potokowe przetwarzanie równoległe danych wideo i wyeliminować opóźnienia transmisji danych.
Kluczowe zalety
• Bardzo niskie opóźnienie systemowe, z opóźnieniem end-to-end kontrolowanym w granicach 1 ms, spełniające rygorystyczne wymagania przetwarzania w czasie rzeczywistym
• Wsparcie dla dynamicznej regulacji w czasie rzeczywistym parametrów, takich jak ekspozycja i wzmocnienie kamery, w oparciu o logikę FPGA
• Pełne wykorzystanie równoległych zasobów obliczeniowych FPGA w celu maksymalizacji wykorzystania sprzętu
• Eliminacja zależnych urządzeń CPU i obniżenie całkowitego kosztu materiałów (BOM) systemu
Przykład zastosowania inżynieryjnego: Wykrywanie defektów PCB w czasie rzeczywistym
Przemysłowy system produkcyjny wykorzystuje kamerę USB 4K z globalną migawką oraz układ FPGA Xilinx Kintex-7, a także buduje sprzętowy stos protokołu UVC oparty na układzie USB PHY FT602. System stabilnie przetwarza strumienie wideo 4K o szybkości 30 klatek na sekundę z opóźnieniem poniżej milisekundy. Algorytm wykrywania krawędzi z akceleracją sprzętową FPGA umożliwia identyfikację w czasie rzeczywistym brakujących elementów PCB oraz zwarć. W porównaniu z tradycyjnym rozwiązaniem opartym na procesorze CPU, współczynnik fałszywych alarmów w wykrywaniu wad został zmniejszony o 30%. Ponadto FPGA dynamicznie dostosowuje parametry ekspozycji kamery do zmian oświetlenia w hali produkcyjnej, zapewniając stabilną dokładność detekcji w złożonych warunkach pracy.
Strategia 2: Architektura akceleracji AI na FPGA oparta na moście USB-AXI
W przypadku scen wizji brzegowej AI, takich jak wykrywanie obiektów i rozpoznawanie twarzy, można zastosować architekturę mostu USB-AXI. Ten schemat konwertuje dane wideo USB na standardowe sygnały magistrali AXI4-Stream poprzez logikę mostkowania sprzętowego, bezpośrednio przesyła dane do rdzenia IP wnioskowania AI po stronie FPGA i realizuje kompleksowe przetwarzanie inteligentne o niskim opóźnieniu.
Zasada wdrożenia i kroki
1. Zbuduj most USB-AXI: Zastosuj oficjalnie wstępnie opracowane rdzenie IP, takie jak Xilinx USB 3.0 Host Controller IP lub niestandardową logikę Verilog, aby ukończyć enumerację urządzeń USB i przekonwertować strumień danych wideo USB na format danych magistrali AXI odpowiedni do transmisji wewnątrz FPGA.
2. Zintegruj sprzętowy rdzeń IP wnioskowania AI: Osadź w projekcie FPGA rdzenie akceleracyjne Xilinx DPU lub Intel OpenVINO FPGA, aby wspierać operacje akceleracji sprzętowej popularnych modeli CNN, takich jak YOLO i ResNet.
3. Optymalizacja wewnętrznego przepływu danych: Współpraca z pamięcią BRAM w układzie FPGA oraz zewnętrzną pamięcią DDR w celu zbudowania rozsądnego mechanizmu buforowania danych, zapewnienie płynnego przesyłania danych wideo między mostkiem a rdzeniem AI oraz uniknięcie utraty klatek i zatorów danych.
Kluczowe zalety
• Realizacja lokalnej inferencji AI na brzegu sieci bez polegania na zasobach CPU i chmury obliczeniowej
• Architektura magistrali AXI obsługuje skalowalną rozbudowę, która może być elastycznie integrowana z przetwarzaniem obrazu, przechowywaniem danych i innymi rdzeniami IP funkcjonalnymi
• Kompatybilny ze wszystkimi standardowymi kamerami USB UVC oraz niestandardowymi kamerami przemysłowymi, o dużej adaptacyjności do różnych scenariuszy
Przykład zastosowania inżynieryjnego: Bezkontaktowy monitoring tętna
Rozwiązanie urządzenia medycznego wykorzystuje popularną kamerę USB oraz płytkę rozwojową Xilinx PYNQ-Z2 FPGA. Dane wideo zebrane przez kamerę są przesyłane do układu FPGA przez mostek USB-AXI. Po optymalizacji sprzętowej i wdrożeniu algorytmu Eulerowskiego powiększania wideo system rejestruje subtelne zmiany koloru skóry spowodowane fluktuacjami przepływu krwi w twarzy, umożliwiając bezdotykowe wykrywanie tętna. System osiąga dokładność detekcji na poziomie 95% w porównaniu z tradycyjnym sprzętem do monitorowania kontaktowego, a całkowite opóźnienie wynosi mniej niż 50 ms. Jest stosowany w scenariuszach monitorowania pacjentów szpitalnych, skutecznie zmniejszając ryzyko zakażeń krzyżowych.
Wytyczne dotyczące doboru komponentów sprzętowych
Właściwe dopasowanie sprzętu jest warunkiem stabilnej pracy systemów integracyjnych o niskim opóźnieniu. Poniżej przedstawiono ukierunkowane kryteria wyboru układów FPGA, kamer USB oraz komponentów pomocniczych dla różnych scenariuszy zastosowań.
1. Wybór układu FPGA
• Scenariusze podstawowe (zastosowania cywilne i DIY): preferowane są Xilinx Artix-7 oraz Intel Cyclone IV. Urządzenia te obsługują protokół USB 2.0, mają umiarkowane zasoby logiczne i nadają się do akwizycji wideo w niskiej rozdzielczości (VGA/720P) oraz prostego przetwarzania detekcji ruchu.
• Scenariusze średniozaawansowane (sprzęt przemysłowy i medyczny): Zalecane są Xilinx Kintex-7 i Intel Arria V. Obsługują one szybką transmisję USB 3.0/3.2, są wyposażone w wystarczającą liczbę bloków DSP i zasobów pamięci on-chip oraz mogą spełnić wymagania przetwarzania kamer HD 1080P/4K i złożonych algorytmów wizyjnych.
• Scenariusze wysokiej klasy (motoryzacyjne ADAS i zaawansowana wizja AI): Stosowane są układy Xilinx UltraScale i Intel Stratix 10. Obsługują one transmisję o wysokim paśmie USB 3.2 Gen 2 10Gbps oraz integrują dedykowane moduły akceleracji AI, co umożliwia wnioskowanie w czasie rzeczywistym dla modeli CNN o wysokiej precyzji.
2. Wybór kamery USB
• Rozdzielczość i liczba klatek na sekundę: Kamery 720P/1080P są odpowiednie do konwencjonalnego monitoringu wizyjnego; kamery o wysokiej rozdzielczości 4K są wymagane w scenariuszach o wysokiej precyzji, takich jak wykrywanie defektów przemysłowych. Liczba klatek na sekundę (30FPS/60FPS) powinna odpowiadać wydajności przetwarzania FPGA, aby uniknąć utraty klatek.
• Wersja protokołu USB: Interfejs USB 3.0/3.2 jest obowiązkowy do transmisji wideo w wysokiej rozdzielczości, aby zapewnić zapas przepustowości; USB 2.0 ma zastosowanie tylko do scenariuszy o niskiej rozdzielczości i niskiej prędkości na poziomie VGA.
• Typ protokołu: Standardowe kamery UVC oferują funkcję plug-and-play i wysoką kompatybilność, odpowiednie do większości ogólnych scenariuszy; kamery z niestandardowym protokołem przemysłowym umożliwiają kontrolę większej liczby parametrów bazowych, co jest odpowiednie dla precyzyjnego przemysłowego sprzętu wizyjnego.
• Charakterystyka funkcjonalna: W scenariuszach szybkiego ruchu wybierz kamery z migawką globalną, aby uniknąć rozmycia ruchu; w ciemnych środowiskach przemysłowych i medycznych priorytetowo wybieraj urządzenia z czułością przy niskim oświetleniu i regulowanymi parametrami ekspozycji.
3. Komponenty wspierające
• Układ PHY USB: FT602 dla niedrogich rozwiązań USB 3.0; CYUSB3014 dla scenariuszy przemysłowych o wysokiej wydajności; oficjalny rdzeń IP hosta USB 2.0 od Intela dla projektów podstawowych o niskiej prędkości.
• Urządzenia pamięci masowej: Zewnętrzna pamięć DDR3/DDR4 jest używana do buforowania dużych ilości danych wideo; pamięć BRAM na chipie jest używana do przechowywania w czasie rzeczywistym danych pośrednich przetwarzania.
• Moduł zasilania: Systemy wizyjne średniej klasy są wyposażone w zasilacz 5V/3A, aby spełnić stabilne wymagania energetyczne układów FPGA, kamer i chipów PHY.
Praktyczne wskazówki dotyczące implementacji i optymalizacji debugowania
W odpowiedzi na typowe problemy w integracji kamer USB z układami FPGA, poniżej przedstawiono praktyczne specyfikacje implementacyjne i metody debugowania, które zwiększają wydajność rozwoju i stabilność systemu.
1. Najpierw weryfikacja prototypu: Przeprowadź weryfikację funkcjonalną na dojrzałych płytkach rozwojowych, takich jak Xilinx PYNQ-Z2 i Intel DE10-Nano, przed zaprojektowaniem niestandardowej płytki PCB. Wbudowany interfejs USB i zasoby peryferyjne pozwalają szybko zweryfikować działanie stosu UVC i logiki mostka AXI, zmniejszając ryzyko modyfikacji sprzętu.
2. Ponowne wykorzystanie oficjalnych gotowych rdzeni IP: W pełni wykorzystaj zoptymalizowane rdzenie IP hosta USB, protokołu UVC i mostka AXI oficjalnie dostarczane przez Xilinx i Intel. Zweryfikowane rdzenie IP pozwalają uniknąć powtarzalnych prac rozwojowych i znacznie skracają cykl projektu.
3. Standaryzowane debugowanie komunikacji USB: Użyj profesjonalnych narzędzi, takich jak Ellisys USB Explorer i LeCroy USB Analyzer, aby przechwytywać dane transmisji USB, lokalizować błędy wyliczania urządzeń i błędy analizy protokołów. Użyj narzędzi Vivado Logic Analyzer i Quartus SignalTap, aby monitorować sygnały magistrali wewnętrznej FPGA i status przetwarzania w czasie rzeczywistym.
4. Optymalizacja opóźnienia systemu: Zastosowanie izochronicznych punktów końcowych USB do transmisji wideo w czasie rzeczywistym; konfiguracja małych, stałorozmiarowych buforów pamięci podręcznej w celu zmniejszenia opóźnienia przechowywania danych; wykorzystanie technologii potokowania i przetwarzania równoległego FPGA do przyspieszenia działania algorytmów; bezpośrednie podłączenie kamery do układu PHY i unikanie koncentratorów USB w celu wyeliminowania dodatkowych opóźnień.
Przyszłe trendy rozwoju
Wraz z iteracyjnym ulepszaniem standardów transmisji USB i technologii układów FPGA, zintegrowane systemy wizyjne kamera USB-FPGA będą rozwijać się w kierunku wyższej przepustowości, mniejszych opóźnień i niższego progu wejścia. Trzy główne trendy rozwojowe są następujące.
1. Popularyzacja integracji USB4 i Thunderbolt: Interfejsy USB4 i Thunderbolt 4 obsługują maksymalną przepustowość 40 Gb/s, umożliwiając przetwarzanie w czasie rzeczywistym wideo 8K Ultra HD. Następna generacja układów FPGA będzie integrować natywną logikę kontrolera USB4, eliminując potrzebę stosowania zewnętrznych układów PHY i dodatkowo redukując opóźnienia systemowe oraz wymiary sprzętu.
2. Popularyzacja niedrogiego brzegowego AI na FPGA: Niedrogie, podstawowe układy FPGA, takie jak Artix-7 i Cyclone V, są stopniowo wyposażane w lekkie moduły akceleracji AI, umożliwiając niskoenergetyczne i niedrogie brzegowe aplikacje wizyjne AI w inteligentnych domach i małych urządzeniach IoT.
3. Standaryzacja projektowania interfejsu FPGA-USB: Organizacje branżowe i producenci układów FPGA wspólnie promują standaryzację integracji USB-FPGA, wprowadzając ujednolicone projekty referencyjne i ogólne rdzenie IP, co obniża próg techniczny dla programistów i umożliwia szybkie wdrażanie systemów wizyjnych.
Wnioski
Architektura bezpośredniej integracji bez udziału CPU całkowicie eliminuje problemy opóźnień i marnotrawstwa zasobów występujące w tradycyjnych rozwiązaniach z kamerą USB i układem FPGA. Dwie kluczowe strategie – stos protokołu UVC oparty na FPGA oraz mostek USB-AXI – w pełni wykorzystują zalety FPGA, takie jak przetwarzanie równoległe i akceleracja sprzętowa, umożliwiając transmisję o ultraniskim opóźnieniu, sterowanie parametrami kamery w czasie rzeczywistym oraz efektywne wykorzystanie zasobów. Rozwiązania te znajdują szerokie zastosowanie w kontroli przemysłowej, monitorowaniu medycznym, wizji motoryzacyjnej oraz scenariuszach edge AI. W rzeczywistej praktyce inżynierskiej maksymalną wydajność systemu można osiągnąć poprzez odpowiedni dobór sprzętu, ponowne wykorzystanie oficjalnych rdzeni IP oraz ukierunkowaną optymalizację opóźnień. Wraz z ciągłym rozwojem protokołów transmisyjnych i wydajności układów scalonych, zintegrowane systemy wizyjne z kamerą USB i FPGA staną się głównym, niskokosztowym i wysokowydajnym rozwiązaniem w dziedzinie wizji w czasie rzeczywistym na brzegu sieci.