Orodha ya maudhui:

Mfumo wa Uboreshaji wa Picha ya Zynq: Hatua 7
Mfumo wa Uboreshaji wa Picha ya Zynq: Hatua 7

Video: Mfumo wa Uboreshaji wa Picha ya Zynq: Hatua 7

Video: Mfumo wa Uboreshaji wa Picha ya Zynq: Hatua 7
Video: Majambazi walipopambana na Polisi baada ya kuiba pesa NMB Bank 2024, Julai
Anonim
Mfumo wa Uboreshaji wa Picha ya Zynq
Mfumo wa Uboreshaji wa Picha ya Zynq
Mfumo wa Uboreshaji wa Picha ya Zynq
Mfumo wa Uboreshaji wa Picha ya Zynq

Kama unavyoweza kutengeneza kutoka kwa kichwa, lengo la mradi huu ni kutengeneza Mfumo wa Uboreshaji wa Picha ukitumia ZYNQ ApSOC. Hasa haswa, tunataka kujenga mfumo ambao unaweza kuondoa ukungu kutoka kwa picha au video. Mfumo huu utachukua hali mbaya data ya kuona kama pembejeo, itasindika kwa kutumia mbinu za kukuza picha na kisha kutoa matokeo.

Mradi ulijengwa na kujaribiwa kwenye Bodi ya Digilent Zybo lakini vifaa vingine vya ZYNQ vinapaswa kufanya kazi pia.

Tutagawanya mradi huu katika sehemu 3:

1) INPUT = Picha ya Kuingiza kupitia Ethernet kutoka Kompyuta / Kamera

2) UTARATIBU = Mchakato Picha

3) OUTPUT = Pato la Picha kupitia kiolesura cha HDMI

Kwa mtindo wa kupinga sana tutaanza na sehemu ya mradi (hii itatupa uwezekano bora wa utatuzi njiani) endelea na pembejeo na kumaliza na sehemu ya usindikaji.

Hatua ya 1: Vifaa

Vifaa
Vifaa

Ili kukamilisha mradi huu utahitaji:

HARDWARE

- Bodi yoyote ya ZYNQ iliyo na HDMI na Ethernet inapaswa kufanya kazi / ninatumia Digilent Zybo

- USB A kwa kebo ndogo ya USB B

- kebo ya HDMI

- kebo ya Ethernet

- Onyesha na pembejeo ya HDMI

SOFTWARE

- Xilinx Vivado

- Xilinx SDK

Hatua ya 2: OUTPUT - Sehemu ya 1 ya Mdhibiti wa VGA

OUTPUT - Sehemu ya 1 ya Mdhibiti wa VGA
OUTPUT - Sehemu ya 1 ya Mdhibiti wa VGA

Tutatoa data yetu ya kuona kwa kutumia bandari ya HDMI iliyopo kwenye bodi. Bandari ya HDMI imeunganishwa na PL (Programmable Logic = FPGA) upande wa ZYNQ na tutahitaji kubuni mtawala katika VHDL kwa hiyo. Ikiwa umewahi kubuni mtawala wa VGA utapata hii sawa. Wakati wa HDMI na VGA ni sawa, kwa kweli unaweza kujenga juu ya mtawala wa VGA ili kupata mtawala wa HDMI.

Kwa uelewa mzuri wa kile kinachotokea kweli tutabuni kwanza mtawala wa VGA

Tunataka kuonyesha kwa azimio la 1920x1080.

Mdhibiti wa VGA anajibika kupeleka data ya pikseli (katika muundo wa RGB) mtawaliwa, pikseli kwa pikseli kwenye onyesho. Nje ya eneo halisi la eneo la maonyesho la 1920x1080 pia kuna maeneo "ya mpaka", ambayo ni: ukumbi wa mbele, ukumbi wa nyuma na kurudi tena. Ukubwa katika saizi za maeneo haya ni ya kawaida na maalum kwa kila azimio. Maeneo haya hayaonekani kwenye skrini lakini ni ya lazima na rangi ya saizi katika eneo hili lazima iwe nyeusi. Swali halali litakuwa ni kwanini maeneo haya ya ziada yanahitajika. Swali hili linakataa kusudi la kufundisha lakini ikiwa unataka kujua nitakuhimiza ufanye utafiti zaidi mkondoni.

Hii ni video nzuri inayoelezea kiolesura cha VGA

Kwa upande wetu tunataka kuonyesha kwenye azimio la 1920 * 1080, na hizi ni nyakati:

Eneo la Ulalo la Usawa = saizi 1920

Ukumbi wa Fron Usawa = saizi 88

Ukumbi wa Nyuma ya Usawa = saizi 148

Retrace Horizontal = saizi 44

Eneo la Uonyesho wima = saizi 1080

Ukumbi wa Mbele wa Wima = saizi 4

Ukumbi wa Nyuma wima = saizi 36

Wima Retrace = saizi 5

(Hapa unaweza kupata nyakati za maazimio mengine

Kwa hivyo azimio letu halisi litakuwa 2200 x 1125. Tunataka fps 60 (fremu kwa sekunde) kwa hivyo saa yetu ya pikseli itakuwa 60 * 2200 * 1125 = 148.5 MHz. Kwenye Bodi ya Zybo saa 125 Mhz hutolewa. Tutatumia IP ya MMCM kutoa Saa ya Pixel 148.5 MHz tunahitaji.

Hatua ya 3: OUTPUT - Sehemu ya Mdhibiti wa VGA

OUTPUT - Sehemu ya Mdhibiti wa VGA
OUTPUT - Sehemu ya Mdhibiti wa VGA

Na usuli wa kinadharia kutoka kwa hatua ya awali unapaswa kuwa na uwezo wa kubuni unamiliki mtawala wa VGA. Nitakupa mradi wa Vivado ambao hufanya hivyo lakini ninakushauri angalau ujaribu kuifanya wewe mwenyewe kwanza.

Bandari nyingi za VGA hazikupi bits 8 kwa kila kituo cha rangi kwa pikseli (angalia picha hapo juu) kwa hivyo utahitaji kubadilisha muundo na idadi ya pini kwa kila rangi ambayo Bodi hutoa (hii sio shida kwa HDMI ingawa).

Ubuni utachora skrini nzima bluu, isipokuwa pikseli ya juu kushoto ambayo itakuwa nyekundu. Ikumbukwe kwamba mradi huu hutumia vizuizi kwa Bodi ya ZYBO. Kwa hivyo ikiwa unataka kuendesha mradi huu kwenye Bodi nyingine unapaswa kusasisha faili ya vizuizi na kubadilisha idadi ya pini kwa kila rangi.

Angalia kielelezo nr. 2. Kumbuka kwamba wakati Mdhibiti wetu wa VGA anatoa bits 5/6 kwa kila rangi, bits hizo hubadilishwa kuwa ishara moja ya analog kwa kila kituo cha rangi (Nyekundu, Kijani na Bluu) kabla ya kupitia kebo.

Hatua ya 4: OUTPUT - Kidhibiti cha HDMI Sehemu ya 1

OUTPUT - Mdhibiti wa HDMI Sehemu ya 1
OUTPUT - Mdhibiti wa HDMI Sehemu ya 1

Sasa kwa kuwa tunajua jinsi mtawala wa VGA anavyofanya kazi na tuna muundo wa kufanya kazi tunaweza kuendelea na mtawala wa HDMI. Kidhibiti cha HDMI kwa kweli kitatumia nambari yote tuliyoibuni katika mtawala wa VGA. HDMI na VGA hutumia nyakati sawa na ishara sawa. Tofauti inaonekana kwenye pini za ouput.

Wakati VGA inatumia waya mmoja kwa kila rangi na inapitisha ishara ya analog kuikabili, HDMI inasambaza data hiyo kwa njia ya dijiti mara 1 kwa kila rangi na hutumia ishara tofauti. Ishara tofauti inamaanisha kuwa kwa kila kitu HDMI ina pini 2 na moja kinyume cha nyingine. Kwa hivyo ikiwa tunataka kusambaza ishara '1' tutasambaza '1' kwenye waya na '1' imekataliwa kwenye waya mwingine. Hii inahakikisha uadilifu wa ishara na unaweza kusoma zaidi juu yake hapa https://goo.gl/6CPCzB. Tunayo moja ya njia hizi kwa kila rangi, NYEKUNDU, KIJANI na BLUE na moja ya saa. Kwa sababu ya maalum ya kutofautisha kuashiria ishara tunazotuma kupitia hdmi lazima iwe na usawa wa DC ambayo inamaanisha kuwa idadi ya 1 na 0 lazima iwe sawa sawa katika dirisha fulani la wakati. Ili kufanikisha hili tutatumia usimbuaji 8b / 10b. Unaweza kujifunza mengi juu ya jinsi ishara tofauti na usimbuaji wa 8b / 10b hufanya kazi kutoka kwa ufafanuzi wa DVI hapa https://goo.gl/hhh8Ge (DVI na HDMI hutumia ishara sawa za video).

Hatua ya 5: OUTPUT - Mdhibiti wa HDMI Sehemu ya 2

OUTPUT - Mdhibiti wa HDMI Sehemu ya 2
OUTPUT - Mdhibiti wa HDMI Sehemu ya 2

Nadharia ya kutosha, lets kupata mradi wetu. Wakati katika Kidhibiti cha VGA tuliondoka na saa ya 148.5 MHz, hapa itabidi tupe mara 10 mara hiyo kwa sababu tunataka kusambaza biti 8 kwa kila rangi na kutumia usimbuaji wa 8b / 10b ambao unatafsiriwa kwa bits 10 kwa kila pikseli na 10 * 148.5MHz = 1485MHz. Huo ni mzunguko mkubwa ambao hauwezi kupatikana kwenye Bodi ya Zybo. Kwa bahati nzuri tulipata ujanja mdogo juu ya mikono yetu. Tunaweza kudhibiti 5 * 148.5MHz = 742.5MHz na tutatumia OSERDES (serializer) IP kusambaza data kwenye ukingo wa kupanda na kushuka kwa saa ya 742.5Mhz, kwa hivyo tutapata data iliyoambukizwa kwa 1485MHz. Vivado itatupa maonyo ya wakati na kila wakati unaweza kwenda kwa azimio la chini na saa ndogo, lakini kwa kuwa inafanya kazi, hatujali kwa sasa (maonyo yanahusiana na ukweli kwamba vidhibiti vya saa havifanyi rasmi masafa ya msaada juu kuliko 464MHz).

Kwa hivyo tunachohitaji kufanya ni kusimba data kutoka kwa pato la Mdhibiti wa VGA katika fomati ya 8b / 10b na kisha kuijenga kama ilivyoonyeshwa hapo juu. Tutahitaji pia kuongeza MMCM nyingine kwenye mradi wa kutengeneza saa ya 742.5MHz kwa ujanibishaji.

Niliambatanisha kurusha faili za vhdl kwa kisimbuzi na serializer. Lazima kwanza usimbishe njia za RGB na kisha uzifanye serial.

Mfano wa idhaa nyekundu:

TMDS_encoder_RED: TMDS_encoder

ramani ya bandari (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);

Serialiser_RED: Serialiser10_1

ramani ya bandari (clk148, clk742, encoded_red_10bits, reset, red_serial_1bit);

Uingizaji wa "c" kwenye TMDS_encoder ni "00" ya nyekundu na kijani na "vsync & hsync" ya bluu (hii ni sehemu ya vipimo vya DVI

Hatua ya 6: Kuonyesha Picha Kutoka kwa RAM

Kuonyesha Picha Kutoka kwa RAM
Kuonyesha Picha Kutoka kwa RAM

Kusudi la mtawala wa HDMI ni kuonyesha picha zilizosindika. Sasa, pamoja na mtawala kutekelezwa na tayari kwenda tunapaswa kufikiria juu ya kulisha mtawala huyu na data. Kwa kuzingatia kuwa mchakato mwingi wa kukuza picha utafanyika katika PS (Processing System = Processor ARM) na picha zitakazopatikana zitakaa kwenye DDR RAM. Kwa hivyo tunahitaji njia ya kupata data kutoka kwa RAM kwenda kwa kidhibiti cha HDMI.

Ili kukamilisha hii utahitaji IPs 3:

1) VDMA (Ufikiaji wa Kumbukumbu ya Moja kwa Moja ya Video)

2) VTC (Mdhibiti wa muda wa Video)

3) Tiririka kwa Video Out (tutaiita S2VO kuanzia sasa)

S2VO itatoa ishara ya RGB 24BIT kwa pato na ishara zinazohitajika za HSYNC na VSYNC. Kwa hivyo tunaweza kuondoka sehemu hiyo ya mtawala wa HDMI nje.

Unapaswa kuongeza IP hizi kwenye muundo wako, uzisanidi na ufanye unganisho sahihi.

Mwishowe unapaswa kupata kitu kinachofanana na skimu hapo juu.

Hatua ya 7: PATO - SDK END

Pato - SDK END
Pato - SDK END

Pamoja na vifaa vyote vilivyowekwa na tayari kwenda lazima sasa tujenge programu kwenye PS. Tutasafirisha vifaa na mtiririko mdogo na kuzindua SDK.

1) Faili -> Hamisha -> Hamisha Vifaa -> Angalia Jumuisha Bitstream na Bonyeza sawa

2) Faili -> Anzisha SDK

Katika SDK tengeneza mradi mpya wa programu.

3) Faili -> Mpya -> Mradi wa Maombi

4) Chagua jina la mradi wako na ubonyeze Ifuatayo

5) Chagua kiolezo cha "Hello World" na bonyeza Finish

Programu katika SDK itahitaji kupanga VDMA. Kuna kazi kadhaa za kawaida kutumika ili kufanikisha hii (nitaingia kwenye maelezo wakati nina wakati).

Ili kujaribu muundo wetu tutatumia SDK Rejesha (Zana za Xilinx -> Dampo / Rejesha) kuweka picha kwenye kumbukumbu ya DDR RAM na kuionyesha kwa kutumia Kidhibiti chetu cha HDMI. Unaweza kupakia picha mahali popote unayotaka (isipokuwa sehemu ndogo zilizozuiliwa mwanzoni mwa kumbukumbu). Kwa mfano wetu tulichagua anwani 16777216 na saizi ya faili 8294400 = 1920 * 1080 * 4 (vituo 4 = RGB + alpha).

Inafanya kazi !

Itaendelea

Ilipendekeza: