───────────────────────────────────────────────────────────────────────────── Area: ZX.SPECTRUM From: Kirill Frolov 2:5030/827.2 25.12.1999 01:14:04 To: Alex Letaev 2:5057/33 Subj: Ленинград -> 128 ───────────────────────────────────────────────────────────────────────────── Hемедленно нажми на RESET, Alex ! 24 Dec 99 07:49, Alex Letaev wrote to Kirill Frolov: KF>> У меня один такт затягивается, а в следующем наобоpот, всё KF>> быстpее. В конечном счёте по вpемени чисто безвайтовая машина. AL> То есть тактов как у пентагона? Кинь схему, PLZ. КАК СДЕЛАТЬ ЛЕИГРАДОПОДОБУЮ МАШИУ СОВМЕСТИМОЙ С ПЕТАГОНОМ. ДИАГРАММА РАБОТЫ КОМПЬЮТЕРА ТИПА 'ЖЕЛТЫЙ СКОРПИОН'. ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ 14 ┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘ __ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ТИ ┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └ ___──┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌──┐ RAS └───┘ └───┘ └───┘ └───┘ └───┘ ┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌──┐ H0 └───┘ └───┘ └───┘ └───┘ └───┘ ┐ ┌───────┐ ┌───────┐ H1 └───────┘ └───────┘ └───────┘ ___────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌ CAS └───┘ └───┘ └───┘ └───┘ └───┘ _____──┐ ┌───────────┐ ┌───────────┐ ┌ WRBUFF └───┘ └───┘ └───┘ ПРИМЕЧАИЯ: Процессор тактируется сигналом /RAS. Поэтому /CLK процессора идентичен /RAS. ______ ┌── WRBUFF ──┘ - ЗАПИСЬ В БУФЕР ДАЫХ РАБОТА С ПАМЯТЬЮ H1=0 - РАБОТАЕТ ПРОЦЕССОР H1=1 - РАБОТАЕТ ВИДЕОКОТРОЛЛЕР H2 - ЧТЕИЕ ИЗОБРАЖЕИЯ/АТРИБУТОВ H3...V7 - АДРЕС В ЭКРАЕ /RAS выбор адреса в микросхемах памяти /CAS чтение из памяти Вся работа с памятью в компьютере типа 'ЖЕЛТЫЙ СКОРПИОН' сводится к 3-м циклам: чтение кода операции без циклов ожидания, чтение кода операции с 1-м циклом ожида- ния, чтение или запись данных без циклов ожидания. Сигнал /WAIT на шине процессора присутствует только при чтении кода опера- ции с 1-м циклом ожидания. Циклы чте- ния/записи данных у процессора длиннее на 1 такт, чем чтение кода операции. Чтение данных из шины в процессор всегда происхо- дит при переходе /MREQ из 0 в 1, при запи- си данные и адрес на шине готовы за пол- такта до перехода /MREQ из 1 в 0. Адрес при чтении тоже готов за полтакта до пере- хода /MREQ из 1 в 0. РАБОТА ПРОЦЕССОРА Z80 С ПАМЯТЬЮ ИЗВЛЕЧЕИЕ КОДА ОПЕРАЦИИ БЕЗ ЦИКЛОВ ОЖИДАИЯ 4 ТАКТА ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ ___ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌─ CLK─┘ └──┘ └──┘ └──┘ └──┘ . ____───┐ . ┌──┐ ┌─── MREQ └────────┘ └─────┘ . __ ───┐ . ┌──────────── RD └────────┘ . ____ ─ ─ ─ ─┌─┐ ─ ─ ─ ─ ─ ─ ─ WAIT─ ─ ─ ─ ┘ └─ ─ ─ ─ ─ ─ ─ ─ __ ─┐ ┌──────────── M1 └───────────┘ ____────────────┐ ┌ RFSH └───────────┘ ИЗВЛЕЧЕИЕ КОДА ОПЕРАЦИИ С 1-М ЦИКЛОМ ОЖИДАИЯ 4 ТАКТА + 1 ТАКТ ОЖИДАИЯ ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ ___ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌─ CLK─┘ └──┘ └──┘ └──┘ └──┘ └──┘ . . ____───┐ . . ┌──┐ ┌─── MREQ └──────────────┘ └─────┘ . . __ ───┐ . . ┌──────────── RD └──────────────┘ . . ____ ─ ─ ─ ─┐ ┌─ ─┌─┐ ─ ─ ─ ─ ─ WAIT─ ─ ─ ─ └─┘ ─ ┘ └─ ─ ─ ─ ─ ─ __ ─┐ ┌──────────── M1 └─────────────────┘ ____──────────────────┐ ┌ RFSH └───────────┘ ЧТЕИЕ/ЗАПИСЬ ДАЫХ ПРОЦЕССОРОМ БЕЗ ЦИКЛОВ ОЖИДАИЯ 3 ТАКТА ├ ─ ─ ─ ─ ─ ─ ─ ─ ┤ ___ ┌──┐ ┌──┐ ┌──┐ ┌─ CLK─┘ └──┘ └──┘ └──┘ . ____───┐ . ┌──── MREQ └───────────┘ . ____ ─ ─ ─ ─┌─┐ ─ ─ ─ ─ ─ WAIT─ ─ ─ ─ ┘ └─ ─ ─ ─ ─ ─ __ ───┐ ┌───── RD └───────────┘ __ ─────────┐ ┌───── WR └─────┘ ____ Сигнал WAIT опрашивается процессором ров- но через 1 такт после того как сигнал /MREQ упадет в ноль. /MREQ переходит из 1 в 0 при необходимости операций с памятью и это всегда происходит при переходе из 1 в 0 на /CLK входе процессора. Если при опро- се сигнала /WAIT он находиться в 1 то все циклы чтение/записи продлеваются на 1 такт, после чего снова опрашивается сигнал /WAIT. Таким образом процессор может бес- конечно ждать пока память не будет готова. Однако из этих правил есть одно исключение - сигнал /WAIT не опрашивается при выпол- нении регенерации. Т.е. пока /RFSH будет в 0 процессор на /WAIT не реагирует. Как происходит извлечение кода операции. Возможны 2 варианта - с задержкой по /WA- IT и без задержки. Диаграмма варианта с задержкой приведена ниже. Цикл без за- держки возможен только при переходе /MREQ из 1 в 0 при сигнале H1 равном 0: КАК ЭТО ЕСТЬ БЕЗ ЦИКЛА ОЖИДАИЯ: ___ ┌───┐ ┌───┐ ┌───┐ ┌───┐ RAS─┘ └───┘ └───┘ └───┘ └ . ───┐ ┌───┐ . ┌───┐ ┌───┐ H0 └───┘ └───┘ └───┘ └─ . ───┐ ┌───────┐ ┌── H1 └───────┘ . └───────┘ . ___ ┌───┐ ┌───┐ ┌───┐ ┌─ CAS───┘ └───┘ . └───┘ └───┘ . ____────┐ . ┌─── MREQ └───────────────────┘ . ____────┐ ┌───────────────────── WAIT └─┘ ______────┐ ┌───────────────── WRBUFF └───┘ /WAIT к моменту его опроса уже был деак- тивизирован т.к. уже произошло чтение из памяти и данные были записаны в буфер. Если посмотреть на диаграмму работы компьютера, то можно увидеть, что цикл чтения кода операции с 1-м тактом ожидания возможен только в единственном случае - когда сигнал /MREQ перешел из 1 в 0 и зна- чит сигнал /CLK перешел из 1 в 0 при сиг- нале H1 равном 1. Поскольку /CLK это есть ни что иное как /RAS можно нарисовать та- кую картинку: КАК ЭТО ЕСТЬ С ЦИКЛОМ ОЖИДАИЯ: ___ ┌───┐ ┌───┐ ┌───┐ ┌───┐ RAS─┘ └───┘ └───┘ └───┘ └ . ───┐ ┌───┐ . ┌───┐ ┌───┐ H0 └───┘ └───┘ └───┘ └─ . ┌───────┐ . ┌───────┐ H1 ───┘ └───────┘ └─ . ___ ┌───┐ ┌───┐ ┌───┐ ┌─ CAS───┘ └───┘ . └───┘ └───┘ . ____────┐ . ┌─── MREQ └───────────────────┘ . ____────┐ . ┌──────────── WAIT └─────────┘ ______────────────┐ ┌───────── WRBUFF └───┘ ЧТО БЫЛО БЫ БЕЗ ЦИКЛА ОЖИДАИЯ, КОГДА О БЫЛ ЕОБХОДИМ : ___ ┌───┐ ┌───┐ ┌───┐ ┌───┐ RAS─┘ └───┘ └───┘ └───┘ └ . ───┐ ┌───┐ . ┌───┐ ┌───┐ H0 └───┘ └───┘ └───┘ └─ . ┌───────┐ . ┌───────┐ H1 ───┘ └───────┘ └─ . ___ ┌───┐ ┌───┐ ┌───┐ ┌─ CAS───┘ └───┘ . └───┘ └───┘ . ____────┐ . ┌────────── MREQ └───────────┘ . . ____─────────────────────────── WAIT . . ______────────────┐ . ┌───────── WRBUFF └───┘ Тут очень хорошо видно, что процессор закончил чтение раньше, чем данные были записаны в буфер. Запись в буфер происхо- дит при переходе сигнала /WRBUF из 0 в 1 при применении буфера на микросхеме ИР23 или все то время пока /WRBUF активен при применении ИР22. Стоит обратить внимание, что при применении ИР22 используется неин- версный сигнал WRBUF. Возникает вопрос - как сделать, чтобы когда процессор заканчивал чтение данные уже были в буфере. Совершенно ясно, что для этого можно растянуть по времени чте- ние и/или записать данные в буфер раньше. Решение оказывается очень простым - па- мять имеет обычно достаточный запас быстродействия, поэтому данные в буфер можно записывать раньше и процессор тоже иногда может работать с более короткими импульсами на входе /CLK, поэтому в нужный момент можно увеличить один полупериод тактовой частоты (чтобы процессор подождал готовности буфера и памяти) и уменьшит другой полупериод. Если в компьютере в ка- честве буфера исползуется ИР22, то ничего делать с ней не надо - данные в ней ока- жуться сразу как будут получены из памяти. Если стоит ИР23, то не повезло и придется немного ускорить запись в буфер. В КАЧЕСТВЕ ДОПОЛИТЕЛЬОЙ МИКРОСХЕМЫ ИСПОЛЬЗУЕТСЯ 155,555,1533ЛА3 __ ТИ >──────────┐ ┌──┐ ┌──┐ └───┤& │ ______ ┌─┤& │ │ o────> на ИР23 WRBUFF>──o │ o─────┤ │ вместо /WRBUFF └─┤ │ └──┘ └──┘ Вторая часть - изменение схемы тактирова- ния процессора. Меняется вне зависимости от используемого буфера. o +5V ┌┴┐ ___ ┌──┐ ┌──┐ │/│680 RAS >─────┤& │ ┌─┤& │ └┬┘ ______ │ o───o │ o──o──> /CLK WRBUFF>─────┤ │ └─┤ │ на процессор └──┘ └──┘ Резистор на 680 ом при использовании не- которых процессоров может не понадобиться или даже может его придется убрать. После выполнения вышеуказанных доработок сигнал /WAIT можно через резистор в 680 ом подать на +5V. Вот теперь диаграмка того, что получилось. КАК ЭТО СТАЛО БЕЗ ЦИКЛА ОЖИДАИЯ: ___ ┌───┐ ┌───┐ ┌───┐ ┌───┐ RAS─┘ └───┘ └───┘ └───┘ └ ___ ┌───┐ ┌───┐ ┌─┐ ┌───┐ CLK─┘ └───┘ └─────┘ └───┘ └ . ───┐ ┌───┐ . ┌───┐ ┌───┐ H0 └───┘ └───┘ └───┘ └─ . ┌───────┐ . ┌───────┐ H1 ───┘ └───────┘ └─ . ___ ┌───┐ ┌───┐ ┌───┐ ┌─ CAS───┘ └───┘ . └───┘ └───┘ . ____────┐ . ┌────────── MREQ └─────────────┘ . . ____─────────────────────────── WAIT . . ______────────────┐ ┌───────── WRBUFF └─┘ /WRBUFF стал короче, а /CLK удлинился в одном месте и укоротился в другом. Тут по- казано на примере доработки для ИР23, для ИР22 /WRBUFF не меняется, а саму ИР22 идет вообще инверсный. Kirill Frolov. [ZX] --- Здpавствуй Dead'ушка Моpоз ! * Origin: Я Абсолютный Монаpх и мне повинуются звёзды... (2:5030/827.2) ─────────────────────────────────────────────────────────────────────────────