Последний раз редактировалось ZXMAK; 08.10.2011 в 02:45.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Вопрос - как вообще возможно, что Ленинград-1 может работать с отрезанным WAIT ("доработка" В.М.Г.)?
По мне так это неимоверный хак - я не могу физически представить как видеоконтроллер и процессор могут не мешая друг другу юзать одну и ту же память РУ5 на частоте 3.5 МГц (285 нс)
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Обычный Ленинград с РУ5 из мусорного бачка без WAIT скорее всего работать не будет. Если поставить нормальную память и немного изменить подключение CLК, то WAIT не нужен. У Зонова в зеленом Скорпионе на 3,5 МГц WAIT уже не используется.
Спасибо за быстрый ответ! А изменить подключение CLK - это его задержка, как в оригинальном спектруме (т.е. тот же WAIT, но другим способом) либо укорачивание отдельных клоков без изменения их периодичности/частоты?
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Shaos, Доработка заключается в том,
что на 24-й вывод процессора вместо -WAIT подается +5В, а на 6-й вывод подается инвертированная частота - H0.
из сборника VMG 5
у меня работал ленинград-1 без WAIT`a (вместо РУ5 ставил SIMM)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Композит на РУ5 у меня без WAITа не заработал.
Вот такой рецепт выглядит более научно обоснованным:
Код:КАК СДЕЛАТЬ ЛЕИГРАДОПОДОБУЮ МАШИУ СОВМЕСТИМОЙ С ПЕТАГООМ. ДИАГРАММА РАБОТЫ КОМПЬЮТЕРА ТИПА 'ЖЕЛТЫЙ СКОРПИО'. ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ 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
Последний раз редактировалось Shaos; 14.06.2013 в 03:10. Причина: correction
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)