Sadržaj:

WIDI - Bežični HDMI pomoću Zyba (Zynq razvojna ploča): 9 koraka (sa slikama)
WIDI - Bežični HDMI pomoću Zyba (Zynq razvojna ploča): 9 koraka (sa slikama)

Video: WIDI - Bežični HDMI pomoću Zyba (Zynq razvojna ploča): 9 koraka (sa slikama)

Video: WIDI - Bežični HDMI pomoću Zyba (Zynq razvojna ploča): 9 koraka (sa slikama)
Video: Uputstvo za povezivanje AnyCast uređaja za prenos slike sa mobilnog na TV 2024, Srpanj
Anonim
WIDI - Bežični HDMI pomoću Zybo -a (Zynq razvojna ploča)
WIDI - Bežični HDMI pomoću Zybo -a (Zynq razvojna ploča)
WIDI - Bežični HDMI pomoću Zybo -a (Zynq razvojna ploča)
WIDI - Bežični HDMI pomoću Zybo -a (Zynq razvojna ploča)

Jeste li ikada poželjeli da možete povezati svoj televizor s računalom ili prijenosnim računalom kao vanjski monitor, ali niste htjeli imati sve te dosadne kabele na putu? Ako je tako, ovaj vodič je samo za vas! Iako postoje neki proizvodi koji postižu ovaj cilj, DIY projekt je mnogo zadovoljniji i potencijalno jeftiniji.

Ovaj se koncept razlikuje od proizvoda poput chromecasta, jer je namijenjen zauzimanju mjesta HDMI kabela koji se povezuje s monitorom, a ne kao uređaj za streaming.

Naš je projekt nastao kao završni projekt za tečaj Operativni sustavi u stvarnom vremenu na Kalifornijskom državnom politehničkom sveučilištu, San Luis Obispo.

Cilj projekta je koristiti dvije Digilent Zybo ploče koje će djelovati kao bežično komunikacijsko sučelje između HDMI odašiljačkog uređaja (računalo, blu-ray, itd.) Do HDMI prijemnog uređaja (stolni monitor, projektor, televizor itd.).

Jedan Digilent Zybo bit će spojen putem HDMI -a na odašiljač, a drugi će biti povezan putem HDMI -a na prijemni uređaj.

Bežična komunikacija ostvarit će se pomoću bežične lokalne mreže namijenjene odašiljaču i prijamniku, bez usmjeravanja putem kućnog usmjerivača ili nekog drugog takvog uređaja. Bežični modul koji se koristi za ovaj projekt je nano skretnica tplink wr802n, od kojih jedna radi kao pristupna točka za uspostavljanje mreže, a druga za rad kao klijent za povezivanje s mrežom. Svaki nano usmjerivač bit će povezan putem Ethernet kabela na bilo koju Zybo ploču. Kada su spojeni na ove usmjerivače, uređaji će komunicirati putem TCP -a kao da su spojeni jednim Ethernet kabelom (što znači da je jedina konfiguracija potrebna za uspostavu veze IP adresa klijenta).

Iako je cilj projekta bio olakšati prijenos videa od 1080x720 @ 60Hz, to nije bilo moguće postići zbog ograničenja propusnosti u bežičnoj mreži i nedostatka kompresije videa u stvarnom vremenu radi smanjenja podataka potrebnih za slanje. Umjesto toga, ovaj projekt služi kao okvir za budući razvoj za postizanje ovog cilja, budući da je strogo ograničio ograničenja u broju sličica u sekundi za pravilno strujanje HDMI podataka kako je predviđeno.

Zahtjevi projekta:

2x Digilent Zybo razvojne ploče (moraju imati najmanje jedan HDMI priključak)

2x HDMI kablovi

2x microusb kabeli (za povezivanje Zybo -a s računalom radi razvoja)

2x nano usmjerivač tplink wr802n (uključujući dodatna 2x adaptera za mikro USB i zidnu utičnicu)

2x Ethernet kabel

*** Napomena: Ovaj vodič pretpostavlja poznavanje dizajnerskog paketa Vivado i iskustvo u stvaranju novog projekta i dizajna blokova. ***

Korak 1: Konfigurirajte Zynq programabilnu logiku za odašiljač

Konfigurirajte Zynq programabilnu logiku za odašiljač
Konfigurirajte Zynq programabilnu logiku za odašiljač
Konfigurirajte Zynq programabilnu logiku za odašiljač
Konfigurirajte Zynq programabilnu logiku za odašiljač
Konfigurirajte Zynq programabilnu logiku za odašiljač
Konfigurirajte Zynq programabilnu logiku za odašiljač

Naš pristup razvoju programabilne logike odašiljača bio je izvođenje hdmi-to-hdmi prijenosa s računala na monitor pomoću dva bloka za video zapis s direktnim pristupom memoriji (VDMA), jednog za pisanje i jednog za čitanje.

Obje su odabrane za slobodni rad, 3 frame-buffer mode (0-1-2). Budući da je video jezgra optimizirana za 60 sličica u sekundi, to znači da će VDMA upisivati ili čitati u novi okvir svakih 16,67 ms ovim redoslijedom: 0, 1, 2, 0, 1, 2, 0, 1, 2. Mjesta DDR memorije za svaki okvir različita su za dva VDMA -a jer se više međusobno ne sinkroniziraju. Umjesto toga, hardverski mjerač vremena (TTC1), konfiguriran za 60 Hz, koristi se za sinkronizaciju kretanja podataka između dva memorijska mjesta.

Gornja slika prikazuje 3 kadra, njihove dimenzije i količinu memorije koja je potrebna (desno od okvira). Ako ovim memorijskim mjestima dodijelimo upisni VDMA, tada možemo dodijeliti čitana memorijska VDMA memorijska mjesta izvan ovog skupa, recimo počevši od 0x0B000000. Svaki okvir se sastoji od 1280*720 piksela, a svaki piksel sastoji se od 8 bitova crvene, zelene i plave boje za ukupno 24 bita. To znači da se okvir sastoji od 1280*720*3 bajta (2,76 MB).

Unutar mjerača vremena IRQ, koji je opisan u postavkama VDMA upravljačkog programa, rukovat će kopiranjem podataka između dva memorijska mjesta VMDA. VDMA pruža pokazivač na trenutni okvir na koji se piše ili čita. Okvir je predstavljen posebnim sivim kodom koji se pretvara u softver. Definicije sivog koda za konfiguraciju međuspremnika s 3 okvira mogu se pronaći u Vodiču za proizvode AXI VDMA u Dodatku C.

To nam omogućuje kopiranje zapisanog sadržaja u memoriju bez čitanja iz okvira koji se trenutno zapisuje.

*** Imajte na umu da se čitani VDMA ne koristi pri slanju podataka putem bežične mreže. Njegova je jedina svrha provjeriti ispravan rad kopiranja memorije iz upisnog VMDA. VMDA za čitanje treba biti onemogućena. ***

