Info Guide
#11
05 июля 2015 |
|
Металлолом - о строении экрана 6912 с аппаратной точки зрения.
О строении экрана 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-экране определило его структуру, аппаратные соображения также сыграли важную роль.
Другие статьи номера:
Похожие статьи:
В этот день... 4 ноября