Obsah:
- Krok 1: Co je Vivado HLS?
- Krok 2: Videotéka HLS
- Krok 3: Syntetizace
- Krok 4: Správa verzí a další informace pro export
- Krok 5: Export do knihovny Vivado IP
- Krok 6: Syntéza a exportní analýza
- Krok 7: Přidání knihovny IP ve Vivado
- Krok 8: Provedení upgradu
- Krok 9: Další podrobnosti a informace
- Krok 10: Výstup a vstup
- Krok 11: Rozhraní registrace AXI
- Krok 12: Dataflow Pragma
Video: Syntéza IP bloku videa Vivado HLS Video: 12 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Chtěli jste někdy zpracování videa v reálném čase bez přidání velké latence nebo v integrovaném systému? Někdy se k tomu používají FPGA (Field Programmable Gate Arrays); psaní algoritmů pro zpracování videa v jazycích specifikací hardwaru, jako je VHDL nebo Verilog, je přinejlepším frustrující. Zadejte Vivado HLS, nástroj Xilinx, který vám umožňuje programovat v prostředí C ++ a generovat z něj kód jazykové specifikace hardwaru.
Požadovaný software:
- Vivado HLS
- Vivado
- (Pokud používáte registry AXI) Vivado SDK
(Volitelné) Stáhněte si příklady vytvořené Xilinx zde:
Příklady videa Xilinx HLS
Krok 1: Co je Vivado HLS?
Vivado HLS je nástroj používaný k přeměně kódu podobného C ++ na hardwarové struktury, které lze implementovat na FPGA. Obsahuje IDE pro tento vývoj. Jakmile dokončíte vývoj kódu pro HLS, můžete vygenerovanou IP exportovat ve formátu pro použití s Vivado.
Stáhněte si přiložené soubory a umístěte je poblíž místa, kde budete vytvářet svůj projekt. (přejmenujte je zpět na „top.cpp“a „top.h“, pokud mají náhodný název)
Krok 2: Videotéka HLS
Videotéka HLS má dokumentaci s referenčními návrhy v tomto článku: XAPP1167 Dalším dobrým zdrojem je stránka Wil Xx o tom.
Spusťte Vivado HLS.
Vytvořte nový projekt.
Vezměte soubory, které jste stáhli v předchozím kroku, a přidejte je jako zdrojové soubory. (Poznámka: soubory nejsou zkopírovány do projektu, ale zůstávají tam, kde jsou)
Poté pomocí tlačítka Procházet vyberte nejvyšší funkci.
Na další stránce vyberte část Xilinx, kterou používáte.
Krok 3: Syntetizace
Řešení => Spustit C syntézu => Aktivní řešení
Po ~ 227,218 sekundách by mělo být hotovo. (Poznámka: váš skutečný čas syntézy se bude lišit v závislosti na mnoha faktorech)
Krok 4: Správa verzí a další informace pro export
Čísla verzí komunikují s Vivado, aby bylo možné aktualizovat IP v designu. Pokud se jedná o drobnou změnu verze, lze ji provést na místě, zatímco hlavní změny verze vyžadují, abyste ručně přidali nový blok a odstranili starý. Pokud se vaše rozhraní nezměnila a aktualizace verze je menší, lze aktualizaci provést provedeno zcela automaticky stisknutím tlačítka aktualizace IP. Stav své IP můžete zobrazit v konzole Vivado tcl a spustit „report_ip_status“.
Nastavte čísla verzí a další informace v Řešení => Nastavení řešení…
Alternativně lze tato nastavení nastavit během exportu.
Krok 5: Export do knihovny Vivado IP
Řešení => Exportovat RTL
Pokud jste v předchozím kroku nenastavili podrobnosti o knihovně IP, můžete to udělat nyní.
Krok 6: Syntéza a exportní analýza
Na této obrazovce vidíme statistiky o našem exportovaném modulu, které ukazují, že splňuje naše časové období 10ns (100MHz) a kolik z každého zdroje používá.
Díky kombinaci této naší souhrnné zprávy a naší analýzy toku dat vidíme, že to trvá 317338 hodinových cyklů * 10ns hodinová perioda * 14 fází potrubí = 0,04442732 sekund. To znamená, že celková latence přidaná naším zpracováním obrazu je menší než jedna dvacetina sekundy (při taktování na cílených 100 MHz).
Krok 7: Přidání knihovny IP ve Vivado
Chcete -li použít syntetizovaný blok IP, budete jej muset přidat do Vivado.
Ve Vivado přidejte do svého projektu úložiště IP tak, že přejdete do katalogu IP a pravým tlačítkem myši vyberete „Přidat úložiště…“
Přejděte do adresáře projektu Vivado HLS a vyberte adresář řešení.
Měla by hlásit IP, kterou našla.
Krok 8: Provedení upgradu
Někdy je třeba provést změny v bloku HLS poté, co jej zahrnete do designu Vivado.
Chcete -li to provést, můžete provést změny a znovu syntetizovat a exportovat IP s vyšším číslem verze (viz podrobnosti v předchozím kroku o změnách čísla hlavní/vedlejší verze).
Po změně exportu nové verze obnovte svá úložiště IP ve Vivado. To lze provést, když si Vivado všimne, že se IP změnila v úložišti, nebo aktivovat ručně. (Všimněte si, že pokud obnovíte svá úložiště IP po spuštění, ale než se export dokončí v HLS, IP tam dočasně nebude, počkejte, až se dokončí a obnoví se znovu.)
V tomto okamžiku by se mělo objevit okno s informací, že na disku byla změněna adresa IP, a dává vám možnost jej aktualizovat pomocí tlačítka „Upgrade Selected“. Pokud byla změna malou změnou verze a žádné z rozhraní se nezměnilo, poté stisknutím tohoto tlačítka automaticky nahradíte starou IP novou, jinak může být zapotřebí více práce.
Krok 9: Další podrobnosti a informace
Následující kroky poskytují více informací o tom, jak syntéza HLS funguje a co s ní můžete dělat.
Příklad projektu pomocí bloku IP syntetizovaného HLS naleznete v tomto instruktážním příkazu.
Krok 10: Výstup a vstup
Výstupy a vstupy do konečného bloku IP jsou určeny z analýzy, kterou syntetizátor provede tok dat dovnitř a ven z nejvyšší funkce.
Podobně jako ve VHDL nebo verilogu vám HLS umožňuje zadat podrobnosti o připojeních mezi IP. Tyto řádky jsou toho příkladem:
neplatný image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE port osy = video_in bundle = INPUT_STREAM #pragma HLS INTERFACE port osy = 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 vidět, jak tyto směrnice ovlivňují porty vystavené na bloku IP.
Krok 11: Rozhraní registrace AXI
Chcete -li získat vstup/výstup do/z vašeho IP bloku do PS, je dobré to udělat prostřednictvím rozhraní AXI.
Můžete to zadat ve svém kódu HLS, včetně ofsetů, které budou použity pro přístup k hodnotě později takto:
neplatný image_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 tok dat
x = 42;
y = 0xDEADBEEF; }
Po správném připojení v aplikaci Vivado můžete k hodnotám přistupovat pomocí tohoto kódu v sadě 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ýsledkem bude 42 v x a 0xdeadbeef v y
Krok 12: Dataflow Pragma
Uvnitř #pragma DATAFLOW se způsob implementace kódu mění z normálního C ++. Kód je propojen tak, aby všechny instrukce byly spuštěny po celou dobu v různých částech dat (Představte si to jako montážní linku v továrně, každá stanice pracuje nepřetržitě, dělá jednu funkci a předává ji další stanici)
z obrázku vidíte, že každá ze směrnic
Přestože se zdá, že jsou normální proměnné, objekty img jsou ve skutečnosti implementovány jako malé vyrovnávací paměti mezi příkazy. Použití obrázku jako vstupu do funkce ho „spotřebuje“a přestane být použitelný. (Proto je potřeba duplicitní příkazy)
Doporučuje:
Kódování pomocí bloků kódu IOS: 6 kroků
Kódování pomocí bloků kódu IOS: Kódování pomocí iOS je jedinečný způsob, jak nechat vaše zařízení iOS provádět automatizace, načítat zprávy, spouštět kybernetickou válku a dokonce plánovat textové zprávy. Pro tento instruktáž se zaměříme na kybernetickou válku, konkrétně spamování přátel a
Syntéza ohýbání zvuku: 14 kroků (s obrázky)
Sound Bending Synth: Předtím jsem postavil několik strojů pro ohýbání zvuku (podívejte se na odkazy níže na „ibles“). Tentokrát jsem přidal modul reverbu a zesilovače, který vám skutečně poskytne zcela novou škálu zvuků, se kterými si můžete hrát. Modul hlasového záznamníku použitý v
Vytvoření hry v poznámkovém bloku a mnohem více: 10 kroků
Vytvoření hry v poznámkovém bloku a mnohem více: Toto je můj první návod. Pokud tedy máte nějaké návrhy, vyjádřete se. Pusťme se do toho! Když všichni slyšíme slovo poznámkový blok, vybaví se nám nudné zbytečné aplikace, kterými si můžeme zapisovat věci. Poznámkový blok je mnohem víc než to. Můžeme ovládat náš p
Retro syntéza řeči. Část: 12 IoT, domácí automatizace: 12 kroků (s obrázky)
Retro syntéza řeči. Část: 12 IoT, domácí automatizace: Tento článek je 12. v řadě instrukcí o domácí automatizaci dokumentujících, jak vytvořit a integrovat zařízení pro syntézu řeči IoT Retro do stávajícího systému domácí automatizace včetně všech potřebných softwarových funkcí, které umožní
Syntéza analogového zvuku ve vašem počítači: 10 kroků (s obrázky)
Analogová syntéza zvuku ve vašem počítači: Jako zvuk těch starých analogových syntezátorů? Chcete si s jedním hrát ve svém vlastním čase, na svém místě, jak dlouho chcete, ZDARMA? Zde se splní vaše nejdivočejší moogské sny. Můžete se stát umělcem elektronické nahrávky nebo