Evo koraka za stvaranje bloka dizajna odašiljača:

  1. Prilikom stvaranja novog projekta, dobro je projektu dodijeliti čip ili ploču. Ova veza opisuje kako dodati nove datoteke ploče u direktorij Vivado i povezati ispravnu ploču sa svojim projektom. Dobro će doći pri dodavanju bloka Sustava za obradu i prijelazu s hardvera na softver (strana SDK -a).
  2. Dodajte sljedeće blokove:

    • dvi2rgb
    • Videozapis u Axi4-stream
    • Regulator vremena
    • axi4-stream za vid van
    • rgb2dvi
    • AXI VDMA x2
    • AXI GPIO x2
    • Čarobnjak za sat
    • Konstantno
    • Zynq sustav obrade
  3. Prilikom dodavanja sustava za obradu kliknite "Pokreni automatizaciju bloka" na gornjoj traci zelene boje i provjerite je li odabrana opcija "Primijeni unaprijed postavljene ploče". Sve ostalo ostavite zadano.
  4. Slike svakog prozora za konfiguraciju bloka mogu se pronaći na gornjim slikama. Ako ne vidite sliku za određeni prozor, ostavite je kao zadanu.
  5. Počnite s konfiguriranjem Zynq Processing sustava:

    • U konfiguraciji PS-PL AXI Non Secure Omogući GP Master AXI, omogućite M AXI GP0 sučelje
    • U PS-PL konfiguraciji HP Slave AXI sučelje omogućite i HP0 i HP1
    • U MIO konfiguraciji provjerite je li ENET0 omogućen pod I/O periferijama, zatim jedinica procesorske aplikacije, omogućite Timer0
    • U konfiguraciji sata PL Fabric Clocks omogućite FCLK_CLK0 i postavite na 100 MHz.
    • Pritisnite U redu
  6. Prije nego kliknete "Pokreni automatizaciju veze", svakako spojite video blokove kako je prikazano na gornjoj slici dizajna TX bloka. Htjet ćete preimenovati konstantu u VDD i postaviti vrijednost na 1. U skladu s tim spojite video blokove.
  7. Učinite HDMI TMDS sat i pinove podataka vanjskim na blokovima rgb2dvi i dvi2rgb
  8. Izradite ulazni i izlazni priključak za signal otkrivanja vrućeg priključka (HPD) i spojite ih zajedno, oni su definirani u datoteci ograničenja
  9. Sat piksela oporavlja se iz TMDS_Clk_p, koji je kreiran u datoteci ograničenja. To će biti 74,25 MHz u skladu s rezolucijom 720p. Važno je spojiti sat piksela (iz bloka dvi2rgb) na sljedeće pinove:

    • vid_io_in_clk (vid u blok axi toka)
    • vid_io_out_clk (axi stream za video izlaz blok)
    • clk (Regulator vremena)
    • PixelClk (rgb2dvi)
  10. *** Napomena: Kako bi se aktivirao oporavak sata piksela, HDMI rx i tx konektori moraju biti priključeni u aktivni izvor/sudoper. Jedan od načina da se to zaobiđe je odvajanje video rx i tx blokova u različite domene takta (drugim riječima, generiranje novog takta od 74,25 MHz za unos u tx blok). ***
  11. Zatim postavite čarobnjaka za sat tako da imate ulaz od 100 MHz (globalni izvor međuspremnika) i 3 izlazna sata na 50 MHz (sat AXI-Lite), 150 MHz (sat AXI4-Stream), 200 MHz (dvi2rgb RefClk pin).
  12. Spojite iglu sustava za obradu FCLK_CLK0 na ulaz čarobnjaka za sat
  13. Na ovom mjestu kliknite "Pokreni automatizaciju veze" na zelenoj traci pri vrhu prozora za dizajn. Bilo bi dobro da to radite jedan po jedan blok i slijedite gornju sliku dizajna TX bloka.
  14. Alat će pokušati dodati AXI Interconnect, koji djeluje kao master/slave interkonekcija za blokove koji koriste AXI-Lite sabirnicu (VDMA i GPIO).
  15. Također će se dodati AXI SmartConnect, koji djeluje kao glavna/podređena veza za AXI4-Stream i procesorska sučelja visokih performansi koje koristi VDMA (Stream to Memory Map i obrnuto).
  16. Alat će dodati i Vraćanje sustava procesora na zadano. Provjerite je li ovo spojeno samo na VDMA -e, GPIO -e i procesorske blokove. Nemojte ga spajati na bilo koje video blokove (npr. Dvi2rgb, regulator vremena, video za prijenos itd.)
  17. Nakon što je dovršena automatizacija povezivanja, provjerite odgovaraju li veze onima iz slike dizajna bloka TX. Primijetit ćete dodatni blok System ILA koji nije spomenut. Ovo je samo za ispravljanje pogrešaka i za sada nije potrebno. Koristi resetiranje procesora 150M, pa ni to nije potrebno. Gdje god vidite male zelene "bube" na autobusima, to je zbog međunarodne međunarodne pomoći i može se zanemariti.
  18. Posljednji korak je desni klik na dizajn bloka u stablu izvora projekta i odabir "Create HDL Wrapper". Ako planirate dodati logiku u omot, ona će se prebrisati svaki put kada se ovo odabere.
  19. Pogledajte odjeljak Postavljanje upravljačkog programa VDMA za detalje o strani SDK -a.

