Mündəricat:
- Addım 1: Materiallar
- Addım 2: Çıxış - VGA Controller Part 1
- Addım 3: Çıxış - VGA Controller Part 2
- Addım 4: Çıxış - HDMI Nəzarətçisi 1 -ci hissə
- Addım 5: Çıxış - HDMI Nəzarətçisi 2 -ci hissə
- Addım 6: Şəkilləri RAM -dan göstərin
- Addım 7: Çıxış - SDK SONU
Video: Zynq Image Enhancement System: 7 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Yəqin ki, başlıqdan başa düşə biləcəyiniz kimi, bu layihənin məqsədi ZYNQ ApSOC -dan istifadə edərək Şəkil Təkmilləşdirmə Sistemi hazırlamaqdır. Daha dəqiq desək, şəkilləri və ya videodan dumanı təmizləyən bir sistem qurmaq istəyirik. Bu sistem yoxsul şəraitdə vizual məlumatları giriş olaraq qəbul edəcək, şəkil təkmilləşdirmə üsullarından istifadə edərək emal edəcək və sonra nəticəni çıxaracaq.
Layihə Digilent Zybo Board -da quruldu və sınaqdan keçirildi, lakin digər ZYNQ cihazları da işləməlidir.
Bu layihəni 3 hissəyə ayıracağıq:
1) GİRİŞ = Kompüterdən/Kameradan Ethernet vasitəsilə Şəkil daxil edin
2) PROSES = Şəkli emal edin
3) ÇIXIŞ = Bir HDMI interfeysi vasitəsilə Şəkli Çıxar
Çox ziddiyyətli bir şəkildə, layihənin çıxış hissəsindən başlayacağıq (bu bizə yol boyunca daha yaxşı ayıklama imkanları verəcək) girişlə davam edin və emal hissəsi ilə bitirin.
Addım 1: Materiallar
Bu layihəni başa çatdırmaq üçün sizə lazım olacaq:
DONANIM
- HDMI və Ethernet olan hər hansı bir ZYNQ Board işləməlidir / Digilent Zybo istifadə edirəm
- USB A - mikro B USB kabeli
- HDMI kabeli
- Ethernet kabeli
- HDMI girişli ekran
PROQRAM TƏMİNATI
- Xilinx Vivado
- Xilinx SDK
Addım 2: Çıxış - VGA Controller Part 1
Lövhədə olan HDMI portundan istifadə edərək vizual məlumatlarımızı çıxaracağıq. HDMI portu ZYNQ -nin PL (Programlanabilir Logic = FPGA) tərəfinə bağlıdır və bunun üçün VHDL -də bir nəzarətçi dizayn etməliyik. VGA idarəedicisini hazırlamısınızsa, buna bənzər bir şey tapa bilərsiniz. HDMI və VGA vaxtları əslində eynidir, əslində bir HDMI nəzarətçi əldə etmək üçün mövcud bir VGA nəzarətçisinə qura bilərsiniz.
Əslində baş verənləri daha yaxşı başa düşmək üçün əvvəlcə bir VGA idarəedici quracağıq
1920x1080 ölçüsündə göstərmək istəyirik.
VGA nəzarətçisi, piksel məlumatlarını (RGB formatında) ardıcıl olaraq piksel ilə pikselin ekrana ötürülməsindən məsuldur. 1920x1080 -in həqiqi ekran sahəsinin xaricində bəzi "sərhəd" sahələri də var: ön eyvan, arxa eyvan və geri çəkmə. Bu sahələrin piksel ölçüsü standartdır və hər bir qətnaməyə xasdır. Bu sahələr əslində ekranda görünmür, lakin məcburidir və bu sahədəki piksellərin rəngi qara olmalıdır. Doğru bir sual, bu əlavə sahələrin nəyə görə lazım olmasıdır. Bu sual bu təlimatın məqsədinə ziddir, amma maraqlanırsınızsa, sizi onlayn olaraq daha çox araşdırma aparmağa təşviq edərdim.
Bu VGA interfeysini izah edən yaxşı bir videodur
Bizim vəziyyətimizdə 1920*1080 qətnamədə göstərmək istəyirik və bu zamanlamalardır:
Yatay Görüntü Sahəsi = 1920 piksel
Yatay Ön Sundurma = 88 piksel
Yatay Arxa Sundurma = 148 piksel
Horizontal Retrace = 44 piksel
Şaquli Görüntü Sahəsi = 1080 piksel
Şaquli Ön Sundurma = 4 piksel
Şaquli Arxa Sundurma = 36 piksel
Şaquli geri çəkmə = 5 piksel
(Burada digər qətnamələr üçün vaxtları tapa bilərsiniz
Əsl qətnaməmiz 2200 x 1125 olacaq. 60 fps (saniyədə kadr) istəyirik, buna görə piksel saatımız 60*2200*1125 = 148.5 MHz olacaq. Zybo lövhəsində 125 MHz tezliyi var. Ehtiyacımız olan 148.5 MHz pikselli saat yaratmaq üçün MMCM IP istifadə edəcəyik.
Addım 3: Çıxış - VGA Controller Part 2
Əvvəlki addımdakı nəzəri məlumatlarla öz VGA nəzarətçinizi dizayn edə bilməlisiniz. Sizə bunu edən bir Vivado layihəsi təqdim edəcəyəm, amma heç olmasa əvvəlcə bunu özünüz etməyi məsləhət görürəm.
Əksər VGA portları piksel başına rəng kanalı başına 8 bit vermir (yuxarıdakı şəklə baxın), buna görə də dizaynı lövhənin verdiyi rəng başına pin sayına uyğunlaşdırmalısınız (bu HDMI üçün problem deyil).
Dizayn, sol üst pikseldən başqa, bütün ekranı mavi rəngə boyayacaq. Qeyd etmək lazımdır ki, bu layihə ZYBO İdarə Heyəti üçün məhdudiyyətlərdən istifadə edir. Bu layihəni başqa bir lövhədə idarə etmək istəyirsinizsə, məhdudiyyətlər faylını yeniləməli və rəng başına pin sayını uyğunlaşdırmalısınız.
Nr rəqəminə baxın. 2. Unutmayın ki, VGA Controllerimiz rəng başına 5/6 bit çıxardığı halda, bu bitlər kabeldən keçməzdən əvvəl hər rəng kanalı (Qırmızı, Yaşıl və Mavi) üçün bir analoq siqnala çevrilir.
Addım 4: Çıxış - HDMI Nəzarətçisi 1 -ci hissə
İndi VGA nəzarətçisinin necə işlədiyini bilirik və HDMI nəzarətçi ilə davam edə biləcəyimiz işlək bir dizaynımız var. HDMI nəzarətçisi əslində VGA nəzarətçisində hazırladığımız bütün kodları istifadə edəcək. HDMI və VGA eyni vaxtları və eyni siqnalları istifadə edir. Çıxış pinlərində fərq görünür.
VGA hər rəng üçün bir tel istifadə edərək analoq siqnal ötürürsə, HDMI hər rəng üçün bir anda rəqəmsal olaraq 1 bit ötürür və diferensial siqnaldan istifadə edir. Diferensial siqnal, hər bit üçün HDMI -nın bir -birinin əksinə olan 2 pinin olması deməkdir. Beləliklə, '1' siqnalını ötürmək istəsək, teldə '1' və digər teldə '1' rədd edilir. Bu siqnal bütövlüyünü təmin edir və bu barədə daha çox oxuya bilərsiniz https://goo.gl/6CPCzB. Hər bir rəng üçün bu kanallardan birimiz var, QIRMIZI, YAŞIL və MAVİ və bir saat üçün. Diferensial siqnalizasiya xüsusiyyətlərindən ötəri hdmi vasitəsi ilə göndərdiyimiz siqnallar DC balanslaşdırılmış olmalıdır ki, bu da 1 və 0 rəqəmlərinin müəyyən bir zaman aralığında təxminən bərabər olması deməkdir. Bunu etmək üçün 8b/10b kodlaşdırma istifadə edəcəyik. DVI spesifikasiyasından diferensial siqnalizasiya və 8b/10b kodlaşdırmanın necə işlədiyini burada öyrənə bilərsiniz https://goo.gl/hhh8Ge (DVI və HDMI eyni video siqnallarını istifadə edir).
Addım 5: Çıxış - HDMI Nəzarətçisi 2 -ci hissə
Kifayət qədər nəzəriyyə, layihəmizə keçək. VGA Controller -də 148.5 MHz tezliyi ilə qaçdığımız halda, burada hər rəng üçün 8 bit ötürmək istədiyimiz üçün və piksel başına 10 bitə çevrilən 8b/10b kodlaşdırmasını istifadə etdiyimiz üçün bu tezliyi 10 dəfə təmin etməliyik. *148.5 MHz = 1485 MHz. Bu, Zybo lövhəsində əldə edilə bilməyən böyük bir tezlikdir. Xoşbəxtlikdən əlimizdən bir neçə fənd aldıq. 5*148.5MHz = 742.5MHz idarə edə bilərik və 742.5Mhz saatın həm yüksələn, həm də enən kənarında məlumat ötürmək üçün OSERDES (serializer) IP istifadə edəcəyik, buna görə də məlumatları 1485MHz -də ötürəcəyik. Vivado bizə bəzi vaxt xəbərdarlıqları verəcək və hər zaman daha kiçik bir saatla daha aşağı bir qətnamə əldə edə bilərsiniz, amma işlədiyi üçün indiyə qədər buna əhəmiyyət vermirik (xəbərdarlıqlar saat tamponlarının rəsmi olaraq işləməməsi ilə əlaqədardır) 464MHz -dən yüksək olan dəstəkləmə tezlikləri).
Beləliklə, etməli olduğumuz şey, VGA Controller çıxışımızdakı məlumatları 8b/10b formatında kodlaşdırmaq və sonra yuxarıda qeyd edildiyi kimi seriallaşdırmaqdır. Seriyalaşdırma üçün 742.5MHz saat yaratmaq üçün layihəyə başqa bir MMCM əlavə etməliyik.
Aşağıda kodlayıcı və serializator üçün vhdl fayllarını əlavə etdim. Əvvəlcə RGB kanallarını kodlamalı və sonra seriallaşdırmalısınız.
Qırmızı kanal üçün nümunə:
TMDS_encoder_RED: TMDS_encoder
liman xəritəsi (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);
Serialiser_RED: Serialiser10_1
liman xəritəsi (clk148, clk742, encoded_red_10bits, sıfırlama, red_serial_1bit);
TMDS_encoder -ə "c" girişi qırmızı və yaşıl üçün "00", mavi üçün "vsync & hsync" dir (bu https://goo.gl/hhh8Ge DVI spesifikasiyasının bir hissəsidir).
Addım 6: Şəkilləri RAM -dan göstərin
HDMI nəzarətçisinin məqsədi işlənmiş şəkilləri göstərməkdir. İndi nəzarətçi tətbiq olunduqda və işə hazır olduqda, bu nəzarətçini məlumatlarla təmin etməyi düşünməliyik. Bir çox görüntü inkişaf etdirmə prosesinin PS -də (İşləmə Sistemi = ARM Prosessoru) baş verəcəyini və nəticədə meydana gələn görüntülərin DDR RAM -da yerləşəcəyini nəzərə alsaq. RAM -dan HDMI nəzarətçisinə məlumat əldə etmək üçün bir yol lazımdır.
Bunu etmək üçün 3 IP -ə ehtiyacınız olacaq:
1) VDMA (Video Birbaşa Yaddaşa Giriş)
2) VTC (Video vaxt nəzarətçisi)
3) Video Çıxışına axın (bundan sonra S2VO adlandıracağıq)
S2VO əslində çıxışa RGB 24BIT siqnalı və lazım olan HSYNC və VSYNC siqnalları verəcək. Beləliklə, HDMI nəzarətçisinin həmin hissəsini kənarda qoya bilərik.
Bu IP -ləri dizaynınıza əlavə etməli, konfiqurasiya etməli və düzgün əlaqələr qurmalısınız.
Nəhayət, yuxarıdakı sxemə bənzər bir şey almalısınız.
Addım 7: Çıxış - SDK SONU
Quraşdırılmış və getməyə hazır olan bütün qurğularla birlikdə proqramı PS -də qurmalıyıq. Donanımı və bit axını ixrac edəcəyik və SDK -nı işə salacağıq.
1) Fayl -> İxrac et -> Avadanlıq İxrac et -> Bitstream Daxil Edin və OK düyməsini basın
2) Fayl -> SDK -nı işə salın
SDK -da yeni bir tətbiq layihəsi yaradın.
3) Fayl -> Yeni -> Tətbiq Layihəsi
4) Layihəniz üçün bir ad seçin və Next düyməsini basın
5) "Hello World" şablonunu seçin və Finish düyməsini basın
SDK -dakı tətbiqin VDMA proqramlaşdırması lazımdır. Bunu yerinə yetirmək üçün istifadə olunan bəzi standart funksiyalar var (vaxtım olanda ətraflı məlumat verəcəyəm).
Dizaynımızı yoxlamaq üçün SDK Geri Yükləmə (Xilinx Alətləri -> Dump/Restore) xüsusiyyətindən istifadə edərək DDR RAM yaddaşına bir şəkil qoyub HDMI Nəzarətçimizdən istifadə edərək göstərə bilərik. Görüntünü istədiyiniz yerə yükləyə bilərsiniz (yaddaşın əvvəlində bəzi məhdud məhdud sahələr istisna olmaqla). Nümunəmiz üçün 16777216 ünvanını və fayl ölçüsünü 8294400 = 1920*1080*4 (4 kanal = RGB + alfa) seçdik.
İşləyir!
Ardı var
Tövsiyə:
Slide Advance Alert System: 6 Addım
Slide Advance Alert System: Brown Dog Gadgets -da seminarlar üçün çoxlu video axını edirik və qurulumumuzda bir nəfər kamera və proqram işlədən, söhbət pəncərəsini izləyən, kameranın dəyişdirilməsi və irəliləməsi ilə məşğul olan başqa bir şəxs var. slaydlar
AQUARIUM EVAPORATION TOP OFF SYSTEM: 6 Addım
AQUARIUM EVAPORATION TOP OFF SYSTEM: Buxarlanma akvariumdakı suyun miqdarını azaldır və kompensasiya edilmədikdə qalan suyun kimyasında dəyişikliklərə səbəb olacaq. Bu cür dəyişikliklər akvariumdakı həyat formalarına mənfi təsir göstərəcək. Buna görə də maarifləndirmək vacibdir
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)
WIDI - Zybo (Zynq İnkişaf lövhəsi) istifadə edərək simsiz HDMI: 9 addım (şəkillərlə)
WIDI - Zybo (Zynq İnkişaf Lövhəsi) istifadə edərək Kabelsiz HDMI: Televiziyanızı xarici bir monitor olaraq bir kompüterə və ya dizüstü kompüterə bağlaya biləcəyinizi arzuladınızmı, amma bütün bu sinir bozucu kordonlara sahib olmaq istəmədinizmi? Əgər belədirsə, bu təlimat yalnız sizin üçündür! Bu məqsədə çatan bəzi məhsullar olsa da, bir
Zybo Zynq-7000 Board istifadə edən Quadcopter: 5 addım
Zybo Zynq-7000 Board istifadə edən Quadcopter: İşə başlamazdan əvvəl, layihə üçün istədiyiniz bəzi şeylər var: Parçalar siyahısı1x Digilent Zybo Zynq-7000 lövhəsi 1x Quadcopter Çərçivəsi Zybo (lasercutting üçün əlavə edilmiş Adobe Illustrator faylı) 4x Turnigy D3530/ 14 1100KV Fırçasız Motorlar 4x