Version 1.3
Этот текст описывает настройку монитора в
Xfree.
Его можно распространять как FAQ, не забывая указать следующее:
Текст распространяется на условиях
Copyleft GPL.
Специально оговариваю, что если Вам приспичило процитировать его
в какой либо книге, то Вы обязаны сделать доступной для копирования на машинном носителе саму книгу по цене носителя.
Первоначально читаемый Вами текст написал Игорь Николаев
(igor@pu.ru),
каноническое место этого FAQ здесь:
URL="http://knot.pu.ru/faq/xfaq".
Я очень прошу не обращаться как с вопросами по форме, так и по сути
изложенного процесса по E-mail. Лучше это сделать в телеконференциях
ru.unix,
ru.networks,
su.hardware...
Эти конференции читают квалифицированные специалисты.
Вам сразу помогут.
С другой стороны, если у Вас предложения по содержанию - то
не смущаясь пишите мне
в кои8-r предложения/добавления/изменения. Я
читаю Всю почту, которую легко
прочитать.
Этот текст вначале писался как письмо за жизнь для молодого специалиста. Только потом он был приближен к теме обсуждения. Сделайте на это скидку.
Настройка режима монитора в XFree86.
Решаемая нами задача: запустить монитор под X и поставить достаточно
максимальные параметры. Если мы поймём как запустить монитор,
то мы поймём как сделать тонкую настройку. Процесс запуска описан
в расчёте на человека, который знает физику и математику в размере
средней школы и карманного калькулятора соответственно,
но немного их подзабыл. :-)
В тексте большое внимание обращено тому, как именно картинка
формируется на экране монитора. Считается, что Вы знакомы с редактором,
умеете редактировать конфигурационные файлы, можете самостоятельно
установить программный пакет, прочитать и понять документацию,
то есть по крайней мере функционально грамотны и владеете навыками
оператора машинного доения.
Процесс описан применительно к широко распространённым мониторам
среднего качества. Можно говорить, что это мониторы с невысокой
ценой (до $1000 за новый) и последних пяти лет выпуска. Процесс
установки экзотических мониторов отличается большей сложностью.
Это относится как к устаревшим моделям (мониторы с набором
фиксированных частот развёртки, с нестандартным для Вашего компьютера
интерфейсом), так и к хорошим моделям с большим количеством
функций (к примеру lcd, полностраничные, демонстрационные мониторы).
Общее понимание.
Мы настраиваем X server.
Это та программа, которая показывает Вам на экране монитора картинку.
Именно она в Xwindow называется сервером. А разные там оконные
менеджеры (fvwm, twm, motif mvm, afterstep, kwm, enlightenment)
и прикладные программы, такие как netscape, xterm etc - клиенты
этого сервера.
Кроме монитора, unix-box и Xfree86 нам потребуется простой калькулятор.
Извините, но экран будет занят - поэтому отдельный от машины калькулятор.
Предполагается, что в Вашем unix-box имеется видеокарта или видеоадаптер.
(Картой обычно называют отдельную плату в машине, которую можно вынуть
и посмотреть. Адаптером - всё равно как выполненную подсистему машины,
имеющую с разных сторон два разных интерфейса. Это почти то же самое,
что контроллер. Но контроллер подразумевает наличие чего то подчинённого
по отношению к процессору, несимметричных отношений. Я буду использовать
все три термина как попадётся - потому как для видеосистемы они
все корректны.)
Было бы хорошо, если бы Вы могли однозначно идентифицировать
видеокарту среди различных карт, находящихся в Вашей машине.
Это можно сделать посмотрев куда именно вставляется кабель,
ведущий от монитора к компьютеру. При работающем мониторе чаще
всего кабель подключен именно к видеокарте. Иногда видеоразьём
установлен непосредственно на материнской плате, в этом случае
скорее всего видеоконтроллер видимо тоже распаян (специалисты
произнесут слово "интегрирован") прямо на материнской плате.
Видеоадаптер передаёт в монитор три сигнала: видео сигнал
(RGB),
строчную синхронизацию (HS), кадровую синхронизацию(VS).
Монитор делает две независимых вещи: развёртку луча и изображение
картинки. Важно понять, что это вещи независимые - может быть картинка
без развёртки и развёртка без картинки. Картинку монитор не анализирует
вообще. Параметры развёртки же анализируются монитором и для него
существенно более важны, чем картинка.
Видеоадаптер.
Видеоадаптер состоит из следующих частей: процессор, биос,
тактовый генератор, цап и память. Естественно желание изготовителя
всунуть всё это в одну микросхему - но для нас это разные части.
Процессор видеоадаптера выполняет команды, поступающие от
центрального процессора. Он как таковой есть в платах графических
акселераторов - тех которые некоторые операции (такие операции
часто называются графическими примитивами) выполняют сами.
В простых платах процессор выполняет функции адаптера между
шиной компьютера (ISA, MCA, VLB, PCI в случае PC-AT) и
внутренней шиной видеоадаптера (реально это шина доступа к
памяти плюс несколько управляющих регистров).
Биос представляет из себя ПЗУшку с небольшой программой,
выполняемой центральным процессором компьютера с нашей
видеокартой при запуске компьютера. Содержит обычно несколько
команд по инициализации регистров видеокарты, тестирования,
установки стартового режима etc. Иногда удавалось запустить
под Xwindow карты с неисправным (физически вынутым) биос.
Само это слово просто "отсутствующий перевод" от
bios = basic input/output system. Пыво?
Обратите внимание, что система Xwindow не использует
различные видеорежимы, доступные после первоначальной загрузки
компьютера. То есть всякие там EGA, VGA или VESA режимы,
поддерживаемые в DOS или "прерывания BIOS" объявляются фикцией
и не используются. Xwindow знает как работает процессор
видеоадаптера и программирует его напрямую. Биос используется
только для начальной инициализации.
ЦАП.
Это правильный перевод слова DAC (digital/analog converter),
то есть цифро-аналоговый преобразователь. ЦАП занимается тем,
что из содержимого памяти делает
RGB
сигнал. На самом деле в видеокарте ЦАП делает ещё множество вещей,
связанных с преобразованиями палитры, регенерацией памяти,
импульсной коррекцией видеосигнала etc. Хорошая видеокарта обычно
имеет отдельный ярко выраженный ЦАП, составляющий изрядную
часть стоимости.
Единственным существенным ограничением у карты является
верхняя тактовая частота ЦАПа. Хорошо, когда она за 200MHz.
Плохо, когда 50MHz. Возможны варианты. Обычно хорошая карта
имеет внешний ЦАП. Карта с хорошим ЦАПом лучше, чем с
накрученным акселератором, но без ЦАПа. Хорошая карта стоит
больше $150. Sorry. Но для монитора в 15" можно пережить и
на простой карте. Плохое качество ЦАПа может проявляется как
непрорисовка одиночных точек, странная структура на фоне,
который должен быть однородным, дрожание сигнала etc.
Память. Сейчас расплодилось большое количество различных
типов видеопамяти. Для нас здесь интересно только её количество.
Вы должны понимать, что вся картинка, которая есть на экране,
содержится в памяти. Соответственно, чем больше памяти - тем
больше точек на экране Вы можете отобразить при одной и той же
глубине цвета. Если Вы работаете в режиме 256 цветов, то каждая
точка занимает один байт и соответственно, при памяти в один
мегабайт наилучший размер картинки на экране для Вас будет
ограничен размерами примерно 1100x880 (исходя из того, что
отношение сторон экрана 4x3 и произведение этих чисел при
одном мегабайте не может быть более 2**20).
Соответственно для 65K цветов (depth=16) при одном мегабайте
точек не будет более 2**19.
Так как сейчас память стоит недорого, то крайне желательно
иметь видеокарту как минимум с двумя мегабайтами.
Иногда небольшое количество памяти (одна-две строки) отъедается
X сервером под свои нужды. Этим обычно страдают акселерированные
платы. Тип памяти для нас не имеет решающего значения, если мы
не занимаемся on-line real time графикой. Если же Вы ей
занимаетесь, то Вы вряд ли будете использовать для своей
работы PC и экономить на видеопамяти и вообще
на видеоподсистеме в целом :-)
Интерфейс между ЦАП и памятью определяет следующее
ограничение: XFree позволяет выставить *любое* соотношение
количества строк в кадре и любое кратное (2**n) количество
точек в строке. Где n зависит от карты и режима и лежит в
диапазоне 3..7. Иначе говоря, число точек в строке должно
делится на 8, 16, 32, 64, 128 - зависит от видеокарты и режима.
Вы должны идентифицировать видеоадаптер и записать,
как называется чип (микросхема) на которой он собран.
Если у Вас это не получается - то попросите, пожалуйста,
специалиста. Проверьте, что этот чип поддерживается
системой Xfree. В противном случае Вам лучше заменить
видеоадаптер. Альтернативой является написание для Вашей
карты нового драйвера. Запишите также, сколько у Вас
видеопамяти, что написано на ЦАП и на тактовом генераторе.
Иногда эта информация требуется для настроек.
Иногда видеокарта пытается сгенерить какое-нибудь
прерывание. Прерывания от видеокарт остались как тяжёлое
наследство от старинного EGA адаптера. Этот адаптер
генерировал прерывания по каждому кадровому синхроимпульсу.
По видимости, у разработчиков чесались руки что-нибудь
завести на ламель IRQ2 - чтобы её никто не занял
(именно в машине IBM PC/AT появилось как EGA, так и
каскадирование контроллера прерываний).
Однако нам не надо прерываний от видеокарты.
Они практически никому не нужны.
В лучшем случае ваша машина будет дёргаться семьдесят раз
в секунду. В худшем Вы когда-нибудь пересечётесь с сетевой
или звуковой картой. Наверное, Вам этого не надо.
Для ISA карт видеоадаптеры пытаются подёргать ламельку IRQ2
на шине, которая заведена на сигнал IRQ9 контроллера
прерываний. Попробуйте найти на карте перемычку,
отвечающую за прерывания и отключить её. Иногда на карте
нет микрика отключения IRQ. Если Вы имеете некоторые
навыки работы с ножом :-) и карта не на гарантии то
аккуратно перережьте ламельку (если держать карту разъёмом
к себе - то четвёртая справа, между двумя питаниями).
Для PCI попробуйте заткнуть прерывание от слота
с видеокартой в BIOS (если поддерживает).
Монитор. Флаги настроек.
Как уже говорилось, монитор принимает от видеоадаптера
три сигнала: видео сигнал
(RGB),
строчную синхронизацию (HS), кадровую синхронизацию(VS).
На самом деле ещё есть сигналы на тему P&P, но они нам не потребуются.
Видео сигнал передаётся по трём кабелям
(R-красный,
G-зелёный,
B-синий) в позитивном формате
напряжением от 0 (уровень чёрного) до 0.7 вольт (уровень яркого)
по кабелю с волновым сопротивлением 75ом.
Эти параметры совместимы с параметрами,
применяемыми в телевизионной технике.
Синхронизация представляет из себя импульсы с большой
скважностью (то есть длительность импульса мала по сравнению
с длительностью паузы между импульсами) и обычно передаётся
по отдельным проводам в стандарте TTL (это значит, что низкий
уровень не более 0.8 вольт, а высокий не менее 2.4 вольт).
Активным уровнем может быть как низкий, так и высокий.
Вы сможете настроить это в системе Xfree при помощи флагов
-vsync, -hsync, +vsync, +hsync.
Флаг vsync определяет активный уровень кадровой развёртки,
а флаг hsync - строчной.
В телевизионной технике синхронизацию никогда не передают так,
как в компьютерной технике, поэтому и появился этот
(крайне неудачный) способ. У телевизионщиков используется как
единая отдельная синхронизация для всех мониторов,
так и так называемый полный видеосигнал - по зелёному каналу
(G)
передаются строчные и кадровые врезки. Зелёный канал выбран
потому, что он содержит максимум информации, его можно подключить
к чёрно-белому монитору и получить сносную картинку.
Именно на такой режим часто рассчитаны дорогие мониторы с
BNC разъёмами сзади. Некоторые видеоплаты могут управлять такими
мониторами напрямую. Для этого существует флаг Composite.
Полярность врезок синхронизации в полный (композитный) сигнал
определяется флагами +csync и -csync.
С точки зрения монитора имеется два независимых сигнала
развёртки - кадровая и строчная синхронизации.
Частота кадровой синхронизации обычно лежит в диапазоне
от 25 до 250 Гц, а строчной - от 30 до 300 Кгц.
Развёрткой в мониторе занимаются два блока развёрток:
блок строчной развёртки быстро двигает луч по строкам
(слева направо для человека перед экраном) и иногда совмещён
с блоком питания. Этот блок содержит в своём составе
строчный трансформатор - одну из самых ненадёжных деталей
в мониторах. Блок кадровой развёртки устроен проще -
он существенно более медленно осуществляет развёртку
по кадрам (сверху вниз). Предполагается, что монитор
стоит на столе в штатном положении.
Единственным критичным параметром монитора для
Вас будет является максимальная частота строчной развёртки.
Учтите, что ограничения по частоте кадров у монитора реально нет.
То есть оно конечно есть - но Вы его не заметите. Самый
плохенький монитор легко развернёт 75 Гц по вертикали - но
ограничит Вас к примеру частотой 35Кгц по горизонтали.
Возьмите инструкцию и смотрите на максимальное значение
строчной развёртки. Мониторы с максимальной частотой 35Кгц
брать нельзя. С частотой 48Кгц - только очень дёшево и
не себе. Нормальная частота строк начинается от 65Кгц.
Объяснение. Мы будем добиваться как минимум 72Гц по
вертикали. Это та частота, при которой глаза болят через
четыре-пять часов. Учтите, что каждый герц здесь на счету.
75 герц *сильно* отличается от 72. Дело в том, что нам
нужно, чтобы мерцание картинки было незаметно для глаза.
Конкретные параметры очень сильно зависят как от параметров
конкретного люминофора, так и от условий наблюдения.
Для работы с текстом используются мониторы с большим
послесвечением (порядка времени кадровой развёртки). Не
ориентируйтесь на их параметры, они непригодны в данном
случае.
Посчитаем строчную частоту на калькуляторе
(рекомендуется делать при приобретении монитора - маркетоиды
редко понимают, чем торгуют). Для 72Гц по вертикали при 800 строк
потребуется 72*800 = 57.6 КГц. Для 600 строк 72*600 = 43 КГц.
На самом деле потребуется чуть больше - так как к 600 строкам
прибавится десяток строк на обратный ход. Всё. Подсчитали.
Итого: мониторы с 48 КГц строчной *не могут* работать без
давления на глаз при что_угодно*800 (например 1024*800),
а мониторы с 35КГц строчной - вообще в принципе не
могут работать :-)
Вы можете вспомнить про всякие там interlaced mode.
По-русски это называется черезстрочным режимом. Это лажа.
Можно заставить X работать с interlaced, только вот сможете ли
Вы заставить себя на это смотреть?
Я считаю, что interlaced для текстовых мониторов - это
не изящное техническое решение, а нахальный маркетоидный приём.
Хотя понятно, что сделан он был чтобы обеспечить возможность
выдать телевизионный видеосигнал (телевизионный сигнал всегда
черезстрочный, то есть в одном полукадре идут чётные, а в другом
нечётные строки, что позволяет уменьшить моргание телевизионной
картинки).
Чтобы понять, interlaced ли режим перед Вами, выведите на экран
вот это.
Чтобы получить на Вашем мониторе такой режим, нужно указать
флаг Interlace.
Существует похожий на обратный к interlace режим под названием
doublescan. Однако он не связан с проблемами развёртки,
а скорее компенсирует недостаток строк. Если Вы занимаетесь тем,
что отлаживаете картинку в формате типа 320x200 на мониторе с большим
экраном, то каждая строка Вам будет слишком хорошо видна,
а между строками будут толстые ничем не заполненные линии.
Что бы как то облегчить восприятие, используется режим двойного
сканирования, при котором каждая строка выводится на экран два раза.
То есть количество строк, но не количество информации, удваивается.
Чтобы включить этот режим нужно указать флаг doublescan.
С точки зрения монитора количество точек на экране определяется
размером лица монитора, количеством дырок и качеством фокусировки.
Учтите, что реальная диагональ монитора может быть на дюйм-полтора
меньше заявленной. Возьмите рулетку, померьте ширину картинки.
Например, для монитора Acer 17" ширина видимой области экрана
320мм и высота 240мм. При точке 0.28 получаем 1140 точек по горизонтали
и 850 по вертикали. Большее разрешение на этом мониторе просто
не имеет смысла. На самом деле неплохо понимать, что и от этого
разрешения нужно скинуть ещё около 5% - так как между точками
есть некоторое расстояние.
Обратите внимание, что монитор ничего не знает про глубину цвета,
он просто воспроизводит аналоговую картинку от видеокарты,
а её местоположение определяется параметрами синхронизации
нижеописанным образом.
Настраиваться лучше начать с 256 цветов, добиться приёмлимой
картинки и затем уже идти к 65K цветам etc. Возьмите инструкцию
от Вашего монитора. Попытайтесь определить максимальную строчную
частоту. Обычная линейка максимальных частот 35, 48, 65КГц,
далее без остановки.
Далее займёмся подсчётами и рассчитаем режим монитора.
Настройка системы.
Итак, перейдём к настройке XFree.
Я надеюсь, что Вы уже взяли этот пакет откуда-нибудь,
и установили его, разобрались, в каких каталогах какие файлы
лежат - словом освоились немного. Перед установкой неплохо
прочитать RELNOTES, а также выполнить
tar tzf файл
на файлы поставки, которые Вы хотите установить.
Если Вы ещё не установили XFree, то Вам потребуется
собранная (портированная) под вашу операционную
систему XFree и права супервизора (root'а):
su
umask 022
mkdir /usr/X11R6
cd /usr/X11R6
sh /место_порта_XFree/preinst.sh
for i in /место_порта_XFree/*tgz
do
echo $i
tar -xvzf $i
done
sh /место_порта_XFree/postinst.sh
ln -s X11R6 X11
Я не уверен, что это самый правильный метод, но он работает.
Для начала просмотрите man 5 XF86Config и
man 1 xf86config.
Если Вам понравилось читать документацию, то запустите man X,
но учтите, что эту документацию приятнее читать внутри X.
Первый man - это описание файла настроек XFree,
а второй - программы для генерации образца такого файла.
Воспользуйтесь программой xf86config и
сгенерируйте файл /etc/XF86config.
Постарайтесь более-менее правильно отвечать на вопросы - это
может значительно облегчить работу. Если Вы не знаете, как ответить
на вопрос - то просто нажмите enter, значения по умолчанию разумны.
Здесь нужно обратить внимание на следующие места.
Во-первых, xf86config назойливо предлагает ввести кучу имён
как видеокарты так и для монитора. Вам ничто не мешает спокойно
вводить одинаковые имена для каждого или просто жать enter.
Во-вторых, Вам необходимо руками верно выбрать один из
акселерированных драйверов, если такой драйвер есть для вашей карты.
Так как скорее всего такой драйвер есть, то это нужно сделать.
Поставьте символический линк между
/usr/X11/bin/ваш_драйвер и
/usr/X11/bin/X
(xf86config спросит Вас об этом).
В-третьих, xf86config попытается сам определить
параметры Вашей карты, попросив у Вас разрешения запустить
X -probeonly. Позвольте ему это сделать.
В файле желательно получить хотя бы одну рабочую моду
(640x480 к примеру). Других мод можно не делать - мы их построим ручками.
Запустите сначала
X -probeonly >/tmp/x 2>&1
и рассмотрите результат в файле /tmp/x.
Постарайтесь понять, что там написано.
Посмотрите, какая линейка частот доступна. Запишите её на бумажку.
Линейку частот X пишет при старте. Некоторые платы имеют плавно
программируемый тактовый генератор. В этом случае стоит записать
максимально допустимую частоту.
Затем запустите X и убедитесь, что на экране возникла картинка,
что мышка шевелится, что по кнопкам
left_ctrl + left_alt + gray_plus
режимы переключаются (или нет, если Вы сконфигурировали только одну моду).
По left_ctrl + left_alt + backspace
происходит завершение работы X сервера.
Если у Вас проблемы с мышью, то попытайтесь получить с неё
несколько байт по команде od </dev/mouse
(когда Вы двигаете мышку должен получаться octal dump, предполагается,
что Вы слинковали /dev/mouse на реальное устройство с мышкой).
Для отладки мыши на последовательном интерфейсе иногда помогает
tip label, где label - метка в /etc/remote (смотри man tip).
В системе Xfree каждый режим работы монитора может описываться
в файле /etc/XF86config в таком формате:
Modeline "mode_name" D H1 H2 H3 H4 V1 V2 V3 V4 Flags
Modeline это ключевое слово, означающее, что мы описываем
видеорежим. Можно использовать развёрнутое описание, начинающееся со слова
Mode,
но оно с моей точки зрения ничего, кроме увеличения числа строк не даёт.
"mode_name" название моды в кавычках,
например вы можете написать
"test" или
"1x1" - что Вам больше понравится.
Хотя я бы не стал писать здесь явную ерунду, псевдографику или русские буквы.
Это "mode_name" используется в качестве ссылки на
имя режима в
Section "Screen"
Subsection "Display"
Modes "mode_name"
Режимы устанавливаются в порядке перечисления.
Когда Вы заводите новый режим, то назовите его "test"
и включите в
Modes например так:
Modes "test" "640x480" "800x600"
D частота тактового генератора, или, если точнее,
частота выдачи точек на монитор. Это число выражается в мегагерцах
и может быть задано с плавающей точкой, например -98.7-.
Давным давно эта частота соответствовала частоте одного из кварцевых
генераторов на Вашем видеоадаптере. Сейчас используются синтезаторы
частоты, приборы с зарядовой связью и прочие чудеса техники,
позволяющие формировать точки на экране существенно быстрее,
чем частота кварца в Вашем адаптере. Однако в любом случае мы должны
действовать так, как будто именно с этой частотой адаптер работает
внутри себя и выдаёт точки на экран.
H1..4 четыре числа, отвечающие за горизонтальную развёртку,
то есть за строчную синхронизацию.
V1..4 четыре числа, отвечающие за вертикальную развёртку,
то есть за кадровую синхронизацию.
Flags флаги, задающие тонкости развёртки.
Они описаны в предыдущей главе.
К сожалению, числа, отвечающие за развёртку выбраны так, чтобы их было
удобно запихивать в видеоадаптер, а вовсе не воспринимать человеку.
Разберёмся с ними сначала на примере строчной синхронизации.
Представим себе, что только что кончился импульс синхронизации и монитор
начал двигать луч слева направо. Один тик соответствует частоте
тактового генератора - параметру D.
Через K тиков тактового генератора видеокарта начала
выдавать картинку.
И выдавала её L тиков (то есть L точек изобразились на экране).
Затем через M тиков карта подождала и выдала строчный синхроимпульс,
который длился N тиков. По началу строчного синхроимпульса монитор
начал обратный ход развёртки, и через некоторое время
(какое то, не обязательно N или ещё что-то) его закончил.
Так вот, для формирования такой временной диаграммы необходимо
задать следующие параметры:
H1 = L
H2 = L + M
H3 = L + M + N
H4 = L + M + N + K
Иначе говоря,
H1 - это количество точек, изображаемых в одной
строке на экране, то есть ширина экрана в тиках тактового генератора.
H2 - расстояние в тиках между началом картинки и началом синхроимпульса.
H3 - расстояние в тиках между началом картинки и концом синхроимпульса.
H4 - полная длина одной строки в тиках.
Это означает, что частота строк равна частоте тактового генератора
D поделённой на общее количество тиков в одной строке H4.
Для кадровой развёртки в качестве тика используется частота строк,
иначе говоря:
V1 - количество строк, отображаемых в одном кадре,
V2 - количество строк от начала кадра до начала кадрового
синхроимпульса,
V3 - от начала кадра до конца кадрового синхроимпульса,
V4 - общее количество строк в кадре.
Таким образом, частота кадров определяется как частота тактового
генератора D поделить на общее количество тиков в строке
H4 поделить на общее количество строк V4.
Начнём рассчитывать реальные числа. Возьмём желаемую частоту кадров,
к примеру 72 Hz.
Если наш монитор позволяет вытянуть 64 kHz строчной частоты, то это значит,
что V4 можно принять равным 64000/72 = 888.
Для выполнения обратного хода по кадрам обычно достаточно принять
V2 = V1 + 1 и V3 = V2 + 1.
Тогда обратный ход кадровой развёртки будет выполняться сразу
после окончания кадра.
Длительность хода кадровой развёртки обычно около 5..10 строк. Примем
V1=880, V2=881, V3=882.
Если мы ошибёмся в кадровой развёртке - то обычно это проявится
только как "загнутость" или неравномерность верхних строчек.
Теперь посмотрим, что можно сделать с H.
Если мы хотим, чтобы картинка соответствовала пропорции экрана 3x4,
то H должно быть порядка 1200. Здесь есть одна тонкость,
про которую не нужно забывать.
А именно: H1 должна делиться на 2**n.
Подробнее написано при обсуждении ЦАП.
Значения H2, H3, H4 также обычно должны делиться
по крайней мере на 8. Обратный ход строки составляет примерно
2..5% от длины развёртки. Для надёжности выберем H1 из ряда
960, 1024, 1088, 1152, 1216, 1280, 1344, 1408 например 1152.
Итак пусть H1=1152, H2=1168, H3=1184, H4=1248.
При этом
D = 72Hz * V4 * H4 = 72Hz * 888 * 1248 = 79.8 MHz
Если такой частоты в линейке частот нет, то нужно установить ближайшую.
Если ближайшая расположена не очень близко, то пересчитать числа,
исходя из частоты тактового генератора и частоты строк.
Учтите, что увеличить частоту кадров можно всегда просто уменьшив
количество строк в кадре, а вот изменение в количестве точек в строке
всегда болезненная процедура.
Итого записываем в XF86config
Modeline "test" 79.8 1152 1168 1184 1248 882 883 884 888
Не забываем оформить секцию Screen (в примере установлена глубина
цвета в 16 бит на точку):
Section "Screen"
# пропущены соответствующие Identifier, Device, Monitor...
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "test" "640x480" "800x600" "1024x768"
ViewPort 0 0
# Virtual 1024 768
EndSubsection
Обратите внимание на то, что Virtual пришлось закомментировать -
значение по умолчанию нас не очень устраивает. Запускаем X.
Выставляем контрастность поменьше, а яркость побольше, так чтобы
была видна не только картинка, но и поля вокруг неё.
Рассматриваем экран на тему загибающихся краёв, подёргивающейся
синхронизации etc. Если так ничего и не получается, но какой-то
режим работает, полезно скопировав работающую моду в "test"
немного поиграть параметрами, чтобы усвоить их назначение ещё раз.
Проблемы, тонкости, непонятности.
Не забудьте, что H1 * V1 не должно быть больше,
чем максимальное количество точек, определяемое оперативной памятью
и глубиной цвета.
Учтите, что некоторые старинные "несколькочастотные мониторы"
определяют частоту синхронизации по полярностям сигналов кадровой и
строчной развёрток. Наша цель в таком случае - попытаться
выставить максимальный вариант. Именно в этом случае нужно попробовать
поменять флаги +hsync, -hsync, +vsync, -vsync.
Если синхронизация дрожит, то нужно увеличивать H4 или
уменьшать D, видимо монитор не может вытянуть заданную
синхронизацию.
Если курсор раздвоился на небольшом расстоянии, значит нужно
увеличить n в признаке делимости на 2**n для всех H1..4
Иногда синхронизации нет оттого, что длительность строчного
синхроимульса слишком мала. В этом случае можно не стясняясь
увеличивать H3 вплоть до H4 и наблюдать за
результатом. Такой болезнью обычно болеют цифровые мониторы.
На некоторых мониторах чтобы достичь максимальной строчной
частоты приходится устанавливать H1=H2 или даже
H1>H2.
Не все видеокарты это позволяют или обрабатывают корректно.
Остерегайтесь ставить H2=H3. Обычно это имеет
мало смысла так как строчная развёртка может не сработать
на маленьком иголочном импульсе, который выдаст видеоплата.
Такое желание скорее говорит о необходимости изменить флаг hsync.
Если Вы превысите паспортное значение строчной частоты,
то синхронизация не обязательно сорваться. Однако через некоторое
время может сгореть строчный трансформатор. На гарантийных
мониторах я бы посоветовал экспериментировать и задирать
частоту насколько можно. Так как если монитор можно выжечь
программно - то кому нужен такой монитор? Жгите и пусть
продавец меняет.
На больших мониторах Вы можете наткнуться на ограничение
по частоте видеоусилителя. Оно выражается в том, что
вертикальная линия
в один пиксел будет серой или почти невидимой. Хороший монитор
должен воспроизводить вертикальные чёрные и белые линии с
одинаковой чёткостью.
Большие проблемы может также доставить
муар,
причём как по горизонтали,
так и по вертикали.
Путём тонкой подгонки частот с ним тоже можно бороться. Хорошие
монитору имеют регулировку для устранения муара.
Как Вы уже обратили внимание, я не уделил внимания кнопкам,
мышке, фонтам... Много чему. Наверное, это тема для отдельной
рассказки. В эту рассказку неплохо бы добавить подробное описание
борьбы с флагами и с глубиной цвета. Но пора бы и честь знать.
© Copyleft 1997..2001, Игорь Николаев
СПб, 12 коллегий,
8 комната.
|