Sadržaj:
- Korak 1: Što je Vivado HLS?
- Korak 2: Videoteka HLS -a
- Korak 3: Sintetiziranje
- Korak 4: Izvođenje verzija i ostale informacije za izvoz
- Korak 5: Izvoz u Vivado IP knjižnicu
- Korak 6: Sinteza i izvozna analiza
- Korak 7: Dodavanje IP knjižnice u Vivadu
- Korak 8: Nadogradnja
- Korak 9: Dodatni detalji i informacije
- Korak 10: Izlaz i ulaz
- Korak 11: Sučelje AXI registra
- Korak 12: Pragma protoka podataka
Video: Sinteza video bloka Vivado HLS video IP: 12 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Jeste li ikada poželjeli obradu videa u stvarnom vremenu bez dodatnog kašnjenja ili u ugrađenom sustavu? Za to se ponekad koriste FPGA (Field Programmable Gate Arrays). međutim, pisanje algoritama za video obradu u jezicima specifikacija hardvera poput VHDL -a ili Veriloga u najboljem je slučaju frustrirajuće. Unesite Vivado HLS, alat Xilinx koji vam omogućuje programiranje u C ++ okruženju i generiranje koda jezika specifikacije hardvera iz njega.
Potrebni softver:
- Vivado HLS
- Vivado
- (Ako koristite AXI registre) Vivado SDK
(Izborno) Ovdje preuzmite primjere izrađene od Xilinxa:
Primjeri video zapisa Xilinx HLS
Korak 1: Što je Vivado HLS?
Vivado HLS je alat koji se koristi za pretvaranje koda sličnog c ++ u hardverske strukture koje se mogu implementirati na FPGA. Uključuje IDE za ovaj razvoj. Nakon što dovršite razvoj koda za HLS, možete izvesti generirani IP u format za uporabu s Vivadom.
Preuzmite priložene datoteke i postavite ih blizu mjesta na kojem ćete stvarati svoj projekt. (preimenujte ih natrag u "top.cpp" i "top.h" ako imaju nasumično ime)
Korak 2: Videoteka HLS -a
Videoteka HLS ima dokumentaciju s referentnim dizajnom u ovom radu: XAPP1167Još jedan dobar izvor je Xilinx Wiki stranica o tome.
Pokrenite Vivado HLS.
Izradite novi projekt.
Uzmite datoteke koje ste preuzeli u prethodnom koraku i dodajte ih kao izvorne datoteke. (Napomena: datoteke se ne kopiraju u projekt, već ostaju gdje jesu)
Zatim pomoću gumba Pregledaj odaberite gornju funkciju.
Na sljedećoj stranici odaberite dio Xilinx koji koristite.
Korak 3: Sintetiziranje
Rješenje => Pokreni sintezu C => Aktivno rješenje
Nakon ~ 227.218 sekundi, to bi trebalo biti učinjeno. (Napomena: vaše stvarno vrijeme sinteze varirat će ovisno o mnogim faktorima)
Korak 4: Izvođenje verzija i ostale informacije za izvoz
Brojevi verzija u interakciji su s Vivadom kako biste mogli ažurirati IP u dizajnu. Ako se radi o manjoj promjeni verzije, to se može učiniti na mjestu dok velike izmjene verzija zahtijevaju da ručno dodate novi blok i uklonite stari. Ako se vaša sučelja nisu promijenila, a ažuriranje verzije je manje, ažuriranje se može vrši se potpuno automatski pritiskom na gumb za ažuriranje IP -a. Možete pokrenuti "report_ip_status" na Vivado tcl konzoli da vidite status vašeg IP -a.
Postavite brojeve verzija i druge podatke u Rješenju => Postavke rješenja …
Alternativno, ove se postavke mogu postaviti tijekom izvoza.
Korak 5: Izvoz u Vivado IP knjižnicu
Rješenje => Izvoz RTL -a
Ako u prethodnom koraku niste postavili pojedinosti o IP biblioteci, to možete učiniti sada.
Korak 6: Sinteza i izvozna analiza
Na ovom ekranu možemo vidjeti statistiku o našem izvezenom modulu, koja pokazuje da zadovoljava naše razdoblje od 10ns (100MHz) i koliko svakog resursa koristi.
Kombinacijom ovoga, našeg sintetskog izvješća i naše analize protoka podataka, možemo vidjeti da je potrebno 317338 ciklusa takta * razdoblje takta 10ns * 14 faza cjevovoda = 0,04442732 sekunde. Što znači da je ukupna latencija dodana našom obradom slike manja od jedne dvadesete sekunde (kada radi na ciljanih 100MHz).
Korak 7: Dodavanje IP knjižnice u Vivadu
Da biste koristili svoj sintetizirani IP blok, morat ćete ga dodati u Vivado.
U Vivadu dodajte IP spremište u svoj projekt tako da odete na IP katalog i desnom tipkom miša odaberete "Dodaj spremište …"
Idite u direktorij projekta Vivado HLS i odaberite direktorij rješenja.
Trebao bi prijaviti IP koji je pronašao.
Korak 8: Nadogradnja
Ponekad morate unijeti promjene u svoj HLS blok nakon što ga uključite u Vivado dizajn.
Da biste to učinili, možete unijeti promjene i ponovno sintetizirati i izvesti IP s većim brojem verzije (pogledajte detalje u prethodnim koracima o velikim/manjim promjenama broja verzije).
Nakon promjene izvoza nove verzije, osvježite svoja IP spremišta u Vivadu. To se može učiniti kad Vivado primijeti da se IP promijenio u spremištu ili se može ručno aktivirati. (Napomena, ako osvježite svoja spremišta IP -a nakon pokretanja, ali prije nego što se izvoz dovrši u HLS -u, IP privremeno neće biti tu, pričekajte da se završi i ponovno osvježite.)
U ovom trenutku trebao bi se pojaviti prozor s informacijom da je IP promijenjen na disku i daje vam mogućnost da ga ažurirate gumbom "Nadograđeno odabrano". Ako je promjena bila manja verzija verzije i nijedno sučelje se nije promijenilo, pritiskom na taj gumb automatski će se stari IP zamijeniti novim, u protivnom će možda biti potrebno više posla.
Korak 9: Dodatni detalji i informacije
Sljedeći koraci pružaju više informacija o tome kako sinteza HLS -a funkcionira i što možete učiniti s njom.
Za primjer projekta koji koristi HLS sintetizirani IP blok, pogledajte ovu uputu.
Korak 10: Izlaz i ulaz
Izlazi i ulazi u konačni IP blok određuju se analizom koju sintisajzer radi o protoku podataka unutar i izvan gornje funkcije.
Slično kao u VHDL -u ili verilogu, HLS vam omogućuje da navedete pojedinosti o vezama između IP -a. Primjeri za to su ove crtice:
void image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE osi port = video_in snop = INPUT_STREAM #pragma HLS INTERFACE osi port = video_out snop = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x paket = CONTROL_BUS pomak = 0x14 #pragma HLS x hLxx hLS x hLxx HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HLS x HEX
Možete vidjeti kako ove direktive utječu na portove izložene u IP bloku.
Korak 11: Sučelje AXI registra
Da biste dobili ulaz/izlaz u/iz vašeg IP bloka do PS -a, dobar način za to je putem AXI sučelja.
To možete navesti u svom HLS kodu, uključujući pomake koji će se kasnije koristiti za pristup vrijednosti ovako:
void 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 podataka
x = 42;
y = 0xDEADBEEF; }
Nakon što ste ispravno povezani u Vivadu, možete pristupiti vrijednostima pomoću ovog koda u Vivado SDK -u:
#include "parametri.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);
Tako ćete imati 42 u x i 0xdeadbeef u y
Korak 12: Pragma protoka podataka
Unutar #pragme DATAFLOW način implementacije koda mijenja se od normalnog C ++. Kôd se usmjerava tako da se sve upute izvode u svakom trenutku u različitim dijelovima podataka (Zamislite to kao tvorničku montažnu liniju, svaka stanica radi neprekidno obavljajući jednu funkciju i prosljeđujući je sljedećoj stanici)
sa slike možete vidjeti da je svaka od direktiva
Unatoč tome što se čine normalnim varijablama, img objekti su zapravo implementirani kao mali međuspremnici između naredbi. Korištenje slike kao ulaza u funkciju "troši" je i čini je više neupotrebljivom. (Otuda potreba za duplikatima naredbi)
Preporučeni:
Uspjeh montaže za izravnavanje bloka: 30 koraka
Uspjeh montaže za izravnavanje Bloka: Ovo je posljednji tehnički zapis za dr. Douglasa Lecorchicka u Berea College TAD 330 Class koji je završio Karmadri Santiago 28. travnja 2020
Sinteza retro govora. Dio: 12 IoT, kućna automatizacija: 12 koraka (sa slikama)
Sinteza retro govora. Dio: 12 IoT, kućna automatizacija: Ovaj je članak 12. u nizu o instrukcijama kućne automatizacije koji dokumentiraju kako stvoriti i integrirati IoT Retro uređaj za sintezu govora u postojeći sustav kućne automatizacije, uključujući svu potrebnu softversku funkcionalnost koja omogućuje
Mario Solarni monitor bloka pitanja: 7 koraka (sa slikama)
Mario Question Block Solar Monitor: Na krovu imamo sustav solarnih panela koji za nas proizvodi električnu energiju. Bila je to velika investicija unaprijed i polako se vraća s vremenom. Oduvijek sam to smatrao novcem koji pada u kantu svakih nekoliko sekundi kad izađe sunce. Da
Sinteza analognog zvuka na vašem računalu: 10 koraka (sa slikama)
Sinteza analognog zvuka na vašem računalu: Kao zvuk onih starih analognih sintetizatora? Želite li se igrati s jednim u svoje vrijeme, na svom mjestu, koliko god želite, BESPLATNO? Ovdje se ostvaruju vaši najluđi Moogovi snovi. Možete postati elektronički snimatelj ili jus
Rastavite transformator E-bloka: 6 koraka
Rastavite transformator iz E-bloka: Planirao sam nabaviti gitaru, ali nedostajala mi je emajlirana žica. Pokušavajući to učiniti bez kupnje bilo čega, neko sam vrijeme razmišljao i došao na ideju da ga izvadim iz transformatora za svoj stari rotator antene. Nažalost, g