Sat i resetiranje

Otkrio sam da su najvažniji aspekti svakog programabilnog logičkog projekta pažljivo razmatranje domena takta i signali za resetiranje. Ako su oni ispravno konfigurirani, dobro ćete uspjeti u dizajnu.

Sat i vrijeme piksela zaključani

Kako biste provjerili jesu li određeni signali aktivni, dobro je povezati te signale sa LED diodama (satovi, resetiranja, brave itd.). Dva signala koja sam smatrao korisnim za praćenje na ploči odašiljača bili su sat piksela i signal "zaključavanja" na bloku izlaznog video zapisa AXI4-Stream to video, koji vam govori da je vrijeme za video sinkronizirano s vremenskim kontrolerom i video izvorom podaci. Dodao sam logiku omotu bloka za dizajn koji prati sat piksela pomoću signala PixelClkLocked na bloku dvi2rgb kao resetiranje. Ovdje sam priložio datoteku kao hdmi_wrapper.v. Datoteka ograničenja također je priložena ovdje.

Korak 2: Konfigurirajte Zynq programabilnu logiku za prijemnik

Konfigurirajte Zynq programabilnu logiku za prijemnik
Konfigurirajte Zynq programabilnu logiku za prijemnik
Konfigurirajte Zynq programabilnu logiku za prijemnik
Konfigurirajte Zynq programabilnu logiku za prijemnik
Konfigurirajte Zynq programabilnu logiku za prijemnik
Konfigurirajte Zynq programabilnu logiku za prijemnik

Programabilni logički blok za prijemnik je jednostavniji. Ključna razlika, osim nedostajućih HDMI ulaznih blokova, je nedostatak oporavljenog sata piksela. Iz tog razloga moramo generirati vlastiti iz čarobnjaka za sat. Ovaj dizajn trebao bi biti izveden u zasebnom projektu od odašiljača. Za naše potrebe projekt prijamnika slijedio je ploču Zybo 7Z-20, dok je odašiljač slijedio ploču Z7-10. FPGA -e na pločama su različite pa … budite oprezni.

Evo koraka za stvaranje bloka dizajna prijemnika:

  1. U svoj dizajn dodajte sljedeće ip blokove:

    • Regulator vremena
    • AXI4-stream za video izlaz
    • RGB na DVI
    • AXI VDMA
    • AXI GPIO
    • Sustav obrade
    • Čarobnjak za sat
    • Konstantno (VDD postavljeno na 1)
  2. Slijedite isti obrazac za konfiguriranje ovih blokova kao i odašiljač. Ovdje su uključene slike značajnih razlika u konfiguraciji. Ostali ostaju isti kao odašiljač.
  3. Konfigurirajte VDMA za ovaj dizajn samo za čitanje kanala. Onemogućite kanal za pisanje.
  4. Čarobnjak za sat treba biti konfiguriran za sljedeće izlaze:

    • clk_out1: 75 MHz (sat piksela)
    • clk_out2: 150 MHz (stream stream)
    • clk_out3: 50 MHz (axi-lite sat)
  5. Spojite video blokove kako je prikazano na slici dizajna RX bloka.
  6. Zatim pokrenite automatizaciju veze koja će dodati blokove AXI Interconnect, AXI SmartConnect i System Reset i pokušati uspostaviti odgovarajuće veze. Idite polako ovdje kako biste bili sigurni da ne izvodi neželjene veze.
  7. Učinite HDMI TMDS sat i pinove podataka vanjskim na bloku rgb2dvi
  8. Nema potrebe za signalom vrućeg priključka na ovom dizajnu.

Korak 3: Postavljanje VDMA upravljačkog programa

Postavljanje VDMA upravljačkog programa
Postavljanje VDMA upravljačkog programa

Postavljanje različitih blokova koji su konfigurirani putem sučelja AXI-Lite najbolje je izvršiti pomoću demo projekata uključenih u BSP kao referencu. Nakon izvoza dizajnerskog hardvera i pokretanja SDK -a s Vivada, htjet ćete dodati novi paket podrške za ploču i uključiti knjižnicu lwip202 u prozor postavki BSP -a. Otvorite datoteku datoteke system.mss s BSP -a i vidjet ćete periferne upravljačke programe prisutne u dizajnu vašeg bloka. Opcija "Primjeri uvoza" omogućuje vam uvoz uvoznih projekata koji koriste ove periferne uređaje i na taj način vam pokazuje kako ih konfigurirati u softveru pomoću dostupnih upravljačkih programa Xilinx (pogledajte priloženu sliku).

Ovo je metoda korištena za konfiguriranje VDMA -e, mjerača vremena i prekida i GPIO -a. Ovdje je uključen izvorni kod za prijenos i primanje. Razlike su gotovo isključivo u main.c.

*** NAPOMENA: Budući da sustav nije u potpunosti funkcionirao u vrijeme pisanja ovog vodiča, izvorni kod u ovom odjeljku ne uključuje kôd bežične mreže. Nekoliko grešaka mora se riješiti kao rezultat kombiniranja projekata prijenosa/primanja video jezgre s projektima prijenosa/primanja na mreži. Stoga ih ovaj vodič za sada tretira zasebno. ***

Funkcija rukovatelja TX prekidima (IRQHandler)

Ova funkcija čita sive kodove koje pružaju VDMA za čitanje i pisanje putem GPIO blokova. Sivi kodovi se pretvaraju u decimalne i koriste se za odabir osnovne memorije okvira trenutnog okvira. Kopirani okvir prethodni je okvir u odnosu na onaj na koji VDMA zapisuje (npr. Ako VDMA zapisuje u okvir 2, kopiramo okvir 1; ako zapisuje u okvir 0, prelamamo i čitamo iz okvira 2).

Ova funkcija snima samo svaki 6. okvir kako bi smanjila broj sličica na 10 Hz, a ne na 60 Hz. Gornja granica mreže je 300 Mbps. Pri 10 sličica u sekundi potrebna je propusnost od 221,2 Mbps.

Komentiranje/poništavanje komentiranja dva retka u ovoj funkciji omogućit će korisniku da prijeđe u način HDMI passthru radi otklanjanja pogrešaka/testiranja (kôd je komentiran kako bi označio odgovarajuće retke). Trenutno kopira okvir na memorijsko mjesto koje koristi ethernet kôd.

Funkcija rukovatelja prekidima RX -a (IRQHandler)

Ova je funkcija vrlo slična TX funkciji, ali kopira iz 2 međuspremnika FIFO koji koristi ethernet za upisivanje dolaznih podataka. Ethernet kôd označava u koji okvir se upisuje FIFO, podaci se kopiraju iz suprotnog okvira. Podaci se kopiraju u okvir izravno iza onog koji čita VDMA kako bi se izbjeglo kidanje.

Korak 4: Postavljanje mreže nanoroutera

Postavljanje mreže nano skretača
Postavljanje mreže nano skretača

Da biste stvorili mrežu pomoću nano usmjerivača TPlink, uključite ih pojedinačno i povežite se sa zadanim Wi -Fi SSID -om za uređaje. Više informacija o postavkama konfiguracije za ovaj uređaj možete pronaći u korisničkom priručniku za uređaj.

Postavite jedan od uređaja kao pristupnu točku, to će djelovati kao primarna veza za mrežu. Imenujte mrežu i zabilježite ime te onemogućite DHCP (ne želimo da usmjerivač dinamički konfigurira IP adrese, želimo da Zybo ploče tansmittera i prijemnika same postave svoje IP adrese kako bi bile dosljedne). Nakon konfiguriranja provjerite da li se uređaj ponovno pokreće i uspostavlja ovu mrežu.

Drugi uređaj postavite kao klijent i provjerite je li spojen na mrežni SSID koji ste postavili s prvim nano usmjerivačem. Još jednom provjerite je li DHCP onemogućen za klijenta.

Nakon što klijent završi i ponovno pokrene sustav, trebao bi se povezati s nano skretačem pristupne točke (ako se to ne dogodi, vjerojatno postoji problem u vašoj konfiguraciji jednog od uređaja). Primijetit ćete da će LED svjetlo na klijentu biti čvrsto nakon što se spoji na pristupnu točku.

LED dioda nanoroutera pristupne točke vjerojatno će nastaviti treperiti u ovom trenutku, to je u redu! Bljeskajuće svjetlo znači da nije spojeno na drugi uređaj s njegovog Ethernet priključka, a nakon što se spoji na konfigurirani Zybo LED dioda će ostati svijetla što ukazuje na uspješnu mrežnu vezu.

Sada kada smo postavili naše nano usmjerivače, imamo bežičnu mrežu koja će nam omogućiti komunikaciju. Važna napomena je da nam naša konfiguracijska metoda za nano usmjerivače (kao pristupnu točku i klijenta) omogućuje komunikaciju s odašiljačke Zybo ploče na prijemnu Zybo ploču kao da su spojena jednom Ethernet žicom. To čini naše postavljanje mreže manje teškim, jer bi alternativa vjerojatno uključivala konfiguriranje Zybo ploča za izričito povezivanje s poslužiteljem zajedno s predviđenom vezom.

Nakon što su oba uređaja postavljena, nanousmjerivači su konfigurirani i spremni za implementaciju u vašu WIDI mrežu. Ne postoji posebno uparivanje između nano usmjerivača i Zybo ploča, jer će pristupna točka ili klijent raditi za prijenosni ili prijemni uređaj.

Korak 5: Postavite Zynq procesni sustav za prijenos podataka putem Etherneta

Postavite Zynq sustav obrade za prijenos podataka putem Etherneta
Postavite Zynq sustav obrade za prijenos podataka putem Etherneta
Postavite Zynq sustav obrade za prijenos podataka putem Etherneta
Postavite Zynq sustav obrade za prijenos podataka putem Etherneta

Za prijenos HDMI podataka s jedne Zybo ploče na drugu, moramo uključiti Ethernet protokol u naš VDMA upravljački program. Naš je cilj ovdje strujati pojedinačne video okvire kroz periferiju Ethernet u procesorskom sustavu, po zadanoj brzini koja je u skladu s propusnošću naše mreže. Za naš projekt koristili smo TCP koji nudi goli metal LwIP API. Budući da su obojica članova projekta relativno neiskusni s uslužnim programima za umrežavanje, ovaj je izbor napravljen bez potpunog prepoznavanja implikacija i ograničenja povezanih s TCP -om. Glavni problem s ovom implementacijom bila je ograničena propusnost i činjenica da doista nije dizajnirana za prijenos velikih količina podataka. Alternativna rješenja za zamjenu TCP -a i poboljšanje u ovom projektu bit će razmotrena kasnije.

Kratak opis TCP -a s LwIP -om: Podaci se šalju preko mreže u paketima veličine tcp_mss (TCP maksimalna veličina segmenta), što je općenito 1460 bajtova. Pozivanje tcp_write će uzeti neke podatke na koje upućuje pokazivač i konfigurirati pbufs (međuspremnike paketa) za držanje podataka i osiguravanje strukture za TCP operacije. Maksimalna količina podataka koja se može staviti u red odjednom postavljena je kao tcp_snd_buf (međuspremnik pošiljatelja TCP pošiljatelja). Budući da je ovaj parametar 16 -bitni broj, ograničeni smo na veličinu međuspremnika za slanje od 59695 bajta (u međuspremniku za slanje potrebno je određeno dodavanje). Nakon što su podaci stavljeni u red čekanja, tcp_output se poziva da započne prijenos podataka. Prije slanja sljedećeg segmenta podataka, imperativ je da su svi prethodni paketi uspješno preneseni. Ovaj proces se vrši pomoću funkcije recv_callback, jer je to funkcija koja se poziva kada se potvrda vidi s prijemnika.

Korištenje primjera projekata u Vivado SDK -u vrlo je korisno za učenje o načinu rada LwIP TCP -a i dobro je polazište za početak novog projekta.

Postupak za prijenosni uređaj WiDi je sljedeći:

  1. Inicijalizirajte TCP mrežu pomoću golih metalnih poziva upravljačkih programa LWIP.
  2. Navedite sve funkcije povratnog poziva potrebne za mrežne operacije.
  3. Povežite se s WiDi prijamnikom povezivanjem na njegovu IP adresu i priključak (naša konfiguracija: IP prijamnika je 192.168.0.9, povežite se na port 7).
  4. Kad tajmer upravljačkog programa VDMA istekne, unesite TX ISR.
  5. Odredite trenutni međuspremnik okvira za pristup na temelju VDMA sivog koda
  6. Postavite prvi segment podataka u red čekanja u međuspremniku za slanje TCP -a
  7. Ispišite podatke i ažurirajte lokalne varijable kako biste pratili koliko je podataka poslano u trenutnom okviru.
  8. Nakon dostizanja primljenog povratnog poziva (poziv funkcije nakon što odašiljač primi potvrdu o preuzimanju podataka), postavite sljedeći segment podataka u red.
  9. Ponavljajte korake 7 i 8 dok se ne pošalje cijeli okvir.
  10. Vratite se u stanje mirovanja kako biste pričekali sljedeći prekid timera kako biste naznačili da je novi okvir spreman (Natrag na korak 4).

Svakako postavite postavke LwIP paketa za podršku ploče kao što je prikazano na gornjoj slici. Sve su vrijednosti zadane osim tcp_snd_buf, tcp_pueue_ooseq, mem_size, memp_n_tcp_seg. Također imajte na umu da se detaljno ispravljanje pogrešaka može postići promjenom BSP parametara za grupu debug_options.

Korak 6: Postavite Zynq procesni sustav za prijem podataka putem Etherneta

Zybo razvojna ploča koja će djelovati kao bežični prijamnik radit će slično kao i prijenosni uređaj. Postavke paketa podrške ploče za LwIP bit će identične onima u prethodnom koraku.

Uređaj će primati pakete koji sadrže segmente video okvira iz nano skretanja, te će kopirati podatke video okvira u međuspremnik s tri okvira za prijemni VDMA. Kako bi se izbjeglo prepisivanje bilo kakvih podataka, dvostruki podatkovni međuspremnik (mi ćemo ga nazivati mrežni međuspremnik) koristi se pri prikupljanju podataka iz nanoroutera, tako da se mrežni promet može nastaviti strujati dok se prethodni cijeli video okvir kopira u VDMA međuspremnik.

Postupak za WiDi prijemni uređaj zahtijeva dva zadatka, od kojih jedan prima ethernet podatke, a drugi je kopiranje video okvira iz mrežnog međuspremnika u međuspremnik VDMA s tri okvira.

Zadatak Ethernet prijema:

  1. Inicijalizirajte TCP mrežu pomoću golih metalnih poziva upravljačkog programa LWIP (postavljanje s IP adresom na koju će se odašiljač povezati, 192.168.0.9 u našoj)
  2. Navedite sve funkcije povratnog poziva potrebne za mrežne operacije.
  3. Nakon primljenog ethernet paketa, kopirajte paketne podatke u trenutni mrežni međuspremnik, povećajte trenutne akumulirane podatke.
  4. Ako paket ispunjava međuspremnik mrežnog okvira, prijeđite na korake 5 i 6. U suprotnom se vratite na korak 3 za ovaj zadatak.
  5. signal da bi zadatak VDMA trostrukog međuspremnika trebao kopirati iz novozavršenog mrežnog međuspremnika.
  6. Prebacite se na drugi mrežni međuspremnik i nastavite prikupljati podatke putem etherneta.
  7. Neaktivan dok se ne primi novi ethernet paket (korak 3).

Kopirajte mrežni međuspremnik u VDMA međuspremnik s tri okvira:

  1. Kad istekne mjerač vremena upravljačkog programa VDMA, unesite RX ISR.
  2. Odredite trenutni međuspremnik okvira za pristup na temelju VDMA sivog koda.
  3. Odredite koji će se mrežni međuspremnik kopirati u VDMA međuspremnik i kopirajte te podatke

Korak 7: Povežite svoje Zybo ploče s HDMI izvorom i HDMI sudoperom

Spojite svoje Zybo ploče na HDMI izvor i HDMI sudoper
Spojite svoje Zybo ploče na HDMI izvor i HDMI sudoper

Sada spojite hdmi kabele i za prijamnik i za odašiljač, programirajte FPGA -e i pokrenite sustav za obradu. Brzina kadrova bit će vjerojatno vrlo spora, zbog ogromnih troškova u operaciji LwIP i ograničene propusnosti. Ako postoje problemi, povežite se putem UART -a i pokušajte identificirati upozorenja ili pogreške.

Korak 8: Alternativne ideje za poboljšanje

Alternativne ideje za poboljšanje
Alternativne ideje za poboljšanje

Veliki problem za ovaj projekt bila je količina podataka potrebna za slanje putem WiFi -ja. To je bilo očekivano, međutim podcijenili smo utjecaj koji bi to moglo imati i rezultiralo je većim brojem slika na ekranu, a ne video sažetkom. Postoji nekoliko načina za poboljšanje ovog projekta:

  • Kompresija videa u stvarnom vremenu. Komprimiranje dolaznog video feeda okvir po kadar uvelike bi smanjilo količinu podataka potrebnih za slanje putem mreže. U idealnom slučaju to bi se učinilo hardverski (što nije lak zadatak), ili bi se to moglo učiniti softverski korištenjem druge ARM jezgre za pokretanje algoritama kompresije (to bi zahtijevalo dodatnu analizu kako bi se osiguralo da vrijeme funkcionira). Na webu smo pronašli neke komponente kompresije videa u stvarnom vremenu otvorenog koda, ali većinu čine IP.
  • Implementacija Ethernet toka u hardveru, a ne u softveru. Bilo je tona režijskih troškova zbog nedostatka prostora na raspolaganju za čekanje odlaznih podataka u odašiljaču, zbog ograničenja veličine segmenta. Mnogo učinkovitiji postupak je korištenje AXI Ethernet IP -a s FIFO međuspremnikom ili DMA -om za unos podataka u njega. To bi smanjilo dodatnu prtljagu s LwIP TCP -a i omogućilo veći protok podataka.

Korak 9: Pristupačnost

Rezultirajući proizvod ovog WiDi projekta trebao bi biti potpuno integrirani, kompaktni par uređaja koje bi korisnik mogao spojiti na bilo koji HDMI izvor, a zatim bežično prenijeti video prijenos na zaslon s HDMI sposobnošću. Uređaji bi imali Zynq-7000 SoC koji se nalazi na Zybo referentnoj ploči i uključivali bi mrežni hardver koji se nalazi u nano-usmjerivačima TP-Link. U idealnom slučaju, korisnik bi mogao kontrolirati prijenosni modul s diskretnog mjesta unutar ciljnog operacijskog sustava, bez male potrebe za značajnim tehničkim sposobnostima.

Sigurnost i povezivost

Uređaji bi također trebali uključivati sigurnost transportnog sloja (TLS) i imati ograničenu mogućnost automatskog povezivanja, kako zbog privatnosti. Namjera dizajnera je da povezivanje s zaslonom putem bežičnog sučelja namjernu radnju u ime korisnika izbjegne kako bi se izbjeglo pogrešno emitiranje osjetljivog materijala.

Sadašnji status

Do ovog trenutka stanje projekta je još uvijek u tijeku. Kako bi trenutni korisnik krajnje točke mogao imati koristi od ovog vodiča, on ili ona mora imati dobro tehničko razumijevanje dizajna ugrađenog sustava i mora biti upoznat sa programiranim hardverom i ugrađenim softverom koji rade zajedno.

Podaci koji se šalju putem mreže u ovom trenutku nisu šifrirani i pretpostavlja se da su sirovi prijenos TCP/IP paketa.

Video jezgreni projekt uspješno je testiran i za prijenos i za prijem. S druge strane, uspostavljena je bežična veza između dvije zybo ploče i uspješno su poslani podaci testnog okvira. Ipak je potrebno kombinirati mrežni kôd sa svakim video jezgrom projekta i testirati prijenos stvarnih video okvira.

Preporučeni: