Мазмұны:

Zynq суретті жақсарту жүйесі: 7 қадам
Zynq суретті жақсарту жүйесі: 7 қадам

Бейне: Zynq суретті жақсарту жүйесі: 7 қадам

Бейне: Zynq суретті жақсарту жүйесі: 7 қадам
Бейне: XC7Z030-2FBG676I,, логические микросхемы Zynq-7000 2024, Қараша
Anonim
Zynq суретті жақсарту жүйесі
Zynq суретті жақсарту жүйесі
Zynq суретті жақсарту жүйесі
Zynq суретті жақсарту жүйесі

Тақырыптан түсінуге болатын шығар, бұл жобаның мақсаты - ZYNQ ApSOC көмегімен суретті жақсарту жүйесін жасау. Нақтырақ айтқанда, біз тұманды суреттерден немесе бейнеден тазартатын жүйе құрғымыз келеді. Бұл жүйе нашар жағдайда визуалды деректерді енгізу ретінде қабылдайды, суретті жақсарту әдістерін қолдана отырып өңдейді, содан кейін нәтижені шығарады.

Жоба Digilent Zybo тақтасында құрастырылған және сыналған, бірақ басқа ZYNQ құрылғылары да жұмыс істеуі керек.

Біз бұл жобаны 3 бөлікке бөлеміз:

1) INPUT = Кескінді компьютерден/камерадан Ethernet арқылы енгізу

2) PROCESS = Кескінді өңдеу

3) OUTPUT = кескінді HDMI интерфейсі арқылы шығару

Қарама -қайшылықты түрде біз жобаның шығыс бөлігінен бастаймыз (бұл бізге жөндеуді жақсартуға мүмкіндік береді) енгізуді жалғастырамыз және өңдеу бөлігімен аяқтаймыз.

1 -қадам: материалдар

Материалдар
Материалдар

Бұл жобаны аяқтау үшін сізге қажет:

ЖАБДЫҚ

- HDMI мен Ethernet бар кез келген ZYNQ тақтасы жұмыс істеуі керек / мен Digilent Zybo қолданамын

- USB A - micro B USB кабелі

- HDMI кабелі

- Ethernet кабелі

- HDMI кірісі бар дисплей

БАҒДАРЛАМА

- Xilinx Vivado

- Xilinx SDK

2 -қадам: OUTPUT - VGA контроллері 1 -бөлім

OUTPUT - VGA контроллері 1 -бөлім
OUTPUT - VGA контроллері 1 -бөлім

Біз тақтада бар HDMI порты арқылы визуалды мәліметтерді шығарамыз. HDMI порты ZYNQ -дің PL (Programmable Logic = FPGA) жағына қосылады және оған VHDL -де контроллер құрастыру қажет болады. Егер сіз VGA контроллерін ойлап тапқан болсаңыз, онда бұл өте ұқсас болады. HDMI мен VGA уақыттары бірдей, іс жүзінде HDMI контроллерін алу үшін бар VGA контроллерін құруға болады.

Не болып жатқанын жақсы түсіну үшін біз алдымен VGA контроллерін жасаймыз

Біз 1920x1080 ажыратымдылықта көрсеткіміз келеді.

VGA контроллері пикселдік деректерді (RGB форматында) дисплейге пиксель бойынша пиксель бойынша беруге жауапты. Нақты 1920x1080 дисплей аумағының сыртында кейбір «шекаралық» аймақтар бар, атап айтқанда: алдыңғы кіреберіс, артқы кіреберіс және қайталау. Бұл аймақтардың пиксель өлшемі стандартты және әр ажыратымдылыққа тән. Бұл аймақтар экранда көрінбейді, бірақ олар міндетті болып табылады және бұл аймақтағы пикселдердің түсі қара болуы керек. Бұл қосымша аймақтар не үшін қажет деген сұрақ орынды болады. Бұл сұрақ нұсқаулықтың мақсатына қайшы келеді, бірақ егер сіз қызық болсаңыз, мен сізді онлайнда қосымша зерттеулер жүргізуге шақырамын.

Бұл VGA интерфейсін түсіндіретін жақсы бейне

Біздің жағдайда 1920*1080 ажыратымдылығымен көрсеткіміз келеді, және бұл уақыт:

Көлденең дисплей аймағы = 1920 пиксель

Горизонтальды кіреберіс = 88 пиксель

Көлденең артқы кіреберіс = 148 пиксель

Көлденең қайталау = 44 пиксель

Тік дисплей аймағы = 1080 пиксель

Тік алдыңғы кіреберіс = 4 пиксель

Тік артқы кіреберіс = 36 пиксель

Тігінен қайталау = 5 пиксель

(Мұнда сіз басқа шешімдердің уақыттарын таба аласыз

Біздің нақты ажыратымдылық 2200 x 1125 болады. Біз 60 кадр / с (секундына кадр) алғымыз келеді, сондықтан біздің пиксельдік сағат 60*2200*1125 = 148,5 МГц болады. Zybo тақтасында 125 МГц сағаты бар. Біз MMCM IP көмегімен бізге қажет 148,5 МГц пиксельдік сағатты генерациялаймыз.

3 -қадам: OUTPUT - VGA контроллері 2 -бөлім

OUTPUT - VGA контроллері 2 -бөлім
OUTPUT - VGA контроллері 2 -бөлім

Алдыңғы қадамдағы теориялық мәліметтермен сіз өзіңіздің VGA контроллеріңізді жасай аласыз. Мен сізге Vivado жобасын ұсынамын, ол мұны жасайды, бірақ мен сізге оны ең болмағанда өзіңіз жасауға тырысуға кеңес беремін.

VGA порттарының көпшілігі әр пиксельге бір түс арнасына 8 бит бермейді (жоғарыдағы суретті қараңыз), сондықтан дизайнды тақта ұсынатын түске түйреуіш санына бейімдеу қажет болады (бұл HDMI үшін мәселе емес).

Дизайн бүкіл экранды көк түске бояйды, тек сол жақ жоғарғы қызыл пикселден басқа. Айта кету керек, бұл жоба ZYBO басқармасы үшін шектеулерді қолданады. Егер сіз бұл жобаны басқа тақтада іске қосқыңыз келсе, шектеулер файлын жаңартып, әр түске түйреуіш санын бейімдеуіңіз керек.

Nr фигурасына назар аударыңыз. 2. Есіңізде болсын, біздің VGA контроллері бір түске 5/6 бит шығаратын болса, бұл бит кабельден өтпес бұрын әр түсті арна үшін бір аналогтық сигналға (қызыл, жасыл және көк) айналады.

4 -қадам: OUTPUT - HDMI контроллері 1 -бөлім

OUTPUT - HDMI контроллері 1 -бөлім
OUTPUT - HDMI контроллері 1 -бөлім

Енді біз VGA контроллері қалай жұмыс істейтінін білеміз және бізде HDMI контроллерін жалғастыра алатын жұмыс дизайны бар. HDMI контроллері VGA контроллерінде жасаған барлық кодты қолданады. HDMI мен VGA бірдей уақытты және сигналдарды қолданады. Айырмашылық шығыс түйреуіштерінде көрінеді.

VGA әр түс үшін бір сымды қолданып, аналогтық сигналды өткізсе, HDMI әр түс үшін бір уақытта цифрлық түрде 1 битті жібереді және дифференциалды сигнализацияны қолданады. Дифференциалды сигнал беру әр бит үшін HDMI -де бір -біріне қарама -қарсы 2 түйреуіш бар екенін білдіреді. Егер біз '1' сигналын бергіміз келсе, біз сымға '1' береміз, ал басқа сымға '1' берілмейді. Бұл сигналдың тұтастығын қамтамасыз етеді және сіз бұл туралы толығырақ мына жерден оқи аласыз https://goo.gl/6CPCzB. Бізде әр түс үшін ҚЫЗЫЛ, ЖАСЫЛ және КӨК үшін бір және сағат үшін бір арна бар. Дифференциалды сигнал берудің ерекшеліктеріне байланысты біз hdmi арқылы жіберетін сигналдар тұрақты теңдестірілген болуы керек, яғни белгілі бір уақыт аралығында 1 мен 0 сандары шамамен тең болуы керек. Бұл үшін біз 8b/10b кодтауды қолданамыз. Сіз дифференциалды сигнализация мен 8b/10b кодтаудың DVI спецификациясынан қалай жұмыс істейтіні туралы көп нәрсені біле аласыз https://goo.gl/hhh8Ge (DVI мен HDMI бірдей бейне сигналдарын қолданады).

5 -қадам: OUTPUT - HDMI контроллері 2 -бөлім

OUTPUT - HDMI контроллері 2 -бөлім
OUTPUT - HDMI контроллері 2 -бөлім

Теория жеткілікті, біздің жобаға көшейік. VGA контроллерінде біз 148,5 МГц сағатынан құтылдық, мұнда біз бұл жиілікті 10 есе қамтамасыз етуіміз керек, өйткені біз әр түс үшін 8 бит бергіміз келеді және 8b/10b кодтауды 10 пиксельге 10 битке аударамыз. *148,5 МГц = 1485 МГц. Бұл Zybo тақтасында алуға болмайтын үлкен жиілік. Бақытымызға орай, бізде бірнеше айлалар болды. Біз 5*148.5МГц = 742.5МГц басқара аламыз және 742.5МГц сағаттарының жоғарылауында да, төмендеуінде де деректерді беру үшін OSERDES (сериялаушы) IP қолданамыз, сондықтан біз деректерді 1485МГц жиілігінде аламыз. Vivado бізге уақыт туралы ескертулер береді, және сіз әрқашан кішірек сағатпен төменірек ажыратымдылыққа жүгіне аласыз, бірақ ол жұмыс істейтіндіктен, біз әзірше оған қарсы емеспіз (ескертулер сағат буферлері ресми түрде жұмыс жасамайтындығына байланысты) 464 МГц -тен жоғары жиілікті қолдау).

Сондықтан бізге VGA контроллерінің деректерін 8b/10b форматында кодтау, содан кейін жоғарыда айтылғандай сериялау қажет. Сондай -ақ, серияландыру үшін 742,5 МГц сағатты құру үшін жобаға басқа 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» болып табылады (бұл https://goo.gl/hhh8Ge DVI спецификациясының бөлігі).

6 -қадам: RAM -ден суреттерді көрсету

RAM -ден суреттерді көрсету
RAM -ден суреттерді көрсету

HDMI контроллерінің мақсаты - өңделген кескіндерді көрсету. Енді контроллер енгізілгенде және дайын болсақ, біз бұл контроллерді деректермен қамтамасыз ету туралы ойлануымыз керек. Кескінді жақсарту процесінің көп бөлігі PS -де (Processing System = ARM Processor) орын алатынын ескере отырып, алынған кескіндер DDR жедел жадында болады. Сондықтан бізге жедел жадтан HDMI контроллеріне деректерді алу әдісі қажет.

Мұны істеу үшін сізге 3 IP қажет:

1) VDMA (бейне жадыға тікелей кіру)

2) VTC (Бейне уақытты реттегіш)

3) Video Out ағыны (бұдан былай оны S2VO деп атайтын боламыз)

S2VO шығысқа RGB 24BIT сигналын және қажетті HSYNC және VSYNC сигналдарын береді. Сондықтан біз HDMI контроллерінің бұл бөлігін қалдыра аламыз.

Сіз бұл IP -лерді дизайнға қосуыңыз керек, оларды конфигурациялауыңыз және дұрыс қосылулар жасауыңыз керек.

Соңында сіз жоғарыдағы схемаға ұқсас нәрсені алуыңыз керек.

7 -қадам: OUTPUT - SDK END

OUTPUT - SDK END
OUTPUT - SDK END

Барлық қондырғылар орнатылғаннан кейін, біз PS -де бағдарламалық жасақтаманы құруға тиіспіз. Біз жабдықты және ағынды экспорттаймыз және SDK іске қосамыз.

1) Файл -> Экспорттау -> Аппараттық құралдарды экспорттау -> Бит ағыны қосуды тексеріңіз және OK түймесін басыңыз

2) Файл -> SDK іске қосыңыз

SDK -те жаңа қосымшалық жоба жасаңыз.

3) Файл -> Жаңа -> Қолданбалы жоба

4) Жобаның атауын таңдап, Келесі түймесін басыңыз

5) «Сәлем әлемі» үлгісін таңдап, Дайын түймесін басыңыз

SDK қосымшасы VDMA бағдарламалауын қажет етеді. Бұл үшін кейбір стандартты функциялар қолданылады (уақыт болған кезде мен егжей -тегжейлі айтамын).

Дизайнды тексеру үшін біз SDK қалпына келтіру (Xilinx Tools -> Dump/Restore) мүмкіндігін қолданып, суретті DDR RAM жадына салып, оны HDMI контроллері арқылы көрсетеміз. Сіз кескінді кез келген жерге жүктей аласыз (жад басында кейбір шектеулі аймақтарды қоспағанда). Біздің мысал үшін біз 16777216 адресін және 8294400 = 1920*1080*4 файл өлшемін таңдадық (4 арна = RGB + альфа).

Ол істейді !

Жалғасы бар

Ұсынылған: