Satura rādītājs:
- 1. solis: materiāli
- 2. darbība: Izeja - VGA kontrolieris 1. daļa
- 3. darbība: Izeja - VGA kontrolieris, 2. daļa
- 4. solis: Izeja - HDMI kontrolieris 1. daļa
- 5. darbība: Izeja - HDMI kontrolieris, 2. daļa
- 6. darbība: attēlu parādīšana no RAM
- 7. darbība: IZEJA - SDK END
Video: Zynq attēlu uzlabošanas sistēma: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Kā jūs droši vien varētu saprast no nosaukuma, šī projekta mērķis ir izveidot attēlu uzlabošanas sistēmu, izmantojot ZYNQ ApSOC. Precīzāk, mēs vēlamies izveidot sistēmu, kas var iztīrīt miglu no attēliem vai video. Šī sistēma sliktos apstākļos izmantos vizuālos datus kā ievadi, apstrādās tos, izmantojot attēla uzlabošanas paņēmienus, un pēc tam izvadīs rezultātu.
Projekts tika veidots un pārbaudīts Digilent Zybo Board, bet arī citām ZYNQ ierīcēm vajadzētu darboties.
Mēs sadalīsim šo projektu 3 daļās:
1) INPUT = Ievadiet attēlu, izmantojot Ethernet no datora/kameras
2) PROCESS = Apstrādājiet attēlu
3) OUTPUT = izvadiet attēlu, izmantojot HDMI saskarni
Ļoti pretintuitīvā veidā mēs sāksim ar projekta izvades daļu (tas mums dos labākas atkļūdošanas iespējas), turpinām ievadi un beidzam ar apstrādes daļu.
1. solis: materiāli
Lai pabeigtu šo projektu, jums būs nepieciešams:
Aparatūra
- jebkurai ZYNQ platei ar HDMI un Ethernet vajadzētu darboties / es izmantoju Digilent Zybo
- USB A līdz mikro B USB kabelis
- HDMI kabelis
- Ethernet kabelis
- Displejs ar HDMI ieeju
PROGRAMMATŪRA
- Xilinx Vivado
- Xilinx SDK
2. darbība: Izeja - VGA kontrolieris 1. daļa
Mēs izdosim savus vizuālos datus, izmantojot uz tāfeles esošo HDMI portu. HDMI ports ir pievienots ZYNQ PL (programmējamā loģika = FPGA) pusei, un mums tam būs jāizstrādā VHDL kontrolieris. Ja esat kādreiz izstrādājis VGA kontrolieri, jūs atradīsit šo ļoti līdzīgu. HDMI un VGA laiki faktiski ir vienādi, patiesībā jūs varat izmantot esošu VGA kontrolieri, lai iegūtu HDMI kontrolieri.
Lai labāk izprastu, kas patiesībā notiek, vispirms izstrādāsim VGA kontrolieri
Mēs vēlamies parādīt ar izšķirtspēju 1920x1080.
VGA kontrolleris ir atbildīgs par pikseļu datu (RGB formātā) pārraidi ekrānā, pikseļu pa pikseļiem. Ārpus faktiskās displeja zonas 1920x1080 ir arī dažas "pierobežas" zonas, proti: priekšējā lieveņa, aizmugurējā veranda un retrace. Šo apgabalu izmēri pikseļos ir standarta un raksturīgi katrai izšķirtspējai. Šie laukumi ekrānā NAV redzami, taču tie ir obligāti, un pikseļu krāsai šajā apgabalā jābūt melnai. Pamatots jautājums būtu, kāpēc šīs papildu jomas ir vajadzīgas. Šis jautājums neatbilst šīs pamācības mērķim, bet, ja jūs interesē, es iesaku jums veikt turpmākus pētījumus tiešsaistē.
Šis ir labs video, kas izskaidro VGA saskarni
Mūsu gadījumā mēs vēlamies parādīt ar izšķirtspēju 1920*1080, un šie ir laiki:
Horizontālais displeja apgabals = 1920 pikseļi
Horizontālā fasādes lievenis = 88 pikseļi
Horizontālā aizmugurējā veranda = 148 pikseļi
Horizontālā retrace = 44 pikseļi
Vertikālais displeja apgabals = 1080 pikseļi
Vertikālā priekšējā lieveņa = 4 pikseļi
Vertikālā aizmugurējā veranda = 36 pikseļi
Vertikālā retrace = 5 pikseļi
(Šeit jūs varat atrast citu rezolūciju laiku
Tātad mūsu faktiskā izšķirtspēja būs 2200 x 1125. Mēs vēlamies 60 kadrus sekundē (kadri sekundē), tāpēc mūsu pikseļu pulkstenis būs 60*2200*1125 = 148,5 MHz. Zybo panelī ir pieejams 125 Mhz pulkstenis. Mēs izmantosim MMCM IP, lai ģenerētu nepieciešamo 148,5 MHz pikseļu pulksteni.
3. darbība: Izeja - VGA kontrolieris, 2. daļa
Ņemot vērā iepriekšējā posma teorētisko pieredzi, jums vajadzētu būt iespējai izveidot savu VGA kontrolieri. Es jums sniegšu Vivado projektu, kas to dara, bet es iesaku jums vismaz vispirms mēģināt to izdarīt pats.
Lielākā daļa VGA portu nesniedz jums 8 bitus vienā krāsu kanālā uz vienu pikseļu (skatiet attēlu iepriekš), tāpēc jums būs jāpielāgo dizains atbilstoši tapu skaitam vienā krāsā, ko nodrošina plāksne (tomēr tā nav problēma HDMI).
Dizains nokrāsos visu ekrānu zilā krāsā, izņemot augšējo kreiso pikseļu, kas būs sarkans. Jāatzīmē, ka šajā projektā tiek izmantoti ZYBO valdes ierobežojumi. Tātad, ja vēlaties palaist šo projektu citā padomē, jums jāatjaunina ierobežojumu fails un jāpielāgo piespraužu skaits katrai krāsai.
Apskatiet attēlu nr. 2. Atcerieties, ka, lai gan mūsu VGA kontrolleris izvada 5/6 bitus vienā krāsā, šie biti tiek pārveidoti par vienu analogo signālu katram krāsu kanālam (sarkans, zaļš un zils) pirms kabeļa iziešanas.
4. solis: Izeja - HDMI kontrolieris 1. daļa
Tagad, kad mēs zinām, kā darbojas VGA kontrolieris un mums ir darba dizains, mēs varam turpināt ar HDMI kontrolieri. HDMI kontrolieris faktiski izmantos visu kodu, ko izstrādājām VGA kontrollerī. HDMI un VGA izmanto tos pašus laikus un tos pašus signālus. Atšķirība parādās uz izejas tapām.
Kamēr VGA katrai krāsai izmanto vienu vadu un pārraida tai analogo signālu, HDMI pārraida datus digitāli 1 bitu katrai krāsai vienlaikus un izmanto diferenciālu signalizāciju. Diferenciālā signalizācija nozīmē, ka katram bitam HDMI ir 2 tapas ar vienu pretēji otrai. Tātad, ja mēs gribētu pārraidīt signālu “1”, mēs pārraidītu “1” uz vadu un “1” - noraidītu otrā vadā. Tas nodrošina signāla integritāti, un vairāk par to varat izlasīt šeit https://goo.gl/6CPCzB. Mums ir viens no šiem kanāliem katrai krāsai, SARKANA, ZAĻA un ZILA, un viens pulkstenim. Diferenciālās signalizācijas īpatnību dēļ signāliem, kurus mēs sūtām caur hdmi, jābūt līdzsvarotiem līdzstrāvā, kas nozīmē, ka 1 un 0 skaitam noteiktā laika periodā jābūt aptuveni vienādam. Lai to paveiktu, mēs izmantosim 8b/10b kodējumu. Jūs varat uzzināt daudz par to, kā darbojas diferenciālā signalizācija un kodēšana 8b/10b no DVI specifikācijas šeit https://goo.gl/hhh8Ge (DVI un HDMI izmanto tos pašus video signālus).
5. darbība: Izeja - HDMI kontrolieris, 2. daļa
Pietiek teorijas, ķeramies pie mūsu projekta. Kamēr VGA kontrollerī mēs saņēmām 148,5 MHz pulksteni, šeit mums būs jānodrošina 10 reizes lielāka frekvence, jo mēs vēlamies pārraidīt 8 bitus katrai krāsai un izmantojot 8b/10b kodējumu, kas nozīmē 10 bitus uz pikseļu un 10 *148,5 MHz = 1485 MHz. Tā ir milzīga frekvence, ko nevar iegūt Zybo Board. Par laimi piedurknē dabūjām dažus trikus. Mēs varam pārvaldīt 5*148,5MHz = 742,5MHz, un mēs izmantosim OSERDES (serializer) IP, lai pārsūtītu datus gan uz 742,5Mhz pulksteņa augšupejošo, gan krītošo malu, tāpēc mēs faktiski saņemsim datus, kas tiek pārraidīti ar 1485MHz. Vivado sniegs mums dažus brīdinājumus par laiku, un jūs vienmēr varētu izvēlēties zemāku izšķirtspēju ar mazāku pulksteni, taču, tā kā tas darbojas, mēs to īsti pagaidām neiebilstam (brīdinājumi ir saistīti ar faktu, ka pulksteņa buferi oficiāli nav atbalsta frekvences, kas ir augstākas par 464 MHz).
Tātad mums ir jākodē dati no mūsu VGA kontrollera izejas 8b/10b formātā un pēc tam jāserializē, kā minēts iepriekš. Mums būs jāpievieno projektam vēl viens MMCM, lai ģenerētu 742.5MHz pulksteni sērijveidā.
Tālāk es pievienoju kodētāja un sērijveida ierīces vhdl failus. Vispirms jums ir jākodē RGB kanāli un pēc tam jāserializē.
Sarkanā kanāla piemērs:
TMDS_encoder_RED: TMDS_encoder
ostas karte (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);
Serialiser_RED: Serialiser10_1
ostas karte (clk148, clk742, encoded_red_10bits, reset, red_serial_1bit);
TMDS_encoder "c" ievade ir "00" sarkanai un zaļai un "vsync & hsync" zilai (tā ir daļa no DVI specifikācijas
6. darbība: attēlu parādīšana no RAM
HDMI kontroliera mērķis ir parādīt apstrādātos attēlus. Tagad, kad kontrolieris ir ieviests un gatavs darbam, mums vajadzētu padomāt par šī kontroliera barošanu ar datiem. Ņemot vērā, ka liela daļa attēla uzlabošanas procesa notiks PS (Processing System = ARM Processor) un iegūtie attēli atradīsies DDR RAM. Tāpēc mums ir nepieciešams veids, kā iegūt datus no RAM uz HDMI kontrolieri.
Lai to izdarītu, jums būs nepieciešami 3 IP:
1) VDMA (video tiešā atmiņas piekļuve)
2) VTC (video laika kontrolieris)
3) Straumējiet uz video izeju (turpmāk mēs to sauksim par S2VO)
S2VO faktiski nodrošinās RGB 24BIT signālu izejai un nepieciešamos HSYNC un VSYNC signālus. Tātad mēs varam atstāt šo HDMI kontroliera daļu ārā.
Jums vajadzētu pievienot šos IP savam dizainam, konfigurēt tos un izveidot pareizos savienojumus.
Visbeidzot, jums vajadzētu iegūt kaut ko līdzīgu iepriekš redzamajai shēmai.
7. darbība: IZEJA - SDK END
Kad visa aparatūra ir iestatīta un gatava darbam, mums tagad ir jāveido programmatūra PS. Mēs eksportēsim aparatūru un bitu plūsmu un palaidīsim SDK.
1) Fails -> Eksportēt -> Eksportēt aparatūru -> Pārbaudiet Iekļaut bitu plūsmu un nospiediet Labi
2) Fails -> Palaidiet SDK
SDK izveidojiet jaunu lietojumprogrammu.
3) Fails -> Jauns -> Lietojumprogrammas projekts
4) Izvēlieties sava projekta nosaukumu un nospiediet Tālāk
5) Atlasiet veidni "Hello World" un nospiediet Finish
SDK lietojumprogrammai būs jāprogrammē VDMA. Lai to paveiktu, tiek izmantotas dažas standarta funkcijas (kad būs laiks, es iedziļināšos detaļās).
Lai pārbaudītu mūsu dizainu, mēs izmantosim SDK atjaunošanas (Xilinx Tools -> Dump/Restore) funkciju, lai ievietotu attēlu DDR RAM atmiņā un parādītu to, izmantojot mūsu HDMI kontrolieri. Jūs varat ielādēt attēlu jebkurā vietā (izņemot dažas nelielas ierobežotas zonas atmiņas sākumā). Mūsu piemērā mēs izvēlējāmies adresi 16777216 un faila lielumu 8294400 = 1920*1080*4 (4 kanāli = RGB + alfa).
Tas strādā !
Turpinājums sekos
Ieteicams:
Vairāku attēlu fona noņemšana, izmantojot Photoshop 2020: 5 soļi
Noņemiet vairāku attēlu fonu, izmantojot Photoshop 2020: attēla fona noņemšana ir ļoti vienkārša jau tagad! Šādi varat izmantot programmu Adobe Photoshop 2020, lai noņemtu vairāku (pakešu) attēlu fonu, izmantojot vienkāršu skriptu
Uguns atpazīšanas un ugunsdzēšanas sistēma uz attēlu apstrādes pamata: 3 soļi
Uz attēlu apstrādi balstīta uguns atpazīšanas un ugunsdzēsības sistēma: Sveiki draugi, šī ir uz attēlu apstrādi balstīta ugunsgrēka noteikšanas un ugunsdzēšanas sistēma, izmantojot Arduino
Mobilo austiņu skaņas uzlabošanas ierīce: 5 soļi
Mobilo austiņu skaņas uzlabošanas ierīce: Sveiki! Es nezinu, vai esmu viens ar problēmu, ka man ir lēts viedtālrunis ar zemāku standarta austiņu izvades skaļumu un vidēja diapazona izteiktu signālu, kas savienots pārī ar diezgan augstu pretestības iecienītākais austiņu komplekts, bet, ja tā ir jūsu problēma
Izveidojiet cilvēka uzlabošanas ierīci (pamata TDCS piegāde): 3 soļi
Izveidojiet cilvēka uzlabošanas ierīci (pamata TDCS piegāde): šo pamācību citēja cienījams avots (saite pdf)! 10. atsauce darbā " Jauni rīki neiro uzlabošanai - kā ir ar neiroētiku? " (html saite) Croat Med J. 2016 Aug; 57. (4): 392 - 394. doi: 10.3325/cmj.2016.57.392
Acer Extensa klēpjdators (5620 / T5250) jaunināšanas un uzlabošanas rokasgrāmata: 6 soļi
Klēpjdatora Acer Extensa (5620 / T5250) jaunināšanas un pielāgošanas ceļvedis: Pirms kāda laika es ievietoju informāciju par Windows XP instalēšanu jaunajā Acer Extensa 5620-6830 klēpjdatorā. Tā ir jauka maza mašīna- cena bija pareiza, un standarta specifikācijas nav sliktas. Bet šeit ir informācija, kas varētu būt noderīga ikvienam, kam ir šī kustība