Obsah:

Syntéza IP bloku videa Vivado HLS Video: 12 kroků
Syntéza IP bloku videa Vivado HLS Video: 12 kroků

Video: Syntéza IP bloku videa Vivado HLS Video: 12 kroků

Video: Syntéza IP bloku videa Vivado HLS Video: 12 kroků
Video: Как подключить видеокарту 8 pin 2024, Červenec
Anonim
Syntéza IP bloku videa Vivado HLS Video
Syntéza IP bloku videa Vivado HLS Video

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
Videotéka HLS
Videotéka HLS
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

Syntetizace
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

Správa verzí a další informace pro export
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

Export do knihovny IP Vivado
Export do knihovny IP Vivado
Export do knihovny IP Vivado
Export do knihovny IP Vivado

Ř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

Syntéza a exportní analýza
Syntéza a exportní analýza
Syntéza a exportní analýza
Syntéza a exportní analýza
Syntéza a exportní analýza
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

Přidání IP knihovny ve Vivado
Přidání IP knihovny ve Vivado
Přidání IP knihovny ve Vivado
Přidání IP knihovny ve Vivado
Přidání IP knihovny ve Vivado
Přidání IP knihovny ve Vivado
Přidání IP knihovny ve Vivado
Přidání IP knihovny 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

Provádění upgradu
Provádění upgradu
Provádění upgradu
Provádění upgradu
Provádění upgradu
Provádění 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ýstup a vstup
Výstup a vstup
Výstup a vstup
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

Rozhraní registru AXI
Rozhraní registru 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

Dataflow Pragma
Dataflow Pragma
Dataflow Pragma
Dataflow Pragma
Dataflow Pragma
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: