Съдържание:
- Стъпка 1: Интерфейс на VGA контролер
- Стъпка 2: Интегриране на VGA контролер с VGA дисплей
- Стъпка 3: Проектиране на рамков буфер
- Стъпка 4: Бележки
- Стъпка 5: Прикачени файлове
Видео: Проектиране на обикновен VGA контролер във VHDL и Verilog: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В тази инструкция ще проектираме прост VGA контролер в RTL. VGA контролер е цифровата схема, предназначена за задвижване на VGA дисплеи. Той чете от Frame Buffer (VGA Memory), който представлява кадъра за показване, и генерира необходимите данни и синхронизиращи сигнали за целите на дисплея.
Ако търсите Verilog/System verilog код: Посетете моя блог VGA контролер и видео система в Verilog
Стъпка 1: Интерфейс на VGA контролер
Следват основните сигнали на интерфейса във VGA контролер
- Pixel Clock или VGA Clock
- HSYNC и VSYNC сигнали
За избрания VGA дисплей първо трябва да изчислите честотата на Pixel Clock, необходима за задвижването му. Зависи от 3 параметъра: Общи хоризонтални пиксели, Общи вертикални пиксели, Честота на опресняване на екрана.
Обикновено F = THP * TVP * Честота на опресняване
Намерете документацията за пикселния часовник, необходима за различни VGA дисплеи, в прикачения RAR.
HSYNC и VSYNC сигналите се генерират от Pixel clock. Времето за сигналите на HSYNC и VSYNC зависи от броя на параметрите: хоризонтален и вертикален преден капак, хоризонтален и вертикален заден хоризонтален хоризонтален и вертикален пиксел на дисплея, хоризонтални и вертикални синхронизиращи импулсни ширини и полярности.
Тези параметри са стандартизирани за избран VGA дисплей. Намерете тези документи в приложения RAR.
Тези параметри са конфигурируеми параметри в нашия IP VGA контролер.
Стъпка 2: Интегриране на VGA контролер с VGA дисплей
Фигурата показва как да интегрирате VGA контролер с VGA дисплей. Имате нужда от още два компонента, за да завършите системата:
- Frame Buffer: Памет, която държи рамката за показване.
- Видео DAC: DAC, който преобразува RGB цифрови данни и управлява VGA дисплея с RGB аналогови сигнали при подходящо ниво на напрежение.
Един от най -простите и популярни видео DAC е ADV7125. Това е 8-битов ЦАП, който преобразува RGB цифрови думи в 0-0,7 V аналогови сигнали и управлява VGA дисплея.
Стъпка 3: Проектиране на рамков буфер
Това е паметта, която „съхранява“изображението за показване. Обикновено това е RAM или понякога ROM. Ще обсъдим как да проектираме рамков буфер за представяне на изображение. Frame буферът предава тази цифрова информация на Video DAC по команда от VGA контролер.
Първо трябва да решим необходимата дълбочина на пиксела. Той решава качеството на изображението, разнообразието от цветове, които един пиксел може да представлява. За 8-битов DAC трябва да представим основните цветови компоненти на пиксел: R, G и B на 8 бита всеки. Това означава, че пикселът е 24-битов.
Всеки пиксел се съхранява последователно в местата на паметта на Frame Buffer.
Да предположим, че изображението за показване е 800x600 пиксела.
Следователно необходим Frame Buffer е 800x600 = 480000 x 24 бита памет
Общият размер на паметта е 800x600x24 = 1400 kB прибл.
Ако черно -бяло изображение, 800x600x1 = 60 kB прибл.
Блок RAM може да се използва за представяне на Frame Buffer в Xilinx FPGA.
Стъпка 4: Бележки
- Необходими са допълнителни сигнали на VGA контролера в зависимост от избрания DAC. Използвал съм ADV7125.
- Добавете забавяне на цикъла през джапанки на VSYNC и HSYNC, преди да задействате VGA дисплея. Това се дължи на DAC и латентността на паметта. Пикселните сигнали трябва да се синхронизират с HSYNC и VSYNC. В моя случай това беше 2 цикъла закъснение.
- Ако Frame Buffer с даден размер не може да бъде проектиран на FPGA поради ограничението на размера на рам паметта, използвайте по -малка памет за представяне на изображението и просто редактирайте кода, за да превъртите адреса по границата на наличната памет, а не границата на пълния кадър. Това ще възпроизвежда едно и също изображение отново и отново по целия екран. Друг метод е мащабирането на пикселите, при което всеки пиксел се репликира, за да покаже цялото изображение на цял екран, с по -ниска разделителна способност. Това може да стане чрез промяна на логиката за увеличаване на адреса в кода.
- IP е напълно преносим във всички FPGA и е проверен по време до 100 MHz на Virtex-4 FPGA.
Стъпка 5: Прикачени файлове
RAR съдържа:
- Код на VGA контролера
- PDF файлове с VGA стандарти.
Препоръчано:
Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: 4 стъпки
Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: В предишните ми инструкции видяхме как да проектираме прост директно картографиран кеш контролер. Този път вървим крачка напред. Ще проектираме прост четирипосочен контролер за асоциативен кеш. Предимство? По -малък процент пропуски, но с цената на перфо
Проектиране на програмируем контролер за прекъсвания във VHDL: 4 стъпки
Проектиране на програмируем контролер за прекъсвания във VHDL: Уморен съм от вида на отговорите, които получавам в този блог. Благодаря ви момчета, че посетихте моя блог и ме мотивирахте да споделя знанията си с вас. Този път ще представя дизайна на друг интересен модул, който виждаме във всички SOC - Interrupt C
Проектиране на обикновен кеш контролер във VHDL: 4 стъпки
Дизайн на прост кеш контролер във VHDL: Пиша тази инструкция, защото ми беше малко трудно да получа някакъв референтен VHDL код, за да науча и да започна да проектирам кеш контролер. Затова сам проектирах кеш контролер от нулата и го тествах успешно на FPGA. Имам п
Дизайн на I2C Master във VHDL: 5 стъпки
Дизайн на I2C Master във VHDL: В тази инструкция се обсъжда проектирането на прост I2C master във VHDL. ЗАБЕЛЕЖКА: щракнете върху всяко изображение, за да видите пълното изображение
Проектиране на UART във VHDL: 5 стъпки
Дизайн на UART във VHDL: UART означава универсален асинхронен приемник предавател. Това е най -популярният и най -прост протокол за серийна комуникация. В тази инструкция ще научите как да проектирате UART модул във VHDL