Регистр коммутации каналов (NR51) Адрес: FF25h. Тип: чтение/запись. Назначение разрядов: D7 - если этот разряд установлен в 1, сигнал канала 4 передается на выход S02 звукового процессора. D6 - если этот разряд установлен в 1, сигнал канала 3 передается на выход S02 звукового процессора. D5 - если этот разряд установлен в 1, сигнал канала 2 передается на выход S02 звукового процессора. D4 - если этот разряд установлен в 1, сигнал канала 1 передается на выход S02 звукового процессора. D3 - если этот разряд установлен в 1, сигнал канала 4 передается на выход S01 звукового процессора. D2 - если этот разряд установлен в 1, сигнал канала 3 передается на выход S01 звукового процессора. D1 - если этот разряд установлен в 1, сигнал канала 2 передается на выход S01 звукового процессора. D0 - если этот разряд установлен в 1, сигнал канала 1 передается на выход S01 звукового процессора. Регистр управления звуковым процессором (NR52) Адрес: FF2 6h. Тип: чтение/запись. Назначение разрядов: D7 - управление работой звукового процессора: 0 - выключен; 1 - включен. D6 - D4 - не используются. D3 - выключение канала 4 звукового процессора: 0 - выключен; 1 - включен. D2 - выключение канала 3 звукового процессора: 0 - выключен; 1 - включен. D1 - выключение канала 2 звукового процессора: 0 - выключен; 1 - включен. D7 - выключение канала 1 звукового процессора: 0 - выключен; 1 - включен. ОЗУ паттернов Адрес: FF30h - FF3Fh. Тип: чтение/запись. Назначение. В ОЗУ паттернов хранятся 32 4-разрядных значения, определяющие форму выходного сигнала звукового процессора. Эти числа записываются в ячейки ОЗУ попарно, причем сначала используется значение из старших четырех разрядов, а затем из младших. 2.2.6. Структура картриджа Структурная схема картриджа игровой системы GAME BOY приведена на рис. 2.13. Обязательной частью любого картриджа является микросхема ПЗУ с кодами программы. В некоторые картриджи для увеличения объема памяти игровой системы встроено также внутреннее ОЗУ Для сохранения игровой ситуации на время выключения системы микросхема ОЗУ может получать питание от литиевой батарейки, размещенной внутри картриджа. Если объем ПЗУ превышает 32 Кб, в картридже имеется микросхема контроллера страниц памяти, представляющая собой программируемый дешифратор адреса. ПЗУ с программным обеспечением подсоединяется в адресное пространство центрального процессора в диапазоне 0000h - 7FFFh. При этом по адресам 0000h - 3FFFh всегда располагаются первые 16 Кб ПЗУ, независимо от его объема. По адресам 4000h - 7FFFh может быть подключена любая из оставшихся 16-килобайтных страниц ПЗУ. Номер используемой страницы записывается в регистр микросхемы контроллера страниц памяти. ОЗУ картриджа становится доступным для центрального процессора по адресам А000h - BFFFh. Если объем ОЗУ превышает 8 Кб, оно также делится на несколько страниц, переключением которых
РИС. 2.13. Структурная схема картриджа игровой системы GAME BOY управляет микросхема контроллера страниц памяти (МВС). В первой 16-килобайтной странице ПЗУ должно содержаться несколько блоков данных, причем их расположение строго фиксировано. Ниже эти блоки и данные, которые должны в них храниться, рассмотрены подробно. Точки входа для команд RST. При выполнении центральным процессором одной из команд RST запоминается адрес следующей команды в стеке и Осуществляется переход по одному из перечисленных адресов: 0000h, 0008h, 0010h, 0018h, 0020h, 0028h, 0030h, 0038h. Команда RST удобна для вызова часто используемых подпрограмм. По указанным адресам должны находиться точки входа в соответствующие подпрограммы. Следует отметить, что эта функция процессора применяется не всегда. Точки входа процедур обработки прерывания. При поступлении запроса на прерывание центральный процессор игровой системы GAME BOY передает управление по одному из следующих адресов: 0040h, 0048h, 0050h, 0058h, 0060h. Обычно здесь расположены команды перехода (JP), передающие управление соответствующей процедуре обработки прерывания. Если для какого-либо прерывания процедура обслуживания не используется, рекомендуется разместить по данному адресу команду RETI. Рассмотрим блок описания картриджа. Он обязательно должен присутствовать, причем должен быть правильно заполненным. Ошибка в этом блоке приведет к неработоспособности картриджа. Блок занимает адреса 0100h - 014Fh. Ниже подробно рассматривается назначение отдельных байтов. 0100h - 0103h. Точка входа в программу картриджа. Исполнение записанной в ПЗУ программы начинается с адреса 0100h. По этим адресам помещается команда NOP и команда перехода на начало программы JP. Этот фрагмент выглядит следующим образом: 0100 00 NOP 0101 СЗ хх XX JP xxxxh ; хххх - адрес запуска. 0104h - 0133h. Здесь хранится изображение торгового знака фирмы NINTENDO, показываемое на экране в начале игры. Изменение хотя бы одного байта в этой области памяти приведет к неработоспособности картриджа. Ниже приведено содержимое данной области: 0104 СЕ ED 66 66 СС 0D 00 0В 010С 03 73 00 83 00 ОС 00 0D 0114 00 08 11 1F 88 89 00 0Е 011С DC СС 6Е Е6 DD DD D9 99 0124 ВВ ВВ 67 63 6Е 0Е ЕС СС 012С DD DC 99 9F ВВ В9 33 3Е 0134h - 0142h. Название игры, записанное заглавными английскими буквами в кодировке ASCII. Свободные ячейки заполняются кодом 00h. 014 3h. Если здесь содержится код 80h, программа предназначена для игровой системы COLOR GAME BOY. 0144h, 0145h. Лицензионный код. Если содержимое ячейки с адресом 014Bh не равно 33h, то по этим адресам записаны нули. 0146h. Тип системы: 00h для GAME BOY, 03h для SUPER GAME BOY. Если здесь записан код 00h, дополнительные функции игровой системы SUPER GAME BOY не используются. 0147h. Информация о структуре картриджа. Возможны следующие значения: 00 - имеется только ПЗУ; 01h - имеется ПЗУ и контроллер МВС1; 02h - имеется ПЗУ, контроллер МВС1 и ОЗУ; 03h - имеется ПЗУ, контроллер MBC1 ОЗУ и батарея; 05h - имеется ПЗУ и контроллер МВС2; 0 6h - имеется ПЗУ, контроллер МВС2 и батарея; 08h - имеется ПЗУ и ОЗУ; 09h - имеется ПЗУ, ОЗУ и батарея; 0Bh - имеется ПЗУ и контроллер МММ01; 0Сh - имеется ПЗУ, контроллер МММ01 и ОЗУ; 0Dh - имеется ПЗУ, контроллер МММ01, ОЗУ и батарея; 0Fh - имеется ПЗУ, контроллер МВСЗ, таймер) и батарея; 10h - имеется ПЗУ, контроллер МВСЗ, ОЗУ, таймер и батарея; 1 lh - имеется ПЗУ и контроллер МВСЗ; 12h - имеется ПЗУ, контроллер МВСЗ и ОЗУ; 13h - имеется ПЗУ, контроллер МВСЗ, ОЗУ и батарея; 19h - имеется ПЗУ и контроллер МВС5; 1Ah - имеется ПЗУ, контроллер МВС5 и ОЗУ; 1Bh - имеется ПЗУ, контроллер МВС5, ОЗУ; и батарея; 1Ch - имеется ПЗУ, контроллер МВС5 и карта RUMBLE; 1Dh - имеется ПЗУ, контроллер МВС5, карта RUMBLE и ОЗУ; 1Eh - имеется ПЗУ, контроллер МВС5, карта RUMBLE, ОЗУ и батарея; 1Fh - камера для GAME BOY; FDh - картридж BANDAI ТАМА5 (тамагочи); FEh - контроллер HUDSON HUC3; FFh - контроллер HUDSON HUC1. 0148h. Информация об объеме установленного в картридже ПЗУ: 00h - 32 Кб (2 банка); 01h - 64 Кб (4 банка); 02h - 128 Кб (8 банков); 03h - 256 Кб (16 банков); 04h - 512 Кб (32 банка); 05h- 1 Мб (64 банка); 06h- 2 Мб (128 банков); 52h - 1,1 Мб (72 банка); 53h - 1,2 Мб (80 банков); 54h - 1,5 Мб (96 банков). 0149h. Информация об объеме установленного в картридже ОЗУ: 00h - ОЗУ не установлено; 01h - 2 Кб (1 банк); 02h - 8 Кб (1 банк); 03h - 32 Кб (4 банка); 04h - 128 Кб (16 банков). 014Ah. Код страны распространения картриджа: 00h - Япония; 01h - другие страны. 014Bh. Лицензионный код производителя. Для использования дополнительных функций системы SUPER GAME BOY в этом разряде должен быть записан код 33h. 33h - лицензионный код указан в байтах с адресами 0144h, 0145h. 79h - Accolade; A4h - Konami. 014Ch. Код микросхемы ПЗУ. Обычно в этом байте записано значение 00h. 014Dh. Дополнительный код блока данных. Программа, расположенная во встроенном ПЗУ системы, вычисляет сумму блока данных, которые находятся в ПЗУ картриджа по адресам 0134h - 014Dh. Затем к результату прибавляется 25. Выполнение программы, записанной в картридже, начинается только в том случае, если младший байт полученной суммы равен 0. 014Eh, 014Fh. Контрольная сумма содержимого картриджа, которая вычисляется путем последовательного сложения всех байтов, записанных в ПЗУ картриджа (кроме байтов с контрольной суммой). Система GAME BOY игнорирует это значение. Для корректной работы системы SUPER GAME BOY здесь должна храниться правильная контрольная сумма. Основной задачей микросхемы контроллера страниц памяти является переключение страниц ОЗУ и ПЗУ, позволяющее использовать картриджи с объемом ПЗУ более 32 Кб и ОЗУ более 8 Кб. С точки зрения программирования микросхема контроллера страниц памяти представляет собой несколько регистров, доступных при записи по адресам 0000h -7FFFh. Ниже в качестве примера рассмотрен контроллер страниц памяти МВС1. Подробное описание всех моделей контроллеров не входит в задачу данного издания. В случае необходимости эту информацию можно найти на сайтах Internet, указанных в конце книги. Контроллер МВС1 Микросхема контроллера страниц памяти МВС1 может работать в двух режимах: в первом (режим 16/8) предусмотрено использование ПЗУ объемом до 2 Мб (16 Мбит) и ОЗУ объемом до 8 Кб; во втором (режим 4/32) за счет уменьшения максимального размера применяемого в картридже ПЗУ до 512 Кб (4 Мбит) объем оперативной памяти увеличивается до 32 Кб. Сразу после включения питания картридж переходит в режим 16/8. С точки зрения программирования данный контроллер страниц представляет собой три порта, доступных для записи. Рассмотрим назначение каждого из них. Регистр разрешения записи в ОЗУ Адрес: любой из диапазона 0000h - 1FFFh. Тип: запись. Назначение разрядов. Сразу после подачи питания на картридж микросхема контроллера запрещает запись в ОЗУ картриджа. Чтобы разрешить модификацию содержимого ОЗУ, необходимо поместить в этот регистр число 0Ah. При любом другом числе, хранящемся здесь, ОЗУ картриджа доступно только для чтения. Фирма NINTENDO рекомендует для блокирования записи использовать число 00h. Регистр номера страницы ПЗУ Адрес: любой из диапазона 2000h - 3FFFh. Тип: запись. Назначение разрядов: D7 - D5 - не используются. D4 - D0 - если картридж работает в режиме 4/32, то в этот регистр помещается номер страницы ПЗУ, подсоединяемой к центральному процессору по адресам 4000 - 7FFFh. Страница с номером 0 всегда находится в диапазоне 0000h - 3FFFh, поэтому когда в регистр номера страницы ПЗУ записан 0, то по адресам 4000h - 7FFFh будет подключена первая страница. Если картридж работает в режиме 16/8, то в регистр помещаются пять младших разрядов номера страницы ПЗУ. Два старших разряда записываются в регистр номера страницы ОЗУ. Регистр номера страницы ОЗУ Адрес: любой из диапазона 4000h - 5FFFh. Тип: запись. Назначение разрядов: D7 - D2 - не используются. D1, D0 - если картридж работает в режиме 4/32, то в два младших разряда этого регистра заносится код номера задействованной страницы ОЗУ; в режиме 16/8 туда помещаются два старших разряда кода номера страницы ПЗУ, подключенной по адресам 4000h - 7FFFh. Не забудьте перед применением ОЗУ картриджа передать в регистр разрешения записи код 0 Ah. Регистр режима работы контроллера Адрес: любой из диапазона 6000h - 7FFFh. Тип: запись. Назначение разрядов: D7 - D1 - не используются. D0- режим работы контроллера: 0 - режим 16/8; 1 - режим 4/32. 2.2.7. Организация ввода/вывода К устройствам ввода/вывода, используемым игровой системой GAME BOY, относятся таймер, контроллер последовательного интерфейса и контроллер клавиатуры. С точки зрения программирования все эти устройства представляют собой доступные для чтения и записи порты, расположенные по адресам FF00-FF07h Таймер Иногда полезно иметь встроенный таймер, с определенной периодичностью генерирующий запросы на прерывания. Часто запрос, полученный от таймера, служит для вызова подпрограммы, которая должна выполняться через заданные промежутки времени. Игровая система GAME BOY оснащена встроенным таймером с программным управлением. Возможные значения частоты таймера составляют 4096, 16384, 65536 и 262144 Гц. Это число обозначает, насколько часто значение, хранящееся в регистре счетчика таймера TIMA, увеличивается на 1. Когда счетчик таймера переполняется (его значение изменяется с FFh на 00h), формируется запрос на прерывание. После этого значение из регистра модуля таймера ТМА копируется в регистр счетчика таймера TIMA, и счет продолжается. Для правильного взаимодействия с таймером следует ознакомиться с его регистрами. Регистр делителя частоты DIV Адрес: FF04h. Тип: запись/чтение. Назначение разрядов. Содержимое регистра увеличивается на 1 с частотой 16384 Гц (16779 Гц в игровой системе SUPER GAME BOY). Запись любого значения по этому адресу приведет к установке в регистр значения 00 Регистр счетчика таймера TIMA Адрес: F05h. Тип: запись/чтение. Назначение разрядов. Значение, хранящееся здесь, увеличивается на 1 с частотой, которая зависит от режима работы таймера, задаваемого через регистр ТАС. Когда эта величина изменяется с FFh на OOh, таймер генерирует запрос на прерывание и копирует в регистр счетчика таймера TIMA значение из регистра модуля таймера ТМА. Регистр модуля таймера ТМА Адрес: FF06h. Тип: запись/чтение. Назначение разрядов. В регистре хранится 8-разрядное.значение, которое копируется в регистр счетчика таймера TIMA каждый раз после переполнения последнего. Таким образом, это значение задает делитель опорной частоты таймера. Более подробно работа с данным регистром объясняется в приводимых ниже примерах. Регистр режима работы таймера ТАС Адрес: FF07h. Тип: запись/чтение. Назначение разрядов: D7 - D3 - не используются. D2 — включение таймера: 0 — таймер выключен; 1 - таймер включен. D1 D0- код, определяющий опорную частоту таймера; значения в скобках приведены для системы SUPER GAME BOY: 00 - 4096 (4194) Гц; 01 -262144 (268400) Гц; 10-65536 (67110) Гц; 11 - 16384 (16780) Гц. Рассмотрим два примера, которые помогут лучше понять принципы программирования встроенного таймера. ; Пример 1. Запрос на прерывание ; генерируется 4096 раз в секунду. Timerl: LD A, -1 LD ($FF06) , А ; Коэффициент деления ; равен 1. LD А,4 LD ($FF07),А ; Частота таймера ; составляет 4096 Гц. Записав в регистр ТМА (FF06h) значение -1 (0FFh), мы устанавливаем коэффициент деления частоты, равный 1. При этом первый же импульс от генератора вызовет переполнение счетчика и формирование запроса на прерывание. Соответственно следующий цикл счета снова начнется со значения FFh. Два младших разряда регистра ТАС (FF07h) задают рабочую частоту таймера 4096 Гц. Таким образом, запрос на прерывание будет генерироваться 4096 раз в секунду. ; Пример 2. Запрос на прерывание ; генерируется 1024 раза в секунду. Timer2: LD А,-16 LD ($FF06),A ; Коэффициент деления ; равен 16. LD А, 7 LD ($FF07),A ; Частота таймера ; составляет 16384 Гц. Записав в регистр ТМА (FF06h) значение -16 (0F0h), мы устанавливаем в делителе частоты коэффициент деления, равный 16. При этом шестнадцатый импульс от генератора вызовет переполнение счетчика и формирование запроса на прерывание. Следующий цикл счета снова начнется со значения F0h. Код в двух младших разрядах регистра ТАС (FF07h) определяет рабочую частоту таймера, равную в нашем случае 16384 Гц. Таким образом, запрос на прерывание будет поступать 16384 / 16 = = 1024 раза в секунду. Контроллер последовательного интерфейса Последовательный порт ввода/вывода игровой системы GAME BOY очень прост по сравнению со стандартными последовательными портами RS-232 (IBM PC) или RS-485 (Macintosh). Стартовые и стоповые биты отсутствуют, так что использовать такой порт нужно осторожно. Сначала передаваемый байт записывается в регистр данных последовательного интерфейса SB (FF01h). Для пересылки байта разряд D7 регистра управления последовательным интерфейсом SC (FF02h) необходимо установить в 1. Обмен данными происходит поразрядно, начиная со старшего разряда. Следует помнить, что во время передачи записанный в регистр SB байт также сдвигается. Когда выведены все восемь разрядов байта, разряд D7 регистра управления последовательным интерфейсом SC автоматически устанавливается в 0 и формируется запрос на прерывание. Для синхронизации процесса обмена данными используется внутренний или внешний тактовый генератор. Передача каждого разряда сопровождается появлением импульса низкого логического уровня на линии синхронизации. Частота внутреннего генератора фиксирована и составляет 8192 Гц; частота внешнего генератора может принимать любое значение от 1 Гц до 500 кГц. Полученный контроллером последовательного интерфейса байт также хранится в регистре данных SB. Если к последовательному порту не подключено никакое устройство, из регистра SB будет считан код FFh. Рассмотрим фрагмент программы, осуществляющий передачу кода 63h через последовательный порт. SerialOut: LD А,$63 LD ($FF01),A ; Запись байта в регистр ; данных. LD А, $81, ; Включение передачи ; данных (D7 = 1) LD ($FF02),А ; с внутренней ; синхронизацией (D0 = 1) . В заключение приведем краткое описание регистров контроллера последовательного интерфейса системы GAME BOY. Регистр данных последовательного интерфейса SB Адрес: FF0h. Тип: запись/чтение. Назначение разрядов. В регистр записывается передаваемый через последовательный порт байт данных. Отсюда же считывается байт, принятый через этот порт. Регистр управления последовательным интерфейсом SC Адрес: FF02h. Тип: запись/чтение. Назначение разрядов: D7 - разрешение передачи байта из регистра данных: 0 - нет передачи; 1 - запуск процесса передачи байта. D6 - D1 - не используются. D0 - определение типа синхронизации: 0 - внешняя синхронизация (1 Гц - 500 кГц); 1 - внутренняя синхронизация (8192 Гц). Контроллер клавиатуры Последним из рассматриваемых нами устройств ввода/вывода является клавиатура. Чтобы правильно описывать процедуры определения нажатой клавиши, необходимо сначала изучить принципы работы и схемотехнику клавиатуры игровой системы. Принципиальная схема клавиатуры системы GAME BOY приведена на рис. 2.14.
Рис. 2. 74. Принципиальная схема клавиатуры игровой системы GAME BOY С точки зрения схемотехники клавиатура представляет собой восемь клавиш с нормально разомкнутыми контактами, организованных в виде матрицы из двух столбцов по четыре клавиши в каждом. По шинам Р14 и Р15 от процессора поступает сигнал сканирования клавиатуры. Низкий логический уровень сигнала на одной из шин определяет, какой из столбцов клавиатуры будет сканироваться. По шинам Р10 - Р13 данные от клавиш поступают на входы процессора. Если ни одна клавиша не нажата, то на шинах Р10 - Р13 будет высокий логический уровень. Нажатие какой-либо клавиши приведет к подаче сигнала на соответствующую шину с линии сканирования Р14 или Р15. Если на линии сканирования высокий уровень, нажатие клавиши не повлияет на состояние выходных сигналов блока клавиатуры; в противном случае на соответствующей выходной шине будет низкий логический уровень. Таким образом, порядок опроса состояния клавиш игровой системы имеет следующий вид: 1. Установить низкий уровень на линии Р14 и высокий уровень на линии Р15. 2. Определить нажатую клавишу крестовины (RIGHT, LEFT, UP и DOWN) по наличию низкого логического уровня на шинах Р10 - Р13. 3. Установить высокий уровень на линии Р14 и низкий уровень на линии Р15. 4.0пределить нажатую клавишу А, В, SELECT или START по наличию низкого логического уровня на шинах Р10 - Р13. С точки зрения программирования клавиатура системы GAME BOY представляет собой один порт ввода/вывода с адресом FF00h. В документации и программах этот порт обозначен как Р1. Регистр контроллера клавиатуры Р1 Адрес: FF00h. Тип: чтение/запись. Назначение разрядов: D7, D6 - не используются. D5 - состояние линии Р15 (запись). D4 - состояние линии Р14 (запись). D3 - состояние линии Р13 (чтение). D2 - состояние линии Р12 (чтение). D1 - состояние линии Р11 (чтение). D0 - состояние линии Р10 (чтение). В заключение рассмотрим фрагмент игры Ms Pacman, осуществляющий опрос клавиш и формирующий байт состояния клавиатуры. ; Процедура чтения состояния клавиатуры. Pad_in: LD А,$20 LD ($FF0O),A ; Установка Р15 = 1 ; и Р14 = 0. LD A,($FF00) ; Считывание ; состояния ; клавиш крестовины. LD A, ($FF00) ; Две команды чтения ; необходимы ; для формирования ; задержки. CPL ; Теперь нажатой ; клавише ; соответствует 1. AND $0F ; Удаление ненужных ; разрядов. SWAPA ; Внесение результата LD В,А ; в четыре старших LD А,$10 ; разряда. LD ($FF00) ,А ; Установка Р15 = 0 ; и Р14 = 1. LD A,($FF00) ; Считывание ; состояния клавиш LD A,($FF00) ; А, В, START ; и SELECT. LD A,($FF00) ; Несколько команд LD A,($FF00) ; чтения необходимы LD A, ($FF00) ; для формирования LD A,($FF00) ; задержки. CPL ; Теперь нажатой ; клавише ; соответствует 1. AND $0F ; Удаление ненужных ; разрядов. OR В ; Объединение ; результатов ; сканирования ; двух столбцов. LD В,А ; Сохранение результата LD А,$30 ; в регистре В. LD ($FF00) ,А ; Установка Р15 = 1 ; и Р14 = 1. LD А, В RET В результате выполнения описанных действий в регистре А процессора будет сформирован 8-разрядный код, установленные биты которого соответствуют нажатым клавишам. В данном случае разряды байта соотносятся со следующими клавишами на пульте системы: D7- START D6 - SELECT D5- В D4-А D3 - DOWN D2-UP D1 - LEFT D0 - RIGHT 2.3. Принципиальная схема Данный раздел посвящен описанию аппаратного обеспечения и принципов работы системы GAME BOY. Приведены подробные принципиальные схемы игровой системы и осциллограммы сигналов в контрольных точках. 2.3.1. Процессорный модуль Процессорный модуль GAME BOY разделен на два функционально законченных блока, которые конструктивно размещены на различных платах. Принципиальная схема модуля центрального процессора игровой системы GAME BOY приведена на рис. 2.15. Принципиальная схема модуля контроллера ЖКИ представлена на рис. 2.16. Расположение контактов в разъемах игровой системы GAME BOY показано на рис. 2.17. Основой процессорного модуля GAME BOY является микросхема IC1 (LR35902), объединяющая центральный, графический и звуковой процессоры, Микросхема выполнена в 80-выводном корпусе, предназначенном для поверхностного монтажа. Центральный процессор игровой системы синхронизируется от внутреннего тактового генератора, работающего на частоте 4,194304 М Гц. Стабилизация частоты генератора осуществляется кварцевым резонатором X1, подключенным к выводам ICl/73,74. Центральный процессор соединен с микросхемой видеопамяти IC2 (LH5264) посредством шины адреса (VA0 - VA12) и шины данных (VD0 - VD7). Центральный процессор системы при обращении к видеопамяти генерирует три управляющих сигнала. Обращаясь к микросхеме видеопамяти для чтения или записи, центральный процессор формирует на выходе VCS (вывод IC1/43) сигнал низкого логического уровня. Во время чтения из микросхемы видеопамяти на выходе VWR (вывод IC1/49) присутствует высокий логический уровень, запрещающий запись в память, а на выходе VOE (вывод IC1/45) - низкий уровень, позволяющий микросхеме памяти IC2 передавать данные из адресуемой ячейки на шину данных. Во время записи в видеопамять на выходе VWR центрального процессора имеется низкий уровень, разрешающий запись данных в адресуемую ячейку микросхемы памяти. _ Высокий логический уровень на линии VOE блокирует передачу данных на шину. С помощью отдельных шин (адреса, данных и управления) к центральному процессору IC1 подключена микросхема IC3 (LH5264) внутреннего ОЗУ системы с объемом памяти 8 Кб. Выбор микросхемы внутреннего ОЗУ осуществляется, если на вход СЕ1 (вывод IC3/20) поступает сигнал низкого логического уровня, а на вход СЕ2 (вывод IC3/26) - высокого логического уровня. При обращении к микросхеме ОЗУ для чтения центральный процессор подает на вход ОЕ (вывод IC3/22) сигнал низкого логического уровня, разрешающий выдачу данных из адресуемой ячейки на шину. При записи в ОЗУ на вход WR (вывод IСЗ/ 27) поступает сигнал низкого логического уровня, при этом полученный по шине данных байт помещается в ячейку памяти с заданным адресом. Все сигналы Шин данных, адреса и управления приходят на 32-контактный разъем, через который подключается картридж. Кроме восьми сигналов шины данных (D0 - D7) и шестнадцати сигналов шины адреса (А0 — А15) на этот разъем также выведены пять сигналов управления и напряжение питания +5 В. Сигнал WR, поступающий на контакт 3 разъема XS1, принимает низкий логический уровень, когда центральный процессор выполняет операцию записи байта в память. Низкий уровень сигнала RD сигнализирует о чтении процессором информации из памяти или внешнего устройства, подключенного к шине данных. Низкий уровень сигнала CS (контакт 5 разъема XS1) показывает, что центральный процессор обращается к внешней памяти, расположенной в диапазоне адресов 0000h - 8000h или А000h - FDFFh. Дальнейшая дешифрация адреса для определения микросхемы, с которой будет
Рис. 2.15. Принципиальная схема процессорного модуля игровой системы GAME BOY производиться обмен информацией, выполняется путем анализа состояния старших разрядов шины адреса. На вывод IС1/71 процессора подается сигнал начальной установки RESET. Если он имеет низкий логический уровень, игровая система перезапускается, после чего выполняется программа из внутреннего ПЗУ центрального процессора. К выводам IC1/62-69 центрального процессора подключена клавиатура игровой системы, представляющая собой матрицу из нормально разомкнутых контактов. Для защиты от перегрузки к выходам процессора (Р14 и Р15) подсоединены диодные сборки DA1 - DA4. Последовательный интерфейс игровой системы осуществляется через выводы 1С1/68-70. Тактовые импульсы, синхронизирующие пересылку данных по двум однонаправленным линиям, поступают с выхода SCX (вывод 1С1/68). Данные от игровой системы передаются на внешние устройства через выход S-OUT (вывод 1С 1/70). Данные от внешних устройств поступают на вход S-IN (вывод IС1/ 69). Через резисторы R2 — R4 эти сигналы приходят на контакты 2, 3 и 5 разъема XS2 (GB LINK).
Рис. 2.16. Принципиальная схема модуля контроллера ЖКИ игровой системы GAME BOY
Рис. 2.17. Разъемы игровой системы GAME BOY Ha контакт 4 разъема последовательного интерфейса подается сигнал выхода Р14 контроллера клавиатуры. Диоды, подключаемые между контактами выходного разъема, шиной +5 В и общим проводом, предназначены для защиты выходов процессора от помех. Два аудиосигнала с выводов IС1/59,60 поступают на микросхему усилителя 34 (выводы IC4/7.8). Внешний звуковой сигнал с контакта 31 разъема для подключения картриджа подается на вход V IN (вывод IC1/61). Он может быть микширован (объединен) внутри звукового процессора с выходными аудиосигналами. Размах входного сигнала, поступающего на усилитель, регулируется с помощью переменного резистора VR1, который используется как регулятор громкости. С выводов IC4/12.6 усиленные сигналы передаются на разъем подключения наушников. Монофонический сигнал с выхода IC4/3 поступает на встроенный динамик игровой системы. При подсоединении наушников замыкаются контакты переключателя S1, вывод IC4/4 соединяется с общим проводом и выходной каскад усилителя, формирующий сигнал для встроенного динамика, отключается. Модуль процессора питается стабилизированным напряжением +5 В. Для связи центрального процессора игровой системы с контроллером, генерирующим изображение на экране матрицы ЖКИ, предназначена группа из восьми выходов (выводы IC1/50-57). Сигналы с выходов LD1, LD0 (выводы IC1/50,51), определяющие яркость точек экрана, поступают на контакты DATA0 и DATA1 разъема CN1. Информация о яркости передается последовательно, точка за точкой, начиная с верхнего левого угла экрана. Данные фиксируются в регистре контроллера ЖКИ по отрицательному фронту сигнала DATA LCH (вывод IС1/55). Сигнал, синхронизирующий работу контроллера дисплея (матрицы ЖКИ) и центрального процессора, поступает на контакт разъема CLOCK с выхода CP (вывод IC1/53). В конце передачи данных, образующих одну строку на экране, центральный процессор формирует для контроллера дисплея сигнал строчной. синхронизации, передаваемый через выход ST (вывод IC1/54) на контакт разъема HSYNC. После получения полного кадра изображения процессор генерирует сигнал кадровой синхронизации, передаваемый с выхода S (вывод IС1/59) в модуль контроллера дисплея через контакт разъема V SYNC. Сигналы CONTROL (с выхода IC1/52) и ALTSIGL (с выхода IС1/56) предназначены для управления режимами работы контроллера дисплея. На плате модуля контроллера дисплея игровой системы GAME BOY (рис. 2.16) располагаются матрица ЖКИ с контроллером IC8 (LH5028 или S890623), микросхема формирователя напряжений для индикатора IC9 (IR3E02) и несколько дискретных элементов. Микросхема контроллера IC8 получает данные от центрального процессора системы и выводит изображение на экран матрицы ЖКИ. Формирователь напряжений IC9 получает опорное напряжение питания (вывод IC9/18) и генерирует отдельные напряжения, необходимые для работы матрицы ЖКИ на выводах 1С9/12-16. Регулируя опорное напряжение питания с помощью переменного резистора VR1, можно изменять контрастность картинки. Для питания модуля контроллера дисплея необходимо напряжение питания -18 В. Далее >>