О строении экрана 6912
Ещё раз о строении экрана 6912
(на этот раз с аппаратной точки зрения)
Lord Vader
Введение
Необычное строение экрана ZX Spectrum
принято объяснять с программной точки зре─
ния - мол, помучавшись немного и вычислив
адрес знакоместа, можно потом достаточно
быстро напечатать символ процедурой типа
LD A,(DE):INC E:LD (HL),A:INC H, после че─
го, помучавшись ещё чуть-чуть и пересчитав
адрес знакоместа в адрес атрибута, можно
легко раскрасить оное.
Нисколько не отрицая данные соображе─
ния, я постараюсь наглядно объяснить,поче─
му и с аппаратной точки зрения экран полу─
чился таким же. Для того, чтобы полностью
понять ход моих рассуждений, вам нужно
иметь некоторое представление о том, как
работает динамическая память (та самая,
которая PYS, РУ7 и др.), ну или хотя бы
иметь представление о цифровой схемотех─
нике в общем. Важно уточнить, что в данной
статье просто изложены широко известные (в
узких кругах...) факты, она не претендует
на оригинальность.
Рассматривая схему ZX Spectrum 48k...
Как известно, сэр Синклер был бизнесме─
ном довольно, скажем так, экономным. Сле─
довательно, можно предполагать, что каждый
компонент в схеме ZX Spectrum'а (оригина─
льного! Клоны тут ни при чём, и вообще, в
82 году их ещё не было и в проекте!) был
выбран по принципу наибольшей дешевизны
при условии, что он ещё может выполнять
хоть как-то свои функции,пусть и не лучшим
образом.
Рассмотрим поподробнее микросхемы ви─
деопамяти (видеопамятью я называю то, что
известно как 'медленная память' ) - это
4116-15, клоны интеловских чипов динамиче─
ской памяти 2116 по 16 килобит каждая. Ну,
как PYS, только вчетверо менее ёмкие. А
заодно, как и i8080, требующие трёх пита─
ний -+5, +12 и -5 вольт: в 82 году NMOS-
чипы с тремя питаниями уже давно вышли из
моды и перешли в разряд ширпотреба - поня─
тно, что 8 устаревших микросхем с чуть ус─
ложнённым БП оказались дешевле 8 нормаль─
ных ДРАМок с одним питанием.
'-15' в названии микросхемы обозначает
access time (в десятках наносекунд) - чем
больше это число, тем медленнее чип, т.е.
15 - это 150 нс. В интернете можно найти
даташит на TMSЧ116-15 (один из клонов) и
узнать все времянки оттуда.
Итак, что же мы видим из этого даташи─
та: полный цикл доступа в память длится не
менее375 нс('access time'150 нс- время
от начала цикла до получения данных). Ок─
ругляя до целого количества тактов 7 МГц
(140 нс каждый), получаем цикл обращения
длительностью 3 такта 7 МГц. За время 1
знакоместа (8 пикселей с частотой 7 МГц)
нам требуется выбрать 2 байта, а если мы
затратим на выборку каждого по3 такта, то
останутся свободными только2 такта 7 МГц
(1 такт Z80) - ни о каком доступе для про─
цессора во время выборки строки пикселей
можно было бы и не мечтать...
Хитрость Альтвассера
Однако намёк на то, как улучшить ситуа─
цию, содержится прямо в даташите на 4116,
и называется он 'page mode'. Page mode -
это когда в микросхему 1 раз вводится RAS-
адрес, после чего производится серия обра─
щений при постоянном RAS=0 (и соответст─
венно, постоянном RAS-адресе), стробируе─
мая последовательностью импульсов CAS, при
этом возможно менять лишь CAS-часть адре─
са. Из времянок в даташите следует, что
обращение к двум разным CAS-адресам можно
произвести за4 такта 7 МГц, что соответс─
твует2 тактам Z80.
Факт того, что ULA (на самом деле ULA
- это аббревиатура от 'uncommited logic
array', и называть так видеоконтроллер в
ZX Spectrum'е некорректно, но что ж де─
лать, если все вокруг, например, Atari или
Commodore, давали имена собственные своим
custom-чипам, а Sinclair Research - нет?)
обращается в видеопамять именно так, можно
подтвердить разными способами. Один из них
- взять осциллограф, или ещё лучше, логи─
ческий анализатор и воткнуть в плату ZX
Spectrum'а. Другой - купить за $$$ книгу о
том, как ломали UL'у и прочесть там.
Я выбрал 'диванный' способ - взял ка─
кую-то VHDL-модель UL'ы на просторах инте─
рнета (которую разыскал DimkaM и которая,
на самом деле,является клоном UL'ы TK90X),
сунул её в симулятор, прикрутил к ней про─
стенький testbench и заставил симулятор
рисовать картинки с симулируемыми сигнала─
ми.
Так как в данной статье я сознате─
льно не останавливаюсь подробно на вопросе
'contended memory', то есть вопросе задер─
жек процессора в фирменном ZX Spectrum'е,
когда тот обращается в видеопамять во вре─
мя выборки данных для очередной линии изо─
бражения, то на картинке вы увидите только
циклы обращения UL'ы в видеопамять.
Перед тем, как продолжить, уточну прин─
цип мультиплексирования адреса в RAS- и
CAS-адреса динамической памяти: как легко
видеть из схемы ZX Spectrum (надо смотреть
мультиплексор, который связывает ША Z80 и
адресную шину микросхем видеопамяти), мла─
дшие биты A6..A0 - это RAS-адрес, старшие
A13..A7 - CAS-адрес. Основная причина
именно такого распределения состоит в том,
что процессор Z80 может осуществлять реге─
нерацию микросхем динамической памяти раз─
мером 16 кбит, при этом он выводит содер─
жимое счётчика регенерации (тот самый ре─
гистр R) как раз на младшие битыA6..A0
ША. Кроме того, такое распределение для
видеопамяти полезно тем,что в процессе вы─
борки всего экрана регенерация всех рядов
памяти в микросхемах произойдёт не один
раз: например, при выборке 6912 экрана ре─
генерация происходит 6 полных раз.
Итак, см. рис. 1, где показано начало
выборки самой верхней строки видеопамяти:
Рис. 1
Первый адрес, передаваемый в микросхему
- нули (что соответствует байту по адресу
#4000 ),при второй выборке меняется только
CAS-адрес -#30, что соответствует байту
по адресу#4000+#30*128=#5800. Таким обра─
зом, происходит выборка байта пикселей и
байта атрибутов. Вплотную к этой выборке,
длящейся 2 такта Z80, идёт следующая,в ко─
торой выбираются байты#4001 и #5801 (из─
менился только RAS-адрес). Итого ULA тра─
тит 4 такта Z80 на выборку 4 байт видео─
памяти для 2 знакомест, остальные 4 такта
остаются свободными для возможного обраще─
ния Z80.
Именно группировка выборки 4 байт в ма─
ксимально короткое время позволила упих─
нуть возможное обращение Z80 во время вы─
борки и именно эта группировка ответствен─
на за паттерн вейтов6-5-4-3-2-1-0-0, пов─
торяющийся каждые 8 тактов Z80 (что на
первый взгляд кажется парадоксальным).
Из всего вышеописанного следует важный
вывод - каждый байт пикселей вместе с со─
ответствующим ему байтом атрибутов должны
лежать в памяти по одному и тому же RAS-
адресу (т.е. иметь одинаковые младшие 7
бит адреса). Как легко убедиться,структура
экрана удовлетворяет этому свойству - ад─
реса соседних байтов пикселей в пределах
знакоместа отличаются на 256 и имеют мла─
дший байт адреса, совпадающий с младшим
байтом адреса байта атрибутов.
Таким образом, не только 'удобство' пе─
чати знакомест на ZX-экране определило его
структуру, аппаратные соображения также
сыграли важную роль.
Other articles: