|
Связать FPGA и монитор TFT, Советы начинающим |
|
|
|
Jan 27 2012, 09:37
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
DmitryRЯ вот не участвовал в разработке контроллеров для мониторов, поэтому не возьмусь отвечать за их содержимое. Я могу лишь поделиться опытом, что получается, если взять ПЛИС и выдать развертку на типовой TFT-монитор. Так вот, автоподстройка не может настроиться на правильное отображение картинки, если pixel clock не попадает немного в рекомендованные значения. При этом диапазон регулировок (ручных) самого монитора раз в 20 перекрывает исходную ошибку. Например, разница между 182.5 и 185.25 дает ошибку в 2.5 пикселя при строке в 1920 пикселей, а диапазон регулировок - от -50 до 50 пикселей. Как это объяснить? Я это объясняю тем, что TFT-монитор имеет ограниченный набор синтезатора частот для pixel clock. И не всегда этот набор может совпасть с той частотой, которая используется видеосистемой. Именно в этом случае никакой автоподстройкой не добиться того, что моя активная область даст ровно столько же пикселей, сколько есть в матрице. И в итоге получается нечеткая картинка. А ведь суть автоподстройки в мониторе именно в том, чтобы выровнять картину и фазы пикселей на экране именно в тех условиях, когда видеосистема выдает их с некоторыми отклонениями от тех параметров, которые ожидаются по GTF. Что касается уровней, то тут Вы и вовсе, как мне кажется, вводите людей в заблуждение. Вот нарыл интересный документ: http://www.epanorama.net/links/videosignal.htmlГлавным образом, он интересен там, что там кратко и по сути есть про все видеосистемы, как компьютерные, так и телевизионные. Так вот: 1) Для систем компьютерного отображения используется покомпонентная передача цветов R, G, B уровнями от 0 до 0.7В. Синхронизация при этом бывает трех типов: HSYNC + VSYNC, Composite SYNC, Sync on green. Насколько я понимаю, VGA - это именно отдельные HSYNC + VSYNC, поэтому никаких там подставок в зеленом компоненте нет вообще. Сейчас специально взял и осциллографом посмотрел развертку обычного компа на VGA, совершенно одинаковый размах для всех компонент, плюс никаких подмесов HSYNC в зеленый. Возможно, есть мониторы, которые умеют работать и по Sync on Green (помимо основной HSYNC + VSYNC), но это их собственные фичи, не являющиеся обязательными для всех видеосистем. И не надо людей запутывать. 2) Что касается подставки в зеленом, то она именно для добавления синхронизации и нужна в композитном сигнале. Никакой бланкинг она не маркирует. Вот взгляните на таблицу 9 стр. 18 в даташите на ADV7123. Там вообще идентичны данные выходов для Black level и blank level. То есть, попросту говоря, бланкинг - это не "чернее черного", а просто обычный черный. А вот SYNC - это настоящий 0В, который действительно ниже уровня черного. Но это и есть собственно композитный сигнал уже, а вовсе не обычный VGA. 3) И вообще пример с ADV7123 неудачный. В даташите нет ни одного упоминания, как применять этот чип для разверки VESA и VGA, зато есть упоминание стандартов RS-170 и RS-343A, которые для телевидения, а не для VGA-мониторов. Да, из него тоже можно сделать VGA уровни, но это будет другая схема, нежели приведенная в рисунке 28, с тремя BNC выходами на монитор и композитным зеленым. zombiДа все у Вас нормально будет, нет там никаких подставок на VGA. Все сигналы от 0В (черный) до 0.7В(белый). Конечно, резисторный ЦАП будет не так хорош, как настоящий, но выглядеть будет похоже. Вообще, в развертке VGA как таковой ничего сложного нет. Подключил ЦАП, который тянет нагрузку в 37.5 ом, сделал hsync и vsync, и все дела. Немного сложнее с таймингами, поскольку для каждого режима есть рекомендованный pixel clock, и нужно так выбрать базовую частоту, чтобы можно было с помощью PLL в ПЛИС получить частоты для всех нужных режимов. Либо просто поставить внешний синтезатор таких частот, но это место и дополнительные затраты. Вот тут уже как-то выкладывали документик, который будет полезен для правильной настройки времянок в различных видеорежимах. Все же стандарт от VESA, как-никак...
|
|
|
|
|
Jan 27 2012, 10:37
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(Hoodwin @ Jan 27 2012, 12:37)  Например, разница между 182.5 и 185.25 дает ошибку в 2.5 пикселя при строке в 1920 пикселей, а диапазон регулировок - от -50 до 50 пикселей. Как это объяснить? Еще раз говорю, я думаю что у вас что-то еще было неправильно настроено. Если же при всех остальных идентичных настройках 182.5MHz работает, а 182.25MHz - нет, то я бы попробовал на паре мониторов других моделей, потому что это очень странно. Цитата(Hoodwin @ Jan 27 2012, 12:37)  То есть, попросту говоря, бланкинг - это не "чернее черного", а просто обычный черный. То есть если на монитор сразу после смены видеорежима подать картинку с широкой черной каемкой (или вообще черный экран), он по идее должен принять ее за бланкинг (раз черный и бланкинг в видеосигнале не отличаются) и не смочь установить синхронизацию? Цитата(Hoodwin @ Jan 27 2012, 12:37)  Что касается уровней, то тут Вы и вовсе, как мне кажется, вводите людей в заблуждение. ... 3) И вообще пример с ADV7123 неудачный. Может он и неудачный, но он стоял на ките FPGA, и поэтому его решили применять, и все работало. И описал я про уровни ровно то, что написано в его даташите, поэтому говорить, что я ввожу кого-то в заблуждение можно только если вы найдете существенные отличия в моей интерпретации от того, что написано в том документе.
|
|
|
|
|
Jan 29 2012, 20:13
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Цитата(DmitryR @ Jan 27 2012, 13:37)  Еще раз говорю, я думаю что у вас что-то еще было неправильно настроено. Если же при всех остальных идентичных настройках 182.5MHz работает, а 182.25MHz - нет, то я бы попробовал на паре мониторов других моделей, потому что это очень странно. На других мониторах не пробовали. Точнее, пробовали уже после того, как выбрали 182.5, поэтому детально сравнениями уже не занимались. Кстати говоря, моя догадка о дискретности выбора pixel clock в мониторе косвенно подтверждается в стандарте VESA: Цитата 3.2 Pixel Clock Selection Due to the finite precision of modern clock synthesis circuitry, the pixel clocks used will all be members of a specified set, in this case integer multiples of 0.25 MHz +/- 0.5%. То есть, это именно некий программируемый синтезатор частоты, а не PLL, умножающая частоту Hsync на произвольное целое. Единственное, что мне не до конца понятно: ведь 182.5 и 182.25 отличаются как раз ровно на 0.25, о которых речь в стандарте. И стало быть, монитор должен был бы подобрать такую частоту точно. Видимо, либо там сделали синтезатор с меньшим шагом, не кратным 0.25, скажем 1/6 МГц, либо банально где-то накосячили с самим алгоритмом автоподстройки. Цитата(DmitryR @ Jan 27 2012, 13:37)  То есть если на монитор сразу после смены видеорежима подать картинку с широкой черной каемкой (или вообще черный экран), он по идее должен принять ее за бланкинг (раз черный и бланкинг в видеосигнале не отличаются) и не смочь установить синхронизацию? Вы будете смеяться, но примерно так и есть. Конечно, мониторы имеют защиту от явных глупостей, но при желании их можно обмануть. 1) Мониторы уже давно (еще со времен ЭЛТ) запоминают параметры синхронизации и ассоциируют с ними конкретные параметры развертки. Поэтому просто переключить видеорежим уже недостаточно, монитор вспомнит, что он такой уже видал, и загрузит вполне сносные параметры. Чтобы его задурить, нужно либо включить режим с новыми параметрами, либо вручную позвать автокалибровку. 2) Если видеорежим новый для монитора, то он может либо посчитать (используя формулы стандарта) параметры развертки, измерив параметры hsync и vsync, а может еще и вдобавок запустить автокалибровку. 3) Автокалибровка в принципе может слишком сильно наврать, если экран черный, поэтому в алгоритмах проверки параметров, полученных с ее помощью, может стоять проверка, не слишком ли сильно они отклонились от того, что должно бы по GTF (или CVTS). Именно это может удержать монитор от глупостей при черном экране, что в целом редко, скажем для Windows. 4) Если же автокалибровка запускается в условиях, когда картинка имеет небольшую окантовку черным цветом, например, такую, размеры которой вполне укладываются в диапазон ручной регулировки, то вот тогда автокалибровка вполне может оттяпать все черные пиксели и остальные растянуть на весь экран. Кстати, не далее как сегодня наблюдал такое. При загрузке тестового компа подключил диск без ОС, и на экране была серая на черном надпись с предложением заменить загрузочный носитель и нажать любую клавишу. Надпись была во второй и третьей текстовых строках экрана. После автокалибровки надпись переехала наверх и влево. После загрузки нортона верхняя строка была не видна, повторная автокалибровка все поставила на свои места. Все это говорит о том, что монитор не отличает черного в отображаемой области, от черного в неотображаемой. Другое дело, что есть стандарт GTF и CVTS, который связывает размеры экрана с характеристиками HSYNC и VSYNC, и поэтому какой-то видеорежим установить монитор сможет всегда. Читать видеоданные и искать там бланки ему для этого не нужно. Цитата(DmitryR @ Jan 27 2012, 13:37)  Может он и неудачный, но он стоял на ките FPGA, и поэтому его решили применять, и все работало. И описал я про уровни ровно то, что написано в его даташите, поэтому говорить, что я ввожу кого-то в заблуждение можно только если вы найдете существенные отличия в моей интерпретации от того, что написано в том документе. Попробую еще раз объяснить. ЦАП ADV7123 - универсальный, он может выдавать картинку в нескольких режимах, а именно: в режиме VGA и в режиме с подставкой в зеленом. При этом про композитный вариант с подставкой (sync on green) там даны примеры, а про VGA не даны. Но по табличке 9 можно с нескольких попыток углядеть, что если удерживать входы BLANK#=1 и SYNC#=0, то он не будет выдавать никакого смещения в зеленом. Именно это и будет режим обычного VGA. Поэтому утверждение про подставку: Цитата Есть, в зеленом канале. Ранее эта подставка использовалась еще и для синхронизации, сейчас - только чтобы бланкинг маркировать. См. ADV7123 например, на его примере это все лучше понятно. Там и бланкинг отдельным входом, и рисунки есть, как он делается. лишь вводит людей в заблуждение. Нету в VGA никакого бланкирования, "чернее черного" и т.п. В телевизионных стандартах - есть, а в VGA - нету.
|
|
|
|
|
Jan 30 2012, 19:28
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052

|
Цитата(zombi @ Jan 26 2012, 00:53)  Ув. 'Hoodwin' можете подсказать какой максимально допустимый "Jitter pixel clock", к примеру, VGA 800x600 60Hz для TFT монитора ? И есть ли вообще такой параметр? Очень маленький " pixel clock Jitter". Пробовал изменять частоту синхросерий внутренней DLL\PLL ПЛИСа Xilinx, Lattice - из-за джиттера LCD-дисплей или совсем не включался, или изображение получалось нестабильное. Правда, сигнал был для DVI. Но синхросигналы аналоговые - они что цифровые.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|