Obsah:
- Krok 1: Čo je Vivado HLS?
- Krok 2: Videotéka HLS
- Krok 3: Syntetizácia
- Krok 4: Verzia a ďalšie informácie pre export
- Krok 5: Export do knižnice IP Vivado
- Krok 6: Syntéza a exportná analýza
- Krok 7: Pridanie knižnice IP do Vivado
- Krok 8: Vykonanie inovácie
- Krok 9: Ďalšie podrobnosti a informácie
- Krok 10: Výstup a vstup
- Krok 11: Rozhranie registra AXI
- Krok 12: Dataflow Pragma
Video: Syntéza bloku IP videa Vivado HLS Video: 12 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Už ste niekedy chceli spracovanie videa v reálnom čase bez pridania veľkej latencie alebo vo vstavanom systéme? Niekedy sa na to používa FPGA (Field Programmable Gate Arrays); písanie algoritmov na spracovanie videa v jazykoch hardvérovej špecifikácie, ako je VHDL alebo Verilog, je však prinajlepšom frustrujúce. Zadajte Vivado HLS, nástroj Xilinx, ktorý vám umožňuje programovať v prostredí C ++ a generovať z neho kód jazykovej špecifikácie hardvéru.
Požadovaný softvér:
- Vivado HLS
- Vivado
- (Ak používate registre AXI) Vivado SDK
(Voliteľné) Stiahnite si príklady vytvorené spoločnosťou Xilinx tu:
Príklady videa Xilinx HLS
Krok 1: Čo je Vivado HLS?
Vivado HLS je nástroj používaný na premenu kódu podobného kódu C ++ na hardvérové štruktúry, ktoré je možné implementovať na FPGA. Obsahuje IDE na tento vývoj. Po dokončení vývoja kódu pre HLS môžete vygenerovanú IP adresu exportovať vo formáte na použitie s Vivado.
Stiahnite si priložené súbory a umiestnite ich blízko miesta, kde budete vytvárať svoj projekt. (ak majú náhodný názov, premenujte ich späť na „top.cpp“a „top.h“)
Krok 2: Videotéka HLS
Videoknižnica HLS má dokumentáciu s referenčnými návrhmi v tomto článku: XAPP1167 Ďalším dobrým zdrojom je stránka Wil Xx o tom.
Spustite Vivado HLS.
Vytvorte nový projekt.
Vezmite súbory, ktoré ste stiahli v predchádzajúcom kroku, a pridajte ich ako zdrojové súbory. (Poznámka: súbory sa nekopírujú do projektu, ale zostanú tam, kde sú)
Potom pomocou tlačidla Prehľadávať vyberte najvyššiu funkciu.
Na ďalšej stránke vyberte časť Xilinx, ktorú používate.
Krok 3: Syntetizácia
Riešenie => Spustite syntézu C => Aktívne riešenie
Po ~ 227,218 sekundách by ste to mali urobiť. (Poznámka: váš skutočný čas syntézy sa bude líšiť v závislosti od mnohých faktorov)
Krok 4: Verzia a ďalšie informácie pre export
Čísla verzií interagujú s Vivado, aby vám umožnili aktualizovať IP v dizajne. Ak ide o menšiu verziu, je možné ju vykonať na mieste, zatiaľ čo zmeny veľkých verzií vyžadujú, aby ste nový blok pridali ručne a odstránili starý. Ak sa vaše rozhrania nezmenili a aktualizácia verzie je menšia, aktualizáciu je možné vykonať Vykonáva sa úplne automaticky stlačením tlačidla Aktualizovať IP. Stav „IP“môžete spustiť v konzole Vivado tcl, aby ste videli.
Nastavte čísla verzií a ďalšie informácie v časti Riešenie => Nastavenia riešenia …
Alternatívne je možné tieto nastavenia nastaviť počas exportu.
Krok 5: Export do knižnice IP Vivado
Riešenie => Exportovať RTL
Ak ste v predchádzajúcom kroku nenastavili podrobnosti o knižnici IP, môžete to urobiť teraz.
Krok 6: Syntéza a exportná analýza
Na tejto obrazovke vidíme štatistiky o našom exportovanom module, ktoré ukazujú, že spĺňa naše časové obdobie 10ns (100 MHz) a koľko z každého zdroja používa.
Vďaka kombinácii tejto našej súhrnnej správy a našej analýzy toku údajov vidíme, že to trvá 317 338 hodinových cyklov * 10 -hodinové časové obdobie * 14 fáz potrubia = 0,04442732 sekundy. To znamená, že celková latencia pridaná naším spracovaním obrazu je kratšia ako jedna dvadsatina sekundy (pri taktovaní na cielených 100 MHz).
Krok 7: Pridanie knižnice IP do Vivado
Ak chcete použiť váš syntetizovaný blok IP, budete ho musieť pridať do Vivado.
Vo Vivado pridajte do svojho projektu úložisko IP tak, že prejdete do katalógu IP a pravým tlačidlom myši vyberiete „Pridať úložisko …“
Prejdite do adresára projektu Vivado HLS a vyberte adresár svojho riešenia.
Malo by to nahlásiť IP, ktorú zistilo.
Krok 8: Vykonanie inovácie
Niekedy je potrebné vykonať zmeny vo vašom bloku HLS po zahrnutí do dizajnu Vivado.
Ak to chcete urobiť, môžete vykonať zmeny a znova syntetizovať a exportovať IP s vyšším číslom verzie (pozrite si podrobnosti v predchádzajúcom kroku o zmenách hlavného/vedľajšieho čísla verzie).
Po zmene exportu novej verzie obnovte svoje úložiská IP vo Vivado. To je možné vykonať buď vtedy, keď si Vivado všimne, že sa v úložisku zmenila adresa IP, alebo sa aktivuje manuálne. (Upozorňujeme, že ak obnovíte svoje úložiská IP po spustení, ale než sa export dokončí v HLS, adresa IP tam dočasne nebude, počkajte, kým sa dokončí a obnoví.)
V tomto mieste by sa malo objaviť okno s informáciou, že na disku IP bola zmenená adresa IP, a poskytne vám možnosť aktualizovať ho pomocou tlačidla „Inovácia vybratá“. Ak išlo o menšiu zmenu verzie a nezmenilo sa žiadne z rozhraní, potom stlačením tohto tlačidla sa automaticky nahradí stará IP novou, inak môže byť potrebné viac práce.
Krok 9: Ďalšie podrobnosti a informácie
Nasledujúce kroky poskytujú viac informácií o tom, ako syntéza HLS funguje a čo s ňou môžete robiť.
Príklad projektu používajúceho syntetizovaný blok IP HLS nájdete v tomto návode.
Krok 10: Výstup a vstup
Výstupy a vstupy do konečného bloku IP sú určené z analýzy, ktorú syntetizátor robí z toku údajov do najvyššej funkcie a von z nej.
Podobne ako vo VHDL alebo verilogu, HLS vám umožňuje špecifikovať podrobnosti o spojeniach medzi IP. Nasledujúce riadky sú toho príkladom:
neplatný obrázok_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE port osi = video_in balík = INPUT_STREAM #pragma HLS INTERFACE port osi = video_out bundle = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUS offset = 0x14 #pragma HLS INTERFACE s_axilite port = y
Môžete vidieť, ako sú tieto smernice ovplyvnené porty vystavené na bloku IP.
Krok 11: Rozhranie registra AXI
Aby ste dostali vstup/výstup do/z vášho IP bloku do PS, je to dobrý spôsob, ako to urobiť, prostredníctvom rozhrania AXI.
Môžete to zadať vo svojom kóde HLS vrátane offsetov, ktoré sa majú použiť na prístup k hodnote neskôr:
neplatný obrázok_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUS offset = 0x14
#pragma HLS INTERFACE s_axilite port = y bundle = CONTROL_BUS offset = 0x1C #pragma HLS dataflow
x = 42;
y = 0xDEADBEEF; }
Po správnom pripojení vo Vivado môžete k hodnotám získať prístup pomocou tohto kódu v súprave Vivado SDK:
#include "parameters.h"
#define xregoff 0x14 #define yregoff 0x1c x = Xil_In32 (XPAR_IMAGE_FILTER_0_S_AXI_CONTROL_BUS_BASEADDR+xregoff); y = Xil_In32 (XPAR_IMAGE_FILTER_0_S_AXI_CONTROL_BUS_BASEADDR+yregoff);
Výsledkom bude, že budete mať 42 v x a 0x mŕtvu hovädziu v y
Krok 12: Dataflow Pragma
Vo vnútri #pragma DATAFLOW sa spôsob implementácie kódu mení z normálneho C ++. Kód je prepojený tak, aby boli všetky pokyny neustále spustené v rôznych častiach údajov (Predstavte si to ako montážnu linku v továrni, každá stanica pracuje nepretržite, robí jednu funkciu a odovzdáva ju ďalšej stanici)
z obrázku vidíte, že každá zo smerníc
Napriek tomu, že sa to zdá, že sú to normálne premenné, objekty img sú v skutočnosti implementované ako malé medzipamäte medzi príkazmi. Použitie obrázka ako vstupu do funkcie ho „spotrebuje“a prestane byť použiteľné. (Preto sú potrebné duplicitné príkazy)
Odporúča:
Vytvorte vesmírnu stanicu v kódovom bloku TinkerCad -- Jednoduchý návod: 7 krokov (s obrázkami)
Vytvorte vesmírnu stanicu v kódovom bloku TinkerCad || Jednoduchý návod: Aj keď sa myšlienka života vo vesmíre môže zdať ako sci -fi, pri čítaní tejto stránky Medzinárodná vesmírna stanica obieha okolo Zeme rýchlosťou päť míľ za sekundu, pričom raz obieha okolo Zeme. každých 90 minút. V tomto projekte sa naučíte
Syntéza ohýbania zvuku: 14 krokov (s obrázkami)
Syntéza ohýbania zvuku: Predtým som postavil niekoľko strojov na ohýbanie zvuku (pozrite sa na odkazy nižšie na „ibles“. Tentoraz som pridal modul reverbu a zosilňovača, ktorý vám skutočne ponúka úplne novú škálu zvukov, s ktorými sa môžete hrať. Modul hlasového záznamníka používaný v
Retro syntéza reči. Časť: 12 IoT, domáca automatizácia: 12 krokov (s obrázkami)
Retro syntéza reči. Časť: 12 IoT, domáca automatizácia: Tento článok je dvanásty v sérii inštrukcií o domácej automatizácii, ktoré dokumentujú, ako vytvoriť a integrovať zariadenie na retro syntézu reči IoT do existujúceho systému domácej automatizácie vrátane všetkých potrebných softvérových funkcií, ktoré umožňujú
Diaľkové ovládanie videa pre video prehrávač PC: 6 krokov
Toddler Video Remote pre prehrávač videa PC: Postavil som diaľkový ovládač, ktorý sa pripája k počítaču pomocou USB. Veľký diaľkový ovládač umožňuje batoľaťu vyberať a prehrávať videá na starom počítači. Jedná sa o relatívne jednoduchý projekt. Hlavnou súčasťou je klávesnica USB alebo bezdrôtová klávesnica USB. Potom
Syntéza analógového zvuku vo vašom počítači: 10 krokov (s obrázkami)
Analógová zvuková syntéza vo vašom počítači: Rovnako ako zvuk týchto starých analógových syntetizátorov? Chcete sa s jedným hrať vo svojom vlastnom čase, na svojom mieste, tak dlho, ako chcete, ZADARMO? Tu sa splnia vaše najdivokejšie sny o Moogovi. Môžete sa stať umelcom elektronickej nahrávky alebo