Mundarija:

WIDI - Zybo (Zynq Development Board) yordamida simsiz HDMI: 9 qadam (rasmlar bilan)
WIDI - Zybo (Zynq Development Board) yordamida simsiz HDMI: 9 qadam (rasmlar bilan)

Video: WIDI - Zybo (Zynq Development Board) yordamida simsiz HDMI: 9 qadam (rasmlar bilan)

Video: WIDI - Zybo (Zynq Development Board) yordamida simsiz HDMI: 9 qadam (rasmlar bilan)
Video: Zybo Z7 Introduction 2024, Noyabr
Anonim
WIDI - Zybo yordamida simsiz HDMI (Zynq Development Board)
WIDI - Zybo yordamida simsiz HDMI (Zynq Development Board)
WIDI - Zybo yordamida simsiz HDMI (Zynq Development Board)
WIDI - Zybo yordamida simsiz HDMI (Zynq Development Board)

Siz televizorni kompyuter yoki noutbukga tashqi monitor sifatida ulashni xohlaganmisiz, lekin bu bezovta qiluvchi simlarning hammasini to'sib qo'yishni xohlamaganmisiz? Agar shunday bo'lsa, bu darslik faqat siz uchun! Bu maqsadga erishadigan ba'zi mahsulotlar bo'lsa -da, DIY loyihasi ancha qoniqarli va potentsial arzonroq.

Bu kontseptsiya chromecast kabi mahsulotlardan farq qiladi, chunki u oqim qurilmasi emas, balki monitorga ulanadigan HDMI kabeli o'rnini egallashi kerak.

Bizning loyihamiz Kaliforniya shtat politexnika universiteti, San -Luis Obispo real vaqt rejimida operatsion tizimlar kursining yakuniy loyihasi sifatida yaratilgan.

Loyihaning maqsadi-HDMI uzatuvchi qurilmasi (kompyuter, blu-ray va boshqalar) o'rtasida HDMI qabul qilish qurilmasi (ish stoli monitor, proektor, televizor va boshqalar) o'rtasida simsiz aloqa interfeysi vazifasini bajarish uchun ikkita Digilent Zybo platasidan foydalanish.

Bir Digilent Zybo HDMI orqali uzatuvchi qurilmaga, ikkinchisi esa HDMI orqali qabul qiluvchi qurilmaga ulanadi.

Simsiz aloqa uy yo'riqchisi yoki boshqa bunday qurilma orqali uzatilmasdan, uzatuvchi va qabul qiluvchiga mo'ljallangan simsiz mahalliy tarmoq yordamida amalga oshiriladi. Ushbu loyiha uchun ishlatiladigan simsiz modul tplink wr802n nanorouter bo'lib, ulardan biri tarmoqni o'rnatish uchun kirish nuqtasi, ikkinchisi esa tarmoqqa ulanish uchun mijoz sifatida ishlaydi. Har bir nanorouter Ethernet kabeli orqali Zybo kartasiga ulanadi. Ushbu marshrutizatorlarga ulanganida, qurilmalar xuddi bitta chekilgan kabel orqali ulanganidek TCP orqali aloqa o'rnatadilar (ulanish uchun zarur bo'lgan yagona konfiguratsiya - bu mijozning IP -manzili).

Loyihaning maqsadi 1080x720 video oqimini 60 Gts tezlashtirish bo'lsa -da, simsiz tarmoqdagi o'tkazish qobiliyati cheklanganligi va yuborish uchun kerakli ma'lumotlarni qisqartirish uchun real vaqtda video siqish yo'qligi tufayli bunga erishib bo'lmadi. Buning o'rniga, ushbu loyiha ushbu maqsadga erishish uchun kelajakda rivojlanish uchun asos bo'lib xizmat qiladi, chunki u HDMI ma'lumotlarini maqsadli ravishda to'g'ri oqimlash uchun kadr tezligida cheklovlarni keskin cheklab qo'ydi.

Loyiha talablari:

2x Digilent Zybo ishlab chiqish platalari (kamida bitta HDMI porti bo'lishi kerak)

2x HDMI kabellari

2x microusb kabellari (ishlab chiqish uchun Zybo -ni kompyuterga ulash uchun)

2x tplink wr802n nanorouterlari (shu jumladan, 2x microusb va devor rozetkasi quvvat adapterlari)

2x chekilgan kabellar

*** Eslatma: Ushbu qo'llanma Vivado dizayn to'plami bilan tanishishni va yangi loyiha va blok dizaynini yaratish tajribasini o'z ichiga oladi.

1 -qadam: Transmitter uchun Zynq dasturlashtiriladigan mantiqni sozlang

Transmitter uchun Zynq dasturlashtiriladigan mantiqni sozlang
Transmitter uchun Zynq dasturlashtiriladigan mantiqni sozlang
Transmitter uchun Zynq dasturlashtiriladigan mantiqni sozlang
Transmitter uchun Zynq dasturlashtiriladigan mantiqni sozlang
Transmitter uchun Zynq dasturlashtiriladigan mantiqni sozlang
Transmitter uchun Zynq dasturlashtiriladigan mantiqni sozlang

Transmitterning dasturlashtiriladigan mantig'ini ishlab chiqishga bizning yondashuvimiz ikkita video to'g'ridan-to'g'ri xotiraga kirish (VDMA) bloklari yordamida bitta yozish va o'qish uchun kompyuterdan hdmi-hdmi-ga o'tish edi.

Ikkalasi ham erkin ishlaydigan, 3 ta kadrli bufer rejimi uchun tanlangan (0-1-2). Video yadrosi sekundiga 60 kadr uchun optimallashtirilganligi sababli, bu VDMA har 16,67 msda yangi tartibda yozadi yoki o'qiydi: 0, 1, 2, 0, 1, 2, 0, 1, 2. Har bir freym uchun DDR xotira joylari ikkita VDMA uchun farq qiladi, chunki ular endi bir -biri bilan sinxronlanmaydi. Ma'lumotlar harakatini ikkita xotira joylari o'rtasida sinxronlashtirish uchun 60 Gts ga sozlangan apparat taymeri (TTC1) ishlatiladi.

Yuqoridagi rasmda 3 ta ramka ko'rsatilgan, ularning o'lchamlari va har biri uchun zarur bo'lgan xotira hajmi (ramkaning o'ng tomonida). Agar biz VDMA yozishni ushbu xotira joylariga tayinlasak, o'qilgan VDMA xotira joylarini ushbu to'plamdan tashqari, masalan, 0x0B000000 dan boshlab belgilashimiz mumkin. Har bir kadr 1280*720 piksel va har bir piksel 8 bit qizil, yashil va ko'kdan iborat bo'lib, jami 24 bit. Bu shuni anglatadiki, ramka 1280*720*3 baytdan (2,76 MB) iborat.

VDMA drayverini sozlashda tasvirlangan IRQ taymerining ichida ikkita VMDA xotira joylari o'rtasida ma'lumotlarni nusxalash amalga oshiriladi. VDMA joriy ramkaga ko'rsatma beradi yoki undan o'qiladi. Ramka ma'lum bir kulrang kod bilan ifodalanadi, u dasturiy ta'minotga aylanadi. 3 kadrli tampon konfiguratsiyasining kulrang kod ta'riflarini AXI VDMA Mahsulot qo'llanmasida C ilovasida topish mumkin.

Bu bizga yozilayotgan tarkibni xotiraga nusxa ko'chirish imkonini beradi, hozircha yozilayotgan kadrdan o'qimay turib.

*** E'tibor bering, simsiz tarmoq orqali ma'lumotlarni yuborishda o'qilgan VDMA ishlatilmaydi. Faqat maqsad VMDA yozish xotirasidan nusxa ko'chirishning to'g'ri ishlashini tekshirish. VMDA o'qilishini o'chirib qo'yish kerak.

Transmitterlar dizayn blokini yaratish bo'yicha qadamlar:

  1. Yangi loyihani yaratishda loyihaga chip yoki taxta tayinlash maqsadga muvofiqdir. Bu havola Vivado katalogiga yangi taxta fayllarini qo'shish va to'g'ri taxtani loyihangiz bilan bog'lashni tasvirlaydi. Bu protsessing tizimi blokini qo'shganda va apparatdan dasturiy ta'minotga o'tishda (SDK tomonida) foydali bo'ladi.
  2. Quyidagi bloklarni qo'shing:

    • dvi2rgb
    • Axi4-oqimga video
    • Vaqtni boshqaruvchi
    • axi4-stream-vid chiqish
    • rgb2dvi
    • AXI VDMA x2
    • AXI GPIO x2
    • Soat ustasi
    • Doimiy
    • Zynq ishlov berish tizimi
  3. Qayta ishlash tizimini qo'shganda, yuqori yashil rangdagi "Blokni avtomatlashtirishni ishga tushirish" tugmachasini bosing va "Kengash sozlamalarini qo'llash" opsiyasi tanlanganligiga ishonch hosil qiling. Qolgan hamma narsani asl holatiga qoldiring.
  4. Har bir blok konfiguratsiya oynasining rasmlarini yuqoridagi rasmlarda topish mumkin. Agar siz ma'lum bir oyna uchun rasm ko'rmasangiz, uni sukut bo'yicha qoldiring.
  5. Zynq Processing tizimini sozlashni boshlang:

    • PS-PL konfiguratsiyasida AXI xavfsiz bo'lmagan GP Master AXI-ni yoqing, M AXI GP0 interfeysini yoqing.
    • PS-PL konfiguratsiyasida HP Slave AXI interfeysi, HP0 va HP1 ni yoqing
    • MIO konfiguratsiyasida ENET0 I/U tashqi qurilmalari ostida, so'ngra Ilova protsessor birligida Timer0 ni yoqilganligiga ishonch hosil qiling.
    • PL Configuration PL Fabric Clocks da FCLK_CLK0 ni yoqing va 100 MGts ga sozlang.
    • OK ni bosing
  6. "Ishga tushishni avtomatlashtirishni ishga tushirish" tugmachasini bosishdan oldin, yuqoridagi TX blokining dizayn rasmida ko'rinib turganidek, video bloklarni ulang. Siz konstantani VDD deb o'zgartirib, qiymatini 1 ga o'rnatishni xohlaysiz. Video bloklarini shunga mos ravishda ulang.
  7. HDMI TMDS soati va ma'lumotlar pinlarini rgb2dvi va dvi2rgb bloklariga tashqi qilib qo'ying.
  8. Qattiq diskni aniqlash signali (HPD) uchun kirish va chiqish portini yarating va ularni bir -biriga ulang, ular cheklovlar faylida ko'rsatilgan.
  9. Pikselli soat cheklovlar faylida yaratilgan TMDS_Clk_p -dan tiklanadi. Bu 720p piksellar soniga muvofiq 74,25 MGts bo'ladi. Pikselli soatni (dvi2rgb blokidan) quyidagi pinlarga ulash muhim:

    • vid_io_in_clk (vid axi oqim blokiga)
    • vid_io_out_clk (axi oqimini blokdan chiqarish)
    • clk (Vaqtni boshqaruvchi)
    • PixelClk (rgb2dvi)
  10. *** Eslatma: Hozirgi vaqtda pikselli tiklanishni faollashtirish uchun HDMI rx va tx ulagichlari faol manba/lavaboga ulangan bo'lishi kerak. Buning bir yo'li - video rx va tx bloklarini turli soatlar domenlariga ajratish (boshqacha aytganda, tx blokiga o'tish uchun yangi 74,25 MGts soatni yaratish). ***
  11. Keyin soat ustasini sozlang, shunda sizda 100 MGtsli kirish (global bufer manbai) va 3 ta chiqish soatlari @ 50 MGts (AXI-Lite soati), 150 MGts (AXI4-Oqimli soat), 200 MGts (dvi2rgb RefClk pin) mavjud.
  12. FCLK_CLK0 ishlov berish tizimining pinini soat ustasi kirishiga ulang
  13. Bu vaqtda dizayn oynasining yuqori qismidagi yashil chiziqdan "Ulanish avtomatizatsiyasini ishga tushirish" tugmasini bosing. Buni bir vaqtning o'zida bitta blokda bajarish va yuqoridagi TX blokli dizayn tasviriga amal qilish yaxshi bo'ladi.
  14. Asbob AXI-Lite avtobusini (VDMA va GPIO) ishlatadigan bloklar uchun asosiy/qul ulanish vazifasini bajaradigan AXI Interconnect-ni qo'shishga harakat qiladi.
  15. Bundan tashqari, VDMA (Stream to Memory Map va boshqalar) tomonidan ishlatiladigan AXI4-Stream va High Performance protsessor interfeyslari uchun asosiy/qul ulanish vazifasini bajaruvchi AXI SmartConnect qo'shiladi.
  16. Asbob, shuningdek, protsessor tizimini qayta o'rnatishni qo'shadi. Bu faqat VDMA, GPIO va protsessor bilan bog'liq bloklarga ulanganligiga ishonch hosil qiling. Uni hech qanday video bloklarga ulamang (masalan, dvi2rgb, vaqtni nazorat qilish moslamasi, oqim uchun vid va boshqalar).
  17. Ulanishni avtomatlashtirish tugallangach, ulanishlar TX blokli dizayn tasviriga mos kelishini tekshiring. Siz aytilmagan qo'shimcha tizim ILA blokini ko'rasiz. Bu faqat disk raskadrovka uchun va hozircha kerak emas. U 150M protsessorni tiklashdan foydalanadi, shuning uchun ham bunga hojat yo'q. Avtobuslarda kichik yashil "xatolar" ni ko'rishingiz mumkin, bu ILA tufayli va e'tiborga olinmaydi.
  18. Oxirgi qadam - loyiha manbalari daraxtidagi blok dizaynini sichqonchaning o'ng tugmasi bilan bosish va "HDL o'rash vositasini yaratish" -ni tanlash. Agar siz o'rashga mantiq qo'shishni rejalashtirmoqchi bo'lsangiz, bu har safar tanlanganida uning ustiga yoziladi.
  19. SDK tomonidagi tafsilotlar uchun VDMA drayverini sozlash bo'limiga qarang.

Soatlar va qayta o'rnatish

Men aniqladimki, har qanday dasturlashtiriladigan mantiq loyihasining eng muhim jihatlari - soat domenlarini sinchkovlik bilan ko'rib chiqish va signallarni qayta o'rnatish. Agar ular to'g'ri tuzilgan bo'lsa, siz o'zingizning dizayningizni ishga solasiz.

Pikselli soat va vaqt qulflangan

Ba'zi signallarning faolligini tekshirish uchun ularni LEDlarga (soatlar, sozlamalar, qulflar va boshqalar) bog'lab qo'yish yaxshidir. Menga uzatuvchi platada kuzatishni foydali deb topgan ikkita signal-bu pikselli soat va AXI4-Stream to video out blokidagi "qulflangan" signal. ma'lumotlar. Men dvi2rgb blokidagi PixelClkLocked signalidan foydalanib, piksellar sonini kuzatadigan dizayn blokining o'rash qutisiga bir oz mantiq qo'shdim. Men bu erda hdmi_wrapper.v faylini biriktirdim. Cheklovlar fayli ham shu erda biriktirilgan.

2 -qadam: Qabul qilgich uchun Zynq dasturlashtiriladigan mantig'ini sozlang

Qabul qiluvchilar uchun Zynq dasturlashtiriladigan mantig'ini sozlang
Qabul qiluvchilar uchun Zynq dasturlashtiriladigan mantig'ini sozlang
Qabul qiluvchilar uchun Zynq dasturlashtiriladigan mantig'ini sozlang
Qabul qiluvchilar uchun Zynq dasturlashtiriladigan mantig'ini sozlang
Qabul qiluvchilar uchun Zynq dasturlashtiriladigan mantig'ini sozlang
Qabul qiluvchilar uchun Zynq dasturlashtiriladigan mantig'ini sozlang

Qabul qiluvchilar uchun dasturlashtiriladigan mantiq bloki oddiyroq. Yo'qolgan hdmi kirish bloklaridan tashqari asosiy farq - tiklangan pikselli soatning yo'qligi. Shuning uchun biz o'zimizni soat sehrgaridan yaratishimiz kerak. Ushbu dizayn transmitterdan alohida loyihada amalga oshirilishi kerak. Bizning maqsadimiz uchun qabul qiluvchi loyiha Zybo 7Z-20 platasiga, Transmitter esa Z7-10 kartasiga amal qilgan. Plitalardagi FPGA -lar boshqacha, shuning uchun ehtiyot bo'ling.

Qabul qiluvchilarni dizayn blokini yaratish bosqichlari:

  1. Dizayningizga quyidagi ip -bloklarni qo'shing:

    • Vaqtni boshqaruvchi
    • AXI4-video oqimiga oqim
    • RGB dan DVIgacha
    • AXI VDMA
    • AXI GPIO
    • Qayta ishlash tizimi
    • Soat ustasi
    • Doimiy (VDD 1 ga o'rnatilgan)
  2. Transmitter kabi ushbu bloklarni sozlash uchun xuddi shu naqshga amal qiling. Bu erda konfiguratsiyadagi sezilarli farqlar tasvirlari joylashtirilgan. Qolganlari Transmitter bilan bir xil.
  3. Ushbu dizayn uchun VDMA -ni faqat o'qiladigan kanal sifatida sozlang. Yozish kanalini o'chirib qo'ying.
  4. Soat ustasi quyidagi chiqishlar uchun tuzilgan bo'lishi kerak:

    • clk_out1: 75 MGts (pikselli soat)
    • clk_out2: 150 MGts (oqim vaqti)
    • clk_out3: 50 MGts (aksiyali soat)
  5. Video bloklarini RX bloki dizayn rasmida ko'rsatilgandek ulang.
  6. Keyin ulanish avtomatizatsiyasini ishga tushiring, bu AXI Interconnect, AXI SmartConnect va System Reset bloklarini qo'shadi va tegishli ulanishlarni o'rnatishga harakat qiladi. Bu erda keraksiz ulanishlar yo'qligiga ishonch hosil qilish uchun asta -sekin boring.
  7. HDMI TMDS soati va ma'lumotlar pinlarini rgb2dvi blokiga tashqi qilib qo'ying
  8. Ushbu dizaynda issiq vilka signaliga ehtiyoj yo'q.

3 -qadam: VDMA drayverini o'rnating

VDMA haydovchi o'rnatish
VDMA haydovchi o'rnatish

AXI-Lite interfeysi orqali konfiguratsiya qilingan turli xil bloklarni sozlash BSP-ga mos yozuvlar sifatida kiritilgan demo-loyihalar yordamida amalga oshiriladi. Dizayn uskunalarini eksport qilgandan va Vivadodan SDK ishga tushirilgandan so'ng, siz BSP sozlamalari oynasida lwip202 kutubxonasini o'z ichiga oladigan yangi kartani qo'llab -quvvatlash paketini qo'shishni xohlaysiz. System.mss faylini BSP -dan oching, shunda siz blok dizayningizda mavjud bo'lgan tashqi drayverlarni ko'rasiz. "Misollarni import qilish" opsiyasi sizga ushbu tashqi qurilmalardan foydalanadigan demo -loyihalarni import qilish va ularni Xilinx drayverlari yordamida dasturiy ta'minotda qanday sozlash kerakligini ko'rsatish imkonini beradi (ilova qilingan rasmga qarang).

Bu VDMA, Timer & Interrupt va GPIO -ni sozlashda ishlatilgan usul edi. Bu erda ham uzatish, ham qabul qilish uchun manba kodi kiritilgan. Farqlar deyarli faqat main.c. da.

*** OGOHLANTIRISH: ushbu qo'llanma yozilayotganda tizim to'liq ishlamayotganligi sababli, ushbu bo'limdagi manba kodi simsiz tarmoq kodini o'z ichiga olmaydi. Video yadroli uzatish/qabul qilish loyihalarini tarmoq uzatish/qabul qilish loyihalari bilan birlashtirish natijasida bir nechta xatolarni bartaraf etish kerak. Shuning uchun, bu darslik hozircha ularni alohida ko'rib chiqadi.

TX Interrupt Handler funktsiyasi (IRQHandler)

Bu funksiya GPIO bloklari orqali VDMA -ni o'qish va yozish bilan ta'minlangan kulrang kodlarni o'qiydi. Kulrang kodlar kasrli kasrga aylantiriladi va joriy ramkaning xotira bazasini tanlashda ishlatiladi. Nusxalangan ramka - VDMA yozgan oldingi ramka (masalan, agar VDMA 2 -kadrga yozsa, biz 1 -ramkani nusxa ko'chiramiz, 0 -kadrga yozsak, biz 2 -kadrdan o'raymiz va o'qiymiz).

Funktsiya kadr tezligini 60 Gts o'rniga 10 Gtsgacha kamaytirish uchun har 6 -kadrni oladi. Tarmoqning yuqori chegarasi 300 Mbit / s. Sekundiga 10 kadrda tarmoqli kengligi 221,2 Mbit / s bo'lishi kerak.

Bu funktsiyadagi ikkita satrga izoh berish/izoh bermaslik, foydalanuvchini disk raskadrovka/test maqsadida HDMI passthru rejimiga o'tishga imkon beradi (kod tegishli satrlarni ko'rsatish uchun izohlanadi). Hozirda u ramkani chekilgan kod yordamida ishlatiladigan xotira joyiga ko'chiradi.

RX Interrupt Handler funktsiyasi (IRQHandler)

Bu funksiya TX funktsiyasiga juda o'xshaydi, lekin u kiruvchi ma'lumotlarni yozish uchun chekilgan tarmoq tomonidan ishlatiladigan 2 ta buferli FIFOdan nusxa ko'chiradi. Ethernet kodi FIFO -ga qaysi ramka yozilishini ko'rsatadi, ma'lumotlar qarama -qarshi freymdan ko'chiriladi. Ma'lumotlar yirtilmasligi uchun VDMA o'qiyotgan ramkaning orqasida joylashgan kadrga ko'chiriladi.

4 -qadam: Nanorouter tarmog'ini sozlash

Nanorouter tarmog'ini sozlash
Nanorouter tarmog'ini sozlash

TPlink nanorouterlari yordamida tarmoq yaratish uchun ularni alohida yoqing va qurilmalar uchun standart Wi -Fi SSID -ga ulaning. Qurilmaning konfiguratsiya sozlamalari haqida qo'shimcha ma'lumotni qurilmaning foydalanuvchi qo'llanmasidan olishingiz mumkin.

Qurilmalardan birini kirish nuqtasi sifatida o'rnating, bu tarmoq uchun asosiy ulanish vazifasini bajaradi. Tarmoq nomini belgilang va DHCP -ni o'chirib qo'ying (biz yo'riqnoma IP -manzillarini dinamik ravishda sozlashni xohlamaymiz, biz uzatuvchi va qabul qiluvchi Zybo platalari o'z IP -manzillarini mos kelishi uchun sozlashlarini xohlaymiz). Konfiguratsiyadan so'ng, qurilmaning qayta ishga tushirilishiga va ushbu tarmoqning o'rnatilishiga ishonch hosil qiling.

Boshqa qurilmani mijoz sifatida o'rnating va u birinchi nanorouter bilan o'rnatgan SSID tarmog'iga ulanganligiga ishonch hosil qiling. Yana bir bor, mijoz uchun DHCP o'chirilganligiga ishonch hosil qiling.

Mijoz tugatib, qayta ishga tushirilgandan so'ng, u kirish nuqtasi nanorouterga ulanishi kerak (agar bo'lmasa, qurilmalardan birining konfiguratsiyasida muammo bo'lishi mumkin). Kirish nuqtasiga ulangandan so'ng, mijozning LED chirog'i mustahkam bo'ladi.

Kirish nuqtasi nanorouter LED bu nuqtada miltillashda davom etishi mumkin, bu yaxshi! Yonib -yonib turadigan chiroq, u boshqa qurilmaga chekilgan portidan ulanmaganligini bildiradi va Zybo -ga ulangandan so'ng, LED doimiy bo'lib qoladi, bu tarmoq ulanishining muvaffaqiyatli bo'lishini ko'rsatadi.

Endi biz nanorouterlarni o'rnatdik, bizda simsiz tarmoq bor, u orqali muloqot qilishimiz mumkin. Muhim eslatma shundaki, bizning nanorouterlar uchun konfiguratsiya usuli (kirish nuqtasi va mijoz sifatida) bizga uzatuvchi Zybo platasidan qabul qiluvchi Zybo platasiga aloqa o'rnatishga imkon beradi, xuddi ikkalasi bitta chekilgan sim bilan bog'langan. Bu bizning tarmoqni sozlashni unchalik qiyinlashtirmaydi, chunki alternativa, ehtimol, Zybo platalarini serverga aniq ulanishi va konfiguratsiyani o'z ichiga oladi.

Ikkala qurilma ham o'rnatilgandan so'ng, nanoto'lovchilar konfiguratsiya qilinadi va sizning WIDI tarmog'ingizga kiritishga tayyor bo'ladi. Nanorouterlar va Zybo platalari o'rtasida aniq juftlik yo'q, chunki kirish nuqtasi yoki mijoz uzatuvchi yoki qabul qiluvchi qurilma uchun ishlaydi.

5 -qadam: Ethernet orqali ma'lumotlarni uzatish uchun Zynq ishlov berish tizimini o'rnating

Ethernet orqali ma'lumotlarni uzatish uchun Zynq ishlov berish tizimini sozlash
Ethernet orqali ma'lumotlarni uzatish uchun Zynq ishlov berish tizimini sozlash
Ethernet orqali ma'lumotlarni uzatish uchun Zynq ishlov berish tizimini sozlash
Ethernet orqali ma'lumotlarni uzatish uchun Zynq ishlov berish tizimini sozlash

HDMI ma'lumotlarini bir Zybo platasidan boshqasiga uzatish uchun biz VDMA drayveriga Ethernet protokolini kiritishimiz kerak. Bu erda bizning maqsadimiz - tarmoq tarmoqli kengligiga mos keladigan belgilangan tezlikda, ishlov berish tizimidagi chekilgan periferiya orqali individual video kadrlarni uzatish. Loyihamiz uchun biz yalang'och metall LwIP API tomonidan taqdim etilgan TCP-dan foydalandik. Loyihaning ikkala a'zosi ham tarmoq kommunal xizmatlaridan nisbatan tajribasiz bo'lgani uchun, bu tanlov TCP bilan bog'liq bo'lgan oqibatlar va cheklovlarni to'liq tan olmasdan qilingan. Ushbu dasturning asosiy muammosi tarmoqli kengligining cheklanganligi va u katta hajmdagi ma'lumotlarni bug'lash uchun mo'ljallanmaganligi edi. TCPni almashtirish va ushbu loyihani yaxshilashning muqobil echimlari keyinroq muhokama qilinadi.

LwIP -ga ega TCP -ning qisqacha tavsifi: Ma'lumotlar tarmoq orqali tcp_mss (TCP maksimal segment hajmi) paketlarida yuboriladi, bu odatda 1460 baytni tashkil qiladi. Tcp_write -ga qo'ng'iroq qilish ko'rsatgich bilan bog'langan ba'zi ma'lumotlarni oladi va ma'lumotlarni saqlash va TCP operatsiyalari uchun tuzilmani ta'minlash uchun pbufs (paket buferlari) ni sozlaydi. Bir vaqtning o'zida navbatga qo'yilishi mumkin bo'lgan ma'lumotlarning maksimal miqdori tcp_snd_buf (TCP yuboruvchi bufer maydoni) sifatida belgilanadi. Bu parametr 16 bitli raqam bo'lgani uchun biz 59695 baytli yuborish buferi bilan chegaralanamiz (yuborish buferida kerakli to'ldirish mavjud). Ma'lumotlar navbatga qo'yilgandan so'ng, ma'lumotlarni uzatishni boshlash uchun tcp_output chaqiriladi. Ma'lumotlarning keyingi segmentini yuborishdan oldin, avvalgi barcha paketlar muvaffaqiyatli uzatilishi shart. Bu jarayon recv_callback funktsiyasi yordamida amalga oshiriladi, chunki bu qabul qiluvchidan tasdiqni ko'rganda chaqiriladigan funktsiya.

Vivado SDK -dagi namunali loyihalardan foydalanish LwIP TCP -ni qanday ishlashini o'rganish uchun juda foydali va yangi loyihani boshlash uchun yaxshi boshlang'ich nuqtadir.

WiDi uzatuvchi qurilmasi bilan ishlash tartibi quyidagicha:

  1. Yalang'och metall LWIP drayveri qo'ng'iroqlari yordamida TCP tarmog'ini ishga tushiring.
  2. Tarmoq operatsiyalari uchun zarur bo'lgan qayta qo'ng'iroq qilish funktsiyalarini belgilang.
  3. WiDi qabul qiluvchiga uning IP -manzili va portiga ulanish orqali ulaning (bizning konfiguratsiyamiz: Qabul qiluvchining IP -manzili 192.168.0.9, 7 -portga ulanish).
  4. VDMA drayveri taymerining muddati tugaganda, TX ISR kiriting.
  5. VDMA kulrang kodi asosida kirish uchun joriy ramka buferini aniqlang
  6. Ma'lumotlarning birinchi segmentini TCP yuborish buferida navbatga qo'ying
  7. Ma'lumotni chiqaring va joriy o'zgaruvchiga qancha ma'lumot yuborilganligini kuzatib borish uchun mahalliy o'zgaruvchilarni yangilang.
  8. Qabul qilingan qayta qo'ng'iroqqa yetganda (uzatuvchi ma'lumot olish to'g'risida xabar olgandan keyin amalga oshiriladi), ma'lumotlarning keyingi segmentini navbatga qo'ying.
  9. Butun ramka yuborilmaguncha 7 va 8 -bosqichlarni takrorlang.
  10. Keyingi taymer uzilishi yangi kadr tayyorligini bildirishini kutish uchun bo'sh holatga qayting (4 -qadamga qayting).

Yuqoridagi rasmda ko'rsatilgandek, LwIP -ni qo'llab -quvvatlash paketini qo'llab -quvvatlash paketini o'rnatganingizga ishonch hosil qiling. Tcp_snd_buf, tcp_pueue_ooseq, mem_size, memp_n_tcp_seg dan boshqa barcha qiymatlar sukut bo'yicha. Shuni ham unutmangki, debug_options guruhining BSP parametrlarini o'zgartirish orqali batafsil nosozliklarni tuzatish mumkin.

6 -qadam: Ethernet orqali ma'lumotlarni qabul qilish uchun Zynq ishlov berish tizimini o'rnating

Simsiz qabul qilgich vazifasini bajaradigan Zybo ishlab chiqish platasi uzatuvchi qurilmaga o'xshab ishlaydi. LwIP uchun kengashni qo'llab -quvvatlash to'plami sozlamalari oldingi bosqichda bo'lgani kabi bo'ladi.

Qurilma nanorouterdan video kadr segmentlarini o'z ichiga olgan paketlarni oladi va u video kadr ma'lumotlarini qabul qiluvchi VDMA uchun uch kadrli bufer maydoniga ko'chiradi. Har qanday ma'lumotni qayta yozib yubormaslik uchun, nanorouterdan ma'lumotlarni yig'ishda ikki tomonlama ma'lumotlar buferi (biz tarmoq buferi deb ataladi) ishlatiladi, shunda tarmoq trafigi avvalgi to'liq video ramka nusxa ko'chirilganda oqimini davom ettirishi mumkin. VDMA buferi.

WiDi qabul qilish qurilmasi protsedurasi ikkita vazifani bajarishni talab qiladi, ulardan biri chekilgan ma'lumotni qabul qiladi, ikkinchisi esa video buklamalarini tarmoq buferidan VDMA ning uch kadrli buferiga nusxalash.

Ethernet qabul qilish vazifasi:

  1. Yalang'och metall LWIP drayveri qo'ng'iroqlari yordamida TCP tarmog'ini ishga tushiring (transmitter ulanadigan IP-manzil bilan sozlash, biznikida 192.168.0.9)
  2. Tarmoq operatsiyalari uchun zarur bo'lgan qayta qo'ng'iroq qilish funktsiyalarini belgilang.
  3. Qabul qilingan chekilgan paketdan so'ng, paket ma'lumotlarini joriy tarmoq buferiga nusxalash, to'plangan ma'lumotlarning ko'payishi.
  4. Agar paket tarmoq ramkalari buferini to'ldirsa, 5 va 6 -bosqichlarni davom ettiring. Aks holda, bu vazifani 3 -bosqichga qaytaring.
  5. VDMA uch kadrli bufer vazifasi yangi tugallangan tarmoq buferidan nusxa ko'chirish kerakligi haqida signal.
  6. Boshqa tarmoq buferiga o'ting va chekilgan tarmoq orqali ma'lumotlarni yig'ishni davom ettiring.
  7. Yangi chekilgan paket olinmaguncha ishlamaydi (3 -qadam).

Tarmoq buferini VDMA uch kadrli buferga nusxalash:

  1. VDMA drayveri taymerining muddati tugaganda, RX ISR kiriting.
  2. VDMA kulrang kodi asosida kirish uchun joriy ramka buferini aniqlang.
  3. VDMA buferiga qaysi tarmoq buferi ko'chirilishini aniqlang va bu ma'lumotlarni nusxa ko'chiring

7 -qadam: Zybo platalarini HDMI manbaiga va HDMI cho'kishiga ulang

Zybo platalaringizni HDMI manbaiga va HDMI cho'kishiga ulang
Zybo platalaringizni HDMI manbaiga va HDMI cho'kishiga ulang

Endi qabul qilgich va uzatuvchi uchun hdmi kabellarini ulang, FPGA dasturini dasturlashtiring va ishlov berish tizimini ishga tushiring. LwIP operatsiyasining katta xarajatlari va tarmoqli kengligining cheklanganligi tufayli kadr tezligi juda sekin bo'lishi mumkin. Agar biron bir muammo bo'lsa, UART orqali ulaning va har qanday ogohlantirish yoki xatoni aniqlashga harakat qiling.

8 -qadam: Yaxshilash uchun muqobil g'oyalar

Yaxshilash uchun muqobil g'oyalar
Yaxshilash uchun muqobil g'oyalar

Ushbu loyiha uchun katta muammo - Wi -Fi orqali yuborish uchun zarur bo'lgan ma'lumotlar miqdori. Bu kutilgan edi, lekin biz uning ta'sirini etarlicha baholamadik va natijada video tasmaga emas, balki ekranda ko'proq tasvirlar paydo bo'ldi. Loyihani takomillashtirishning bir necha yo'li mavjud:

  • Haqiqiy vaqtda video siqish. Kiruvchi video uzatuvchi kadrni ramkaga bosish tarmoq orqali yuborilishi kerak bo'lgan ma'lumotlarning hajmini ancha kamaytiradi. Ideal holda, bu qo'shimcha qurilmalarda amalga oshiriladi (bu oson ish emas) yoki dasturiy ta'minotda boshqa ARM yadrosi yordamida siqishni algoritmlarini ishga tushirish orqali amalga oshirilishi mumkin (bu vaqtni aniqlash uchun qo'shimcha tahlilni talab qiladi). Internetda biz topa oladigan ochiq manbali video siqish komponentlari mavjud, lekin ularning aksariyati IP.
  • Ethernet oqimini dasturiy ta'minotda emas, balki apparatda amalga oshirish. Segment kattaligi cheklanganligi sababli transmitterda chiquvchi ma'lumotlarni navbatga qo'yish uchun joy yo'qligi sababli ortiqcha yuk tushdi. AXI Ethernet IP -dan ma'lumotlarni uzatish uchun FIFO buferi yoki DMA -dan foydalanish ancha samarali jarayon. Bu LwIP TCP -dan qo'shimcha yukni kamaytiradi va ko'proq ma'lumot oqimiga imkon beradi.

9 -qadam: Maxsus imkoniyatlar

Ushbu WiDi loyihasining mahsuloti, har qanday HDMI manbaiga ulanishi mumkin bo'lgan, so'ngra video uzatishni HDMI imkoniyatli displeyga simsiz ulab oladigan to'liq birlashtirilgan, ixcham qurilmalar bo'lishi kerak. Qurilmalar Zybo ma'lumot kartasida joylashgan Zynq-7000 SoC-ni o'z ichiga oladi va TP-Link nano-routerlarida topilgan tarmoq uskunalarini o'z ichiga oladi. Ideal holda, foydalanuvchi uzatish modulini maqsadli operatsion tizimning alohida joyidan boshqarishi mumkin, bunda muhim texnik qobiliyatga ehtiyoj sezilmaydi.

Xavfsizlik va ulanish

Qurilmalar, shuningdek, Transport Layer Security (TLS) ni o'z ichiga olishi va maxfiylik maqsadida cheklangan avtomatik ulanish imkoniyatiga ega bo'lishi kerak. Dizaynerlarning maqsadi - simsiz interfeys orqali displey bilan ulanishni, foydalanuvchi nomidan, sezgir materialni noto'g'ri uzatishni oldini olish uchun, qasddan qilingan harakat.

Hozirgi holat

Shu paytgacha loyihaning holati juda ko'p davom etmoqda. Hozirgi o'quvchi ushbu qo'llanmadan foyda olish uchun, u o'rnatilgan tizim dizayni haqida kuchli texnik tushunchaga ega bo'lishi va birgalikda ishlaydigan dasturlashtiriladigan apparat va o'rnatilgan dasturiy ta'minot bilan tanish bo'lishi kerak.

Tarmoq orqali yuborilgan ma'lumotlar hozircha shifrlanmagan va TCP/IP paketlarining xom uzatish deb hisoblanadi.

Video yadro loyihasi ham uzatish, ham qabul qilish uchun muvaffaqiyatli sinovdan o'tkazildi. Boshqa tomondan, ikkita zybo platasi o'rtasida simsiz aloqa o'rnatildi va test ramka ma'lumotlari muvaffaqiyatli yuborildi. Shunga qaramay, har bir video yadroli loyihaga tarmoq kodini birlashtirish va haqiqiy video kadrlarning uzatilishini sinab ko'rish kerak.

Tavsiya: