Агуулгын хүснэгт:
- Алхам 1: Vivado HLS гэж юу вэ?
- Алхам 2: HLS видео номын сан
- Алхам 3: Синтез хийх
- Алхам 4: Экспортлох хувилбар ба бусад мэдээлэл
- Алхам 5: Vivado IP номын сан руу экспорт хийх
- Алхам 6: Синтез ба экспортын шинжилгээ
- Алхам 7: Vivado дахь IP номын санг нэмж оруулах
- Алхам 8: Шинэчлэлт хийж байна
- Алхам 9: Нэмэлт мэдээлэл ба мэдээлэл
- Алхам 10: Гаралт ба оролт
- Алхам 11: AXI бүртгүүлэх интерфейс
- Алхам 12: Dataflow Прагма
Видео: Vivado HLS видео IP блокийн синтез: 12 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:05
Та удаан хугацааны саатал, суулгагдсан системгүйгээр видеог бодит цаг хугацаанд боловсруулахыг хүсч байсан уу? Үүнийг хийхийн тулд заримдаа FPGAs (Field Programmable Gate Arrays) ашигладаг; Гэсэн хэдий ч VHDL эсвэл Verilog гэх мэт тоног төхөөрөмжийн техникийн хэл дээр видео боловсруулах алгоритм бичих нь хамгийн сайн урам хугардаг. C ++ орчинд програмчлах боломжийг олгодог Xilinx хэрэгсэл болох Vivado HLS -ийг оруулна уу.
Шаардлагатай програм хангамж:
- Vivado HLS
- Вивадо
- (Хэрэв та AXI бүртгэлийг ашигладаг бол) Vivado SDK
(Заавал биш) Xilinx -ийн хийсэн жишээг эндээс татаж авна уу.
Xilinx HLS видео жишээ
Алхам 1: Vivado HLS гэж юу вэ?
Vivado HLS нь c ++ шиг кодыг FPGA дээр хэрэгжүүлж болох тоног төхөөрөмжийн бүтцэд хувиргах хэрэгсэл бөгөөд үүнийг хөгжүүлэх IDE -ийг багтаасан болно. Та HLS -ийн кодыг боловсруулж дууссаны дараа үүсгэсэн IP -г форматаар экспортлох боломжтой. Vivado -тай хамт хэрэглэх.
Хавсаргасан файлуудаа татаж аваад, төслөө хийх гэж буй газрынхаа ойролцоо байрлуулна уу. (хэрэв санамсаргүй нэртэй бол тэдгээрийг "top.cpp", "top.h" гэж нэрлээрэй)
Алхам 2: HLS видео номын сан
HLS Видео номын сан нь энэхүү баримт бичгийн лавлагааны загвар бүхий баримт бичигтэй: XAPP1167 Өөр нэг сайн эх сурвалж бол Xilinx Wiki хуудас юм.
Vivado HLS -ийг эхлүүлэх.
Шинэ төсөл бий болгох.
Өмнөх алхам дээр татаж авсан файлуудаа аваад эх файл болгон нэмнэ үү. (Анхаарна уу: файлуудыг төсөлд хуулж бичдэггүй, харин оронд нь хэвээр нь үлдээдэг)
Дараа нь Browse товчийг ашиглан дээд функцийг сонгоно уу.
Дараагийн хуудсан дээр ашиглаж буй Xilinx хэсгийг сонгоно уу.
Алхам 3: Синтез хийх
Шийдэл => Run C Synthesis => Идэвхтэй шийдэл
~ 227.218 секундын дараа үүнийг хийх ёстой. (Анхаарна уу: таны бодит синтез хийх хугацаа олон хүчин зүйлээс хамаарч өөр өөр байх болно)
Алхам 4: Экспортлох хувилбар ба бусад мэдээлэл
Хувилбарын дугаарууд нь Vivado -той харилцан үйлчлэлцэж, дизайныг IP -ээ шинэчлэх боломжийг олгодог. Хэрэв энэ нь жижиг хувилбар юм бол үүнийг хийж болно, гэхдээ томоохон хувилбарын өөрчлөлтийг гараар шинэ блок дээр нэмж, хуучин блокыг устгах шаардлагатай болно. IP товчлуурыг дарж бүрэн автоматаар хийж болно. Vivado tcl консол дээр "report_ip_status" -ийг ажиллуулж IP -ийн статусыг харах боломжтой.
Шийдэл => Шийдлийн тохиргоо хэсэгт хувилбарын дугаар болон бусад мэдээллийг тохируулна уу.
Эсвэл экспорт хийх явцад эдгээр тохиргоог хийж болно.
Алхам 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 bundle = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUS offset = Hx_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 bundle = CONTROL_BUS offset = 0x1C #pragma HLS dataflow
x = 42;
y = 0xDEADBEEF; }
Vivado -д зөв холбогдсоны дараа та Vivado SDK дээрх кодыг ашиглан утгуудад хандах боломжтой.
#"параметр.h" -ийг оруулна уу
#define xregoff 0x14 #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);
Ингэснээр та x in in 42, yx in 0xdeadbeef -ийг авах болно
Алхам 12: Dataflow Прагма
#Pragma DATAFLOW дотор кодыг хэрэгжүүлэх арга нь ердийн C ++ - ээс өөрчлөгддөг. Кодыг шугаман хэлбэрээр байрлуулсан бөгөөд ингэснээр бүх зааврууд өгөгдлийн өөр өөр хэсэгт үргэлж ажилладаг (Үүнийг үйлдвэрт угсрах шугам шиг төсөөлөөд үз дээ, станц бүр нэг функцийг тасралтгүй хийж, дараагийн станц руу дамжуулдаг).
дүрснээс та удирдамж бүрийг харж болно
Хэвийн хувьсагч мэт харагдаж байсан ч img объектуудыг командуудын хооронд жижиг буфер хэлбэрээр хэрэгжүүлдэг. Дүрсийг функцын оролт болгон ашиглах нь түүнийг "хэрэглэж", цаашид ашиглах боломжгүй болгодог. (Тиймээс давхардсан тушаалуудыг авах шаардлагатай болсон)
Зөвлөмж болгож буй:
Шууд дижитал синтез (DDS) чип бүхий MIDI хяналттай Stepper Motor: 3 алхам
Шууд дижитал синтез (DDS) чип бүхий MIDI удирдлагатай Stepper Motor: Та зүгээр л мини төсөл болгон хувиргах хэрэгтэй гэсэн муу санаатай байсан уу? Би AD9833 шууд дижитал синтез (DDS) модуль ашиглан хөгжим хийх зорилготой Arduino Due -д зориулж хийсэн ноорогоороо тоглож байсан … нэг хэсэгтээ би & q
Зэрэгцээ дараалсан синтез: 17 алхам (зурагтай)
Зэрэгцээ дараалсан синтез: Энэ бол энгийн дараалал үүсгэгч гарын авлага юм. Sequencer бол мөчлөгөөр хэд хэдэн үе шатыг гаргадаг бөгөөд дараа нь осцилляторыг жолооддог төхөөрөмж юм. Алхам бүрийг өөр өөр өнгө аясаар өгч, сонирхолтой дараалал эсвэл аудио эффект үүсгэж болно
Миний анхны синтез: 29 алхам (зурагтай)
Миний анхны синтез: Хүүхдүүдийн синтез намайг синтезаторын орооцолдсон эмх замбараагүй байдалд сууж байхад бий болсон. Миний найз Оливер ирж, нөхцөл байдлыг үнэлээд "Та дэлхийн хамгийн төвөгтэй хүүхдийн тоглоомыг хийж чадсан гэдгээ мэдэж байна" гэж хэлэв. Миний анхны р
Дууны гулзайлтын синтез: 14 алхам (зурагтай)
Дуу гулзайлтын синтез: Би өмнө нь хэд хэдэн дуу гулзайлгах машин бүтээсэн (доорх холбоосыг үзнэ үү). Энэ удаад би reverb болон amp модулийг нэмсэн бөгөөд энэ нь танд тоглох шинэ цоо шинэ дуу чимээг өгөх болно. Нэмж дурдахад, дуу бичлэгийн модулийг
PC видео тоглуулагчийн хувьд хүүхдийн видео алсын удирдлага: 6 алхам
PC видео тоглуулагчийн хувьд хүүхдийн видео алсын удирдлага: Би USB -тэй компьютерт холбогддог алсын удирдлага хийдэг. Том алсын удирдлага нь нялх хүүхдэд хуучин компьютер дээр видео сонгож тоглуулах боломжийг олгодог бөгөөд энэ нь харьцангуй энгийн төсөл юм. Үндсэн бүрэлдэхүүн хэсэг нь USB товчлуур эсвэл утасгүй USB товчлуур юм