Агуулгын хүснэгт:

Zynq дүрс сайжруулах систем: 7 алхам
Zynq дүрс сайжруулах систем: 7 алхам

Видео: Zynq дүрс сайжруулах систем: 7 алхам

Видео: Zynq дүрс сайжруулах систем: 7 алхам
Видео: Начало работы с Zynq 2024, Арванхоёрдугаар сар
Anonim
Zynq дүрс сайжруулах систем
Zynq дүрс сайжруулах систем
Zynq дүрс сайжруулах систем
Zynq дүрс сайжруулах систем

Та гарчигнаас нь олж мэдсэн шиг энэ төслийн зорилго нь 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 -р хэсэг

OUTPUT - VGA хянагч 1 -р хэсэг
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 -р хэсэг

OUTPUT - VGA хянагч 2 -р хэсэг
OUTPUT - VGA хянагч 2 -р хэсэг

Өмнөх алхамаас авсан онолын үндэслэлээр та өөрийн VGA хянагчийг зохион бүтээх боломжтой байх ёстой. Би танд Vivado төслийг өгөх болно, гэхдээ үүнийг ядаж өөрөө хийхийг хичээгээрэй.

Ихэнх VGA портууд танд нэг пиксел тутамд нэг өнгөт суваг тутамд 8 бит өгдөггүй (дээрх зургийг үзнэ үү), тиймээс та дизайныг Удирдах зөвлөлийн өгсөн өнгөний тоогоор тохируулах хэрэгтэй болно (энэ нь HDMI -ийн хувьд асуудал биш юм).

Загвар нь улаан дэлгэцтэй зүүн дээд пикселийг эс тооцвол дэлгэцийг бүхэлд нь цэнхэр өнгөөр будна. Энэ төсөл нь ZYBO зөвлөлийн хязгаарлалтыг ашигладаг болохыг тэмдэглэх нь зүйтэй. Тиймээс, хэрэв та энэ төслийг өөр самбар дээр ажиллуулахыг хүсч байвал хязгаарлалтын файлыг шинэчилж, нэг өнгөний зүү тоог тохируулах хэрэгтэй.

N -р зургийг үзээрэй. 2. Манай VGA хянагч нэг өнгөт 5/6 бит гаргадаг бол кабелиар дамжихаас өмнө тэдгээр битүүдийг өнгөт суваг (Улаан, Ногоон, Цэнхэр) тус бүр нэг аналог дохио болгон хувиргадаг гэдгийг санаарай.

Алхам 4: OUTPUT - HDMI хянагч 1 -р хэсэг

OUTPUT - HDMI хянагч 1 -р хэсэг
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 -р хэсэг

OUTPUT - HDMI хянагч 2 -р хэсэг
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 -аас зураг харуулах

RAM -аас зураг харуулах
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

OUTPUT - SDK Төгсгөл
OUTPUT - SDK Төгсгөл

Бүх тоног төхөөрөмжийг тохируулж, ашиглахад бэлэн бол бид одоо програм хангамжийг 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 + альфа) сонгосон.

Энэ нь ажилладаг!

Үргэлжлэл бий

Зөвлөмж болгож буй: