Агуулгын хүснэгт:
- Алхам 1: Материал
- Алхам 2: OUTPUT - VGA хянагч 1 -р хэсэг
- Алхам 3: OUTPUT - VGA хянагч 2 -р хэсэг
- Алхам 4: OUTPUT - HDMI хянагч 1 -р хэсэг
- Алхам 5: OUTPUT - HDMI хянагч 2 -р хэсэг
- Алхам 6: RAM -аас зураг харуулах
- Алхам 7: OUTPUT - SDK END
Видео: Zynq дүрс сайжруулах систем: 7 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Та гарчигнаас нь олж мэдсэн шиг энэ төслийн зорилго нь ZYNQ ApSOC ашиглан Зураг сайжруулах систем хийх явдал юм. Бүр тодруулбал, зураг, видео бичлэгээс манан арилгадаг системийг бий болгохыг хүсч байна. Энэ систем нь муу нөхцөлд харааны өгөгдлийг оролт болгон авч, зургийг сайжруулах техник ашиглан боловсруулж, үр дүнг гаргана.
Төслийг Digilent Zybo Board дээр бүтээсэн бөгөөд туршсан боловч бусад ZYNQ төхөөрөмжүүд бас ажиллах ёстой.
Бид энэ төслийг 3 хэсэгт хуваах болно.
1) INPUT = Компьютер/камераас Ethernet -ээр дамжуулан зураг оруулах
2) PROCESS = Зургийг боловсруулах
3) OUTPUT = Зургийг HDMI интерфэйсээр гаргана
Маш ойлгомжгүй байдлаар бид төслийн гаралтын хэсгээс эхлэх болно (энэ нь бидэнд зам дээр дибаг хийх боломжийг илүү сайн өгөх болно) оролтоо үргэлжлүүлж, боловсруулалтын хэсгийг дуусгах болно.
Алхам 1: Материал
Энэ төслийг дуусгахын тулд танд дараахь зүйлс хэрэгтэй болно.
ТОНОГ ТӨХӨӨРӨМЖ
- HDMI болон Ethernet -тэй ямар ч ZYNQ самбар ажиллах ёстой / Би Digilent Zybo ашиглаж байна
- USB A - micro B USB кабель
- HDMI кабель
- Ethernet кабель
- HDMI оролттой дэлгэц
ПРОГРАММ
- Xilinx Vivado
- Xilinx SDK
Алхам 2: OUTPUT - VGA хянагч 1 -р хэсэг
Бид самбар дээрх HDMI портыг ашиглан харааны өгөгдлөө гаргах болно. HDMI порт нь ZYNQ -ийн PL (Programmable Logic = FPGA) тал руу холбогдсон бөгөөд үүнд зориулж VHDL дээр хянагч зохион бүтээх шаардлагатай болно. Хэрэв та хэзээ нэгэн цагт VGA хянагч зохион бүтээсэн бол үүнтэй төстэй зүйлийг олж харах болно. HDMI болон VGA -ийн цаг нь үнэндээ ижил байдаг, гэхдээ та одоо байгаа VGA хянагч дээр тулгуурлан HDMI хянагч авах боломжтой.
Юу болж байгааг илүү сайн ойлгохын тулд бид эхлээд VGA хянагч зохион бүтээх болно
Бид 1920x1080 нарийвчлалтайгаар харуулахыг хүсч байна.
VGA хянагч нь пикселийн өгөгдлийг (RGB форматаар) дараалан пикселээр пикселээр дамжуулах үүрэгтэй. Бодит дэлгэцийн талбайн хэмжээ 1920x1080 -аас гадна "хилийн" хэсэг байдаг, тухайлбал: урд үүдний танхим, арын үүдний танхим, дахин зурах. Эдгээр талбайн пикселийн хэмжээ нь стандарт бөгөөд нарийвчлал бүрт зориулагдсан байдаг. Эдгээр хэсгүүд нь дэлгэц дээр үнэндээ харагдахгүй боловч заавал байх ёстой бөгөөд энэ хэсгийн пикселийн өнгө нь хар өнгөтэй байх ёстой. Эдгээр нэмэлт хэсгүүд яагаад хэрэгтэй байгаа вэ гэсэн асуулт гарч магадгүй юм. Энэ асуулт нь энэхүү зааварчилгааны зорилгыг зөрчиж байгаа боловч хэрэв та сонирхож байгаа бол онлайнаар нэмэлт судалгаа хийхийг зөвлөж байна.
Энэ бол VGA интерфэйсийг тайлбарласан сайн видео юм
Манай тохиолдолд бид 1920*1080 нарийвчлалтайгаар харуулахыг хүсч байгаа бөгөөд эдгээр нь цаг хугацаа юм.
Хэвтээ дэлгэцийн талбай = 1920 пиксел
Хэвтээ фронтын үүдний танхим = 88 пиксел
Хэвтээ арын үүдний танхим = 148 пиксел
Хэвтээ дахин харах = 44 пиксел
Босоо дэлгэцийн талбай = 1080 пиксел
Босоо урд үүдний танхим = 4 пиксел
Босоо арын үүдний танхим = 36 пиксел
Босоо дахин харах = 5 пиксел
(Эндээс та бусад нарийвчлалыг шийдвэрлэх цагийг олж болно
Бидний бодит нарийвчлал нь 2200 x 1125 байх болно. Бид 60 fps (секундэд фрэйм) хүсдэг тул бидний пикселийн цаг 60*2200*1125 = 148.5 МГц байх болно. Zybo самбар дээр 125 МГц цаг өгдөг. Бид MMCM IP ашиглан бидэнд хэрэгтэй 148.5 МГц пикселийн цагийг бий болгоно.
Алхам 3: OUTPUT - VGA хянагч 2 -р хэсэг
Өмнөх алхамаас авсан онолын үндэслэлээр та өөрийн VGA хянагчийг зохион бүтээх боломжтой байх ёстой. Би танд Vivado төслийг өгөх болно, гэхдээ үүнийг ядаж өөрөө хийхийг хичээгээрэй.
Ихэнх VGA портууд танд нэг пиксел тутамд нэг өнгөт суваг тутамд 8 бит өгдөггүй (дээрх зургийг үзнэ үү), тиймээс та дизайныг Удирдах зөвлөлийн өгсөн өнгөний тоогоор тохируулах хэрэгтэй болно (энэ нь HDMI -ийн хувьд асуудал биш юм).
Загвар нь улаан дэлгэцтэй зүүн дээд пикселийг эс тооцвол дэлгэцийг бүхэлд нь цэнхэр өнгөөр будна. Энэ төсөл нь ZYBO зөвлөлийн хязгаарлалтыг ашигладаг болохыг тэмдэглэх нь зүйтэй. Тиймээс, хэрэв та энэ төслийг өөр самбар дээр ажиллуулахыг хүсч байвал хязгаарлалтын файлыг шинэчилж, нэг өнгөний зүү тоог тохируулах хэрэгтэй.
N -р зургийг үзээрэй. 2. Манай VGA хянагч нэг өнгөт 5/6 бит гаргадаг бол кабелиар дамжихаас өмнө тэдгээр битүүдийг өнгөт суваг (Улаан, Ногоон, Цэнхэр) тус бүр нэг аналог дохио болгон хувиргадаг гэдгийг санаарай.
Алхам 4: OUTPUT - HDMI хянагч 1 -р хэсэг
Одоо бид VGA хянагч хэрхэн ажилладагийг мэддэг болсон бөгөөд HDMI дизайнертай үргэлжлүүлэн ажиллах боломжтой дизайнтай болсон. HDMI хянагч нь VGA хянагч дээр бидний боловсруулсан бүх кодыг ашиглах болно. HDMI болон VGA нь ижил цаг хугацаа, ижил дохиог ашигладаг. Энэ ялгаа нь тээглүүр дээр харагдаж байна.
VGA нь өнгө тус бүрт нэг утас хэрэглэж, аналог дохиог дамжуулдаг бол HDMI нь өнгө тус бүрт 1 битээр тоон хэлбэрээр дамжуулж, дифференциал дохиог ашигладаг. Дифференциал дохио гэдэг нь бит бүрийн хувьд HDMI нь нөгөөгийнхөө эсрэг 2 зүүтэй байдаг гэсэн үг юм. Тиймээс хэрэв бид '1' дохиог дамжуулахыг хүсч байвал '1' -ийг утсан дээр, нөгөө утсан дээр '1' -ийг үгүйсгэх болно. Энэ нь дохионы бүрэн бүтэн байдлыг баталгаажуулдаг бөгөөд та энэ талаар илүү ихийг эндээс унших боломжтой https://goo.gl/6CPCzB. Өнгө тус бүрт нэг улаан суваг, УЛААН, НОГООН, ХӨХ, нэг цаг байдаг. Дифференциал дохиоллын онцлог шинж чанартай тул бид hdmi -ээр дамжуулж буй дохио нь DC тэнцвэртэй байх ёстой бөгөөд энэ нь 1 ба 0 -ийн тоо тодорхой хугацаанд ойролцоогоор тэнцүү байх ёстой гэсэн үг юм. Үүнийг хийхийн тулд бид 8b/10b кодчиллыг ашиглах болно. Та дифференциал дохиолол ба 8b/10b кодчилол хэрхэн ажилладаг талаар DVI тодорхойлолтоос эндээс https://goo.gl/hhh8Ge (DVI ба HDMI ижил видео дохиог ашигладаг) олж авах боломжтой.
Алхам 5: OUTPUT - HDMI хянагч 2 -р хэсэг
Хангалттай онол, манай төсөл рүү орцгооё. VGA хянагч дээр бид 148.5 МГц -ийн цагтай болсон бол энд бид давтамжийг 10 дахин нэмэгдүүлэх шаардлагатай болно, учир нь бид өнгө тус бүрт 8 бит дамжуулахыг хүсч байгаа бөгөөд 8b/10b кодчилол ашиглан пиксел тутамд 10 бит, 10 бит болгон хувиргадаг. *148.5 МГц = 1485 МГц. Энэ бол Zybo самбар дээр олж авах боломжгүй асар том давтамж юм. Аз болоход бид хэд хэдэн заль мэхийг олж авлаа. Бид 5*148.5MHz = 742.5MHz -ийг удирдах боломжтой бөгөөд OSERDES (serializer) IP ашиглан 742.5Mhz цагны өгсөх ба буурах ирмэг дээр өгөгдөл дамжуулах тул 1485MHz давтамжтай өгөгдлийг авах болно. Vivado нь бидэнд цаг хугацааны сэрэмжлүүлгийг өгөх бөгөөд та үргэлж жижиг цагны хувьд бага нарийвчлалтай байж болно, гэхдээ энэ нь ажилладаг тул одоогоор бид үүнд санаа зовохгүй байна (цагны буфер нь албан ёсоор байдаггүйтэй холбоотой юм. 464MHz -ээс дээш давтамжийг дэмждэг).
Тиймээс бидний хийх ёстой зүйл бол VGA Controller гаралтаас авсан өгөгдлийг 8b/10b форматаар кодчилж дараа нь дээр дурдсанчлан цуврал болгох явдал юм. Цуваа болгохын тулд 742.5MHz цаг гаргахын тулд бид төсөлд өөр MMCM нэмж оруулах шаардлагатай болно.
Би кодлогч болон сериалжуулагчийн vhdl файлуудыг доор хавсаргав. Та эхлээд RGB сувгуудыг кодчилж, дараа нь тэдгээрийг цуврал болгох ёстой.
Улаан сувгийн жишээ:
TMDS_encoder_RED: TMDS_encoder
порт газрын зураг (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);
Serialiser_RED: Serialiser10_1
порт газрын зураг (clk148, clk742, encoded_red_10bits, дахин тохируулах, red_serial_1bit);
TMDS_encoder -ийн "c" оролт нь улаан, ногоон "00", цэнхэр өнгө нь "vsync & hsync" (энэ нь DVI техникийн тодорхойлолтын нэг хэсэг юм
Алхам 6: RAM -аас зураг харуулах
HDMI хянагчийн зорилго нь боловсруулсан зургийг харуулах явдал юм. Одоо хянагчийг ажиллуулж, ашиглахад бэлэн болсны дараа энэ хянагчийг өгөгдлөөр хангах талаар бодох хэрэгтэй. Зургийг сайжруулах маш олон процесс PS (Processing System = ARM Processor) дээр хийгдэх бөгөөд үүний үр дүнд гарсан зургууд DDR RAM -д хадгалагдах болно. Тиймээс бидэнд RAM -аас HDMI хянагч руу өгөгдөл дамжуулах арга хэрэгтэй байна.
Үүнийг хийхийн тулд танд 3 IP хэрэгтэй болно.
1) VDMA (Видео шууд санах ойд нэвтрэх)
2) VTC (Видео цаг хянагч)
3) Video Out руу шууд дамжуулах (бид үүнийг одооноос S2VO гэж нэрлэх болно)
S2VO нь гаралт болон шаардлагатай HSYNC ба VSYNC дохиог RGB 24BIT дохиогоор хангах болно. Тиймээс бид HDMI хянагчийн энэ хэсгийг орхиж болно.
Та эдгээр IP хаягийг дизайнд нэмж, тохируулж, зохих холболт хийх ёстой.
Эцэст нь та дээрх схемтэй төстэй зүйлийг авах хэрэгтэй.
Алхам 7: OUTPUT - SDK END
Бүх тоног төхөөрөмжийг тохируулж, ашиглахад бэлэн бол бид одоо програм хангамжийг PS дээр бүтээх ёстой. Бид техник хангамж болон битийн урсгалыг экспортолж SDK -ийг ажиллуулах болно.
1) Файл -> Экспорт -> Тоног төхөөрөмжийг экспортлох -> Bitstream -ийг оруулахыг шалгаад OK дарна уу
2) Файл -> SDK -ийг ажиллуулна уу
SDK дээр шинэ програмын төсөл үүсгээрэй.
3) Файл -> Шинэ -> Програмын төсөл
4) Төслийнхөө нэрийг сонгоод Next дарна уу
5) "Hello World" загварыг сонгоод Finish товчийг дарна уу
SDK дахь програм нь VDMA програмчлах шаардлагатай болно. Үүнийг хийхийн тулд зарим стандарт функцуудыг ашигладаг (би зав гарвал дэлгэрэнгүй мэдээлэл өгөх болно).
Загвараа туршихын тулд бид SDK Restore (Xilinx Tools -> Dump/Restore) функцийг ашиглан DDR RAM санах ойд дүрс оруулж, HDMI хянагчаа ашиглан харуулна. Та зургийг хүссэн газраа ачаалж болно (санах ойн эхэнд хязгаарлагдмал жижиг хэсгүүдийг эс тооцвол). Бидний жишээнд бид 16777216 хаяг болон файлын хэмжээг 8294400 = 1920*1080*4 (4 суваг = RGB + альфа) сонгосон.
Энэ нь ажилладаг!
Үргэлжлэл бий
Зөвлөмж болгож буй:
Lego дүрс USB диск: 4 алхам (зурагтай)
Lego Figure USB Drive: Энэхүү гарын авлагад би өөрийн гараар Lego дүрстэй USB флаш диск хэрхэн хийхийг танд үзүүлэх болно. Хүмүүс USB флаш дискийг лего дүрст оруулахыг би өмнө нь харсан (жишээ нь энд: http://www.etsy.com/shop/123smile), гэхдээ доод хэсгийг нь хэн ч хэзээ ч ашиглаж байгаагүй
Хэрхэн: Rpi-дүрс, зураг бүхий Raspberry PI 4 толгойгүй (VNC) суулгах: 7 алхам (зурагтай)
Хэрхэн: Бөөрөлзгөнө PI 4 толгойгүй (VNC) -ийг Rpi-дүрслэгч болон зураг ашиглан суулгах: Би энэ Rapsberry PI-ийг блог дээрээ олон хөгжилтэй төслүүдэд ашиглахаар төлөвлөж байна. Үүнийг чөлөөтэй үзээрэй. Би Raspberry PI -ийг дахин ашиглахыг хүсч байсан боловч шинэ байрандаа гар эсвэл хулгана байгаагүй. Би бөөрөлзгөнө суулгаснаас хойш багагүй хугацаа өнгөрч байна
Автомашины систем үйлдвэрлэх систем: 8 алхам
Автомашины системд суурилсан системүүд: Хөдөө аж ахуйн салбарт маш их ашиг тустай байдаг
SASSIE: Эвгүй чимээгүй байдлын шийдэл ба харилцан үйлчлэлийг сайжруулах систем: 5 алхам
SASSIE: Эвгүй чимээгүй байдлын шийдэл ба харилцан үйлчлэлийг сайжруулах систем: SASSIE бол бидний амьдралын нэг мөчид эвгүй чимээгүй байх үед "Би дараа нь ярих уу?" Гэсэн асуултын хариулт юм. SASSIE нь эвгүй чимээгүй байдлыг танихад зориулагдсан тул та санаа зовох хэрэггүй болно
Өнгө ялгах систем: Arduino дээр суурилсан хоёр бүстэй систем: 8 алхам
Өнгө ялгах систем: Arduino дээр суурилсан хоёр бүстэй систем: Аж үйлдвэрийн салбарт бүтээгдэхүүн, эд зүйлсийн тээвэрлэлт, сав баглаа боодол нь туузан дамжуулагч ашиглан хийгдсэн шугамыг ашиглан хийгддэг. Эдгээр бүс нь тухайн зүйлийг нэг цэгээс нөгөө цэг рүү тодорхой хурдаар шилжүүлэхэд тусалдаг. Зарим боловсруулалт эсвэл таних даалгавар нь