Мазмуну:
- 1 -кадам: материалдар
- 2 -кадам: ЧЫГУУ - VGA Controller 1 -бөлүк
- 3 -кадам: ЧЫГУУ - VGA Controller 2 -бөлүк
- 4 -кадам: ЧЫГУУ - HDMI Controller 1 -бөлүк
- 5 -кадам: ЧЫГУУ - HDMI Controller 2 -бөлүк
- 6 -кадам: RAMдан сүрөттөрдү көрсөтүү
- 7 -кадам: OUTPUT - SDK END
Video: Zynq Image Enhancement System: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Сиз, балким, аталышынан түшүнүп турганыңыздай, бул долбоордун максаты ZYNQ ApSOCтун жардамы менен Сүрөттү жакшыртуу системасын түзүү. Тагыраак айтканда, биз туманды сүрөттөрдөн же видеодон тазалай турган системаны кургубуз келет. Бул система начар шарттарда визуалдык маалыматтарды киргизүү катары кабыл алып, сүрөттү өркүндөтүү ыкмаларын колдонуп иштетип, анан жыйынтыкты чыгарат.
Долбоор Digilent Zybo тактасында курулган жана сыналган, бирок башка ZYNQ түзмөктөрү да иштеши керек.
Биз бул долбоорду 3кө бөлөбүз:
1) INPUT = Компьютерден/Камерадан Ethernet аркылуу сүрөт киргизүү
2) PROCESS = Image иштетүү
3) OUTPUT = HDMI интерфейси аркылуу сүрөттү чыгаруу
Биз проекттин чыгуу бөлүгүнөн баштайбыз (бул бизге жолду оңдоонун жакшыраак мүмкүнчүлүктөрүн берет) киргизүү менен улантып, кайра иштетүү бөлүгү менен аяктайт.
1 -кадам: материалдар
Бул долбоорду аягына чыгаруу үчүн сизге керек болот:
ЖАБДУУ
- HDMI жана Ethernet менен каалаган ZYNQ Board иштеши керек / Мен Digilent Zybo колдонуп жатам
- USB Aдан micro B USB кабелине чейин
- HDMI кабели
- Ethernet кабели
- HDMI киргизүү менен көрсөтүү
ПРОГРАММА
- Xilinx Vivado
- Xilinx SDK
2 -кадам: ЧЫГУУ - VGA Controller 1 -бөлүк
Биз визуалдык маалыматыбызды борттогу HDMI портунан чыгарабыз. HDMI порту ZYNQнын PL (Programmable Logic = FPGA) тарабына туташкан жана ал үчүн VHDLде контроллерди иштеп чыгышыбыз керек болот. Эгерде сиз VGA контроллерин ойлоп тапкан болсоңуз, анда бул абдан окшош болот. HDMI жана VGA убактысы чындыгында бирдей, чындыгында сиз HDMI контроллерин алуу үчүн учурдагы VGA контроллерин түзө аласыз.
Чынында эмне болуп жатканын жакшыраак түшүнүү үчүн, биз биринчи кезекте VGA контроллерин иштеп чыгабыз
Биз 1920x1080 чечилишинде көрсөтүүнү каалайбыз.
VGA контроллери пикселдик маалыматтарды (RGB форматында) ырааттуу түрдө, пиксел менен пикселди дисплейге берүү үчүн жооптуу. 1920x1080 өлчөмүндөгү чыныгы дисплей аянтынын сыртында дагы кээ бир "чек ара" жерлери бар, тактап айтканда: алдыңкы подъезд, арткы подъезд жана трасс. Бул аймактардын пикселдеринин өлчөмү стандарттык жана ар бир токтомго мүнөздүү. Бул аймактар экранда көрүнбөйт, бирок алар милдеттүү жана бул аймакта пикселдердин түсү кара болушу керек. Бул кошумча аймактар эмне үчүн керек деген суроо жаралат. Бул суроо бул үйрөткүчтүн максатын жокко чыгарат, бирок эгер сиз кызык болсоңуз, мен сизди онлайнда кошумча изилдөө жүргүзүүгө үндөйт элем.
Бул VGA интерфейсин түшүндүргөн жакшы видео
Биздин учурда, биз 1920*1080 чечилишинде көрсөтүүнү каалайбыз жана бул убакыттар:
Горизонталдуу дисплей аянты = 1920 пиксел
Horizontal Fron Porch = 88 пиксел
Horizontal Back Porch = 148 пиксел
Horizontal Retrace = 44 пиксел
Vertical Display Area = 1080 пиксел
Vertical Front Porch = 4 пиксел
Vertical Back Porch = 36 пиксел
Vertical Retrace = 5 пиксел
(Бул жерде сиз башка чечимдердин убактысын таба аласыз
Ошентип, биздин чыныгы чечимибиз 2200 x 1125 болот. Биз 60 кадр / сек (секундасына кадр) каалайбыз, ошондуктан пиксел саатыбыз 60*2200*1125 = 148.5 МГц болот. Zybo тактасында 125 МГц саат каралган. Бизге керек болгон 148.5 МГц пикселдик саатты түзүү үчүн MMCM IP колдонобуз.
3 -кадам: ЧЫГУУ - VGA Controller 2 -бөлүк
Мурунку кадамдын теориялык маалыматы менен сиз өзүңүздүн VGA контролеруңузду долбоорлошуңуз керек. Мен сизге Vivado долбоорун сунуштайм, бирок муну жок дегенде өзүңүз жасоого аракет кылыңыз.
Көпчүлүк VGA порттору сизге пикселдин түстүү каналына 8 бит бербейт (жогорудагы сүрөттү караңыз), андыктан дизайнды Башкармалыктын түстөрүнө төөнөгүчтөрдүн санына ылайыкташтырышыңыз керек болот (бул HDMI үчүн көйгөй эмес).
Дизайн экрандын бардыгын көк түскө боёйт, үстүнкү кызыл пикселден башка. Белгилей кетсек, бул долбоор ZYBO Board үчүн чектөөлөрдү колдонот. Демек, сиз бул долбоорду башка Башкармада иштеткиңиз келсе, анда чектөөлөр файлын жаңыртып, түстөргө төөнөгүчтөрдүн санын ыңгайлаштырыңыз.
Nr фигурасын караңыз. 2. Эсиңизде болсун, биздин VGA Контролери 5/6 битти бир түстө чыгарат, ошол биттер кабелден өтүүдөн мурун ар бир түстүү канал үчүн бир аналогдук сигналга айланат (Кызыл, Жашыл жана Көк).
4 -кадам: ЧЫГУУ - HDMI Controller 1 -бөлүк
Эми биз VGA контроллери кандай иштээрин билебиз жана иштөөчү дизайныбыз бар, биз HDMI контроллери менен уланта алабыз. HDMI контроллери чындыгында VGA контроллеринде биз иштеп чыккан бардык кодду колдонот. HDMI жана VGA бирдей убакытты жана ошол эле сигналдарды колдонушат. Айырмасы чыгуучу казыктарда көрүнөт.
VGA ар бир түс үчүн бир зымды колдонот жана аналогдук сигналды бүтүндөй өткөрүп берсе, HDMI ар бир түс үчүн бир убакта санарип түрүндө маалыматтарды өткөрүп берет жана дифференциалдуу сигнализацияны колдонот. Дифференциалдуу сигнал берүү, ар бир бит үчүн, HDMIде бири -бирине карама -каршы 2 казык бар экенин билдирет. Демек, эгер биз '1' сигналын өткөргүбүз келсе, анда биз зымга '1' беребиз, ал эми башка зымга '1' жокко чыгарылат. Бул сигналдын бүтүндүгүн камсыздайт жана бул жөнүндө көбүрөөк окуй аласыз https://goo.gl/6CPCzB. Бизде ар бир түс үчүн КЫЗЫЛ, ЖАШЫЛ жана КӨК жана саат үчүн бир канал бар. Дифференциалдуу сигнализациянын өзгөчөлүктөрүнөн улам, биз hdmi аркылуу жөнөтүп жаткан сигналдар тең салмактуу болушу керек, бул 1 менен 0дин саны белгилүү бир убакыт терезесинде болжол менен бирдей болушу керек дегенди билдирет. Бул үчүн биз 8b/10b коддоону колдонобуз. Бул жерде DVI спецификациясынан дифференциалдуу сигнализация жана 8b/10b коддоо кандай иштээри жөнүндө көп нерселерди биле аласыз https://goo.gl/hhh8Ge (DVI жана HDMI бир эле видео сигналдарды колдонот).
5 -кадам: ЧЫГУУ - HDMI Controller 2 -бөлүк
Жетиштүү теория, биздин долбоорго өтөлү. VGA Контроллеринде биз 148.5 МГц сааты менен качып кеткенбиз, бул жерде биз бул жыштыкты 10 эсе камсыздашыбыз керек, анткени биз ар бир түс үчүн 8 битти өткөрүп берүүнү каалайбыз жана 10 пикселге 10 битке которулган 8b/10b коддоону колдонобуз. *148.5MHz = 1485MHz. Бул Zybo тактасында алынбай турган чоң жыштык. Бактыга жараша, биз бир нече трюктарды жеңип алдык. Биз 5*148.5МГц = 742.5МГцти башкара алабыз жана 742.5МГц сааттын өйдө жана ылдый жагында маалыматтарды берүү үчүн OSERDES (сериялаштыруучу) IP колдонобуз, андыктан биз 1485МГцте берилүүчү маалыматтарды алабыз. Vivado бизге кээ бир убакыт эскертмелерин берет жана сиз кичине саат менен ар дайым төмөн чечимге барсаңыз болот, бирок ал иштегендиктен, биз азырынча буга каршы эмеспиз (эскертүүлөр сааттын буферлери расмий түрдө иштебегенине байланыштуу) 464 МГцтен жогору жыштыктарды колдоо).
Ошентип, биз эмне кылышыбыз керек, биздин VGA контроллерибиздин маалыматын 8b/10b форматында коддоо жана андан кийин аны жогоруда айтылгандай сериялаштыруу. Биз ошондой эле сериялаштыруу үчүн 742.5MHz саатты түзүү үчүн долбоорго дагы бир MMCM кошушубуз керек.
Мен vhdl файлдарын коддогучка жана сериализаторго тиркелдим. Сиз адегенде RGB каналдарын коддошуңуз керек, анан аларды сериялаштырыңыз.
Кызыл каналга мисал:
TMDS_encoder_RED: TMDS_encoder
порт картасы (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);
Serialiser_RED: Serialiser10_1
порт картасы (clk148, clk742, encoded_red_10bits, баштапкы абалга келтирүү, red_serial_1bit);
TMDS_encoder'ге "c" киргизүү кызыл жана жашыл үчүн "00" жана көк үчүн "vsync & hsync" (бул DVI спецификациясынын бир бөлүгү
6 -кадам: RAMдан сүрөттөрдү көрсөтүү
HDMI контроллеринин максаты - иштетилген сүрөттөрдү көрсөтүү. Эми, контроллер ишке киргизилгенде жана кетүүгө даяр болгондо, бул контроллерди маалымат менен азыктандыруу жөнүндө ойлонушубуз керек. Сүрөттү өркүндөтүү процессинин көбү PSде (Processing System = ARM Processor) ишке ашаарын эске алып, алынган сүрөттөр DDR RAMда калат. Ошентип, биз маалыматты RAMдан HDMI контроллерине алуунун жолуна муктажбыз.
Бул үчүн 3 IP керек болот:
1) VDMA (Video Direct Memory Access)
2) VTC (Video Timing Controller)
3) Video Out үчүн агым (биз мындан ары аны S2VO деп атайбыз)
S2VO иш жүзүндө чыгууга RGB 24BIT сигналын жана керектүү HSYNC жана VSYNC сигналдарын берет. Ошентип, биз HDMI контроллеринин ошол бөлүгүн таштап койсок болот.
Сиз бул IP даректериңизди дизайнга кошуп, конфигурациялап, туура байланыштарды түзүшүңүз керек.
Акыры сиз жогоруда көрсөтүлгөн схемага окшош нерсени алышыңыз керек.
7 -кадам: OUTPUT - SDK END
Бардык жабдыктар орнотулган жана барууга даяр болсо, биз азыр программалык камсыздоону PSге курушубуз керек. Биз аппараттык жабдыктарды жана биттик агымды экспорттоп, SDKти ишке киргизебиз.
1) File -> Export -> Export Hardware -> Include Bitstream'ди текшерип, ОК басыңыз
2) Файл -> SDK иштетүү
SDKда жаңы колдонмо долбоорун түзүңүз.
3) Файл -> Жаңы -> Колдонмо долбоору
4) Долбооруңуздун атын тандап, Кийинкини басыңыз
5) "Hello World" шаблонун тандап, Finish баскычын басыңыз
SDKдагы колдонмо VDMAны программалашы керек. Муну аткаруу үчүн кээ бир стандарттык функциялар колдонулат (убактым болгондо майда -чүйдөсүнө чейин айтам).
Дизайнды текшерүү үчүн биз SDK калыбына келтирүү (Xilinx Tools -> Dump/Restore) мүмкүнчүлүгүн колдонобуз, сүрөттү DDR RAM эсине салып, аны HDMI контроллерибиздин жардамы менен көрсөтөбүз. Сиз сүрөттү каалаган жериңизге жүктөй аласыз (эс тутумдун башында кичинекей чектелген жерлерди кошпогондо). Биздин мисал үчүн биз 16777216 дарегин жана файлдын өлчөмүн 8294400 = 1920*1080*4 (4 канал = RGB + альфа) тандап алдык.
Ал иштейт !
Уландысы бар
Сунушталууда:
Raspberry Pi менен сүрөттү иштетүү: OpenCV & Image Color бөлүүнү орнотуу: 4 кадам
Raspberry Pi менен сүрөттөрдү иштетүү: OpenCV & Image Color Separation орнотуу: Бул билдирүү бир нече сүрөттөрдү иштетүү боюнча үйрөтмөлөрдүн биринчиси. Биз сүрөттү түзгөн пикселдерди жакшылап карап чыгабыз, Raspberry Piге OpenCVди кантип орнотууну үйрөнөбүз, ошондой эле сүрөттү тартуу үчүн тесттик сценарийлерди жазабыз жана
Raspberry Pi үчүн Docker Image түзүү: 7 кадам
Raspberry Pi үчүн Docker Image түзүү: Бул көрсөтмөлөр Raspberry Pi үчүн Docker сүрөтүн кантип курууну көрсөтөт
Түсү жана тунуктугу үчүн Image Testing: 8 кадам
Түс жана Түшүнүк үчүн Сүрөттү Тестирлөө: Мен муну мен үчүн инструктивдүү кылдым; Менин көрсөтмөлөрүмдү жакшыртуу үчүн, бирок мен тапканым менен бөлүшкүм келет. Мен Instructabesке жүктөгөн кээ бир сүрөттөрдүн кемчиликсиз, башка сүрөттөрдүн тунуктугун, бир аз түссүз же бүдөмүк экенин байкадым. Билбейм
Moyamoya Image иштетүү: 8 кадам
Moyamoya Image Processing: Моямоя, " түтүн булоосу " - сейрек кездешүүчү оору, мээнин түбүндө жайгашкан базальдык ганглиядагы артериялардын тыгылышынан келип чыгат. Бул оору көбүнчө балдарды жабыркатуучу прогрессивдүү мээ кан тамыр оорусу. Сим
Gnuplot Image Output жана Email Alert Жөндөмдүүлүгү менен Raspberry Pi көзөмөлдөгөн бөлмө температурасын көзөмөлдөө: 7 кадам
Gnuplot Image Output жана Email Alert Жөндөмдүүлүгү менен Raspberry Pi көзөмөлдөгөн бөлмөнүн температурасын көзөмөлдөө: Мен иштеген жерде көптөгөн компьютерлер жайгашкан абдан маанилүү бөлмө бар. Бул системанын иштешин оптималдаштыруу үчүн бул бөлмөдө айлана -чөйрөнүн температурасы абдан салкын болушу керек. Менден мүмкүнчүлүгү бар мониторинг системасын иштеп чыгууну суранышты