Мазмуну:

WIDI - Zybo (Zynq Development Board) аркылуу зымсыз HDMI: 9 кадам (сүрөттөр менен)
WIDI - Zybo (Zynq Development Board) аркылуу зымсыз HDMI: 9 кадам (сүрөттөр менен)

Video: WIDI - Zybo (Zynq Development Board) аркылуу зымсыз HDMI: 9 кадам (сүрөттөр менен)

Video: WIDI - Zybo (Zynq Development Board) аркылуу зымсыз HDMI: 9 кадам (сүрөттөр менен)
Video: Zybo Z7 Introduction 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 шнурунун ордун ээлөөгө арналган.

Биздин долбоор Калифорния штатынын Политехникалык университетинде, Сан Луис Обисподо реалдуу убакытта иштөө тутумдарынын курсу боюнча акыркы долбоор катары түзүлгөн.

Долбоордун максаты-HDMI өткөргүч түзүлүшүнүн (PC, blu-ray ж.

Бир Digilent Zybo HDMI аркылуу берүүчү түзүлүшкө, экинчиси HDMI аркылуу кабыл алуучу түзмөккө туташат.

Зымсыз байланыш үйдүн роутери же башка ушул сыяктуу түзүлүш аркылуу өткөрүлбөстөн, өткөргүчкө жана кабыл алуучуга арналган зымсыз локалдык тармактын жардамы менен ишке ашат. Бул долбоор үчүн колдонулган зымсыз модуль tplink wr802n nanorouter болуп саналат, алардын бири тармакты түзүү үчүн кирүү түйүнү катары иштейт, экинчиси тармакка туташуу үчүн кардар катары иштейт. Ар бир nanorouter Zybo тактасына Ethernet кабели аркылуу туташат. Бул роутерлерге туташканда, түзмөктөр бир Ethernet кабели менен туташкандай TCP аркылуу байланышат (байланышты орнотуу үчүн керектүү жалгыз конфигурация кардардын IP дареги).

Долбоордун максаты 1080x720 видео @ 60Гц агымын жеңилдетүү болгонуна карабастан, зымсыз тармактын өткөрүү жөндөмдүүлүгүнүн чектелишинен жана жөнөтүү үчүн керектүү маалыматтарды азайтуу үчүн реалдуу убакытта видео кысуунун жоктугунан бул ишке ашкан жок. Тескерисинче, бул долбоор бул максатка жетүү үчүн келечектеги өнүгүү үчүн негиз болуп кызмат кылат, анткени ал HDMI маалыматын максаттуу түрдө туура агылтуу үчүн кадрдык ылдамдыкта чектөөлөрдү катуу чектеген.

Долбоорго талаптар:

2x Digilent Zybo өнүктүрүү такталары (жок дегенде бир HDMI порту болушу керек)

2x HDMI кабели

2x microusb кабели (өнүктүрүү үчүн Zybo -ны PCке туташтыруу үчүн)

2x tplink wr802n nanorouters (анын ичинде adtl. 2x microusb жана дубал розеткасынын кубат адаптерлери)

2х Ethernet кабели

*** Эскертүү: Бул окуу куралы Vivado дизайн топтому менен таанышууну жана жаңы долбоорду жана блоктун дизайнын түзүүнү билдирет.

1 -кадам: Transmitter үчүн Zynq программалоочу логикасын конфигурациялоо

Transmitter үчүн Zynq программалоочу логикасын конфигурациялоо
Transmitter үчүн Zynq программалоочу логикасын конфигурациялоо
Transmitter үчүн Zynq программалоочу логикасын конфигурациялоо
Transmitter үчүн Zynq программалоочу логикасын конфигурациялоо
Transmitter үчүн Zynq программалоочу логикасын конфигурациялоо
Transmitter үчүн Zynq программалоочу логикасын конфигурациялоо

Тараткычтын программалоочу логикасын иштеп чыгууга болгон мамилебиз, компьютерден hdmi-to hdmi аркылуу өтүүнү эки Video Direct Memory Access (VDMA) блокторун колдонуп, бирин жазуу үчүн, бирин окуу үчүн аткаруу болгон.

Экөө тең бекер иштөө үчүн тандалган, 3 кадр-буфердик режим (0-1-2). Видео өзөгү секундасына 60 кадр үчүн оптималдаштырылгандыктан, бул VDMA ар бир 16,67 мс жаңы тартипте жазат же окуйт дегенди билдирет: 0, 1, 2, 0, 1, 2, 0, 1, 2. Ар бир кадр үчүн DDR эс тутумунун жайгашкан жери эки VDMA үчүн башкача, анткени алар бири -бири менен шайкештештирилбейт. Анын ордуна, 60 Гц үчүн конфигурацияланган аппараттык таймер (TTC1) эки эс тутумдун ортосундагы маалыматтардын кыймылын синхрондоштуруу үчүн колдонулат.

Жогорудагы сүрөттө 3 кадр, алардын өлчөмдөрү жана ар биринин эс тутуму көрсөтүлгөн (кадрдын оң жагында). Эгерде биз VDMA жазууну ушул эс тутум жерлерине дайындай турган болсок, анда бул топтомдон тышкары окуган VDMA эс тутумун дайындай алабыз, айталы 0x0B000000 менен башталат. Ар бир кадр 1280*720 пикселден турат жана ар бир пиксел 8 биттен турат Кызыл, Жашыл жана Көк, бардыгы 24 бит. Бул кадр 1280*720*3 байттан (2,76 Мб) турат дегенди билдирет.

VDMA драйверинин түзүлүшүндө сүрөттөлгөн IRQ таймеринин ичинде, VMDA эс тутумунун эки жеринин ортосунда маалыматтарды көчүрүү иштейт. VDMA учурдагы кадрга жазылган же окулган көрсөткүчтү көрсөтөт. Кадр программалык камсыздоого айландырылган белгилүү бир боз код менен көрсөтүлгөн. 3 кадрдык буфердик конфигурациянын боз кодунун аныктамаларын AXI VDMA Продукт Жетелемесинен С тиркемесинен тапса болот.

Бул бизге жазылып жаткан мазмунун азыр жазылып жаткан фреймден окубай туруп эс тутумуна көчүрүүгө мүмкүндүк берет.

*** Окуу VDMA зымсыз тармак аркылуу маалыматтарды жөнөтүүдө колдонулбай турганын эске алыңыз. Анын бир гана максаты - VMDA жазуусунан эстутумдун туура иштешин текшерүү. VMDA окуусун өчүрүү керек.

Бул жерде өткөргүч дизайн блогун түзүү кадамдары:

  1. Жаңы долбоорду түзүүдө долбоорго чип же такта дайындоо жакшы. Бул шилтеме Vivado каталогуна жаңы такта файлдарын кантип кошууну жана туура тактаны сиздин долбоор менен кантип байланыштырууну сүрөттөйт. Бул иштетүү тутумунун блогун кошууда жана жабдуулардан программалык камсыздоого өтүүдө (SDK тарабында) пайдалуу болот.
  2. Төмөнкү блокторду кошуңуз:

    • dvi2rgb
    • Axi4-агымына видео
    • Убакытты көзөмөлдөөчү
    • axi4-агымы чыгып кетүү
    • rgb2dvi
    • AXI VDMA x2
    • AXI GPIO x2
    • Саат чебери
    • Туруктуу
    • Zynq Processing System
  3. Иштетүү тутумун кошуп жатканда, жогорку жашыл түстөгү тилкеден "Блокту автоматташтырууну иштетүү" баскычын чыкылдатыңыз жана "Тактага алдын ала орнотууну колдонуу" тандалганын текшериңиз. Калганынын бардыгын демейки бойдон калтырыңыз.
  4. Ар бир блоктун конфигурация терезесинин сүрөттөрүн жогорудагы сүрөттөрдөн тапса болот. Эгерде сиз белгилүү бир терезе үчүн сүрөт көрбөсөңүз, аны демейки катары калтырыңыз.
  5. Zynq Processing системасын конфигурациялоону баштаңыз:

    • PS-PL конфигурациясында AXI Non Secure GP Master AXIди иштетүү, M AXI GP0 интерфейсин иштетүү
    • PS-PL конфигурациясында HP Slave AXI Interface, HP0 жана HP1ди иштетүү
    • MIO конфигурациясында ENET0 I/O перифериялык түзүлүштөрү астында иштетилгенин текшериңиз, андан кийин Application Processor Unit, Timer0 иштетүү
    • Clock Configuration PL кездеме сааттарында FCLK_CLK0 иштетип, 100 МГцке коюңуз.
    • Ок басыңыз
  6. "Run Connection Automation" баскычын басуудан мурун, видео блокторду жогорудагы TX блогунун дизайн сүрөтүндө көрүнгөндөй туташтырыңыз. Сиз VDD константынын атын өзгөрткүңүз келет жана маанини 1ге коюңуз. Видео блокторун ошого жараша туташтырыңыз.
  7. HDMI TMDS саатын жана маалымат түйүндөрүн rgb2dvi жана dvi2rgb блокторуна тышкы кылыңыз
  8. Ыссык плагин аныктоо сигналы (HPD) үчүн киргизүү жана чыгаруу портун түзүңүз жана аларды бири -бирине туташтырыңыз, бул чектөөлөр файлында аныкталган
  9. Пиксел сааты чектөөлөр файлында түзүлгөн TMDS_Clk_pден калыбына келтирилет. Бул 720p токтомго ылайык 74.25 МГц болот. Пиксел саатын (dvi2rgb блогунан) төмөнкү казыктарга туташтыруу маанилүү:

    • vid_io_in_clk (vid in axi stream block)
    • 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. Бул жерде дизайн терезесинин жогору жагындагы жашыл тилкеден "Connection Automationти иштетүү" дегенди басыңыз. Муну бир блок үчүн бир убакта жасоо жана жогорудагы TX блогунун дизайнын кармануу жакшы идея.
  14. Курал AXI-Lite автобусун (VDMAs жана GPIOs) колдонгон блоктордун мастер/кулдар аралык туташуусун аткаруучу AXI Interconnectти кошууга аракет кылат.
  15. Ал ошондой эле VDMA тарабынан колдонулган AXI4-Stream жана High Performance процессор интерфейстери үчүн мастер/кул интерконнектинин милдетин аткаруучу AXI SmartConnect кошот (Stream to Memory Map жана тескерисинче).
  16. Курал ошондой эле процессор тутумун баштапкы абалга келтирүүнү кошот. Бул VDMA, GPIO жана процессорго байланыштуу блокторго гана туташкандыгын текшериңиз. Аны эч кандай видео блокторго туташтырбаңыз (б.а. dvi2rgb, убакыт контролери, vid агымына ж. Б.)
  17. Байланышты автоматташтыруу аяктагандан кийин, байланыштар TX блогунун дизайн сүрөтүнө дал келгенин текшериңиз. Сиз айтылбаган кошумча System ILA блогун байкайсыз. Бул мүчүлүштүктөрдү оңдоо үчүн гана жана азырынча керек эмес. Бул 150M Процессордун Баштапкы абалын колдонот, андыктан бул дагы кереги жок. Автобустарда кичинекей жашыл "мүчүлүштүктөрдү" көргөн жерде, бул ILAдан улам болот жана аны этибарга албайт.
  18. Акыркы кадам - булак дарагындагы блоктун дизайнын оң баскыч менен чыкылдатып, "HDL орогучун түзүү". Эгерде сиз оромого логиканы кошууну пландап жатсаңыз, бул тандалган сайын ал жазылып калат.
  19. SDK жагындагы чоо -жайын билүү үчүн VDMA Driver Setup бөлүмүн караңыз.

Сааттар жана баштапкы абалга келтирүү

Мен кандайдыр бир программалоочу логикалык долбоордун эң маанилүү аспектилери саат домендерин кылдаттык менен карап чыгуу жана сигналдарды кайра коюу экенин таптым. Эгерде алар туура конфигурацияланган болсо, анда сиздин дизайныңызды ишке киргизүүдө жакшы мүмкүнчүлүк бар.

Пикселдик саат жана убакыт кулпуланган

Белгилүү бир сигналдар активдүү экенин текшерүү үчүн бул сигналдарды Светодиоддорго (сааттар, кайра орнотуулар, кулпулар ж.б.) байлап коюу жакшы. Мен өткөргүч тактасында байкоо жүргүзүү үчүн пайдалуу деп тапкан эки сигнал-бул пикселдик саат жана 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-Stream Video Out үчүн
    • 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. Rgb2dvi блогунда HDMI TMDS саатын жана маалымат төөнөгүчтөрүн тышкы кылыңыз
  8. Бул дизайн боюнча ысык плагин сигналынын кереги жок.

3 -кадам: VDMA драйверин орнотуу

VDMA драйверин орнотуу
VDMA драйверин орнотуу

AXI-Lite интерфейси аркылуу конфигурацияланган ар кандай блокторду жөндөө BSPке шилтеме катары киргизилген демо долбоорлорду колдонуу менен эң жакшы жасалат. Дизайн жабдууларын экспорттоп, Vivadodan SDKти ишке киргизгенден кийин, сиз жаңы тактаны колдоо пакетин кошуп, BSP орнотуулары терезесине lwip202 китепканасын кошкуңуз келет. System.mss файлынын файлын BSPтен ачкыла, ошондо блокторуңардын дизайнынан турган перифериялык драйверлерди көрөсүңөр. "Мисалдарды импорттоо" опциясы сизге бул тышкы жабдууларды колдонгон демо -долбоорлорду импорттоого жана ошону менен жеткиликтүү Xilinx драйверлерин колдонуп, аларды программада кантип конфигурациялоону көрсөтүүгө мүмкүнчүлүк берет (тиркелген сүрөттү караңыз).

Бул VDMA, Timer & Interrupt жана GPIO конфигурациялоо үчүн колдонулган ыкма болчу. Бул жерде берүү жана алуу үчүн баштапкы код камтылган. Айырмалар дээрлик жалаң гана main.c.

*** ЭСКЕРТҮҮ: Бул окуу куралын жазуу учурунда система толук иштебегендиктен, бул бөлүмдөгү булак коду зымсыз тармак кодун камтыбайт. Бир нече мүчүлүштүктөр видеонун негизги өткөргүчтөрүн/долбоорлорун тармактык берүү/алуу долбоорлору менен айкалыштыруунун натыйжасында чечилиши керек. Ошондуктан бул окуу куралы аларды азырынча өзүнчө карайт.

TX Interrupt Handler Function (IRQHandler)

Бул функция GPIO блоктору аркылуу VDMAларды окуу жана жазуу менен берилген боз коддорду окуйт. Боз коддор ондукка которулат жана учурдагы алкактын кадрдык эс тутумун тандоо үчүн колдонулат. Көчүрүлгөн кадр VDMA тарабынан жазылганга чейинки мурунку кадр (мисалы, эгер VDMA 2 -кадрга жазса, биз 1 -кадрды көчүрөбүз, 0 -кадрга жазсак, 2 -кадрдан ороп, окуйбуз).

Функция кадр ылдамдыгын 60 Гцке эмес, 10 Гцке чейин азайтуу үчүн ар бир 6 -кадрды тартып алат. Тармактын жогорку чеги 300 Мбит / сек. Секундасына 10 кадрда 221,2 Мбит / с өткөрүү жөндөмдүүлүгү талап кылынат.

Бул функциядагы эки сапка комментарий берүү/комментарий бербөө, колдонуучуга мүчүлүштүктөрдү оңдоо/тестирлөө үчүн HDMI passthru режимине өтүүгө мүмкүндүк берет (код тиешелүү сызыктарды көрсөтүү үчүн комментарийленген). Учурда кадрды ethernet коду колдонулган эс тутумуна көчүрөт.

RX Interrupt Handler Function (IRQHandler)

Бул функция TX функциясына абдан окшош, бирок кирүүчү маалыматтарды жазуу үчүн Ethernet колдонгон 2 буфер FIFOдон көчүрүлөт. Ethernet коду FIFOго кайсы кадр жазылып жатканын көрсөтөт, маалыматтар карама -каршы кадрдан көчүрүлөт. Берилиштер айрылып калбоо үчүн VDMA тарабынан окулуп жаткан кадрдын артына кадрга көчүрүлөт.

4 -кадам: Nanorouter тармагын орнотуу

Nanorouter тармагын орнотуу
Nanorouter тармагын орнотуу

TPlink nanorouters аркылуу тармак түзүү үчүн, аларды жекече күйгүзүңүз жана түзмөктөр үчүн демейки wifi SSIDге туташыңыз. Бул түзмөктүн конфигурация жөндөөлөрү жөнүндө көбүрөөк маалыматты түзмөктүн колдонуучусу аркылуу тапса болот.

Түзмөктөрдүн бирин кирүү чекити катары орнотуңуз, бул тармак үчүн негизги байланыш катары иштейт. Тармактын аталышын жана аталышына көңүл бурууну жана DHCPди өчүрүүнү текшериңиз (роутердин IP даректерин динамикалык түрдө конфигурациялашын каалабайбыз, биз трансмиттер менен рецептер Zybo такталарынын IP даректерин ырааттуу болушун каалайбыз). Конфигурациядан кийин, түзмөктүн кайра жүктөлүшүн жана бул тармактын орнотулганын текшериңиз.

Башка түзмөктү кардар катары орнотуңуз жана ал биринчи nanorouter менен орноткон SSID тармагына туташуусун текшериңиз. Дагы бир жолу, DHCP кардар үчүн өчүрүлгөнүн текшериңиз.

Кардар аяктагандан жана кайра жүктөлгөндөн кийин, ал nanorouter кирүү чекитине туташуусу керек (эгер андай болбосо, анда түзмөктөрдүн биринин конфигурациясында көйгөй бар). Сиз кирүү чекитине туташкандан кийин, кардардын LED жарыгы катуу болорун байкайсыз.

Кирүү чекити nanorouter LED, кыязы, бул учурда жаркылдай берет, бул жакшы! Жаркылдаган жарык анын башка Ethernet портунан башка түзмөккө туташпаганын билдирет жана конфигурацияланган Zyboго туташкандан кийин, LED туруктуу тармактык туташууну көрсөтөт.

Азыр бизде nanorouters орнотулгандан кийин, биз аркылуу байланышууга мүмкүндүк бере турган зымсыз тармак бар. Маанилүү эскертүү, биздин нанороторлор үчүн конфигурациялоо ыкмасы (кирүү чекити жана кардар катары) бизге Zybo тактасынан кабыл алуучу Zybo тактасына экөө тең бир Ethernet зымы менен байланышкандай байланышууга мүмкүнчүлүк берет. Бул биздин тармакты орнотууну анча татаалдаштырбайт, анткени альтернатива Zybo такталарын серверге конкреттүү түрдө кошулуу үчүн конфигурациялоону камтышы мүмкүн.

Эки түзмөк тең орнотулгандан кийин, nanorouters конфигурацияланып, WIDI тармагыңызга киргизүүгө даяр. Nanorouters менен Zybo такталарынын ортосунда эч кандай конкреттүү жупташуу жок, анткени кирүү чекити же кардар берүүчү же кабыл алуу түзмөгү үчүн иштейт.

5 -кадам: Ethernet аркылуу маалыматтарды берүү үчүн Zynq процессинг системасын орнотуңуз

Ethernet аркылуу маалыматтарды берүү үчүн Zynq иштетүү системасын орнотуу
Ethernet аркылуу маалыматтарды берүү үчүн Zynq иштетүү системасын орнотуу
Ethernet аркылуу маалыматтарды берүү үчүн Zynq иштетүү системасын орнотуу
Ethernet аркылуу маалыматтарды берүү үчүн Zynq иштетүү системасын орнотуу

HDMI маалыматын бир Zybo тактасынан экинчисине өткөрүп берүү үчүн, биз VDMA драйверибизге Ethernet протоколун киргизишибиз керек. Бул жерде биздин максатыбыз - иштетүү тутумундагы Ethernet перифериялык системасы аркылуу жеке видео кадрларды биздин тармактын өткөрүү жөндөмдүүлүгүнө туура келген белгиленген ылдамдыкта берүү. Биздин долбоор үчүн биз LwIP жалаң металлдан жасалган TCPди колдондук. Долбоордун эки мүчөсү тең тармактык коммуналдык кызматтар менен салыштырмалуу тажрыйбасыз болгондуктан, бул тандоо TCP менен байланышкан кесепеттерин жана чектөөлөрүн толук тааныбай туруп жасалды. Бул ишке ашыруунун негизги көйгөйү чектелген өткөрүү жөндөмдүүлүгү жана ал чындыгында көп көлөмдөгү маалыматтарды буулантуу максатында иштелип чыкпагандыгы болгон. TCPны алмаштыруунун жана бул долбоорду жакшыртуунун альтернативдүү чечимдери кийинчерээк талкууланат.

LwIP менен TCPдин кыскача сүрөттөлүшү: Маалыматтар тармак боюнча tcp_mss (TCP максималдуу сегментинин өлчөмү) пакеттеринде жөнөтүлөт, бул жалпысынан 1460 байт. Tcp_write -ге чалуу көрсөткүчкө таянган кээ бир маалыматтарды алат жана pbufsти (пакеттердин буферин) конфигурациялап, маалыматтарды кармап турууга жана TCP операцияларынын структурасын камсыз кылат. Бир убакта кезекке турууга мүмкүн болгон маалыматтардын максималдуу өлчөмү 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 алуучу үчүн үч кадрдык буфердик мейкиндикке видео кадр маалыматын көчүрөт. Нанореутерден маалыматтарды чогултууда, кандайдыр бир маалыматтын үстүнөн жазылып калбоо үчүн, маалыматтын кош буфери колдонулат (биз тармактын буфери деп аталат), андыктан мурунку толук видео кадры көчүрүлүп жатканда тармак трафиги агымын уланта алат. VDMA буфери.

WiDi кабыл алуучу түзүлүштүн процедурасы эки милдетти талап кылат, алардын бири ethernet маалыматын кабыл алат, экинчиси VFMAнын үч кадрдык буферине тармактык буферден видео кадрларды көчүрүү.

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 пакеттеринин чийки өткөрүмү катары кабыл алынат.

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

Сунушталууда: