05 июля 2015

   О строении экрана 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:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Interface - letters from readers: A new version of Worms, refinement of QUILL, the need for articles on creating games, Poke to games are known for, the glitch in programs, etc.
Pricelist - You, for instance, it is interesting to know what to Kemerovo in Smolensk oil or vodka?
B.B.S. News - The work B.B.S. 'ca.

В этот день...   3 May