Мазмұны:
- 1 -қадам: Vivado HLS дегеніміз не?
- 2 -қадам: HLS бейне кітапханасы
- 3 -қадам: синтездеу
- 4 -қадам: Экспортқа арналған нұсқалар мен басқа ақпарат
- 5 -қадам: Vivado IP кітапханасына экспорттау
- 6 -қадам: Синтез және экспорттық талдау
- 7 -қадам: Vivado -да IP кітапханасын қосу
- 8 -қадам: жаңарту
- 9 -қадам: Қосымша мәліметтер мен ақпарат
- 10 -қадам: Шығу және енгізу
- 11 -қадам: AXI тіркелу интерфейсі
- 12 -қадам: Dataflow Pragma
Бейне: Vivado HLS бейне IP блогының синтезі: 12 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Сіз көп уақытты немесе ендірілген жүйені қоспай-ақ нақты уақыт режимінде бейне өңдегіңіз келді ме? Мұны істеу үшін кейде FPGA (далалық бағдарламаланатын шлюз массивтері) қолданылады; алайда, VHDL немесе Verilog сияқты аппараттық құралдарды көрсету тілдерінде бейне өңдеу алгоритмдерін жазу ең жақсы жағдайда көңілсіз қалдырады. C ++ ортасында бағдарламалауға мүмкіндік беретін Xilinx құралы Vivado HLS енгізіңіз және одан аппараттық спецификация тілінің кодын құрыңыз.
Қажетті бағдарламалық қамтамасыз ету:
- Vivado HLS
- Вивадо
- (Егер сіз AXI регистрлерін қолдансаңыз) Vivado SDK
(Қосымша) Xilinx жасаған мысалдарды мына жерден жүктеңіз:
Xilinx HLS бейне мысалдары
1 -қадам: Vivado HLS дегеніміз не?
Vivado HLS - бұл C ++ сияқты кодты FPGA -да енгізуге болатын аппараттық құрылымдарға айналдыру үшін қолданылатын құрал, оның ішінде IDE бар, оны әзірлеу үшін IDE бар. Vivado -мен бірге қолдануға арналған.
Қосылған файлдарды жүктеп алып, жобаңызды жасайтын жерге қойыңыз. (егер олардың аты кездейсоқ болса, оларды «top.cpp» және «top.h» деп қайта атаңыз)
2 -қадам: HLS бейне кітапханасы
HLS бейне кітапханасында осы мақалада анықтамалық конструкциялары бар құжаттар бар: XAPP1167 Басқа жақсы ресурс - бұл туралы Xilinx Wiki беті.
Vivado HLS іске қосыңыз.
Жаңа жоба жасаңыз.
Алдыңғы қадамда жүктелген файлдарды алыңыз және оларды бастапқы файлдар ретінде қосыңыз. (Ескерту: файлдар жобаға көшірілмейді, керісінше олар сол жерде қалады)
Содан кейін жоғарғы функцияны таңдау үшін Шолу түймесін пайдаланыңыз.
Келесі бетте сіз қолданатын Xilinx бөлігін таңдаңыз.
3 -қадам: синтездеу
Шешім => C синтезін іске қосыңыз => Белсенді шешім
~ 227.218 секундтан кейін мұны істеу керек. (Ескерту: синтездің нақты уақыты көптеген факторларға байланысты өзгереді)
4 -қадам: Экспортқа арналған нұсқалар мен басқа ақпарат
Нұсқалар нөмірлері Vivado -мен өзара әрекеттеседі, бұл сізге дизайндағы IP -ды жаңартуға мүмкіндік береді. Егер бұл кішігірім нұсқа болса, оны өзгертуге болады, ал негізгі нұсқаға жаңа блокты қолмен қосуды және ескісін жоюды қажет етеді. IP -ді жаңарту түймесін басу арқылы автоматты түрде орындалады. Vivado tcl консолінде IP күйін көру үшін «report_ip_status» іске қосуға болады.
Шешім => Шешім параметрлері бөлімінде нұсқа нөмірлері мен басқа ақпаратты орнатыңыз …
Немесе бұл параметрлерді экспорттау кезінде орнатуға болады.
5 -қадам: Vivado IP кітапханасына экспорттау
Шешім => RTL экспорттау
Егер сіз IP кітапханасының мәліметтерін алдыңғы қадамда орнатпаған болсаңыз, мұны қазір жасай аласыз.
6 -қадам: Синтез және экспорттық талдау
Бұл экранда біз экспортталатын модуль туралы статистиканы көре аламыз, ол біздің 10нс (100МГц) сағаттық кезеңге сәйкес келетінін және ол әрбір ресурстың қанша бөлігін пайдаланатынын көрсетеді.
Осының, біздің синтез туралы есеп пен Dataflow талдауларының жиынтығымен біз 317338 сағат циклін * 10нс сағаттық кезең * 14 құбыр кезеңі = 0,04442732 секунд қажет екенін көреміз. Бұл біздің кескінді өңдеу арқылы қосылатын жалпы кідіріс секундтың жиырмадан бірінен аз екенін білдіреді (мақсатты 100 МГц жиілігінде).
7 -қадам: Vivado -да IP кітапханасын қосу
Синтезделген IP блогын пайдалану үшін оны Vivado -ға қосу қажет.
Vivado-да IP каталогына өтіп, «Репозиторий қосу …» түймесін тінтуірдің оң жақ түймешігімен басып, жобаңызға IP репозиторийін қосыңыз.
Vivado HLS жобасының каталогына өтіп, шешім каталогын таңдаңыз.
Ол табылған IP туралы хабарлауы керек.
8 -қадам: жаңарту
Кейде HLS блогына оны Vivado дизайнына енгізгеннен кейін өзгерістер енгізу қажет.
Мұны істеу үшін сіз өзгертулер енгізе аласыз, IP -ні қайта синтездеуге және экспорттауға болады, жоғары нұсқа нөмірімен (негізгі/кіші нұсқа нөмірінің өзгеруі туралы алдыңғы қадамдағы мәліметтерді қараңыз).
Жаңа нұсқаны экспорттауды өзгерткеннен кейін, Vivado -дағы IP репозиторийлерін жаңартыңыз. Мұны Vivado репозиторийде IP өзгергенін байқағанда немесе қолмен қосқанда жасауға болады. (Назар аударыңыз, егер сіз IP -репозиторийлерін іске қосқаннан кейін жаңартып отырсаңыз, бірақ экспорт HLS -те аяқталмаса, IP уақытша болмайды, оның аяқталуын күтіңіз және қайтадан жаңартыңыз.)
Бұл кезде дискіде IP өзгертілгені туралы ақпарат бар терезе пайда болуы керек және оны «Таңдалғанды жаңарту» түймесімен жаңартуға мүмкіндік береді. содан кейін бұл түймені басу ескі IP -ді автоматты түрде жаңасына ауыстырады, әйтпесе қосымша жұмыс қажет болуы мүмкін.
9 -қадам: Қосымша мәліметтер мен ақпарат
Келесі қадамдар HLS синтезі қалай жұмыс істейтіні және онымен не істеуге болатыны туралы қосымша ақпарат береді.
HLS синтезделген IP блогын қолданатын жобаның мысалы үшін мына нұсқаулықты қараңыз.
10 -қадам: Шығу және енгізу
IP -тің соңғы блогына шығулар мен кірістер синтезатордың жоғарғы функцияға кіретін және шығатын деректер ағынының талдауынан анықталады.
VHDL немесе verilog сияқты, HLS IP арасындағы байланыстар туралы мәліметтерді көрсетуге мүмкіндік береді. Бұл жолдар соның мысалы:
void image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE ось порты = video_in bundle = INPUT_STREAM #pragma HLS INTERFACE ось порты = video_out шоғыры = OUTPUT_STREAM #прагма HLS INTERFACE s_axilite порт = x bundle = CONTROL_BUS offset = HxNUMX_setset = 0x14 #
Сіз осы нұсқаулықтардың IP блогында көрсетілген порттарға қалай әсер ететінін көре аласыз.
11 -қадам: AXI тіркелу интерфейсі
IP блогынан PS -ге кіріс/шығыс алу үшін мұны жақсы әдіс - AXI интерфейсі.
Сіз мұны HLS кодыңызда көрсете аласыз, оның ішінде мәнге кейінірек қол жеткізу үшін пайдаланылатын ауыстырулар:
void image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE s_axilite порт = x байламы = CONTROL_BUS ығысуы = 0x14
#pragma HLS INTERFACE s_axilite port = y байламы = CONTROL_BUS офсеті = 0x1C #pragma HLS деректер ағыны
x = 42;
y = 0xDEADBEEF; }
Vivado -да дұрыс қосылғаннан кейін сіз Vivado SDK -де осы кодты қолдана отырып, мәндерге қол жеткізе аласыз:
#«paramet.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);
Осының арқасында сізде 42 x және 0xdeadbeef болады
12 -қадам: Dataflow Pragma
#Pragma DATAFLOW ішінде кодты енгізу тәсілі қалыпты C ++ - тен өзгереді. Деректердің әр түрлі бөліктерінде барлық нұсқаулықтар үнемі жұмыс істеп тұруы үшін код құбырлы болып табылады (Мұны зауыттағы конвейер желісі сияқты елестетіп көріңіз, әр станция бір функцияны орындап, оны келесі станцияға береді)
суреттен сіз директивалардың әрқайсысы екенін көре аласыз
Қалыпты айнымалы болып көрінгеніне қарамастан, img объектілері командалар арасында шағын аралықтар ретінде іске асады. Функцияны енгізу ретінде кескінді пайдалану оны «тұтынады» және оны енді қолдануға жарамсыз етеді. (Сондықтан қайталанатын командалар қажет)
Ұсынылған:
Параллель тізбектің синтезі: 17 қадам (суреттермен)
Parallel Sequencer Synth: Бұл қарапайым секвенер құруға арналған нұсқаулық. Секвенатор - бұл циклдық түрде осцилляторды басқаратын қадамдар сериясын шығаратын құрылғы. Әр қадамды басқа реңкке тағайындауға болады, осылайша қызықты тізбектер немесе аудио эффектілер жасауға болады
Балдырлар экспериментіне арналған үйдегі Дженга блогының спектрофотометрі: 15 қадам
Балдырларға арналған эксперименттерге арналған үйдегі Дженга блогының спектрофотометрі: Балдырлар фотосинтетикалық протисттер болып табылады және осылайша су қоректік тізбектеріндегі маңызды организмдер болып табылады. Алайда көктем мен жаз айларында бұл және басқа микроорганизмдер табиғи су ресурстарын көбейтіп, басып кетуі мүмкін, нәтижесінде оттегі сарқылады
Нивелирлеу блогының құрастыру табысы: 30 қадам
Нивелирлеу блогының құрастыру жетістігі: Бұл доктор Дуглас Лекорчиктің Берада колледжінің TAD 330 сыныбындағы соңғы техникалық жазбасы, Кармадри Сантьяго 28.04.2020 ж
Дыбыс иілу синтезі: 14 қадам (суреттермен)
Дыбыстық иілу синтезі: Мен бұған дейін бірнеше дыбыс ию машиналарын жасадым (төмендегі «ibles» сілтемелерін қараңыз). Бұл жолы мен сізге реверб пен күшейткіш модулін қостым, ол сізге дыбыстардың жаңа диапазонын береді. Сонымен қатар, дыбыс жазу құрылғысы модуль
Ретро сөйлеу синтезі. Бөлім: 12 IoT, үйді автоматтандыру: 12 қадам (суреттермен)
Ретро сөйлеу синтезі. Бөлім: 12 IoT, үйді автоматтандыру: Бұл мақала үйдегі автоматтандыру бойынша нұсқаулықтардың 12 -ші сериясы болып табылады, онда IoT ретро сөйлеу синтезі құрылғысын қолданыстағы үй автоматтандыру жүйесіне қалай құру және кіріктіруді қосады, ол барлық мүмкіндіктерді қосады