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
![Syntéza bloku IP videa Vivado HLS Video: 12 krokov Syntéza bloku IP videa Vivado HLS Video: 12 krokov](https://i.howwhatproduce.com/images/001/image-204-87-j.webp)
Video: Syntéza bloku IP videa Vivado HLS Video: 12 krokov
![Video: Syntéza bloku IP videa Vivado HLS Video: 12 krokov Video: Syntéza bloku IP videa Vivado HLS Video: 12 krokov](https://i.ytimg.com/vi/sjbuUysJRA8/hqdefault.jpg)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
![Syntéza bloku IP videa Vivado HLS Video Syntéza bloku IP videa Vivado HLS Video](https://i.howwhatproduce.com/images/001/image-204-88-j.webp)
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
![Videotéka HLS Videotéka HLS](https://i.howwhatproduce.com/images/001/image-204-89-j.webp)
![Videotéka HLS Videotéka HLS](https://i.howwhatproduce.com/images/001/image-204-90-j.webp)
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
![Syntetizácia Syntetizácia](https://i.howwhatproduce.com/images/001/image-204-91-j.webp)
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
![Správa verzií a ďalšie informácie pre export Správa verzií a ďalšie informácie pre export](https://i.howwhatproduce.com/images/001/image-204-92-j.webp)
Čí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
![Export do knižnice IP Vivado Export do knižnice IP Vivado](https://i.howwhatproduce.com/images/001/image-204-93-j.webp)
![Export do knižnice IP Vivado Export do knižnice IP Vivado](https://i.howwhatproduce.com/images/001/image-204-94-j.webp)
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
![Syntéza a exportná analýza Syntéza a exportná analýza](https://i.howwhatproduce.com/images/001/image-204-95-j.webp)
![Syntéza a exportná analýza Syntéza a exportná analýza](https://i.howwhatproduce.com/images/001/image-204-96-j.webp)
![Syntéza a exportná analýza Syntéza a exportná analýza](https://i.howwhatproduce.com/images/001/image-204-97-j.webp)
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
![Pridanie knižnice IP do Vivado Pridanie knižnice IP do Vivado](https://i.howwhatproduce.com/images/001/image-204-98-j.webp)
![Pridanie knižnice IP do Vivado Pridanie knižnice IP do Vivado](https://i.howwhatproduce.com/images/001/image-204-99-j.webp)
![Pridanie knižnice IP do Vivado Pridanie knižnice IP do Vivado](https://i.howwhatproduce.com/images/001/image-204-100-j.webp)
![Pridanie knižnice IP do Vivado Pridanie knižnice IP do Vivado](https://i.howwhatproduce.com/images/001/image-204-101-j.webp)
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
![Vykonáva sa inovácia Vykonáva sa inovácia](https://i.howwhatproduce.com/images/001/image-204-102-j.webp)
![Vykonáva sa inovácia Vykonáva sa inovácia](https://i.howwhatproduce.com/images/001/image-204-103-j.webp)
![Vykonáva sa inovácia Vykonáva sa inovácia](https://i.howwhatproduce.com/images/001/image-204-104-j.webp)
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ýstup a vstup Výstup a vstup](https://i.howwhatproduce.com/images/001/image-204-105-j.webp)
![Výstup a vstup Výstup a vstup](https://i.howwhatproduce.com/images/001/image-204-106-j.webp)
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
![Rozhranie registra AXI Rozhranie registra AXI](https://i.howwhatproduce.com/images/001/image-204-107-j.webp)
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
![Dataflow Pragma Dataflow Pragma](https://i.howwhatproduce.com/images/001/image-204-108-j.webp)
![Dataflow Pragma Dataflow Pragma](https://i.howwhatproduce.com/images/001/image-204-109-j.webp)
![Dataflow Pragma Dataflow Pragma](https://i.howwhatproduce.com/images/001/image-204-110-j.webp)
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: 7 krokov (s obrázkami) Vytvorte vesmírnu stanicu v kódovom bloku TinkerCad -- Jednoduchý návod: 7 krokov (s obrázkami)](https://i.howwhatproduce.com/images/001/image-2150-j.webp)
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: 14 krokov (s obrázkami) Syntéza ohýbania zvuku: 14 krokov (s obrázkami)](https://i.howwhatproduce.com/images/009/image-25873-j.webp)
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: 12 krokov (s obrázkami) Retro syntéza reči. Časť: 12 IoT, domáca automatizácia: 12 krokov (s obrázkami)](https://i.howwhatproduce.com/images/005/image-12984-17-j.webp)
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
![Diaľkové ovládanie videa pre video prehrávač PC: 6 krokov Diaľkové ovládanie videa pre video prehrávač PC: 6 krokov](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10965280-toddler-video-remote-for-pc-video-player-6-steps-j.webp)
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)
![Syntéza analógového zvuku vo vašom počítači: 10 krokov (s obrázkami) Syntéza analógového zvuku vo vašom počítači: 10 krokov (s obrázkami)](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10967641-analog-sound-synthesis-on-your-computer-10-steps-with-pictures-j.webp)
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