Motorola 6845 — Википедия

Микросхема Motorola 6845

Motorola MC6845 — электронный компонент, микросхема видеоконтроллера, разработанная компанией Motorola в конце 1970-х годов (в документации указан 1977 год). Для обозначения микросхемы также используется аббревиатура CRTC (Cathode Ray Tube Controller, контроллер электронно-лучевой трубки). Микросхема входит в набор микросхем поддержки процессора Motorola 6800, но часто использовалась в системах с другими процессорами.

Использовалась в компьютерах Amstrad CPC и BBC Micro, а также в видеокартах MDA и CGA для IBM PC. Впоследствии в целях обратной совместимости функциональность микросхемы была интегрирована в специализированные микросхемы для видеокарт VGA.

В связи с популярностью IBM PC-совместимых компьютеров, в некоторых странах выпускались полные аналоги микросхемы. Так, в Японии компания Hitachi выпускала микросхему 46505, в Болгарии выпускалась микросхема CM607. В начале 1990-х годов (приблизительно в 1991 году) российская электронная промышленность на заводе Светлана начала выпуск микросхемы КМ1809ВГ6.

Компании MOS Technology и Rockwell выпускали микросхему 6545, использовавшуюся в компьютерах Commodore PET и серии B компьютеров Commodore CBM-II. Эта версия является почти полным аналогом микросхемы 6845 с небольшими отличиями.

Возможности

[править | править код]

Микросхема предназначена для реализации текстовых, псевдографических и графических видеорежимов. Она обеспечивает генерацию сигналов горизонтальной и вертикальной синхронизации для генерации видеосигнала, а также атрибуты курсора и мерцания, но не генерирует сами видеоданные. Вместо этого микросхема формирует адрес в видеопамяти, откуда должно читаться значение для следующего символа, пикселя или группы пикселей. Чтение этого значения из памяти, преобразование его в данные для отдельных пикселей и формирование полного видеосигнала должно выполняться внешней схемой.

Поддерживается прогрессивная и чересстрочная развёртка. Так как все параметры развёртки настраиваются программно, возможна генерация сигналов стандартов NTSC и PAL и программное переключение между ними без изменения схемы включения. Также возможна генерация нестандартных синхросигналов для любых других типов растровых дисплеев. Серьёзным ограничением является максимальное количество строк, равное 128. В алфавитно-цифровых режимах такое количество избыточно, а в графических — недостаточно. Именно поэтому для получения графических изображений высокого разрешения в качестве дополнительных счётчиков использовался счётчик номера строки в символе, и, как следствие, появилась «банковая» организация видеопамяти в CGA (2 банка) и HGC (4 банка в штатном режиме и 3 в режиме эмуляции CGA).

Текущий генерируемый адрес может быть запомнен во внутреннем регистре-защёлке и прочитан процессором. Эта возможность может быть использована для определения точной позиции луча развёртки при реализации светового пера или светового пистолета.

Устройство

[править | править код]

Микросхема выполнена по технологии n-Channel MOS, ТТЛ, требует одного напряжения питания +5 вольт. Выпускалась в корпусах DIP40 (керамическом и пластиковом).

Микросхема имеет 18 восьмиразрядных регистров, управляющих всеми параметрами развёртки. Для внешнего устройства микросхема доступна через два порта, один из которых служит для выбора текущего регистра, а другой для чтения или записи значения в текущий регистр.

Генерируемый адрес состоит из двух частей — 14-разрядного адреса символа (CA0..CA13) и 5-разрядного адреса строки (RA0..RA4), что позволяет адресовать до 512 КБ видеопамяти. Адрес символа увеличивается последовательно. Адрес строки увеличивается в начале новой строки растра, при генерации сигнала горизонтальной синхронизации. Если адрес строки не достиг заданного значения, адрес символа устанавливается на значение, которое было в начале предыдущей строки, иначе сбрасывается на ноль.

Для реализации текстового режима адрес символа может использоваться как адрес в видеопамяти, адрес строки — как номер строки пикселей в ПЗУ знакогенератора, а читаемое внешней схемой значение из видеопамяти — как номер символа в ПЗУ знакогенератора.

Графические режимы с линейной организацией видеопамяти могут быть реализованы путём установки количества строк в 1, но объём адресуемой памяти при этом будет ограничен 16 КБ. Это ограничение можно преодолеть использованием нелинейной организации видеопамяти — адрес строки может быть заведён на старшие разряды шины адреса видеопамяти. В этом случае в видеопамяти будут последовательно располагаться сначала все первые строки пикселей из заданного количества строк в символе, затем все вторые, и т. д. То есть, если задано две строки в символе — сначала будут располагаться все чётные, затем все нечётные строки изображения. Такой подход использован в компьютере Amstrad CPC, видеоадаптерах CGA и HGC для IBM PC и совместимых компьютеров.

Отличия от 6545

[править | править код]

Главным отличием микросхемы 6545 является возможность эксклюзивного доступа к шине адреса. Микросхема имеет два дополнительных регистра для установки адреса, к которому требуется обращение со стороны процессора, и в зависимости от ситуации на шине адреса будет устанавливаться нужный адрес.

Среди прочих незначительных отличий является отсутствие поддержки чересстрочной развёртки, возможность задержки разрешения изображения на один цикл генерации строк символа (эта возможность впоследствии включена в поздние аналоги 6845) и установка режима для генерации линейного графического видеобуфера установкой одного бита в регистре статуса вместо изменения высоты символа.

Нестандартное использование

[править | править код]

Микросхема читает стартовый адрес один раз в начале генерируемого кадра. Однако, если параметры развёртки будут изменены в определённый момент, отображение нового кадра может быть начато без завершения отображения текущего. Это позволяет создать разрыв в генерируемых адресах во время отображения одного кадра и реализовать несколько «окон» (шириной в экран), в которых отображаются разные участки памяти. Этот метод часто использовался в играх для совмещения областей со скроллингом (обычно для окна с игровой ситуацией) и без (для отображения игровой статистики).

Так как возможно устанавливать только начальный адрес символа, а адрес строки всегда установлен в 0 в начале кадра, возможности вертикального скроллинга ограничены. Однако, за счёт программного изменения параметров развёртки возможно изменять положение отображаемого растра на экране. За счёт комбинации посимвольного скроллинга, сдвига растра и отображения пустых строк на краях экрана возможно реализовать плавный вертикальный скроллинг.