Агуулгын хүснэгт:

WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board): 9 алхам (зурагтай)
WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board): 9 алхам (зурагтай)

Видео: WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board): 9 алхам (зурагтай)

Видео: WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board): 9 алхам (зурагтай)
Видео: БЕСПРОВОДНОЕ ВИДЕОНАБЛЮДЕНИЕ WIFI комплект KERUI со слежением за людьми 2024, Арваннэгдүгээр
Anonim
WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board)
WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board)
WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board)
WIDI - Zybo ашиглан утасгүй HDMI (Zynq Development Board)

Та телевизээ гадны дэлгэц болгон компьютер эсвэл зөөврийн компьютерт холбож өгөхийг хүсч байсан уу, гэхдээ эдгээр бүх залхаан утаснуудтай байхыг хүсээгүй үү? Хэрэв тийм бол энэ заавар нь зөвхөн танд зориулагдсан болно! Энэ зорилгодоо хүрэх зарим бүтээгдэхүүн байгаа боловч DIY төсөл нь илүү сэтгэл ханамжтай бөгөөд хямд байж магадгүй юм.

Энэхүү ойлголт нь chromecast гэх мэт бүтээгдэхүүнээс ялгаатай бөгөөд энэ нь дамжуулах төхөөрөмж биш харин монитортой холбогддог HDMI кабелийн оронд зориулагдсан болно.

Манай төслийг Калифорниа мужийн Политехникийн их сургууль, Сан Луис Обиспогийн бодит цагийн үйлдлийн системийн курсын эцсийн төсөл болгон бүтээсэн.

Төслийн зорилго нь хоёр Digilent Zybo хавтанг ашиглан HDMI дамжуулагч төхөөрөмж (PC, blu-ray гэх мэт) хооронд HDMI хүлээн авах төхөөрөмж (Ширээний дэлгэц, проектор, ТВ гэх мэт) хооронд утасгүй холбооны интерфэйс болж ажиллах явдал юм.

Нэг Digilent Zybo нь HDMI -ээр дамжуулагч төхөөрөмжид, нөгөө нь HDMI -ээр хүлээн авагч төхөөрөмжид холбогдоно.

Утасгүй холболтыг гэрийн чиглүүлэгч эсвэл бусад төхөөрөмжөөр дамжуулахгүйгээр дамжуулагч, хүлээн авагчид зориулагдсан утасгүй локал сүлжээг ашиглан хийх болно. Энэхүү төсөлд ашигладаг утасгүй модуль нь tplink wr802n nanorouter бөгөөд нэг нь сүлжээг бий болгох хандалтын цэг, нөгөө нь сүлжээнд холбогдохын тулд үйлчлүүлэгчийн үүргийг гүйцэтгэдэг. Nanorouter бүрийг Ethernet кабелиар Zybo самбартай холбоно. Эдгээр чиглүүлэгчид холбогдсон үед төхөөрөмжүүд нь нэг Ethernet кабелиар холбогдсон юм шиг TCP -ээр харилцах болно (холболт үүсгэхэд шаардлагатай цорын ганц тохиргоо нь үйлчлүүлэгчийн IP хаяг юм).

Төслийн зорилго нь 60 Гц давтамжтай 1080x720 видео дамжуулалтыг хөнгөвчлөх байсан боловч утасгүй сүлжээнд зурвасын өргөнийг хязгаарлах, илгээхэд шаардлагатай өгөгдлийг багасгахын тулд бодит цаг хугацаанд видео шахалт хийгээгүйн улмаас үүнийг хийх боломжгүй байв. Үүний оронд энэ төсөл нь HDMI өгөгдлийг зориулалтын дагуу зохих ёсоор дамжуулахын тулд хүрээний хурдыг хязгаарласан тул энэхүү зорилгодоо хүрэх ирээдүйн хөгжлийн үндэс болно.

Төслийн шаардлага:

2x Digilent Zybo хөгжлийн самбар (дор хаяж нэг HDMI порт байх ёстой)

2х HDMI кабель

2х microusb кабель (хөгжүүлэхийн тулд Zybo -г компьютерт холбох)

2x tplink wr802n nanorouters (adtl. 2x microusb болон хананы залгуурт цахилгаан хувиргагч орно)

2х Ethernet кабель

*** Тэмдэглэл: Энэхүү заавар нь Vivado дизайны иж бүрдэлтэй танилцаж, шинэ төсөл, блок дизайн хийх туршлагатай болно. ***

Алхам 1: Zynq програмчлагдах логикийг дамжуулагчийн хувьд тохируулна уу

Zynq програмчлагдах логикийг дамжуулагчийн хувьд тохируулна уу
Zynq програмчлагдах логикийг дамжуулагчийн хувьд тохируулна уу
Zynq програмчлагдах логикийг дамжуулагчийн хувьд тохируулна уу
Zynq програмчлагдах логикийг дамжуулагчийн хувьд тохируулна уу
Zynq програмчлагдах логикийг дамжуулагчийн хувьд тохируулна уу
Zynq програмчлагдах логикийг дамжуулагчийн хувьд тохируулна уу

Дамжуулагчийн програмчлагдах логикийг хөгжүүлэх бидний хандлага бол бичих, унших зориулалттай хоёр Видео Шууд санах ойд нэвтрэх (VDMA) хоёр блок ашиглан компьютерээс hdmi-hdmi дамжуулалтыг хянах явдал байв.

Хоёуланг нь чөлөөтэй ажиллуулах, 3 хүрээ буфер горимд (0-1-2) сонгосон. Видео цөм нь секундэд 60 фрэймд оновчтой байдаг тул VDMA нь 16.67 мс тутамд 0, 1, 2, 0, 1, 2, 0, 1, 2 гэсэн дарааллаар шинэ хүрээ рүү бичих буюу унших болно гэсэн үг юм. Хүрээ тус бүрийн DDR санах ойн байршил нь хоорондоо синхрончлогдохоо больсон тул хоёр VDMA -ийн хувьд өөр өөр байдаг. Үүний оронд 60 Гц -т тохируулсан тоног төхөөрөмжийн таймер (TTC1) нь санах ойн хоёр байршлын хооронд өгөгдлийн хөдөлгөөнийг синхрончлоход ашиглагддаг.

Дээрх зураг нь 3 хүрээ, тэдгээрийн хэмжээ, тус бүр шаардагдах санах ойн хэмжээг харуулав (хүрээний баруун талд). Хэрэв бид эдгээр санах ойн байршилд бичих VDMA -ийг оноож өгвөл 0x0B000000 -аас эхэлж уншсан VDMA санах ойн байршлыг энэ багцаас хэтрүүлэн оноож болно. Хүрээ бүр нь 1280*720 пикселээс бүрдэх бөгөөд пиксел бүр нь улаан, ногоон, цэнхэр гэсэн 8 битээс бүрдэх бөгөөд нийт 24 бит байна. Энэ нь хүрээ нь 1280*720*3 байтаас (2.76 MB) бүрдэнэ гэсэн үг юм.

VDMA драйверын тохиргоонд тайлбарласан IRQ таймерын дотор хоёр VMDA санах ойн байршлын хооронд өгөгдөл хуулах болно. VDMA нь бичиж эсвэл уншиж буй одоогийн фрэймийн заагчийг өгдөг. Хүрээг програм хангамж болгон хөрвүүлдэг тодорхой саарал кодоор дүрсэлсэн болно. 3 хүрээ-буфер тохиргооны саарал кодын тодорхойлолтыг AXI VDMA бүтээгдэхүүний гарын авлагаас Хавсралт С-ээс олж болно.

Энэ нь одоо бичиж буй фрэймээс уншихгүйгээр санах ойд бичиж буй агуулгыг хуулах боломжийг бидэнд олгодог.

*** Утасгүй сүлжээгээр өгөгдөл илгээхдээ уншсан VDMA ашиглагддаггүй болохыг анхаарна уу. Үүний цорын ганц зорилго бол бичих VMDA -аас санах ойг хуулж авах зөв ажиллагааг шалгах явдал юм. Унших VMDA -г идэвхгүй болгох ёстой.

Дамжуулагчийн дизайны блок үүсгэх алхамууд энд байна

  1. Шинэ төсөл бүтээхдээ төсөлд чип эсвэл самбар хуваарилах нь зүйтэй. Энэ холбоос нь Vivado лавлахад шинэ самбарын файлуудыг хэрхэн нэмж, зөв самбарыг өөрийн төсөлтэй холбох талаар тайлбарласан болно. Боловсруулалтын системийн блокыг нэмж, техник хангамжаас програм хангамж руу (SDK тал) шилжих үед энэ нь хэрэг болно.
  2. Дараах блокуудыг нэмнэ үү.

    • dvi2rgb
    • Axi4-урсгал руу видео оруулах
    • Хугацаа хянагч
    • axi4-урсгалыг vid болгох
    • rgb2dvi
    • AXI VDMA x2
    • AXI GPIO x2
    • Цагны шидтэн
    • Тогтмол
    • Zynq боловсруулах систем
  3. Боловсруулалтын системийг нэмж оруулахдаа дээд талын ногоон өнгийн баарнаас "Run Block Automation" дээр дарж "Board Preset Set тохируулах" сонголтыг сонгосон эсэхийг шалгаарай. Бусад бүх зүйлийг анхдагчаар үлдээгээрэй.
  4. Блокийн тохиргооны цонх бүрийн зургийг дээрх зургуудаас олж болно. Хэрэв та тодорхой цонхны зургийг харахгүй байгаа бол үүнийг анхдагч байдлаар үлдээгээрэй.
  5. Zynq боловсруулах системийг тохируулж эхэлнэ үү.

    • PS-PL тохиргоонд AXI Secure бус горимыг идэвхжүүлснээр GP Master AXI-ийг идэвхжүүлэхийн тулд M AXI GP0 интерфэйсийг идэвхжүүлнэ үү.
    • PS-PL тохиргоонд HP Slave AXI интерфэйс дээр HP0 болон HP1 хоёуланг нь идэвхжүүлнэ үү
    • MIO -ийн тохиргоонд ENET0 -ийг I/O -ийн дагалдах хэрэгслийн доор идэвхжүүлсэн эсэхийг шалгаарай, дараа нь Application Processor Unit, Timer0 -ийг идэвхжүүлнэ үү.
    • Clock Configuration PL Fabric Clocks хэсэгт FCLK_CLK0 -ийг идэвхжүүлж 100 МГц болгон тохируулна уу.
    • Ok дарна уу
  6. "Холболтын автоматжуулалтыг ажиллуулах" дээр дарахаас өмнө дээрх TX блокны дизайны зураг дээр үзүүлсэн шиг видео блокуудыг холбохоо мартуузай. Та тогтмол нэрийг VDD болгон өөрчилж, утгыг 1 болгохыг хүсэх болно. Үүний дагуу видео блокуудыг холбоно уу.
  7. HDMI TMDS цаг ба өгөгдлийн зүүг rgb2dvi болон dvi2rgb блок дээр гадуур болгоорой.
  8. Халуун залгуурыг илрүүлэх дохио (HPD) -д оролт, гаралтын порт үүсгэж, тэдгээрийг хооронд нь холбож, хязгаарлалтын файлд тодорхойлсон болно.
  9. Пикселийн цагийг хязгаарлалтын файлд үүсгэсэн TMDS_Clk_p -ээс сэргээдэг. Энэ нь 720p нарийвчлалын дагуу 74.25 МГц байх болно. Пикселийн цагийг (dvi2rgb блокоос) дараах голтой холбох нь чухал юм.

    • vid_io_in_clk (axi урсгалын блок руу оруулах)
    • vid_io_out_clk (axi урсгалыг блокоос хасах)
    • clk (Хугацаа хянагч)
    • PixelClk (rgb2dvi)
  10. *** Тэмдэглэл: Одоогийн байдлаар пиксел цаг сэргээх ажлыг идэвхжүүлэхийн тулд HDMI rx ба tx холбогчийг идэвхтэй эх үүсвэр/угаалтуурт залгасан байх ёстой. Үүнийг даван туулах нэг арга бол видео rx ба tx блокуудыг өөр өөр цагийн домэйнд хуваах явдал юм (өөрөөр хэлбэл tx блок руу тэжээх шинэ 74.25 МГц цагийг бий болгох). ***
  11. Дараа нь цагийн шидтэнг тохируулаарай, ингэснээр та 100 МГц-ийн оролт (дэлхийн буфер эх үүсвэр), 50 МГц-ийн 3 гаралтын цаг (AXI-Lite цаг), 150 МГц (AXI4-Урсгал цаг), 200 МГц (dvi2rgb RefClk зүү) авах боломжтой болно.
  12. FCLK_CLK0 боловсруулах системийн зүүг цагийн шидтэний оролт руу холбоно уу
  13. Энэ үед дизайны цонхны дээд хэсэгт байрлах ногоон баарнаас "Холболтын автоматжуулалтыг ажиллуулах" дээр дарна уу. Үүнийг нэг блокоор хийж, дээрх TX блокны дизайны зургийг дагах нь зүйтэй юм.
  14. Энэхүү хэрэгсэл нь AXI-Lite автобус (VDMA ба GPIOs) ашигладаг блокуудын мастер/боол холболтын үүргийг гүйцэтгэдэг AXI Interconnect-ийг нэмж оруулахыг оролдох болно.
  15. Энэ нь VDMA (Stream to Memory Map болон бусад) ашигладаг AXI4-Stream болон Өндөр үзүүлэлттэй процессорын интерфейсүүдийн мастер/боолын холболтын үүргийг гүйцэтгэдэг AXI SmartConnect-ийг нэмж оруулах болно.
  16. Энэ хэрэгсэл нь процессорын системийн дахин тохируулгыг нэмж оруулах болно. Энэ нь зөвхөн VDMA, GPIO болон процессортой холбоотой блокуудтай холбогдсон эсэхийг шалгаарай. Үүнийг ямар ч видео блоктой бүү холбоорой (жишээ нь dvi2rgb, цаг хянагч, дамжуулах видео гэх мэт).
  17. Холболтын автоматжуулалт дууссаны дараа холболтууд нь TX блокийн дизайны зурагтай тохирч байгаа эсэхийг шалгаарай. Та дурдаагүй системийн ILA нэмэлт блокыг анзаарах болно. Энэ нь зөвхөн дибаг хийхэд зориулагдсан бөгөөд одоогоор шаардлагагүй байна. Энэ нь 150M процессорыг дахин тохируулах аргыг ашигладаг тул үүнийг хийх шаардлагагүй болно. Автобусны жижиг ногоон "алдаанууд" хаанаас ч харагддаг, энэ нь ILA -ийн ачаар хийгдсэн бөгөөд үүнийг үл тоомсорлож болно.
  18. Эцсийн алхам бол төслийн эх сурвалж модны блокны загвар дээр хулганы баруун товчийг дараад "HDL боолт үүсгэх" -ийг сонгох явдал юм. Хэрэв та боодол дээр логик нэмж оруулахаар төлөвлөж байгаа бол үүнийг сонгох бүрт үүнийг дарж бичих болно.
  19. VDMA драйверийг тохируулах хэсгийг SDK тал дээр дэлгэрэнгүй үзнэ үү.

Цаг ба дахин тохируулах

Аливаа програмчлагдах логик төслийн хамгийн чухал тал бол цагны домэйныг анхааралтай авч үзэх, дохиог дахин тохируулах явдал юм. Хэрэв тэдгээр нь зөв тохируулагдсан бол дизайныг ажиллуулахад маш сайн сонголт байна.

Пикселийн цаг ба Хугацаа түгжигдсэн

Зарим дохио идэвхжсэн эсэхийг шалгахын тулд эдгээр дохиог LED -тэй холбох нь зүйтэй (цаг, дахин тохируулах, түгжих гэх мэт). Надад дамжуулагч самбар дээр ажиглахад тустай хоёр дохио бол пиксел цаг ба AXI4-Stream-ээс видео гадагшлуулах блок дээрх "түгжигдсэн" дохио байсан бөгөөд энэ нь видеоны цагийг цаг хянагч болон видео эх сурвалжтай синхрончилсон болохыг хэлж өгдөг. өгөгдөл. Би dvi2rgb блок дээрх PixelClkLocked дохиог ашиглан пикселийн цагийг хянадаг дизайны блок боодолд зарим логикийг дахин тохируулах зорилгоор нэмсэн. Би энд hdmi_wrapper.v файлыг хавсаргав. Хязгаарлалтын файлыг мөн энд хавсаргасан болно.

Алхам 2: Хүлээн авагчийн Zynq програмчлагдах логикийг тохируулна уу

Хүлээн авагчийн Zynq програмчлагдах логикийг тохируулна уу
Хүлээн авагчийн Zynq програмчлагдах логикийг тохируулна уу
Хүлээн авагчийн Zynq програмчлагдах логикийг тохируулна уу
Хүлээн авагчийн Zynq програмчлагдах логикийг тохируулна уу
Хүлээн авагчийн Zynq програмчлагдах логикийг тохируулна уу
Хүлээн авагчийн Zynq програмчлагдах логикийг тохируулна уу

Хүлээн авагчийн програмчлагдах логик блок нь илүү хялбар байдаг. Алга болсон hdmi оролтын блокуудаас бусад гол ялгаа нь сэргээгдсэн пиксел цаг байхгүй байна. Ийм учраас бид цагны шидтэнээс өөрсдийгөө бий болгох ёстой. Энэ загварыг дамжуулагчаас тусдаа төсөл дээр хийх ёстой. Бидний зорилгын үүднээс хүлээн авагчийн төсөл нь Zybo 7Z-20 самбарыг дагасан бол дамжуулагч нь Z7-10 самбарыг дагасан. Самбар дээрх FPGA нь өөр өөр байдаг тул болгоомжтой байгаарай.

Хүлээн авагчийн дизайны блок үүсгэх алхамуудыг энд оруулав

  1. Дараахь ip блокуудыг дизайндаа нэмээрэй.

    • Хугацаа хянагч
    • AXI4-видео дамжуулах
    • RGB -ээс DVI хүртэл
    • AXI VDMA
    • AXI GPIO
    • Боловсруулах систем
    • Цагны шидтэн
    • Тогтмол (VDD -ийг 1 болгож тохируулсан)
  2. Эдгээр блокуудыг дамжуулагчтай тохируулахын тулд ижил загварыг дагаж мөрдөөрэй. Тохиргооны мэдэгдэхүйц ялгааг харуулсан зургуудыг энд оруулав. Бусад нь дамжуулагчтай ижил хэвээр байна.
  3. Энэхүү дизайны VDMA -ийг зөвхөн унших суваг болгон тохируулна уу. Бичих сувгийг идэвхгүй болгох.
  4. Цагийн шидтэн дараах гаралтанд тохируулагдсан байх ёстой.

    • clk_out1: 75 МГц (пиксел цаг)
    • clk_out2: 150 МГц (урсгал цаг)
    • clk_out3: 50 МГц (axi-lite цаг)
  5. Видео блокуудыг RX блокийн дизайны зураг дээр үзүүлсэн шиг холбоно уу.
  6. Дараа нь холболтын автоматжуулалтыг ажиллуулснаар AXI Interconnect, AXI SmartConnect болон System Reset блокуудыг нэмж тохирох холболт хийхийг оролдох болно. Хүсээгүй холболт хийгээгүй эсэхийг шалгахын тулд энд аажмаар очно уу.
  7. HDMI TMDS цаг ба өгөгдлийн зүүг rgb2dvi блок дээр гадуур болгоорой
  8. Энэ загвар дээр халуун залгуур дохио өгөх шаардлагагүй.

Алхам 3: VDMA драйверийг тохируулна уу

VDMA драйверийг тохируулах
VDMA драйверийг тохируулах

AXI-Lite интерфэйсээр тохируулсан өөр өөр блокуудын тохиргоог BSP-т оруулсан демо төслүүдийг лавлагаа болгон ашиглах нь хамгийн сайн арга юм. Загварын тоног төхөөрөмжийг экспортолж, Vivado -аас SDK -ийг ажиллуулсны дараа та самбарыг дэмжих шинэ багц нэмж, BSP тохиргооны цонхонд lwip202 номын санг оруулахыг хүсч байна. BSP -ээс system.mss файлын файлыг нээгээд блокийн дизайнаас дагалдах драйверуудыг харах болно. "Импортын жишээ" сонголт нь эдгээр дагалдах хэрэгслийг ашигладаг демо төслүүдийг импортлох боломжийг олгодог бөгөөд ингэснээр боломжтой Xilinx драйверуудыг ашиглан програм хангамжид хэрхэн тохируулахыг харуулах болно (хавсаргасан зургийг үзнэ үү).

Энэ бол VDMA, Timer & Interrupt болон GPIO -ийг тохируулахад хэрэглэгддэг арга юм. Дамжуулах болон хүлээн авах хоёулангийнх нь эх кодыг энд оруулсан болно. Ялгаа нь зөвхөн үндсэн хэсэгт байдаг.

*** ТАЙЛБАР: Энэхүү хичээлийг бичих үед систем бүрэн ажиллагаагүй байгаа тул энэ хэсгийн эх код нь утасгүй сүлжээний кодыг оруулаагүй болно. Видео дамжуулах/хүлээн авах төслүүдийг сүлжээний дамжуулах/хүлээн авах төслүүдтэй нэгтгэсний үр дүнд хэд хэдэн алдааг шийдвэрлэх шаардлагатай байна. Тиймээс энэ заавар нь тэдгээрийг тусад нь авч үзэх болно.

TX Interrupt Handler функц (IRQHandler)

Энэ функц нь GPIO блокоор дамжуулан унших, бичих VDMA -ийн аль алинд нь өгсөн саарал кодыг уншдаг. Саарал кодыг аравтын бутархай болгон хөрвүүлж, одоогийн фрэймийн хүрээний санах ойн байршлыг сонгоход ашигладаг. Хуулбарласан хүрээ нь VDMA -ийн бичсэн фрэймийн өмнөх хүрээ юм.

Функц нь зургийн хүрээг 60 Гц биш 10 Гц болгон бууруулахын тулд зөвхөн 6 -р хүрээ бүрийг дардаг. Сүлжээний дээд хязгаар нь 300 Mbps байна. Секундэд 10 фрэйм хурдтай байхад 221.2 Мбит / сек хурдтай зурвасын өргөн шаардлагатай.

Энэ функцын хоёр мөрийг тайлбарлах/тайлбарлахгүй байх нь хэрэглэгч дибаг хийх/турших зорилгоор HDMI passthru горимд шилжих боломжийг олгоно (кодыг зохих мөрүүдийг зааж өгөх зорилгоор тайлбарласан болно). Энэ нь одоогоор хүрээг ethernet код ашигладаг санах ойн байршил руу хуулж байна.

RX Interrupt Handler функц (IRQHandler)

Энэ функц нь TX функцтэй маш төстэй боловч ирж буй өгөгдлийг бичихэд ethernet ашигладаг 2 буфер FIFO -аас хуулбарладаг. Ethernet код нь FIFO -ийн аль фрэймд бичигдэж байгааг заана, өгөгдлийг эсрэг талын фрэймээс хуулж авдаг. Мэдээлэл нь урагдахаас зайлсхийхийн тулд VDMA -ийн уншиж буй фрэймийн ард шууд хүрээ рүү хуулагддаг.

Алхам 4: Nanorouter сүлжээг тохируулах

Nanorouter сүлжээг тохируулах
Nanorouter сүлжээг тохируулах

TPlink nanorouters ашиглан сүлжээг бий болгохын тулд тэдгээрийг тус тусад нь асааж, төхөөрөмжүүдийн үндсэн wifi SSID -тэй холбоно уу. Тухайн төхөөрөмжийн тохиргооны талаархи дэлгэрэнгүй мэдээллийг төхөөрөмжийн хэрэглэгчийн гарын авлагаас авах боломжтой.

Төхөөрөмжүүдийн аль нэгийг хандалтын цэг болгон тохируулаарай, энэ нь сүлжээний үндсэн холболт болно. Сүлжээнд нэр өгч, нэрийг нь тэмдэглэж, DHCP -ийг идэвхгүй болго (IP чиглүүлэгчийг IP хаягийг динамикаар тохируулахыг хүсэхгүй байна, дамжуулагч болон хүлээн авагч Zybo самбарыг IP хаягаа өөрсдөө тохируулахыг хүсч байна). Тохиргоог хийсний дараа төхөөрөмж дахин асч, энэ сүлжээг бий болгосон эсэхийг шалгаарай.

Нөгөө төхөөрөмжийг клиент болгон тохируулж, анхны nanorouter ашиглан тохируулсан SSID сүлжээнд холбогдсон эсэхийг шалгаарай. Дахин хэлэхэд үйлчлүүлэгчийн хувьд DHCP идэвхгүй болсон эсэхийг шалгаарай.

Үйлчлүүлэгч дуусаад дахин ачаалсны дараа nanorouter хандалтын цэг рүү холбогдох ёстой (хэрэв тийм биш бол таны төхөөрөмжийн аль нэгний тохиргоонд асуудал гарсан байх магадлалтай). Үйлчлүүлэгчийн LED гэрэл нэвтрэх цэг рүү холбогдсоны дараа хатуу байх болно гэдгийг та анзаарах болно.

Хандалтын цэгийн nanorouter LED энэ үед анивчсаар байх болно, энэ зүгээр! Гялалзах гэрэл нь өөр төхөөрөмжид Ethernet портоосоо холбогдоогүй гэсэн үг бөгөөд тохируулагдсан Zybo -д холбогдсоны дараа LED нь тогтвортой хэвээр байгаа нь сүлжээний амжилттай холболтыг илтгэнэ.

Одоо бид nanorouter -ийг тохируулсны дараа бид утасгүй сүлжээнд холбогдсон бөгөөд үүгээр дамжуулан харилцах боломжтой болно. Нанорутеруудын (нэвтрэх цэг ба үйлчлүүлэгчийн хувьд) бидний тохируулах арга нь дамжуулагч Zybo самбараас хүлээн авагч Zybo самбар руу хоорондоо нэг Ethernet утсаар холбогдсон мэт харилцах боломжийг олгодог. Энэ нь манай сүлжээний тохиргоог хийхэд хүндрэл учруулдаг, учир нь өөр хувилбар нь Zybo самбарыг сервертэй шууд холбогдох зориулалттай холбож тохируулах явдал юм.

Хоёр төхөөрөмжийг хоёуланг нь тохируулсны дараа nanorouter -ийг тохируулж, таны WIDI сүлжээнд ашиглахад бэлэн болно. Nanorouter болон Zybo самбаруудын хооронд тодорхой хослол байдаггүй, учир нь хандалтын цэг эсвэл үйлчлүүлэгч аль аль нь дамжуулах эсвэл хүлээн авах төхөөрөмж дээр ажиллах болно.

Алхам 5: Ethernet -ээр өгөгдөл дамжуулах Zynq боловсруулах системийг тохируулах

Ethernet -ээр мэдээлэл дамжуулах Zynq боловсруулах системийг тохируулах
Ethernet -ээр мэдээлэл дамжуулах Zynq боловсруулах системийг тохируулах
Ethernet -ээр өгөгдөл дамжуулах Zynq боловсруулах системийг тохируулах
Ethernet -ээр өгөгдөл дамжуулах Zynq боловсруулах системийг тохируулах

HDMI өгөгдлийг нэг Zybo самбараас нөгөө рүү дамжуулахын тулд бид Ethernet протоколыг VDMA драйвер дээрээ оруулах ёстой. Энд байгаа бидний зорилго бол боловсруулах сүлжээний Ethernet -ийн дагалдах хэрэгслээр дамжуулан тус тусдаа видео жаазыг манай сүлжээний зурвасын өргөнтэй нийцсэн хэмжээгээр дамжуулах явдал юм. Манай төслийн хувьд бид нүцгэн металл LwIP API-аас өгсөн TCP-ийг ашигласан. Төслийн хоёр гишүүн хоёулаа сүлжээний хэрэгслүүдийн талаар харьцангуй туршлагагүй тул TCP -ийн үр дагавар, хязгаарлалтыг бүрэн таньж мэдэлгүйгээр энэ сонголтыг хийсэн. Энэхүү хэрэгжилтийн гол бэрхшээл нь хязгаарлагдмал зурвасын өргөн, их хэмжээний өгөгдлийг уураар жигнэх зориулалттай биш юм. TCP -ийг орлох, энэ төслийг сайжруулах өөр шийдлүүдийг дараа хэлэлцэх болно.

LwIP -тэй TCP -ийн товч тодорхойлолт: Мэдээллийг сүлжээгээр дамжуулан tcp_mss (TCP сегментийн хамгийн их хэмжээ) пакетаар илгээдэг бөгөөд энэ нь ерөнхийдөө 1460 байт байдаг. Tcp_write руу залгах нь заагчийн өгсөн зарим өгөгдлийг авч, өгөгдлийг хадгалах, TCP үйлдлийн бүтцийг хангахын тулд pbufs (пакет буфер) -ийг тохируулах болно. Нэг удаад дараалалд оруулах боломжтой өгөгдлийн дээд хэмжээг tcp_snd_buf (TCP илгээгчийн буфер зай) гэж тохируулсан болно. Энэ параметр нь 16 битийн тоо тул бид 59695 байт хэмжээтэй илгээгчийн буфераар хязгаарлагддаг (илгээх буферт шаардлагатай бөглөх хэсэг байдаг). Өгөгдөл дараалалд орсны дараа өгөгдөл дамжуулж эхлэхийн тулд tcp_output дууддаг. Өгөгдлийн дараагийн хэсгийг илгээхээс өмнө өмнөх бүх пакетуудыг амжилттай дамжуулах шаардлагатай байна. Энэ үйлдлийг recv_callback функцийг ашиглан хийдэг бөгөөд энэ нь хүлээн авагчаас хүлээн зөвшөөрөлтийг харах үед дуудагддаг функц юм.

Жишээ төслүүдийг Vivado SDK -д ашиглах нь LwIP TCP -ийн үйл ажиллагааг сурахад маш тустай бөгөөд шинэ төсөл эхлүүлэх сайн эхлэл болно.

WiDi дамжуулах төхөөрөмжийн журам дараах байдалтай байна.

  1. LWIP драйверын нүцгэн металл дуудлагын тусламжтайгаар TCP сүлжээг эхлүүлэх.
  2. Сүлжээний үйл ажиллагаанд шаардлагатай буцааж залгах функцийг зааж өгнө үү.
  3. WiDi хүлээн авагчтай түүний IP хаяг, порт руу холбогдох замаар холбогдоно уу (бидний тохиргоо: Хүлээн авагчийн IP нь 192.168.0.9, 7 порт руу холбогдоно уу).
  4. VDMA драйвер таймер дуусах үед TX ISR -ийг оруулна уу.
  5. VDMA саарал код дээр үндэслэн хандахын тулд одоогийн хүрээний буферийг тодорхойлно уу
  6. TCP илгээх буфер дахь өгөгдлийн эхний хэсгийг дараалалд оруулна уу
  7. Өгөгдлийг гаргаж, орон нутгийн хувьсагчдыг шинэчилж, одоогийн фрэймээс хичнээн их өгөгдөл илгээгдсэнийг хянаж байх.
  8. Хүлээн авсан дуудлагад хүрэх үед (дамжуулагч өгөгдөл олж авах тухай мэдэгдэл хүлээн авсны дараа хийгддэг функцын дуудлага) өгөгдлийн дараагийн хэсгийг дараалалд оруулна уу.
  9. Хүрээг бүхэлд нь илгээх хүртэл 7 ба 8 -р алхамуудыг давт.
  10. Дараагийн таймерын тасалдлыг шинэ фрэйм бэлэн болсныг харуулахын тулд сул зогсолт руу буцна уу (4 -р алхам руу буцах).

Дээрх зураг дээр үзүүлсэн шиг LwIP самбарыг дэмжих багцыг тохируулахаа мартуузай. Tcp_snd_buf, tcp_pueue_ooseq, mem_size, memp_n_tcp_seg -ээс бусад бүх утгууд анхдагч байдаг. Мөн debug_options бүлгийн BSP параметрүүдийг өөрчилснөөр нарийвчилсан дибаг хийх боломжтойг анхаарна уу.

Алхам 6: Ethernet -ээр дамжуулан мэдээлэл хүлээн авах Zynq боловсруулах системийг тохируулна уу

Утасгүй хүлээн авагчийн үүргийг гүйцэтгэх Zybo хөгжлийн самбар нь дамжуулагч төхөөрөмжтэй адил ажиллах болно. LwIP -ийн самбарыг дэмжих багцын тохиргоо нь өмнөх алхамтай ижил байх болно.

Төхөөрөмж нь nanorouter -аас видео хүрээний сегмент агуулсан пакетуудыг авах бөгөөд видео хүрээний өгөгдлийг хүлээн авах VDMA -ийн гурвалсан хүрээний буфер орон зайд хуулах болно. Аливаа өгөгдлийг дарж бичихээс зайлсхийхийн тулд nanorouter -аас өгөгдөл цуглуулахдаа давхар өгөгдлийн буфер (бид үүнийг сүлжээний буфер гэж нэрлэдэг) ашигладаг бөгөөд ингэснээр өмнөх бүрэн видео фрэймийг хуулж байх үед сүлжээний урсгалыг үргэлжлүүлэн дамжуулах боломжтой болно. VDMA буфер.

WiDi хүлээн авах төхөөрөмжийн процедур нь хоёр даалгаврыг шаарддаг бөгөөд тэдгээрийн нэг нь ethernet өгөгдлийг хүлээн авах, нөгөө нь видео фрэймийг сүлжээний буфераас VDMA -ийн гурвалсан хүрээний буферт хуулах явдал юм.

Ethernet хүлээн авах даалгавар:

  1. LWIP драйверын нүцгэн металл функцийг ашиглан TCP сүлжээг эхлүүлэх (дамжуулагчийн холбосон IP хаягийг тохируулах, манайд 192.168.0.9)
  2. Сүлжээний үйл ажиллагаанд шаардлагатай буцааж залгах функцийг зааж өгнө үү.
  3. Ethernet пакет хүлээн авсны дараа пакетийн өгөгдлийг одоогийн сүлжээний буфер руу хуулж, одоогийн хуримтлагдсан өгөгдлийг нэмэгдүүлэх.
  4. Хэрэв пакет сүлжээний хүрээний буферийг дүүргэсэн бол 5 & 6 -р алхамуудыг үргэлжлүүлнэ үү. Үгүй бол энэ даалгавраас 3 -р алхам руу буцна уу.
  5. VDMA гурвалсан хүрээний буфер даалгавар нь шинээр дууссан сүлжээний буферээс хуулагдах ёстой гэсэн дохио юм.
  6. Нөгөө сүлжээний буфер руу шилжиж, Ethernet -ээр өгөгдөл цуглуулахаа үргэлжлүүлээрэй.
  7. Шинэ Ethernet пакет хүлээн авах хүртэл идэвхгүй байна (3 -р алхам).

Сүлжээний буферыг VDMA гурвалсан хүрээний буферт хуулах:

  1. VDMA драйвер таймер дуусах үед RX ISR -ийг оруулна уу.
  2. VDMA саарал код дээр үндэслэн хандахын тулд одоогийн хүрээний буферийг тодорхойлно уу.
  3. VDMA буферт аль сүлжээний буфер хуулагдахыг тодорхойлж, өгөгдлийг хуулж аваарай

Алхам 7: Zybo самбараа HDMI эх үүсвэр ба HDMI залгуурт холбоно уу

Zybo самбараа HDMI эх үүсвэр ба HDMI угаалтууртай холбоно уу
Zybo самбараа HDMI эх үүсвэр ба HDMI угаалтууртай холбоно уу

Одоо хүлээн авагч болон дамжуулагчийн HDMI кабелийг холбож, FPGA -г програмчилж, боловсруулах системийг ажиллуулна уу. LwIP -ийн асар их зардал, зурвасын өргөн хязгаарлагдмал тул хүрээний хурд маш удаан байх болно. Хэрэв ямар нэгэн асуудал гарвал UART -ээр холбогдож ямар нэгэн анхааруулга, алдааг олж тогтоохыг хичээгээрэй.

Алхам 8: Сайжруулах өөр санаанууд

Сайжруулах өөр санаанууд
Сайжруулах өөр санаанууд

Энэ төслийн хамгийн том асуудал бол wifi -ээр дамжуулахад шаардлагатай мэдээллийн хэмжээ байв. Энэ нь хүлээгдэж байсан боловч бид үзүүлэх нөлөөллийг дутуу үнэлсэн бөгөөд энэ нь видео тэжээл гэхээсээ илүү дэлгэцэн дээр зураг авахад хүргэсэн юм. Энэ төслийг сайжруулах хэд хэдэн арга байдаг:

  • Бодит цагийн видео шахалт. Ирж буй видео тэжээлийн хүрээг хүрээгээр шахах нь сүлжээгээр дамжуулах шаардлагатай өгөгдлийн хэмжээг ихээхэн бууруулах болно. Хамгийн тохиромжтой нь үүнийг техник хангамжаар хийх болно (энэ нь тийм ч амар ажил биш), эсвэл програм хангамж дээр бусад ARM цөмийг ашиглан шахалтын алгоритм ажиллуулах замаар хийж болно (энэ нь цаг дууссан эсэхийг баталгаажуулахын тулд нэмэлт шинжилгээ хийх шаардлагатай болно). Вэб дээрээс олж авсан бодит цагийн видео шахалтын зарим нээлттэй эх сурвалжууд байдаг боловч ихэнх нь IP юм.
  • Ethernet урсгалыг програм хангамжаас илүү техник хангамжид хэрэгжүүлэх. Сегментийн хэмжээ хязгаарлагдмал байсан тул дамжуулагч дахь гадагш гарах өгөгдлийг дараалалд оруулах зай байхгүй тул нэг тонн зардал нэмэгдсэн. Илүү үр дүнтэй үйл явц бол өгөгдлийг оруулахын тулд AXI Ethernet IP -ийг FIFO буфер эсвэл DMA ашиглан ашиглах явдал юм. Энэ нь LwIP TCP -ийн нэмэлт ачаа тээшийг бууруулж, өгөгдөл дамжуулах боломжийг олгоно.

Алхам 9: Хүртээмжтэй байдал

Энэхүү WiDi төслийн үр дүнд гарсан бүтээгдэхүүн нь хэрэглэгчид ямар ч HDMI эх үүсвэрт холбогдож, дараа нь видео тэжээлийг HDMI чадвартай дэлгэц рүү залгах боломжтой иж бүрэн, авсаархан хос төхөөрөмж байх ёстой. Эдгээр төхөөрөмжүүд нь Zybo лавлах самбараас олдсон Zynq-7000 SoC-ийг агуулсан бөгөөд TP-Link нано-чиглүүлэгчдээс олдсон сүлжээний техник хангамжийг багтаасан болно. Хэрэглэгч нь дамжуулах модулийг зорилтот үйлдлийн систем дэх салангид байршлаас удирдах боломжтой бөгөөд техникийн хувьд тийм ч их чадвар шаардагддаггүй.

Аюулгүй байдал ба холболт

Төхөөрөмжүүд нь Тээврийн Давхаргын Хамгаалалт (TLS) -тэй байх ёстой бөгөөд нууцлалын зорилгоор хоёулаа автоматаар холбогдох чадвартай байдаг. Зохион бүтээгчид эмзэг материалыг андуурч цацахаас зайлсхийхийн тулд утасгүй интерфейс ашиглан дэлгэцийн холболтыг хэрэглэгчийн өмнөөс санаатайгаар хийх зорилготой.

Одоогийн байдал

Энэ хүртэл төслийн төлөв байдал маш их хийгдэж байгаа ажил хэвээр байна. Одоогийн эцсийн хэрэглэгч энэ хичээлээс ашиг хүртэхийн тулд тэрээр суулгагдсан системийн дизайны талаар техникийн өндөр мэдлэгтэй байх ёстой бөгөөд програмчлагдах техник хангамж, суулгагдсан програм хангамжийн талаар хамтран ажиллах ёстой.

Сүлжээгээр дамжуулж буй өгөгдлийг одоогоор шифрлээгүй бөгөөд TCP/IP пакетийн түүхий дамжуулалт гэж үзэж байна.

Видео үндсэн төслийг дамжуулах, хүлээн авах аль алинд нь амжилттай туршсан. Нөгөө талаас, хоёр zybo хавтангийн хооронд утасгүй холболт тогтоож, туршилтын хүрээний өгөгдлийг амжилттай илгээсэн. Гэсэн хэдий ч сүлжээний кодыг видео үндсэн төсөл бүрт нэгтгэж, бодит видео фрэймийн дамжуулалтыг туршиж үзэх шаардлагатай хэвээр байна.

Зөвлөмж болгож буй: