CRTC MC6845

Описание на регистрите

на ИС видеоконтролер за ЕЛТ Motorola MC6845 CRTC

ИС CRTC МС6845 на фирмата Моторола(български аналог СМ607) от микропроцесорната фамилия MC6800(CМ600) съдържа регистров блок(файл, пул) от 19 адресуеми регистъра. Достъпът до тях се осъществява чрез двупосочните приемопредаватели за данни, буфериращи вътрешната даннова магистрала DBUS, показана на структурната схема на чипа на фиг.1. Адресирането и дължината на регистрите са показани в табл.1, а изводите му - на фиг. 2.

Адресен регистър

Адресният регистър е 5-битов, само за запис, използуван като индикатор (указател - оригиналното фирмено название е индексен регистър). Неговото съдържание указва адреса на един от другите 18 регистъра във файла, достъпен чрез DBUS. Когато изводите RS и CS са в "ниско" ниво, се адресира адресния регистър. Когато RS е в "1", се осъществява достъп до регистровия файл.

Регистри за хоризонталните временни съотношения R0 - R3

Фиг.3 показва видимата област на типичен монитор на база на електронно-лъчева тръба( ЕЛТ), давайки базовата точка за отчет за регистрите за програмиране по хоризонталата - най-лявата изобразявана знакова позиция. Регистрите за хоризонтала са програмирани в единици "знаци" с отчитане на честотата на опорния генератор(наричан генератор с честота на "знаците"). Един "знак" е времето, за което електронният лъч на ЕЛТ преминава през един знак от екрана (т.е. обхожда и формира на екрана една черта от точковата матрица, с която се изгражда знака).

R0- регистър за тоталния брой знаци по хоризонталата (общо за правия и обратния ход). Програмира се броят, но намален с единица. Тази стойност фактически определя честотата на импулсите за хоризонтална синхронизация при избрани текстов формат и размерност на знаковата матрица в брой точки от изображението - пиксели(pixel - picture element). (Формула 1)

R1- регистър за изобразяваните знаци по хоризонталата. Определя времетраенето(само) на видимата част от правия ход на лъча, без неговите резерви отляво и отдясно.

R2- регистър за позицията на синхронизиращия импулс по хоризонтала(косвено определя позицията на първия видим знак от реда върху екрана).

R3- регистър за ширината на импулса за хоризонтална синхронизация. Този 4-битов регистър, използуван само за запис, определя ширината на импулса за хоризонтална синхронизация. Съдържанието му трябва да се оптимизира за всеки отделен тип монитор, в зависимост от изискванията и толерансите на синхронизиращата система на монитора към ширината на синхронизиращия импулс по хоризонталата, както и да се съобразява с дължината на периода на тактовия сигнал с честота на знаците.

Регистри за дефиниране на вертикалните временни съотношения

Базова точка за отчет при програмиране на регистрите по вертикалата е най-горната изобразявана знакова позиция (ред). Регистрите се програмират в следните единици:- брой знакови редове и в брой сканирани линии (телевизионни(TV) редове).

R4- регистър за тоталния (общия) брой редове по вертикала.

R5- регистър за донастройка на тоталния брой редове по вертикала - донастройва финно честотата на сигнала за вертикална синхронизация(VS). Изчисленият брой знакови редове е обикновено цяло число плюс дробна част, за да се постигне точно честотата за вертикалната развивка(на "освежаване" на кадъра), изисквана от даден видеостандарт, например 50/60Hz(съответно на честотите на електрозахранващите мрежи, в Европа и в САЩ , съответно) или 72 Hz.
В 7-битовия регистър R4(само за запис) се програмира броят на целите знакови редове минус 1, a в 5 битовия регистър R5 (само за запис) се програмира дробната част в брой TV редове.

R6- регистър за изобразяваните знакови редове по вертикалата.

R7- регистър за позицията на синхроимпулса по вертикалата - 7-битов регистър(само за запис).

R8- регистър за типа (режима) на развивката - 2-битов регистър. При 0бит = 0 се програмира прогресивна развивка, а в противен случай -презредова, с два полукадъра в два варианта :

1) при 1 бит = 0 - презредова синхронизация само за растера

2) при 1бит = 1 - презредов синхро- и видео-растер.

R9- брой на сканираните линии (TV редове) в знаков ред (5 битов регистър(само за запис)), включително и интервала до следващия ред - това определя максималният адрес(максималният номер на TV ред), подаден към знаковия генератор.

Други регистри

R10- стартова позиция на (образа на)курсора (указателя) в знаковото поле- 7-битов регистър(само за запис), управляващ с петте си младши бита стартовия TV ред в знаковото поле за изобразяване на курсора. Освен това управлява режима на задаване на сигнала "cursor", а оттам на изобразяването му - бит 6-ти разрешава мигане на курсора, а бит 5-ти управлява честотата на мигане - при

0 --> 1/16 от кадровата честота, а при 1 --> 1/32 .

R11- 5-битов регистър(само за запис). Определя крайната позиция (TV ред) (на образа) на курсора в знаковото поле.

R12,R13- регистри за началния адрес(старши, младши байт) за адресиране/освежаване на видео RAMа. Този 14-битов регистър(само за запис) определя първия издаден към видеопаметта адрес за освежаване след вертикалния обратен ход(blanking!). Състои се от 8-битов младши и 6-битов старши регистър.

R14,R15- (ст.,мл.) - 14-битов универсален(за запис и четене) регистър за позицията на курсора, в който се програмира и управлява текущата позиция на курсора (указателя) - хардуерно наслагван върху текста елемент от изображението със специфична отлика - яркост, цвят, мигане, форма, чиято позиция се управлява програмно.

R16,R17- (ст.,мл.) - 14-битов регистър(само за четене) за позицията на светлинната писалка- запомня текущата стойност от адресния регистър (вътрешен за 6845) при активизиране на извода със строб от нея - LPSTB.

Курсор (Указател)

Регистрите за стартовата и крайна позиция на курсора в едно знаково поле позволяват от произволен начален до произволен краен TV ред на знаковата матрица да се помести курсор (с височина до 32 TV реда ), както е показано на фиг.3. Използвайки битовете 5-ти и 6-ти на R10(стартов), курсорът може да се програмира с период на мигането 16 или 32 пъти периода на кадъра. Опционно може да се избере въобще немигащ курсор или да се забрани изобразяването му на екрана.

Когато е необходимо два вида мигане на символите, е необходимо миганeто на курсора да се направи външно, така, че двете мигания да са синхронизирани. Забележете, че инвертирdн или не, курсор се прилага лесно чрез програмиране на CRTC-то за мигащ курсор и външно управляем от сигнала курсор посредством схемен елемент изключващо ИЛИ инвертиране на видео сигнала.

Курсорът се позиционира чрез смяна на съдържанието на R14, R15.

Той може да бъде пратен във всяка позиция на 16-те К адресируеми във VRAM символа , което облекчава апаратния скролинг и paging през паметта без загуба на оригиналната позиция на курсора.

Презредов / прогресивен режим развивка (interlaced/noninterlaced)

Илюстрация на 3-те режима на растрова развивка е показана на фиг. 4. Нормалният режим на синхронизация e (прогресивна развивка, не е презредовa развивка). В него, всяка сканирана линия (TV ред) се "освежава" (повтаря) с честота на кадрите например (50 или 60Hz). Времето на кадъра е разделено на алтернативно сменящи се четно и нечетно поле. Хоризонталните и вертикални временни състояния резултират в отместването на TV редове в нечетното поле спрямо съответното четно. Когато се изписва една и съща информация в двете полета, режимът се нарича ‘Презредова синхронизация'. Това е полезен режим за повишаване на читаемостта чрез запълване на символа. Когато четните линии на символа се дисплиират в четно поле или нечетните в нечетното, режимът се нарича презредов 'синхро и видео ‘. Този режим ефективно дублира (удвоява) плътността на символите на монитора в зададена честотна лента.

Недостатък на двата презредови режима е появяващият се фликер ефект, който може да бъде намален чрез внимателно конструиране на монитора.

 

Има следните ограничения в програмирането на CRTC регистрите за презредов режим :

1. Сумарният брой на символите по хоризонтала (програмирана в R0) трябва да бъде нечетен(т.е. четно число знакови времена ).

2. Само за режим ‘Презредов синхро и видео ‘, програмираният максимален адрес в (R9) на TV ред, трябва да е нечетен (т.е. броя на TV редове да е четно число).

3. Само за режим ‘Презредов синхро и видео ‘, броят на изобразяваните знаци по вертикалата (R6) трябва да е четен. Програмираният брой трябва да е половината от необходимия действителен брой.

4. Само за режим ‘Презредов синхро и видео ‘, съдържанието и на двата регистъра - стартов и краен адрес на курсора в знака, трябва да е или само четно, или само нечетно.

Светлинна писалка

Съдържанието на адресния брояч на CRTC-то се стробира в регистрите на светлинната писалка R16,R17 при следващия преход на сигнала CLK от 1-->0, след като LPSTB стане 1. В повечето системи сигналът на светлинната писалка води до прочитане на R16,R17 от обработващата непрекъснато прекъсване на процесорната програма. Бавното реагиране на светлинната писалка изисква процесорната програма да модифицира добития адрес, прочетен от R16,R17, чрез корекционен фактор.

Съглашения при програмирането

Инициализация- регистрите R0-R15 трябва да бъдат инициализирани след включване на захранването. Процесорът нормално натоварва регистрите на CRTC-то последователно от системна таблица. От този момент нататък, R0-R11 не се променят в повечето системи . Програмата за процесор МС6800 на Асемблер в табл.3 на фиг.5 показва типична инициализация на CRTC.

Апаратен скролинг(ефект на стъпално или плавно преместване на тескта на екрана с различна стъпка и скорост)- съдържанието на R12 и R13 определя коя клетка от видео RAM съдържа първия дисплииран символ на екрана. Тъй като линейният адресен генератор на CRTC-то брои от тази начална точка, дисплиираната част от екрана може да е прозорец върху всеки кой да е непрекъснат стринг от символи в 16К блок от видео RAM-a. Чрез центриране на указателя R12,R13 в средата на достъпното адресно пространство е възможен скролинг нагоре или надолу по редове, по страници(paging) или по символи (ефект на бягащи лентови надписи).