Мазмуну:

Vivado HLS Video IP блогунун синтези: 12 кадам
Vivado HLS Video IP блогунун синтези: 12 кадам

Video: Vivado HLS Video IP блогунун синтези: 12 кадам

Video: Vivado HLS Video IP блогунун синтези: 12 кадам
Video: Generating custom AXI4-Stream IP core using Xilinx Vivado 2024, Июль
Anonim
Vivado HLS Video IP блогун синтездөө
Vivado HLS Video IP блогун синтездөө

Сиз качандыр бир убакытты же камтылган системаны кошпостон видеону реалдуу убакытта иштетүүнү кааладыңыз беле? Бул үчүн кээде FPGAs (Field Programmable Gate Arrays) колдонулат; бирок, VHDL же Verilog сыяктуу аппараттык спецификация тилдеринде видео иштетүү алгоритмдерин жазуу эң эле көңүлдү чөгөрөт. C ++ чөйрөсүндө программалоого жана андан аппараттык спецификация тилинин кодун түзүүгө мүмкүндүк берген Vivado HLS, Xilinx куралын киргизиңиз.

Керектүү программалар:

  • Vivado HLS
  • Vivado
  • (Эгерде сиз AXI регистрлерин колдонсоңуз) Vivado SDK

(Милдеттүү эмес) Xilinxтин мисалдарын бул жерден жүктөп алыңыз:

Xilinx HLS видео мисалдары

1 -кадам: Vivado HLS деген эмне?

Vivado HLS - бул c ++ сыяктуу кодду FPGAда ишке ашырыла турган аппараттык структураларга айландыруу үчүн колдонулган курал. Vivado менен колдонуу үчүн.

Тиркелген файлдарды жүктөп алып, долбооруңузду түзө турган жерге коюңуз. (эгерде алар рандомизацияланган атка ээ болсо, аларды "top.cpp" жана "top.h" деп кайра атагыла)

2 -кадам: HLS Video Library

HLS видео китепканасы
HLS видео китепканасы
HLS видео китепканасы
HLS видео китепканасы

HLS Video Library бул макалада шилтеме дизайны бар документтерге ээ: XAPP1167 Дагы бир жакшы булак бул жөнүндө Xilinx Wiki баракчасы.

Vivado HLSти баштаңыз.

Жаңы долбоор түзүү.

Мурунку кадамда жүктөлгөн файлдарды алыңыз жана аларды баштапкы файлдар катары кошуңуз. (Эскертүү: файлдар долбоорго көчүрүлбөйт, тескерисинче алар турган жерде калат)

Андан кийин Browse баскычын колдонуп, жогорку функцияны тандаңыз.

Кийинки бетте сиз колдонуп жаткан Xilinx бөлүгүн тандаңыз.

3 -кадам: синтездөө

Синтездөө
Синтездөө

Solution => Run C Synthesis => Active Solution

~ 227.218 секунддан кийин, муну жасоо керек. (Эскертүү: сиздин чыныгы синтез убактыңыз көптөгөн факторлорго жараша өзгөрүп турат)

4 -кадам: Версиялоо жана экспорттоо үчүн башка маалыматтар

Экспорт үчүн версия жана башка маалыматтар
Экспорт үчүн версия жана башка маалыматтар

Версия номерлери Vivado менен өз ара аракеттенишип, сиз дизайндагы IPди жаңырта аласыз. Эгерде бул кичинекей версияны өзгөртүү болсо, анда аны өз ордунда кылса болот, ал эми негизги версияны өзгөртүү кол менен жаңы блокту кошуп, эскисин алып салууну талап кылат. IP баскычын басуу менен толугу менен автоматтык түрдө жасалат. Сиз IP статусун көрүү үчүн Vivado tcl консолунда "report_ip_status" иштете аласыз.

Чыгаруу => Чыгаруу Орнотууларында версиянын номерлерин жана башка маалыматты коюңуз …

Же болбосо, бул орнотууларды экспорттоо учурунда коюуга болот.

5 -кадам: Vivado IP китепканасына экспорттоо

Vivado IP китепканасына экспорттоо
Vivado IP китепканасына экспорттоо
Vivado IP китепканасына экспорттоо
Vivado IP китепканасына экспорттоо

Чечим => RTL экспорттоо

Эгер мурунку кадамда IP китепканасынын чоо -жайын орнотпогон болсоңуз, азыр муну кыла аласыз.

6 -кадам: Синтез жана экспорттук анализ

Синтез жана экспорттук анализ
Синтез жана экспорттук анализ
Синтез жана экспорттук анализ
Синтез жана экспорттук анализ
Синтез жана экспорттук анализ
Синтез жана экспорттук анализ

Бул экранда биз экспорттолгон модулубуздун статистикасын көрө алабыз, бул биздин 10нс (100МГц) мезгилибизге жооп берерин жана ал ар бир ресурстун канча бөлүгүн колдоноорун көрсөтөт.

Мунун айкалышы менен, Synthesis Report жана Dataflow анализи, биз 317338 сааттык циклди талап кыларын көрө алабыз * 10нс мезгил мезгили * 14 түтүк этаптары = 0.04442732 секунд. Сүрөттү иштетүү менен коштолгон жалпы күтүү секунданын жыйырмадан биринен аз экенин билдирет (максаттуу 100МГц жыштыгында).

7 -кадам: Vivadoдогу IP китепканасын кошуу

Vivadoдогу IP китепканасын кошуу
Vivadoдогу IP китепканасын кошуу
Vivadoдогу IP китепканасын кошуу
Vivadoдогу IP китепканасын кошуу
Vivadoдогу IP китепканасын кошуу
Vivadoдогу IP китепканасын кошуу
Vivadoдогу IP китепканасын кошуу
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 ортосундагы байланыштар жөнүндө деталдарды көрсөтүүгө мүмкүндүк берет. Бул саптар буга мисал:

жараксыз 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 bundle = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUS offset = Hx_setset = 0x14 #prxma

Сиз IP блогунда көрсөтүлгөн портторго бул көрсөтмөлөрдүн кандай таасир эткенин көрө аласыз.

11 -кадам: AXI Register Interfacing

AXI Register Interfacing
AXI Register Interfacing

IP блогуңуздан PSге кирүүнү/чыгууну алуу үчүн муну жакшы жол AXI интерфейси аркылуу.

Сиз муну HLS кодуңузда көрсөтө аласыз, анын ичинде кийинчерээк баалуулукка жетүү үчүн колдонула турган офсеттер:

жараксыз 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 bundle = CONTROL_BUS offset = 0x1C #pragma HLS dataflow

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

Dataflow Pragma
Dataflow Pragma
Dataflow Pragma
Dataflow Pragma
Dataflow Pragma
Dataflow Pragma

#Pragma DATAFLOW ичинде коддун ишке ашыруу жолу кадимки С ++ тилинен өзгөрөт. Код бардык маалыматтын ар кайсы бөлүгүндө дайыма иштей тургандай кылып өткөрүлүп берилген (Муну заводдо конвейердик линия сыяктуу ойлонуп көрүңүз, ар бир станция тынымсыз бир функцияны аткарып, кийинки станцияга өткөрүп берет)

сүрөттөн сиз директивалардын ар бири экенин көрө аласыз

Кадимки өзгөрмөлөр болуп көрүнгөнүнө карабастан, img объекттери чындыгында командалардын ортосунда кичине буфер катары ишке ашырылат. Сүрөттү функцияга киргизүү катары колдонуу аны "керектейт" жана аны колдонууга жараксыз кылат. (Демек, кайталанган буйруктарга муктаждык бар)

Сунушталууда: