Orodha ya maudhui:

WIDI - HDMI isiyotumia waya Kutumia Zybo (Bodi ya Maendeleo ya Zynq): Hatua 9 (na Picha)
WIDI - HDMI isiyotumia waya Kutumia Zybo (Bodi ya Maendeleo ya Zynq): Hatua 9 (na Picha)

Video: WIDI - HDMI isiyotumia waya Kutumia Zybo (Bodi ya Maendeleo ya Zynq): Hatua 9 (na Picha)

Video: WIDI - HDMI isiyotumia waya Kutumia Zybo (Bodi ya Maendeleo ya Zynq): Hatua 9 (na Picha)
Video: Meeting #5 - 4/29/2022 | ETF team meeting and dialogue 2024, Julai
Anonim
WIDI - Wireless HDMI Kutumia Zybo (Bodi ya Maendeleo ya Zynq)
WIDI - Wireless HDMI Kutumia Zybo (Bodi ya Maendeleo ya Zynq)
WIDI - Wireless HDMI Kutumia Zybo (Zynq Development Board)
WIDI - Wireless HDMI Kutumia Zybo (Zynq Development Board)

Je! Umewahi kutamani kuwa unaweza kuunganisha TV yako na PC au kompyuta ndogo kama mfuatiliaji wa nje, lakini hakutaka kuwa na zile kamba mbaya kila wakati? Ikiwa ndivyo, mafunzo haya ni kwa ajili yako tu! Wakati kuna bidhaa zingine ambazo zinafikia lengo hili, mradi wa DIY unaridhisha zaidi na unaweza kuwa nafuu.

Dhana hii ni tofauti na bidhaa kama chromecast, kwani imekusudiwa kuchukua nafasi ya kebo ya HDMI inayounganisha na mfuatiliaji badala ya kuwa kifaa cha kutiririsha.

Mradi wetu uliundwa kama mradi wa mwisho wa kozi ya Mifumo ya Uendeshaji ya Saa Halisi katika Chuo Kikuu cha California State Polytechnic, San Luis Obispo.

Lengo la mradi huo ni kutumia bodi mbili za Digilent Zybo kufanya kama kiwambo cha mawasiliano kati ya kifaa cha kusambaza HDMI (PC, blu-ray, n.k) kwa kifaa cha kupokea HDMI (Monitor Desktop, Projector, TV, nk).

Digilent Zybo moja itaunganishwa kupitia HDMI kwenye kifaa kinachosambaza, na nyingine itaunganishwa kupitia HDMI kwenye kifaa kinachopokea.

Mawasiliano ya waya yatatengenezwa kwa kutumia mtandao wa eneo lisilo na waya uliojitolea kwa mpitishaji na mpokeaji, bila kupitishwa kupitia njia ya nyumbani au kifaa kingine kama hicho. Moduli isiyo na waya inayotumika kwa mradi huu ni tplink wr802n nanorouter, ambayo moja hufanya kazi kama kituo cha kufikia mtandao na nyingine kufanya kama mteja kuungana na mtandao. Kila nanorouter itaunganishwa kupitia kebo ya ethernet kwa bodi ya Zybo. Zinapounganishwa na ruta hizi, vifaa vitawasiliana kupitia TCP kana kwamba vimeunganishwa na kebo moja ya ethernet (inamaanisha usanidi pekee unaohitajika kuanzisha unganisho ni anwani ya IP ya mteja).

Wakati lengo la mradi huo lilikuwa kuwezesha mkondo wa video ya 1080x720 @ 60Hz, hii haikufanikiwa kwa sababu ya mapungufu ya kipimo data katika mtandao wa waya na ukosefu wa ukandamizaji wa video wa wakati halisi ili kupunguza data inayohitajika kutuma. Badala yake, mradi huu unatumika kama mfumo wa maendeleo ya baadaye kufikia lengo hili, kwani umezuia vizuizi vikali katika kiwango cha fremu kutiririsha vizuri data ya HDMI kama ilivyokusudiwa.

Mahitaji ya Mradi:

Bodi za 2x Digilent Zybo Development (lazima iwe na angalau bandari moja ya HDMI)

2x nyaya za HDMI

Cable 2x za microusb (kuunganisha Zybo na PC kwa maendeleo)

2x tplink wr802n nanorouters (pamoja na adtl. 2x microusb na adapta za umeme za ukuta)

Cable 2x za ethernet

*** Kumbuka: Mafunzo haya hufikiria kujuana na muundo wa muundo wa Vivado na uzoefu wa kuunda mradi mpya na muundo wa kuzuia.

Hatua ya 1: Sanidi Zynq Logic inayoweza kusanidiwa kwa Transmitter

Sanidi Zynq Logic inayoweza kusanidiwa kwa Transmitter
Sanidi Zynq Logic inayoweza kusanidiwa kwa Transmitter
Sanidi Zynq Logic inayoweza kusanidiwa kwa Transmitter
Sanidi Zynq Logic inayoweza kusanidiwa kwa Transmitter
Sanidi Zynq Logic inayoweza kusanidiwa kwa Transmitter
Sanidi Zynq Logic inayoweza kusanidiwa kwa Transmitter

Njia yetu ya kukuza mantiki inayoweza kupangiliwa ya mtoaji ilikuwa kufanya kupitisha kwa hdmi-to-hdmi kutoka kwa PC kufuatilia kutumia vizuizi viwili vya Video Direct Access Access (VDMA), moja ya kuandika na moja ya kusoma.

Zote mbili huchaguliwa kwa kukimbia bure, hali ya bafa ya fremu 3 (0-1-2). Kwa kuwa msingi wa video umeboreshwa kwa muafaka 60 kwa sekunde, hii inamaanisha kuwa VDMA itaandika au kusoma kwa fremu mpya kila ms 16.67 kwa mpangilio huu: 0, 1, 2, 0, 1, 2, 0, 1, 2. Maeneo ya kumbukumbu ya DDR kwa kila fremu ni tofauti kwa VDMA mbili kwa sababu hazijasawazishwa tena na kila mmoja. Badala yake, kipima muda (TTC1), kilichosanidiwa kwa 60 Hz, kinatumiwa kulandanisha harakati za data kati ya sehemu mbili za kumbukumbu.

Picha hapo juu inaonyesha muafaka 3, vipimo vyake na kiwango cha kumbukumbu ambacho kila inahitaji (upande wa kulia wa fremu). Ikiwa tunapeana VDMA ya kuandika kwa maeneo haya ya kumbukumbu, basi tunaweza kugawa maeneo ya kumbukumbu ya VDMA zaidi ya seti hii, sema kuanzia 0x0B000000. Kila fremu imeundwa na saizi 1280 * 720 na kila pikseli imeundwa na bits 8 za Nyekundu, Kijani na Bluu kwa jumla ya bits 24. Hii inamaanisha fremu imeundwa na ka 1280 * 720 * 3 (2.76 MB).

Ndani ya timer IRQ, ambayo imeelezewa katika usanidi wa dereva wa VDMA, itashughulikia kunakili data kati ya maeneo mawili ya kumbukumbu ya VMDA. VDMA hutoa pointer kwa fremu ya sasa kuandikiwa au kusoma kutoka. Sura hiyo inawakilishwa na nambari fulani ya kijivu, ambayo hubadilishwa kuwa programu. Ufafanuzi wa nambari ya kijivu ya usanidi wa bafa ya fremu 3 unaweza kupatikana katika Mwongozo wa Bidhaa wa AXI VDMA katika kiambatisho C.

Hii inatuwezesha kunakili yaliyomo kuandikwa kwa kumbukumbu bila kusoma kutoka kwa fremu inayoandikiwa sasa.

*** Kumbuka kuwa VDMA iliyosomwa haitumiki wakati wa kutuma data kwenye mtandao wa wireless. Ni kusudi tu ni kuhakikisha operesheni sahihi ya kunakili kumbukumbu kutoka kwa VMDA ya kuandika. VMDA iliyosomwa inapaswa kuzimwa. ***

Hapa kuna hatua za kuunda Kizuizi cha Kubuni cha Kusambaza:

  1. Wakati wa kuunda mradi mpya, ni wazo nzuri kupeana chip au bodi kwenye mradi huo. Kiungo hiki kinaelezea jinsi ya kuongeza faili mpya za bodi kwenye saraka ya Vivado na unganisha bodi sahihi na mradi wako. Itakuja vizuri wakati wa kuongeza kizuizi cha Mfumo wa Usindikaji na ubadilishaji kutoka kwa vifaa hadi programu (upande wa SDK).
  2. Ongeza vizuizi vifuatavyo:

    • mkundu
    • Video kwenye mkondo wa Axi4
    • Muda Mdhibiti
    • mkondo wa axi4 kwa vid nje
    • rgb2dvi
    • AXI VDMA x2
    • AXI GPIO x2
    • Mchawi wa Saa
    • Mara kwa mara
    • Mfumo wa Usindikaji wa Zynq
  3. Unapoongeza Mfumo wa Usindikaji, bonyeza "Run Block Automation" kutoka kwenye bar ya rangi ya kijani kibichi na uhakikishe chaguo la "Weka Preset Board" limechaguliwa. Acha kila kitu kingine chaguomsingi.
  4. Picha za kila dirisha la usanidi wa block zinaweza kupatikana kwenye picha zilizo hapo juu. Ikiwa hauoni picha ya dirisha fulani, acha tu kama chaguo-msingi.
  5. Anza Kusanidi mfumo wa Usindikaji wa Zynq:

    • Katika Usanidi wa PS-PL AXI Isiyowezekana Wezesha GP Master AXI, wezesha Mfumo wa M AXI GP0
    • Katika Usanidi wa PS-PL HP Slave AXI Interface, wezesha HP0 na HP1 zote mbili
    • Katika Usanidi wa MIO Hakikisha ENET0 imewezeshwa chini ya pembejeo za I / O, kisha Kitengo cha Usindikaji wa Maombi, wezesha Timer0
    • Katika Saa za Usanidi wa Saa za PL Saa, wezesha FCLK_CLK0 na uweke kwa 100 MHz.
    • Bonyeza Ok
  6. Kabla ya kubofya "Run Run Automation," hakikisha unganisha vizuizi vya video kama inavyoonekana kwenye picha ya muundo wa block ya TX hapo juu. Utataka kubadilisha jina la mara kwa mara kuwa VDD na kuweka thamani kuwa 1. Unganisha vizuizi vya video ipasavyo.
  7. Tengeneza saa ya HDMI TMDS na pini za data nje kwenye vizuizi vya rgb2dvi na dvi2rgb
  8. Unda bandari ya pembejeo na pato kwa ishara ya moto ya kugundua kuziba (HPD) na uwaunganishe pamoja, hizi zinafafanuliwa katika faili ya vizuizi
  9. Saa ya pikseli inapatikana kutoka kwa TMDS_Clk_p, ambayo imeundwa kwenye faili ya vizuizi. Hii itakuwa 74.25 MHz kulingana na azimio la 720p. Ni muhimu kuunganisha saa ya pikseli (kutoka kwa dvi2rgb block) na pini zifuatazo:

    • vid_io_in_clk (vid katika kuzuia axi mkondo)
    • vid_io_out_clk (mkondo wa axi ili kuzuia block)
    • clk (Kidhibiti cha Majira)
    • PixelClk (rgb2dvi)
  10. *** Kumbuka: Hivi sasa, ili kuamsha ahueni ya saa ya pikseli, viunga vya HDMI rx na tx lazima viingizwe kwenye chanzo / kuzama. Njia moja kuzunguka hii ni kutenganisha video rx na tx inazuia katika vikoa tofauti vya saa (kwa maneno mengine, tengeneza saa mpya ya 74.25 MHz kulisha kwa block block).
  11. Halafu weka mchawi wa saa ili uwe na pembejeo 100 MHz (chanzo cha bafa ya ulimwengu) na saa 3 za pato @ 50 MHz (Saa ya AXI-Lite), 150 MHz (Saa ya AXI4-Mkondo), 200 MHz (dvi2rgb RefClk pin).
  12. Unganisha pini ya mfumo wa usindikaji wa FCLK_CLK0 kwa pembejeo ya mchawi wa saa
  13. Kwa wakati huu bonyeza "Run Connection Automation" kutoka kwa bar ya kijani juu ya dirisha la muundo. Ni wazo nzuri kufanya hivyo kwa block moja kwa wakati na kufuata picha ya muundo wa block ya TX hapo juu.
  14. Chombo hicho kitajaribu kuongeza unganisho la AXI, ambalo hufanya kama unganisho la bwana / mtumwa kwa vizuizi vinavyotumia basi ya AXI-Lite (VDMAs na GPIOs).
  15. Pia itaongeza AXI SmartConnect, ambayo inafanya kazi kama unganisho la bwana / mtumwa kwa njia za AXI4-Mkondo na Usindikaji wa Utendaji wa juu unaotumiwa na VDMA (Mkondo kwa Ramani ya Kumbukumbu na kinyume chake).
  16. Chombo pia kitaongeza Upyaji wa Mfumo wa Processor. Hakikisha hii imeunganishwa tu kwenye VDMAs, GPIOs na vizuizi vinavyohusiana na processor. Usiiunganishe na vizuizi vyovyote vya video (i.e. dvi2rgb, kidhibiti cha muda, vid kutiririka nk.)
  17. Mara tu kiotomatiki cha unganisho kimekamilika, thibitisha kuwa viunganisho vinafanana na ile ya picha ya muundo wa block ya TX. Utagundua mfumo wa ziada wa ILA ambao haujatajwa. Hii ni kwa utatuzi tu na haihitajiki kwa sasa. Inatumia Rudisha Programu ya 150M, kwa hivyo hiyo haihitajiki pia. Mahali popote unapoona "mende" ndogo ya kijani kwenye mabasi, hiyo ni kwa sababu ya ILA na inaweza kupuuzwa.
  18. Hatua ya mwisho ni kubofya kulia kwenye muundo wa vizuizi kwenye mti wa vyanzo vya mradi na uchague "Unda Kifuniko cha HDL." Ikiwa unapanga kuongeza mantiki kwenye kifuniko, itaandikwa kila wakati hii inachaguliwa.
  19. Tazama sehemu ya Usanidi wa Dereva wa VDMA kwa maelezo upande wa SDK.

Saa na Kuweka upya

Nimegundua kuwa mambo muhimu zaidi ya mradi wowote wa mpango unaowezekana wa mpango ni kuzingatia kwa uangalifu vikoa vya saa na ishara za kuweka upya. Ikiwa hizo zimesanidiwa vizuri una risasi nzuri ya kupata muundo wako ufanye kazi.

Saa ya Pixel na Wakati Umefungwa

Ili kudhibitisha kuwa ishara zingine zinafanya kazi, ni wazo nzuri kuzifunga ishara hizi kwa LEDs (saa, kuweka upya, kufuli n.k.). Ishara mbili ambazo niliona zifuatazo kufuatilia kwenye bodi ya kusambaza zilikuwa saa ya pikseli na ishara "iliyofungwa" kwenye AXI4-Stream ili kuzuia video, ambayo inakuambia kuwa wakati wa video umesawazishwa na mdhibiti wa muda na chanzo cha video data. Nimeongeza mantiki kwenye kifuniko cha kuzuia muundo ambacho hufuata saa ya pikseli kutumia ishara ya PixelClkLocked kwenye kizuizi cha dvi2rgb kama kuweka upya. Nimeambatanisha faili kama hdmi_wrapper.v hapa. Faili ya vizuizi pia imeambatanishwa hapa.

Hatua ya 2: Sanidi Zynq Logic inayoweza kusanidiwa kwa Mpokeaji

Sanidi Zynq Logic inayoweza kusanidiwa kwa Mpokeaji
Sanidi Zynq Logic inayoweza kusanidiwa kwa Mpokeaji
Sanidi Zynq Logic inayoweza kusanidiwa kwa Mpokeaji
Sanidi Zynq Logic inayoweza kusanidiwa kwa Mpokeaji
Sanidi Zynq Logic inayoweza kusanidiwa kwa Mpokeaji
Sanidi Zynq Logic inayoweza kusanidiwa kwa Mpokeaji

Kizuizi cha Mantiki kinachopangwa kwa mpokeaji ni rahisi. Tofauti muhimu, isipokuwa vizuizi vya pembejeo vya hdmi ni ukosefu wa saa ya pikseli iliyopatikana. Kwa sababu hiyo lazima tuzalishe yetu wenyewe kutoka kwa mchawi wa saa. Ubunifu huu unapaswa kufanywa katika mradi tofauti na mtoaji. Kwa madhumuni yetu mradi wa mpokeaji ulifuata bodi ya Zybo 7Z-20 wakati Transmitter ikifuata bodi ya Z7-10. FPGA kwenye bodi ni tofauti kwa hivyo… kuwa mwangalifu.

Hapa kuna hatua za kuunda Kizuizi cha Kubuni cha Mpokeaji:

  1. Ongeza vizuizi vifuatavyo kwa muundo wako:

    • Muda Mdhibiti
    • Mtiririko wa AXI4 kwa Video nje
    • RGB hadi DVI
    • AXI VDMA
    • AXI GPIO
    • Mfumo wa usindikaji
    • Mchawi wa Saa
    • Mara kwa mara (VDD imewekwa kuwa 1)
  2. Fuata muundo sawa wa kusanidi vizuizi hivi kama Transmitter. Picha za tofauti tofauti katika usanidi zimejumuishwa hapa. Wengine hubaki sawa na Mpitishaji.
  3. Sanidi VDMA kwa muundo huu kama kituo cha kusoma tu. Lemaza kituo cha kuandika.
  4. Mchawi wa saa anapaswa kusanidiwa kwa matokeo yafuatayo:

    • clk_out1: 75 MHz (saa ya pikseli)
    • clk_out2: 150 MHz (saa ya mkondo)
    • clk_out3: 50 MHz (saa ya axi-lite)
  5. Unganisha vizuizi vya video kama inavyoonekana kwenye picha ya muundo wa block ya RX.
  6. Kisha endesha kiotomatiki cha unganisho, ambacho kitaongeza AXI Interconnect, AXI SmartConnect na Vizuizi vya Mfumo upya na ujaribu kufanya unganisho linalofaa. Nenda polepole hapa kuhakikisha kuwa haifanyi unganisho zisizohitajika.
  7. Tengeneza saa ya HDMI TMDS na pini za data nje kwenye kizuizi cha rgb2dvi
  8. Hakuna haja ya ishara ya kuziba moto kwenye muundo huu.

Hatua ya 3: Sanidi Dereva wa VDMA

Sanidi Dereva wa VDMA
Sanidi Dereva wa VDMA

Usanidi wa vizuizi tofauti ambavyo vimeundwa kupitia kiolesura cha AXI-Lite ni bora kufanywa kwa kutumia miradi ya onyesho iliyojumuishwa na BSP kama kumbukumbu. Baada ya kusafirisha vifaa vya muundo na kuzindua SDK kutoka Vivado, utataka kuongeza kifurushi kipya cha msaada wa bodi na ujumuishe maktaba ya lwip202 kwenye dirisha la mipangilio ya BSP. Fungua faili ya system.mss kutoka BSP na utaona madereva ya pembeni yaliyopo kutoka kwa muundo wako wa block. Chaguo la "Ingiza Mifano" hukuruhusu kuagiza miradi ya onyesho ambayo hutumia vifaa hivi na kwa hivyo kukuonyesha jinsi ya kuisanidi kwenye programu ukitumia madereva ya Xilinx yaliyopo (angalia picha iliyoambatishwa).

Hii ndiyo njia iliyotumiwa kusanidi VDMA, Timer & Interrupt, na GPIO. Nambari ya chanzo ya kusambaza na kupokea imejumuishwa hapa. Tofauti ziko karibu katika main.c.

*** KUMBUKA: Kwa kuwa mfumo haufanyi kazi kikamilifu wakati wa kuandika mafunzo haya, nambari ya chanzo katika sehemu hii haijumuishi nambari ya mtandao isiyo na waya. Mende kadhaa zinahitaji kushughulikiwa kama matokeo ya kuchanganya miradi ya kusambaza / kupokea video na miradi ya kusambaza / kupokea mtandao. Kwa hivyo mafunzo haya huwashughulikia kando kwa wakati huu. ***

Kazi ya Kushughulikia Ushughulikiaji wa TX (IRQHandler)

Kazi hii inasoma nambari za kijivu zinazotolewa na VDMA zote za kusoma na kuandika kupitia vizuizi vya GPIO. Nambari za kijivu hubadilishwa kuwa desimali na hutumiwa kwa kuchagua eneo la kumbukumbu ya msingi wa fremu ya fremu ya sasa. Sura iliyonakiliwa ni fremu iliyotangulia kwa ile inayoandikiwa na VDMA (kwa mfano ikiwa VDMA inaandika kwa fremu 2, tunakili fremu 1; ikiwa tunaandika kwa fremu 0, tunazunguka na kusoma kutoka fremu 2).

Kazi hukamata tu kila fremu ya 6 ili kupunguza kiwango cha fremu hadi 10 Hz badala ya 60 Hz. Sehemu ya juu ya mtandao ni 300 Mbps. Kwa muafaka 10 kwa sekunde kipimo cha 221.2 Mbps kinahitajika.

Kutoa maoni / kutotoa maoni mistari miwili katika kazi hii itamruhusu mtumiaji kubadilisha kuwa modi ya passthru ya HDMI kwa madhumuni ya utatuzi / mtihani (nambari hiyo inasemwa kuonyesha mistari inayofaa). Hivi sasa inanakili fremu kwenye eneo la kumbukumbu linalotumiwa na nambari ya ethernet.

Kazi ya Kushughulikia Ushughulikiaji wa RX (IRQHandler)

Kazi hii ni sawa na kazi ya TX, lakini inanakili kutoka kwa bafa 2 FIFO inayotumiwa na ethernet kuandika data inayoingia. Nambari ya ethernet inaonyesha ni fremu ipi inayoandikiwa FIFO, data inakiliwa kutoka kwa fremu iliyo kinyume. Takwimu zinakiliwa kwenye fremu moja kwa moja nyuma ya ile inayosomwa na VDMA ili kuepuka kurarua.

Hatua ya 4: Sanidi Mtandao wa Nanorouter

Sanidi Mtandao wa Nanorouter
Sanidi Mtandao wa Nanorouter

Ili kuunda mtandao kwa kutumia nanorouters za TPlink, wape nguvu kwa kila mmoja na unganisha kwenye wifi SSID ya chaguo-msingi ya vifaa. Maelezo zaidi juu ya mipangilio ya usanidi wa kifaa hiki inaweza kupatikana kupitia mwongozo wa mtumiaji wa kifaa.

Sanidi moja ya vifaa kama mahali pa kufikia, hii itafanya kama unganisho la msingi kwa mtandao. Hakikisha kutaja mtandao na kuandika jina, na kulemaza DHCP (hatutaki router kusanidi anwani za IP kwa nguvu, tunataka mtoaji na kupokea bodi za Zybo kuweka anwani zao za IP wenyewe kuwa sawa). Baada ya kusanidi, hakikisha kifaa kinafungua upya na kuanzisha mtandao huu.

Sanidi kifaa kingine kama mteja, na hakikisha inaunganisha kwenye mtandao SSID uliyoweka na nanorouter ya kwanza. Kwa mara nyingine tena, hakikisha kuwa DHCP imezimwa kwa mteja.

Mara tu mteja anapomaliza na kuwasha upya, inapaswa kuunganishwa na kituo cha ufikiaji nanorouter (ikiwa haifanyi hivyo, kuna uwezekano wa suala katika usanidi wako wa moja ya vifaa). Utagundua kuwa taa ya LED kwenye mteja itakuwa imara mara tu ikiwa imeunganishwa na kituo cha ufikiaji.

Njia ya kufikia nanorouter LED itaendelea kuangaza wakati huu, hii ni sawa! Taa inayowaka inamaanisha kuwa haijaunganishwa na kifaa kingine kutoka bandari yake ya ethernet, na ikiunganishwa na Zybo iliyosanidiwa LED itabaki imara kuonyesha unganisho la mtandao uliofanikiwa.

Sasa kwa kuwa tuna usanidi wetu wa watangazaji, tuna mtandao wa waya ambao utaturuhusu kuwasiliana kupitia. Kumbuka muhimu ni kwamba njia yetu ya usanidi wa nanorouters (kama kituo cha ufikiaji na mteja) inatuwezesha kuwasiliana kutoka kwa bodi ya Zybo inayopeleka hadi bodi ya Zybo inayopokea kana kwamba hizo mbili zilikuwa zimeunganishwa na waya mmoja wa ethernet. Hii inafanya usanidi wa mtandao wetu kuwa mgumu sana, kwani njia mbadala ingejumuisha usanidi wa bodi za Zybo ili kuungana na seva wazi pamoja na kiunganishi kilichokusudiwa.

Mara vifaa vyote vinapowekwa, nanorouters zimesanidiwa na tayari kutekelezwa katika mtandao wako wa WIDI. Hakuna kuoanisha maalum kati ya watangazaji na bodi za Zybo, kwani sehemu ya ufikiaji au mteja atafanya kazi kwa kifaa cha kusambaza au kupokea.

Hatua ya 5: Sanidi Zynq Inasindika Mfumo wa Uwasilishaji wa data kupitia Ethernet

Sanidi Zynq Inasindika Mfumo wa Usambazaji wa Takwimu Kupitia Ethernet
Sanidi Zynq Inasindika Mfumo wa Usambazaji wa Takwimu Kupitia Ethernet
Sanidi Zynq Inasindika Mfumo wa Usambazaji wa Takwimu Kupitia Ethernet
Sanidi Zynq Inasindika Mfumo wa Usambazaji wa Takwimu Kupitia Ethernet

Ili kusambaza data ya HDMI kutoka bodi moja ya Zybo kwenda nyingine, lazima tujumuishe itifaki ya Ethernet na dereva wetu wa VDMA. Lengo letu hapa ni kutiririsha muafaka wa video binafsi kupitia pembeni ya Ethernet katika mfumo wa usindikaji, kwa kiwango kilichowekwa ambacho ni sawa na upelekaji wa mtandao wetu. Kwa mradi wetu, tulitumia TCP iliyotolewa na API ya chuma isiyo na chuma. Kwa kuwa washiriki wote wa mradi hawana uzoefu na huduma za mitandao, uchaguzi huu ulifanywa bila kutambua kikamilifu athari na vikwazo vinavyohusika na TCP. Shida kubwa ya utekelezaji huu ilikuwa upeo wa kipimo data na ukweli kwamba haujatengenezwa kwa kusudi la kueneza idadi kubwa ya data. Suluhisho mbadala za kuchukua nafasi ya TCP na kuboresha tbe katika mradi huu zitajadiliwa baadaye.

Maelezo mafupi ya TCP na LwIP: Takwimu zinatumwa juu ya mtandao kwenye pakiti za saizi tcp_mss (ukubwa wa sehemu ya kiwango cha juu cha TCP), ambayo kwa ujumla ni ka 1460. Kupigia simu tcp_write itachukua data inayotajwa na pointer na kusanidi pbufs (pakiti za bafa) kushikilia data na kutoa muundo wa shughuli za TCP. Kiwango cha juu cha data ambacho kinaweza kuwekwa kwenye foleni kwa wakati mmoja imewekwa kama tcp_snd_buf (nafasi ya bafa ya mtumaji wa TCP). Kwa kuwa parameter hii ni nambari 16 kidogo, tumepunguzwa kwa saizi ya bafa ya kutuma ya baiti 59695 (kuna utaftaji unaohitajika katika bafa ya kutuma). Mara tu data ilipowekwa foleni, tcp_output inaitwa kuanza kusambaza data. Kabla ya kutuma sehemu inayofuata ya data, ni muhimu kwamba pakiti zote zilizopita zimepitishwa kwa mafanikio. Utaratibu huu unafanywa kwa kutumia kazi ya recv_callback, kwani hii ndio kazi ambayo inaitwa wakati utambuzi unaonekana kutoka kwa mpokeaji.

Kutumia miradi ya mfano katika Vivado SDK inasaidia sana kujifunza jinsi operesheni ya LwIP TCP, na ni hatua nzuri ya kuanza mradi mpya.

Utaratibu wa kifaa cha kupitisha WiDi ni kama ifuatavyo:

  1. Anzisha mtandao wa TCP ukitumia simu za dereva wa LWIP zisizo na chuma.
  2. Bainisha kazi zozote za kupiga simu muhimu kwa shughuli za mtandao.
  3. Unganisha kwa mpokeaji wa WiDi kwa kuunganisha kwa anwani ya IP na bandari (usanidi wetu: Mpokeaji IP ni 192.168.0.9, unganisha kwenye bandari ya 7).
  4. Wakati kipima muda cha dereva wa VDMA kitakapoisha, ingiza TX ISR.
  5. Tambua bafa ya fremu ya sasa ya kufikia kulingana na nambari ya kijivu ya VDMA
  6. Foleni sehemu ya kwanza ya data katika bafa ya kutuma TCP
  7. Pata data, na sasisha vigeuzi vya mitaa ili kufuatilia ni data ngapi imetumwa ya fremu ya sasa.
  8. Unapofikia upigaji simu uliopokelewa (simu inayofanya kazi baada ya mpitishaji kupata utambuzi wa urejeshwaji wa data), foleni sehemu inayofuata ya data.
  9. Rudia hatua 7 na 8 mpaka fremu nzima itumwe.
  10. Rudi katika hali ya uvivu kusubiri kukatiza kipima muda ili kuonyesha fremu mpya iko tayari (Rudi hatua ya 4).

Hakikisha kusanidi mipangilio ya bodi ya msaada wa bodi kama inavyoonekana kwenye picha hapo juu. Thamani zote ni chaguo-msingi isipokuwa tcp_snd_buf, tcp_pueue_ooseq, mem_size, memp_n_tcp_seg. Pia kumbuka kuwa utatuzi wa kina unaweza kupatikana kwa kubadilisha vigezo vya BSP kwa kikundi cha chaguzi za utatuzi.

Hatua ya 6: Sanidi Zynq Inasindika Mfumo wa Upokeaji wa Takwimu Kupitia Ethernet

Bodi ya maendeleo ya Zybo ambayo itafanya kama mpokeaji wa waya itafanya kazi sawa na kifaa kinachosambaza. Mipangilio ya kifurushi cha msaada wa bodi ya LwIP itafanana na zile zilizo katika hatua ya awali.

Kifaa kitachukua pakiti zilizo na sehemu za fremu ya video kutoka kwa nanorouter, na itanakili data ya fremu ya video kwenye nafasi ya bafa ya fremu tatu ya VDMA inayopokea. Ili kuepusha kuandika data yoyote, bafa ya data mara mbili (tutataja kama bafa ya mtandao) hutumiwa wakati wa kukusanya data kutoka kwa nanorouter, ili trafiki ya mtandao iweze kuendelea kutiririka wakati fremu kamili ya video iliyokuwa ikinakiliwa kwenye Bafa ya VDMA.

Utaratibu wa kifaa cha kupokea WiDi inahitaji majukumu mawili, ambayo moja ni kupokea data ya ethernet, na nyingine inakili muafaka wa video kutoka kwa bafa ya mtandao hadi bafa ya fremu tatu ya VDMA.

Kazi ya upokeaji wa Ethernet:

  1. Anzisha mtandao wa TCP ukitumia simu za kazi za dereva za LWIP zisizo na chuma (kuanzisha na anwani ya IP ambayo mtumaji ataunganisha, 192.168.0.9 katika yetu)
  2. Bainisha kazi zozote za kupiga simu muhimu kwa shughuli za mtandao.
  3. Juu ya pakiti ya ethernet iliyopokea, nakala data ya pakiti kwenye bafa ya mtandao wa sasa, ongeza data iliyokusanywa ya sasa.
  4. Ikiwa pakiti imejaza bafa ya fremu ya mtandao, endelea kwa hatua 5 na 6. Vinginevyo, rudi nyuma kwa hatua ya 3 kwa kazi hii.
  5. ishara kwamba kazi ya bafa ya fremu tatu ya VDMA inapaswa kunakili kutoka kwa bafa mpya ya mtandao iliyomalizika.
  6. Badilisha kwa bafa nyingine ya mtandao na uendelee kukusanya data kupitia ethernet.
  7. Bweteka hadi pakiti mpya ya ethernet ipokee (hatua ya 3).

Nakili bafa ya mtandao kwa bafa ya fremu tatu ya VDMA:

  1. Wakati kipima muda cha dereva wa VDMA kitakapoisha, ingiza RX ISR.
  2. Tambua bafa ya fremu ya sasa ya kufikia kulingana na nambari ya kijivu ya VDMA.
  3. Tambua bafa ya mtandao itakayonakiliwa kwa bafa ya VDMA, na nakili data hiyo

Hatua ya 7: Unganisha Bodi zako za Zybo kwenye Chanzo cha HDMI na Kuzama kwa HDMI

Unganisha Bodi Zybo Zako kwenye Chanzo cha HDMI na Kuzama kwa HDMI
Unganisha Bodi Zybo Zako kwenye Chanzo cha HDMI na Kuzama kwa HDMI

Sasa unganisha nyaya za hdmi kwa mpokeaji na mpitishaji, panga FPGA na uendeshe mfumo wa usindikaji. Kiwango cha fremu kinaweza kuwa polepole sana, kwa sababu ya upeo mkubwa katika operesheni ya LwIP na upeo mdogo wa kipimo data. Ikiwa kuna maswala yoyote, unganisha kupitia UART na ujaribu kutambua maonyo au makosa yoyote.

Hatua ya 8: Mawazo Mbadala ya Uboreshaji

Mawazo Mbadala ya Uboreshaji
Mawazo Mbadala ya Uboreshaji

Suala kubwa kwa mradi huu lilikuwa idadi ya data inayohitajika kutuma juu ya wifi. Hii ilitarajiwa, hata hivyo tulidharau athari ambayo ingekuwa nayo na kusababisha picha nyingi kupasuka kwenye skrini badala ya chakula cha video. Kuna njia kadhaa za kuboresha mradi huu:

  • Ukandamizaji wa video ya wakati halisi. Kubana fremu ya kulisha video inayoingia kwa fremu itapunguza sana idadi ya data inayohitajika kutumwa juu ya mtandao. Kwa kweli hii ingefanywa kwa vifaa (ambayo sio kazi rahisi), au inaweza kufanywa katika programu kwa kutumia msingi mwingine wa ARM kutekeleza algorithms ya kukandamiza (hii itahitaji uchambuzi zaidi ili kuhakikisha muda unatumika). Kuna chanzo wazi cha vifaa vya kukandamiza video za wakati halisi ambazo tumepata kwenye wavuti, lakini wengi ni IP.
  • Utekelezaji wa mkondo wa Ethernet katika vifaa, badala ya programu. Kulikuwa na tani ya kichwa kwa sababu ya ukosefu wa nafasi inayopatikana kwa foleni ya data inayotoka kwa mtoaji, kwa sababu ya kiwango cha juu cha saizi ya sehemu. Mchakato mzuri zaidi ni kutumia AXI Ethernet IP na bafa ya FIFO au DMA kulisha data ndani yake. Hii itapunguza mzigo wa ziada kutoka LwIP TCP na kuruhusu mtiririko zaidi wa data.

Hatua ya 9: Upatikanaji

Bidhaa inayotokana na mradi huu wa WiDi inapaswa kuwa jozi kamili ya vifaa ambavyo mtumiaji angeweza kuungana na chanzo chochote cha HDMI na kisha kuzamisha chakula cha video kwenye onyesho na uwezo wa HDMI bila waya. Vifaa vilikuwa na Zynq-7000 SoC iliyopatikana kwenye bodi ya kumbukumbu ya Zybo na kuingiza vifaa vya mtandao vinavyopatikana katika njia za TP-Link nano-routers. Kwa kweli, mtumiaji angeweza kudhibiti moduli ya kupitisha kutoka eneo lisilo sawa ndani ya mfumo wa uendeshaji uliolengwa, bila hitaji kubwa la uwezo mkubwa wa kiufundi.

Usalama na Uunganishaji

Vifaa vinapaswa pia kuingiza Usalama wa Tabaka la Usafiri (TLS) na uwe na uwezo mdogo wa kuunganisha kiotomatiki, zote kwa madhumuni ya faragha. Ni nia ya wabunifu kufanya unganisho na onyesho juu ya kiunganishi kisichotumia waya kuwa hatua ya makusudi kwa niaba ya mtumiaji ili kuepusha kutangaza vitu nyeti kimakosa.

Hali ya Sasa

Hadi wakati huu, hali ya mradi bado ni kazi inayoendelea. Ili mtumiaji wa sasa wa ncha ya mwisho anufaike na mafunzo haya, lazima awe na uelewa mzuri wa kiufundi juu ya muundo wa mfumo uliowekwa na anapaswa kuwa na mazoea na vifaa vinavyoweza kusanidiwa na programu iliyoingia inayofanya kazi pamoja.

Takwimu zinazotumwa juu ya mtandao hazijasimbwa kwa wakati huu na inadhaniwa kuwa ni maambukizi mabichi ya pakiti za TCP / IP.

Mradi wa msingi wa video ulijaribiwa kwa mafanikio kwa kusambaza na kupokea. Kwa upande mwingine, unganisho la waya kati ya bodi mbili za zybo lilianzishwa na data ya fremu ya jaribio ilitumwa kwa mafanikio. Bado ni muhimu, hata hivyo, kuchanganya nambari ya mtandao kwa kila mradi wa msingi wa video na kujaribu usafirishaji wa muafaka halisi wa video.

Ilipendekeza: