реклама на сайте
подробности

 
 
> Стыковка таймингов дисплеев - проблема..., Стыковка таймингов OLEDа и TFT...
Саша Z
сообщение Jan 11 2008, 11:00
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Задача следующая: в системе есть работающий OLED дисплей резолюцией 320хRGBx240, 6 бит на цвет (т.е. 18 бит на пискель). Входной видео тайминг данного OLEDа включает горизонтальный и вертикальный syncs (VSYNC, HSYNC), data valid (DV) и ессно клок данных (на пиксель по 3 клока).
Есть блок в FPGA который форматирует все это в 18 бит выход с соотв. частотой клока и syncs.
Тайминг его таков что его syncs идут шириной в один клок и сразу следом наичается DV и данные. Т.е. на выходе форамтирующего блока FPGA идут данные шириной 18 бит так что на 320 пикселей в строке идет 321 клок (320 клока данных + один клок sync который либо HSYNC при переходе строки либо HSYNC одновременно с VSYNC при переходе фрейма). Сканирование ессно progressive.
И так, bottom line: имеем на входе 321 клок в строке (каждый клок их 320 - данное, 321ый клок - sync), всего 240 строк, итого 77040 клоков на фрейм.


Нужно данный тайминг выходе форматирующего блока подогнатаь под тайминг стандартного TFT дисплея который тоже резолюцией 320хRGBx240 но его стандартный входной тайминг подогнан под стандартный TV сигнал (NTSC). Т.е. первые 7 строк - пустые, затем идет 320 строк видео, после чего еще 15 строк пустых (для обратного хода луча). Ессно есть стандартные syncs: VSYNC, HSYNC, DEN (data enable внутри строки) и PCLK (pixel clock). Каждая строка имеет длинну между соседними HSYNCs: 400 клоков, из них данных: ессно 320 клоков. Ширина пульса HSYNC - 96 клоков, ширина VSYNC - 2 строки. Значит полная ширина строки (от фронта до фронта HSYNCа): 496 клоков, ширина VSYNCа: 992 клока.

Понятно что нужен буфер памяти (FIFO) для подгонки таймингов: т.е. например буфер на время тех 22 TV строк TFT дисплея. Буфер начинает заполняться видео данными по первому VSYNC/HSYNC OLEDа в течении 22ух TFT строк (что равно примерно 35 OLED строкам), затем начинаем читать видео данные наружу на TFT. Но проблема в том что величина буфера в 22 TFT строке не будет постоянной ибо кол-во клоков в каждой строке TFT значительно больше кол-ва клоков строки OLEDа.
Как мне кажется, буфер со временем переполниться вследствии разницы в длине строк (в клоках), т.е. будет нарастающее запаздывание считывания по сравнению с записью.
Забыл отметить: выход OLEDа (вход буфера) и вход TFT (выход буфера) идут по одному клоку, т.е. на одной частоте.

Действительно ли FIFO буфер в таком случае будет переполняться и получиться бардак ? Или я не совсем правильно это себе представляю ?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
petrov
сообщение Jan 11 2008, 12:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Судя по вашему описанию буфер будет переполняться. На TFT получается нужно выдавать данные с более высоким клоком на величину необходимую для передачи пустых строк.
Go to the top of the page
 
+Quote Post
Саша Z
сообщение Jan 11 2008, 16:20
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822



Цитата(petrov @ Jan 11 2008, 16:19) *
Судя по вашему описанию буфер будет переполняться. На TFT получается нужно выдавать данные с более высоким клоком на величину необходимую для передачи пустых строк.


Спасибо.
Да, так я себе и представлял что буфер будет переполняться. Но мне кажется не по причине тех цельных пустых строк (22), а по причине разницы в длинах строк (в клоках) между HSYNCs и разницы в ширине HSYNC, VSYNC пульсов между OLEDом и TFT.

В принципе я думаю соглашусь что для решения проблемы на TFT нужно выдавать данные по более высокому клоку который должен быть выше входного как отношние длин строк. Т.е. если кол-во клоков в строке OLEDа будет 321, а у TFT: 496 (включая ширину HSYNCа), значит клок данных на TFT по идее по частоте равен Foled*(496/321). Тогда время считывания из FIFO строки на TFT будет равно времени записи строки OLEDа. И в таком случае gap междy поинтерами записи данных OLEDа на входе и считыванием на TFT на выходе будет постоянен и равен 22 строкам TFT (или примерно 35 строкам OLEDа)

Я не прав ?
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 11 2008, 21:06
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Саша Z @ Jan 11 2008, 19:20) *
Спасибо.
Да, так я себе и представлял что буфер будет переполняться. Но мне кажется не по причине тех цельных пустых строк (22), а по причине разницы в длинах строк (в клоках) между HSYNCs и разницы в ширине HSYNC, VSYNC пульсов между OLEDом и TFT.

В принципе я думаю соглашусь что для решения проблемы на TFT нужно выдавать данные по более высокому клоку который должен быть выше входного как отношние длин строк. Т.е. если кол-во клоков в строке OLEDа будет 321, а у TFT: 496 (включая ширину HSYNCа), значит клок данных на TFT по идее по частоте равен Foled*(496/321). Тогда время считывания из FIFO строки на TFT будет равно времени записи строки OLEDа. И в таком случае gap междy поинтерами записи данных OLEDа на входе и считыванием на TFT на выходе будет постоянен и равен 22 строкам TFT (или примерно 35 строкам OLEDа)

Я не прав ?


Во время передачи пустых строк фифо заполнится заполнится и после разница никуда не денется так как скорости записи и считывания одинаковые, к следующим пустым строкам оно ещё заполнится и т. д. в итоге будет переполнение.

Я не знаю утройство шины TFT, но если там есть сигналы enable то не обязательно соотношение клоков должно равнятся определённой величине, просто клок TFT должен быть выше чтобы успевать формировать паузы когда реальные пиксели не передаются, когда же из за более высокой скорости считывания из фифо оно будет опустошаться то соответственно чрез управление enable ничего не будет передаваться.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 20:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016