Mundarija:

Vivado HLS video IP -bloklarini sintezi: 12 qadam
Vivado HLS video IP -bloklarini sintezi: 12 qadam

Video: Vivado HLS video IP -bloklarini sintezi: 12 qadam

Video: Vivado HLS video IP -bloklarini sintezi: 12 qadam
Video: Vivado HLS: Introduction 2024, Iyul
Anonim
Vivado HLS video IP -blokirovkasi sintezi
Vivado HLS video IP -blokirovkasi sintezi

Siz hech qachon ko'p vaqtni yoki o'rnatilgan tizimni qo'shmasdan videoni real vaqtda qayta ishlashni xohlaganmisiz? Buning uchun ba'zan FPGA (dala dasturlashtiriladigan darvoza massivlari) ishlatiladi; ammo, VHDL yoki Verilog kabi apparat spetsifikatsiyasi tillarida videoni qayta ishlash algoritmlarini yozish eng achinarli. Vivado HLS -ni kiriting, Xilinx vositasi bo'lib, u C ++ muhitida dasturlash imkonini beradi va undan apparat tili kodini ishlab chiqaradi.

Kerakli dasturlar:

  • Vivado HLS
  • Vivado
  • (Agar siz AXI registrlaridan foydalansangiz) Vivado SDK

(Ixtiyoriy) Xilinx misollarini bu erdan yuklab oling:

Xilinx HLS video misollar

1 -qadam: Vivado HLS nima?

Vivado HLS - bu C ++ kabi kodni FPGA -da amalga oshiriladigan apparat tuzilmalariga aylantirish uchun ishlatiladigan vosita, bu ishlab chiqish uchun IDE -ni o'z ichiga oladi. HLS kodini ishlab chiqishni tugatganingizdan so'ng siz yaratgan IP -ni formatga eksport qilishingiz mumkin. Vivado bilan ishlatish uchun.

Qo'shilgan fayllarni yuklab oling va ularni loyihangizni yaratadigan joyga qo'ying. (agar ular tasodifiy nomga ega bo'lsa, ularni "top.cpp" va "top.h" ga o'zgartiring)

2 -qadam: HLS video kutubxonasi

HLS video kutubxonasi
HLS video kutubxonasi
HLS video kutubxonasi
HLS video kutubxonasi

HLS Video kutubxonasida ushbu maqolada mos yozuvlar bilan hujjatlar mavjud: XAPP1167 Yana bir yaxshi manba bu Xilinx Wiki sahifasi.

Vivado HLS -ni ishga tushiring.

Yangi loyiha yarating.

Oldingi bosqichda yuklab olingan fayllarni oling va ularni manba fayllari sifatida qo'shing. (Eslatma: fayllar loyihaga ko'chirilmaydi, lekin ular joyida qoladi)

Keyin yuqori funktsiyani tanlash uchun Browse tugmasidan foydalaning.

Keyingi sahifada siz foydalanadigan Xilinx qismini tanlang.

3 -qadam: sintez

Sintezlash
Sintezlash

Yechim => C sintezini ishga tushirish => Faol yechim

~ 227.218 soniyadan so'ng, buni qilish kerak. (Eslatma: sizning haqiqiy sintez vaqtingiz ko'p omillarga qarab o'zgaradi)

4 -qadam: Versiya va eksport uchun boshqa ma'lumotlar

Eksport uchun versiya va boshqa ma'lumotlar
Eksport uchun versiya va boshqa ma'lumotlar

Versiya raqamlari Vivado bilan o'zaro aloqada bo'lib, siz dizayndagi IP -ni yangilashingiz mumkin. Agar bu kichik versiya bo'lsa, uni o'z joyida bajarish mumkin, asosiy versiyada esa yangi blokni qo'lda qo'shish va eskisini olib tashlash talab qilinadi. IP -ni yangilash tugmachasini bosish orqali avtomatik ravishda amalga oshiriladi, siz IP holatini ko'rish uchun Vivado tcl konsolidagi "report_ip_status" ni ishga tushirishingiz mumkin.

Versiya raqamlari va boshqa ma'lumotlarni Solution => Solution Settings… bo'limida o'rnating.

Shu bilan bir qatorda, bu sozlamalar eksport paytida o'rnatilishi mumkin.

5 -qadam: Vivado IP kutubxonasiga eksport qilish

Vivado IP kutubxonasiga eksport qilish
Vivado IP kutubxonasiga eksport qilish
Vivado IP kutubxonasiga eksport qilish
Vivado IP kutubxonasiga eksport qilish

Yechim => RTL -ni eksport qilish

Agar siz IP -kutubxona tafsilotlarini oldingi qadamda o'rnatmagan bo'lsangiz, buni hozir qilishingiz mumkin.

6 -qadam: Sintez va eksport tahlili

Sintez va eksport tahlili
Sintez va eksport tahlili
Sintez va eksport tahlili
Sintez va eksport tahlili
Sintez va eksport tahlili
Sintez va eksport tahlili

Bu ekranda biz eksport qilinadigan modulimiz haqidagi statistikani ko'rishimiz mumkin, bu bizning 10ns (100MGts) soatlik davrimizga mos kelishini va har bir resursdan qancha foydalanishini ko'rsatadi.

Bizning sintez hisobotimiz va Dataflow tahlilining kombinatsiyasi bilan biz 317338 soat tsikli * 10s soatlik davr * 14 quvur bosqichi = 0,04442732 soniya davom etishini ko'ramiz. Bu shuni anglatadiki, tasvirni qayta ishlashimizga qo'shiladigan umumiy kechikish sekundning yigirma biridan kamroq (maqsadli 100 MGts da).

7 -qadam: Vivadodagi IP kutubxonasini qo'shish

Vivadodagi IP kutubxonasini qo'shish
Vivadodagi IP kutubxonasini qo'shish
Vivadodagi IP kutubxonasini qo'shish
Vivadodagi IP kutubxonasini qo'shish
Vivadodagi IP kutubxonasini qo'shish
Vivadodagi IP kutubxonasini qo'shish
Vivadodagi IP kutubxonasini qo'shish
Vivadodagi IP kutubxonasini qo'shish

Sintezlangan IP -blokdan foydalanish uchun uni Vivadoga qo'shish kerak bo'ladi.

Vivadoda IP-katalogiga o'ting va "Ma'bad qo'shish …" -ni o'ng tugmasini bosib, loyihangizga IP-omborini qo'shing.

Vivado HLS loyiha katalogiga o'ting va hal qilish katalogini tanlang.

U topilgan IP haqida xabar berishi kerak.

8 -qadam: yangilash

Yangilashni amalga oshirish
Yangilashni amalga oshirish
Yangilashni amalga oshirish
Yangilashni amalga oshirish
Yangilashni amalga oshirish
Yangilashni amalga oshirish

Ba'zida siz HLS blokini Vivado dizayniga kiritgandan so'ng o'zgartirish kiritishingiz kerak bo'ladi.

Buning uchun siz o'zgarishlarni amalga oshirishingiz va IP -ni qayta sintez qilishingiz va undan yuqori versiya raqamiga eksport qilishingiz mumkin (oldingi/kichik versiya raqami o'zgarishi haqidagi batafsil ma'lumotni ko'ring).

Yangi versiyani eksport qilishni o'zgartirgandan so'ng, Vivadodagi IP -omborlarini yangilang. Buni Vivado omborda IP o'zgarganini sezganda yoki qo'lda yoqilganda qilish mumkin. (E'tibor bering, agar siz IP -omborlarini ishga tushirgandan so'ng yangilasangiz, lekin HLS -da eksport tugamasdan, IP vaqtincha bo'lmaydi, uning tugashini kuting va yana yangilang.)

Shu nuqtada, oyna paydo bo'ladi, unda diskda IP o'zgartirilgan va "Tanlanganni yangilash" tugmachasi bilan uni yangilash imkoniyati beriladi. keyin bu tugmani bosish avtomatik ravishda eski IPni yangisiga almashtiradi, aks holda ko'proq ishlash talab qilinishi mumkin.

9 -qadam: Qo'shimcha ma'lumotlar va ma'lumotlar

Quyidagi qadamlar HLS sintezi qanday ishlashi va u bilan nima qilish mumkinligi haqida ko'proq ma'lumot beradi.

HLS sintezlangan IP -blokdan foydalanadigan loyihaga misol uchun, bu ko'rsatmaga qarang.

10 -qadam: Chiqish va kirish

Chiqish va kirish
Chiqish va kirish
Chiqish va kirish
Chiqish va kirish

Yakuniy IP -blokga chiqishlar va kirishlar sintezatorning yuqori funktsiyadagi va undan tashqaridagi ma'lumotlar oqimini tahlilidan aniqlanadi.

VHDL yoki verilogda bo'lgani kabi, HLS sizga IP o'rtasidagi ulanishlar haqida batafsil ma'lumot berishga imkon beradi. Bu qatorlar bunga misol:

void image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {

#pragma HLS INTERFACE o'qi porti = video_in bundle = INPUT_STREAM #pragma HLS INTERFACE o'qi porti = video_out bundle = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUS ofset = HxSolSETT = 0x14

IP -blokda ko'rsatilgan portlar ushbu ko'rsatmalarni qanday ta'sir qilishini ko'rishingiz mumkin.

11 -qadam: AXI ro'yxatga olish interfeysi

AXI ro'yxatdan o'tish interfeysi
AXI ro'yxatdan o'tish interfeysi

IP -blokdan PS -ga kirish/chiqishni olish uchun buni AXI interfeysi orqali amalga oshirish mumkin.

Siz buni HLS kodingizda belgilashingiz mumkin, shu jumladan keyinchalik qiymatga kirish uchun ishlatiladigan ofsetlar:

void image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {

#pragma HLS INTERFACE s_axilite port = x to'plami = CONTROL_BUS ofset = 0x14

#pragma HLS INTERFACE s_axilite port = y to'plami = CONTROL_BUS ofset = 0x1C #pragma HLS ma'lumotlar oqimi

x = 42;

y = 0xDEADBEEF; }

Vivadoda to'g'ri ulangandan so'ng, siz ushbu kod yordamida Vivado SDK -da qiymatlarga kirishingiz mumkin:

#parametrlar "h" ni qo'shing

#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);

Shunday qilib, siz x yilda 42 va yda 0xdeadbeefga ega bo'lasiz

12 -qadam: Dataflow Pragma

Ma'lumotlar oqimi
Ma'lumotlar oqimi
Ma'lumotlar oqimi
Ma'lumotlar oqimi
Ma'lumotlar oqimi
Ma'lumotlar oqimi

#Pragma DATAFLOW ichida kodni qo'llash usuli oddiy C ++ dan o'zgaradi. Ma'lumotlarning turli qismlarida barcha ko'rsatmalar har doim bajarilishi uchun kod quvurli (har bir stantsiya uzluksiz bitta funktsiyani bajarib, keyingi stansiyaga uzatiladi).

tasvirdan siz har bir ko'rsatmalarni ko'rishingiz mumkin

Oddiy o'zgaruvchilar ko'rinishiga qaramay, img ob'ektlari buyruqlar orasidagi kichik tamponlar sifatida amalga oshiriladi. Rasmni funktsiyaga kirish sifatida ishlatish "iste'mol qiladi" va uni endi ishlatib bo'lmaydi. (Shuning uchun takroriy buyruqlar kerak)

Tavsiya: