Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: KIMENET - VGA vezérlő 1. rész
- 3. lépés: KIMENET - VGA vezérlő 2. rész
- 4. lépés: KIMENET - HDMI vezérlő 1. rész
- 5. lépés: KIMENET - HDMI vezérlő 2. rész
- 6. lépés: Képek megjelenítése RAM -ból
- 7. lépés: KIMENET - SDK VÉGE
![Zynq képjavító rendszer: 7 lépés Zynq képjavító rendszer: 7 lépés](https://i.howwhatproduce.com/images/001/image-1394-64-j.webp)
Videó: Zynq képjavító rendszer: 7 lépés
![Videó: Zynq képjavító rendszer: 7 lépés Videó: Zynq képjavító rendszer: 7 lépés](https://i.ytimg.com/vi/SgFhiT5CRiQ/hqdefault.jpg)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
![Zynq képjavító rendszer Zynq képjavító rendszer](https://i.howwhatproduce.com/images/001/image-1394-65-j.webp)
![Zynq képjavító rendszer Zynq képjavító rendszer](https://i.howwhatproduce.com/images/001/image-1394-66-j.webp)
Ahogy valószínűleg a címből is kitűnik, ennek a projektnek a célja egy képjavító rendszer létrehozása a ZYNQ ApSOC használatával. Pontosabban, olyan rendszert szeretnénk felépíteni, amely képes a köd eltávolítására a képekből vagy videókból. Ez a rendszer rossz körülmények között vizuális adatokat használ bemenetként, képjavító technikákkal dolgozza fel, majd adja ki az eredményt.
A projektet a Digilent Zybo Boardon építették és tesztelték, de más ZYNQ eszközöknek is működniük kell.
Ezt a projektet 3 részre osztjuk:
1) INPUT = Bemeneti kép Etherneten keresztül számítógépről/kameráról
2) PROCESS = Feldolgozza a képet
3) OUTPUT = A kép megjelenítése HDMI interfészen keresztül
Nagyon ellentmondó módon kezdjük a projekt kimeneti részével (ezáltal jobb hibakeresési lehetőségeket kapunk az út mentén), folytatjuk a bemenettel, és befejezzük a feldolgozó részt.
1. lépés: Anyagok
![Anyagok Anyagok](https://i.howwhatproduce.com/images/001/image-1394-67-j.webp)
A projekt befejezéséhez szüksége lesz:
HARDVER
- bármelyik HDMI -vel és Ethernet -sel rendelkező ZYNQ -kártya működhet / a Digilent Zyboyt használom
- USB A - micro B USB kábel
- HDMI kábel
- Hálózati kábel
- Kijelző HDMI bemenettel
SZOFTVER
- Xilinx Vivado
- Xilinx SDK
2. lépés: KIMENET - VGA vezérlő 1. rész
![KIMENET - VGA vezérlő 1. rész KIMENET - VGA vezérlő 1. rész](https://i.howwhatproduce.com/images/001/image-1394-68-j.webp)
Vizuális adatainkat a táblán található HDMI -port segítségével adjuk ki. A HDMI port a ZYNQ PL (Programozható logika = FPGA) oldalához van csatlakoztatva, és ehhez VHDL formátumú vezérlőt kell terveznünk. Ha valaha is tervezett VGA vezérlőt, ezt nagyon hasonlónak találja. A HDMI és a VGA időzítése valójában ugyanaz, valójában építhet egy meglévő VGA -vezérlőre a HDMI -vezérlő beszerzéséhez.
Annak érdekében, hogy jobban megértsük, mi történik valójában, először tervezünk egy VGA vezérlőt
1920x1080 felbontásban szeretnénk megjeleníteni.
A VGA vezérlő feladata a pixeladatok (RGB formátumban) egymás utáni, pixelről pixelre történő továbbítása a kijelzőre. Az 1920x1080 -as tényleges megjelenítési területen kívül néhány "határ" terület is található, nevezetesen: előtér, hátsó veranda és retrace. Ezeknek a területeknek a mérete pixelben szabványos és minden felbontásra jellemző. Ezek a területek valójában NEM jelennek meg a képernyőn, de kötelezőek, és ezen a területen a pixelek színének feketenek kell lennie. Jogos kérdés lenne, hogy miért van szükség ezekre a többletterületekre. Ez a kérdés megcáfolja ennek az utasításnak a célját, de ha kíváncsi vagy rá, arra bátorítalak, hogy végezz online további kutatásokat.
Ez egy jó videó, amely elmagyarázza a VGA interfészt
Esetünkben 1920*1080 felbontásban szeretnénk megjeleníteni, és ezek az időzítések:
Vízszintes megjelenítési terület = 1920 képpont
Vízszintes előlap Veranda = 88 képpont
Vízszintes hátsó tornác = 148 képpont
Vízszintes retrace = 44 képpont
Függőleges megjelenítési terület = 1080 képpont
Függőleges elülső veranda = 4 képpont
Függőleges hátsó tornác = 36 képpont
Függőleges retrace = 5 képpont
(Itt megtalálhatja a többi állásfoglalás időzítését
Tehát a tényleges felbontásunk 2200 x 1125 lesz. 60 fps (képkocka / másodperc) értéket szeretnénk, így a pixelóra 60*2200*1125 = 148,5 MHz lesz. A Zybo Boardon egy 125 Mhz -es óra található. Egy MMCM IP segítségével generáljuk a szükséges 148,5 MHz -es Pixel Clock -ot.
3. lépés: KIMENET - VGA vezérlő 2. rész
![KIMENET - VGA vezérlő 2. rész KIMENET - VGA vezérlő 2. rész](https://i.howwhatproduce.com/images/001/image-1394-69-j.webp)
Az előző lépés elméleti hátterével meg kell tudnia tervezni saját VGA vezérlőjét. Biztosítok egy Vivado projektet, amely ezt megteszi, de azt tanácsolom, hogy legalább először próbálja meg egyedül elkészíteni.
A legtöbb VGA -port nem ad 8 bitet színes csatornánként képpontonként (lásd a fenti képet), így a kialakítást hozzá kell igazítania a tábla által biztosított színekhez tartozó csapok számához (ez azonban nem jelent problémát a HDMI számára).
A Design a teljes képernyőt kékre fogja festeni, kivéve a bal felső pixelt, amely piros lesz. Meg kell jegyezni, hogy ez a projekt a ZYBO Board korlátozásait használja. Ha tehát ezt a projektet egy másik táblán kívánja futtatni, frissítse a kényszerfájlt, és módosítsa a színek színkombinációinak számát.
Vessen egy pillantást a sz. 2. Ne feledje, hogy míg a VGA -vezérlőnkönként 5/6 bitet ad ki, ezek a bitek analóg jellé alakulnak minden színcsatorna (piros, zöld és kék) előtt, mielőtt átmennek a kábelen.
4. lépés: KIMENET - HDMI vezérlő 1. rész
![KIMENET - HDMI vezérlő 1. rész KIMENET - HDMI vezérlő 1. rész](https://i.howwhatproduce.com/images/001/image-1394-70-j.webp)
Most, hogy tudjuk, hogyan működik a VGA -vezérlő, és van egy működő kialakításunk, folytathatjuk a HDMI -vezérlővel. A HDMI vezérlő valójában a VGA vezérlőben kifejlesztett összes kódot fogja használni. A HDMI és a VGA azonos időzítést és azonos jeleket használ. A különbség a kimeneti csapokon jelenik meg.
Míg a VGA minden színhez egy vezetéket használ, és analóg jelet továbbít, a HDMI a színeket digitálisan továbbítja 1 bitben minden egyes színhez, és differenciális jelzést használ. A differenciális jelzés azt jelenti, hogy minden bitnél a HDMI -nek 2 érintkezője van, az egyik ellentétes a másikkal. Tehát ha az "1" jelet szeretnénk továbbítani, akkor az "1" -et továbbítanánk egy vezetékre, az "1" -et pedig a másik vezetékre. Ez biztosítja a jel integritását, és erről bővebben itt olvashat https://goo.gl/6CPCzB. Van egy ilyen csatorna minden színhez, PIROS, ZÖLD és KÉK, és egy az órához. A differenciáljelzés sajátosságai miatt a hdmi -n keresztül küldött jeleknek egyenletesen kiegyensúlyozottnak kell lenniük, ami azt jelenti, hogy az 1 -esek és a 0 -k számának nagyjából egyenlőnek kell lenniük egy bizonyos időablakban. Ennek érdekében 8b/10b kódolást használunk. Sokat megtudhat a differenciáljelzés és a 8b/10b kódolás működéséről a DVI specifikációból itt: https://goo.gl/hhh8Ge (a DVI és a HDMI ugyanazokat a videojeleket használja).
5. lépés: KIMENET - HDMI vezérlő 2. rész
![KIMENET - HDMI vezérlő 2. rész KIMENET - HDMI vezérlő 2. rész](https://i.howwhatproduce.com/images/001/image-1394-71-j.webp)
Elég elmélet, térjünk rá a projektünkre. Míg a VGA vezérlőben megúsztuk a 148,5 MHz -es órát, itt ennek a frekvenciának a tízszeresét kell megadnunk, mert minden színhez 8 bitet akarunk továbbítani, és a 8b/10b kódolást használva, ami 10 bit/pixel és 10 *148,5 MHz = 1485 MHz. Ez óriási gyakoriság, amely nem érhető el a Zybo Boardon. Szerencsére kaptunk néhány trükköt a hüvelyünkben. 5*148,5MHz = 742,5MHz -et tudunk kezelni, és OSERDES (sorosító) IP -t használunk az adatok továbbítására mind a 742,5 MHz -es óra emelkedő, mind csökkenő szélén, így valójában 1485 MHz -en továbbítjuk az adatokat. A Vivado figyelmeztetést ad nekünk az időzítésről, és mindig alacsonyabb felbontást választhat kisebb órával, de mivel működik, egyelőre nem bánjuk (a figyelmeztetések azzal kapcsolatosak, hogy az óra pufferei hivatalosan nem támogatja a 464 MHz -nél magasabb frekvenciákat).
Tehát annyit kell tennünk, hogy kódoljuk a VGA vezérlőkimenetünkből származó adatokat 8b/10b formátumban, majd a fentiek szerint sorosítjuk. Szükségünk lesz még egy MMCM hozzáadására a projekthez a 742,5 MHz -es óra generálásához.
Az alábbiakban csatoltam a kódoló és a sorosító vhdl fájljait. Először kódolni kell az RGB csatornákat, majd sorosítani.
Példa a piros csatornára:
TMDS_encoder_RED: TMDS_encoder
porttérkép (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);
Serialiser_RED: Serialiser10_1
porttérkép (clk148, clk742, encoded_red_10bits, reset, red_serial_1bit);
A TMDS_encoder "c" bemenete piros és zöld "00", kék esetén "vsync & hsync" (ez a DVI specifikáció része:
6. lépés: Képek megjelenítése RAM -ból
![Képek megjelenítése RAM -ból Képek megjelenítése RAM -ból](https://i.howwhatproduce.com/images/001/image-1394-72-j.webp)
A HDMI vezérlő célja a feldolgozott képek megjelenítése. Most, hogy a vezérlő megvalósult és készen áll, gondolnunk kell arra, hogy ezt a vezérlőt adatokkal tápláljuk. Tekintettel arra, hogy a képjavítási folyamat nagy része a PS -ben (Processing System = ARM Processor) megy végbe, és az eredményül kapott képek a DDR RAM -ban lesznek. Szükségünk van tehát arra, hogy az adatokat a RAM -ból a HDMI -vezérlőbe juttassuk.
Ennek eléréséhez 3 IP -re lesz szüksége:
1) VDMA (Video Direct Memory Access)
2) VTC (videó időzítő vezérlő)
3) Streamelés videó kimenetre (ezentúl S2VO -nak hívjuk)
Az S2VO valójában RGB 24BIT jelet biztosít a kimenetre, valamint a szükséges HSYNC és VSYNC jeleket. Tehát kihagyhatjuk a HDMI -vezérlőnek ezt a részét.
Hozzá kell adnia ezeket az IP -címeket a tervezéshez, konfigurálnia kell őket, és létre kell hoznia a megfelelő kapcsolatokat.
Végül valami hasonlót kell kapnia a fenti vázlathoz.
7. lépés: KIMENET - SDK VÉGE
![KIMENET - SDK VÉGE KIMENET - SDK VÉGE](https://i.howwhatproduce.com/images/001/image-1394-73-j.webp)
Az összes hardver beállításával és használatra készen kell állítanunk a szoftvert a PS -be. Exportáljuk a hardvert és a bitfolyamot, és elindítjuk az SDK -t.
1) Fájl -> Exportálás -> Hardver exportálása -> Jelölje be a Bitstream beillesztése lehetőséget, majd nyomja meg az OK gombot
2) Fájl -> Indítsa el az SDK -t
Az SDK -ban hozzon létre egy új alkalmazásprojektet.
3) Fájl -> Új -> Alkalmazási projekt
4) Válassza ki a projekt nevét, majd nyomja meg a Tovább gombot
5) Válassza ki a "Hello World" sablont, és nyomja meg a Befejezés gombot
Az SDK -ban lévő alkalmazásnak be kell programoznia a VDMA -t. Ennek érdekében néhány szabványos funkciót használnak (ha időm engedi, részletezem).
A tervezés teszteléséhez az SDK visszaállítás (Xilinx Eszközök -> Dump/Restore) funkciót használjuk, hogy képet helyezzünk a DDR RAM memóriába és megjelenítsük a HDMI vezérlőnk segítségével. A képet bárhová betöltheti, ahová szeretné (kivéve néhány korlátozott területet a memória elején). Példánkban a 16777216 címet és a 8294400 = 1920*1080*4 fájlméretet választottuk (4 csatorna = RGB + alfa).
Működik !
Folytatjuk
Ajánlott:
Ultra alacsony fogyasztású WiFi otthoni automatizálási rendszer: 6 lépés (képekkel)
![Ultra alacsony fogyasztású WiFi otthoni automatizálási rendszer: 6 lépés (képekkel) Ultra alacsony fogyasztású WiFi otthoni automatizálási rendszer: 6 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-332-j.webp)
Rendkívül kis teljesítményű WiFi otthoni automatizálási rendszer: Ebben a projektben megmutatjuk, hogyan lehet néhány lépésben felépíteni egy alapvető helyi otthoni automatizálási rendszert. Raspberry Pi -t fogunk használni, amely központi WiFi eszközként fog működni. Míg a végcsomópontokhoz az IOT Cricket -et fogjuk használni az akkumulátor előállításához
Saját fotovoltaikus 5V -os rendszer készítése: 4 lépés (képekkel)
![Saját fotovoltaikus 5V -os rendszer készítése: 4 lépés (képekkel) Saját fotovoltaikus 5V -os rendszer készítése: 4 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-537-j.webp)
Saját fotovoltaikus 5V-os rendszer készítése: Ez egy bak-átalakítót használ 5 V-os kimenetként az akkumulátor (Li Po/Li-ion) töltésére. És Boost konverter 3,7 V -os akkumulátorról 5 V -os USB kimenetre az 5 V -os eszközökhöz. Hasonló az eredeti rendszerhez, amely ólom -sav akkumulátort használ energiatároló töltésként
Színrendező rendszer: Arduino alapú rendszer két övvel: 8 lépés
![Színrendező rendszer: Arduino alapú rendszer két övvel: 8 lépés Színrendező rendszer: Arduino alapú rendszer két övvel: 8 lépés](https://i.howwhatproduce.com/images/006/image-15112-j.webp)
Színrendező rendszer: Arduino alapú rendszer két övvel: Az ipari területen lévő termékek és tárgyak szállítása és/vagy csomagolása szállítószalagok segítségével készült vonalakkal történik. Ezek az övek bizonyos sebességgel segítik az elemek egyik pontból a másikba történő áthelyezését. Egyes feldolgozási vagy azonosítási feladatok
WIDI - vezeték nélküli HDMI a Zybo segítségével (Zynq Development Board): 9 lépés (képekkel)
![WIDI - vezeték nélküli HDMI a Zybo segítségével (Zynq Development Board): 9 lépés (képekkel) WIDI - vezeték nélküli HDMI a Zybo segítségével (Zynq Development Board): 9 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-311-44-j.webp)
WIDI - vezeték nélküli HDMI a Zybo segítségével (Zynq Development Board): Azt kívánta valaha, hogy a TV -t külső monitorként PC -hez vagy laptophoz tudja csatlakoztatni, de nem akarta, hogy mindezek a bosszantó vezetékek ne legyenek útban? Ha igen, akkor ez az oktatóanyag csak neked szól! Bár vannak olyan termékek, amelyek elérik ezt a célt, egy
Quadcopter a Zybo Zynq-7000 tábla használatával: 5 lépés
![Quadcopter a Zybo Zynq-7000 tábla használatával: 5 lépés Quadcopter a Zybo Zynq-7000 tábla használatával: 5 lépés](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10504196-quadcopter-using-zybo-zynq-7000-board-5-steps.webp)
Quadcopter a Zybo Zynq-7000 tábla használatával: Mielőtt hozzákezdenénk, íme néhány dolog, amit a projekthez szeretne: Alkatrészlista 1x Digilent Zybo Zynq-7000 tábla 1x Quadcopter keret, amely képes a Zybo rögzítésére (Adobe Illustrator fájl lézeres vágáshoz) 4x Turnigy D3530/ 14 1100KV kefe nélküli motor 4x