Mundarija:
- 1 -qadam: Vivado HLS nima?
- 2 -qadam: HLS video kutubxonasi
- 3 -qadam: sintez
- 4 -qadam: Versiya va eksport uchun boshqa ma'lumotlar
- 5 -qadam: Vivado IP kutubxonasiga eksport qilish
- 6 -qadam: Sintez va eksport tahlili
- 7 -qadam: Vivadodagi IP kutubxonasini qo'shish
- 8 -qadam: yangilash
- 9 -qadam: Qo'shimcha ma'lumotlar va ma'lumotlar
- 10 -qadam: Chiqish va kirish
- 11 -qadam: AXI ro'yxatga olish interfeysi
- 12 -qadam: Dataflow Pragma
Video: Vivado HLS video IP -bloklarini sintezi: 12 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
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 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
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
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
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
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
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
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
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
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
#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:
Ovoz bükme sintezi: 14 qadam (rasmlar bilan)
Ovoz bükme sintezi: Men ilgari bir nechta ovoz bükme mashinalarini qurganman ("ibles" ga quyidagi havolalarni ko'ring). Bu safar men reverb va amp modulini qo'shdim, bu sizga chindan ham o'ynashingiz mumkin bo'lgan yangi tovushlarni beradi. Bundan tashqari, ovoz yozish moduli
Sigara qutisi sintezi: 14 qadam (rasmlar bilan)
Cigar Box Synth: Mana mening oxirgi sinxronizatsiyaim 555 va 556 taymerdan, 4017 ic bilan. Bir necha oy oldin bunday qurilish mening mahorat darajamdan chiqib ketardi. So'nggi bir necha oy ichida men yaxshiroq bo'lish uchun bir nechta oddiy sintezlarni yig'dim
Keling, quramiz (analog sintezi): 5 qadam
Keling, quraylik (Analog sintez): Bu seriyada men sizga analog va raqamli komponentlardan foydalangan holda asosiy modulli analog sintezatorni qanday yaratishni ko'rsataman. 1mZX4LyiJwXZLJ3R56SDxloMnk8z07IYJ
Retro nutq sintezi. Qism: 12 IoT, uy avtomatizatsiyasi: 12 qadam (rasmlar bilan)
Retro nutq sintezi. Bo'lim: 12 IoT, uyni avtomatlashtirish: Bu maqola uy avtomatizatsiyasi bo'yicha ko'rsatmalar to'plamining 12 -chi maqolasi bo'lib, unda IoT retro nutq sintez qurilmasini mavjud uy avtomatlashtirish tizimiga yaratish va integratsiyalashtirish, shu jumladan barcha zarur dasturiy funktsiyalarni o'z ichiga oladi
Kompyuteringizda analog tovush sintezi: 10 qadam (rasmlar bilan)
Kompyuteringizda analog tovush sintezi: xuddi shu analog sintezatorlarning ovozi kabi? O'z vaqtida, o'z joyingizda, xohlagancha, BEPUL o'ynashni xohlaysizmi? Bu erda sizning eng yovvoyi Moog orzularingiz amalga oshadi. Siz elektron ovoz yozuvchisi yoki jus bo'lishingiz mumkin