Просмотр полной версии : Тайминги Leningrad-1
Кто-то может помочь разобраться с таймингами для Leningrad-1 (без модов)?
В особенности интересует информация - когда добавляются WAIT'ы?
Нашел вот такую странчку (http://sblive.narod.ru/ZX-Spectrum/Leningrad48k/Leningrad48k.htm) по этой модели, из нее выяснил следующее:
224T в строке = 128T экран + 32T right border + 16T HSync + 16T Blank + 32T left border
312 строк = 192 экран + 48 bottom border + 16 VSync + 16 Blank + 48 top border
Cоответственно время кадра 312*224 = 69888T
Большая просьба уточнить, если что-то не верно.
Остается непонятным:
1) когда именно формируется сигнал INT?
2) какова длительность сигнала INT?
3) когда формируется сигнал WAIT?
Кто-то может помочь разобраться с таймингами для Leningrad-1 (без модов)?
В особенности интересует информация - когда добавляются WAIT'ы?
Нашел вот такую странчку (http://sblive.narod.ru/ZX-Spectrum/Leningrad48k/Leningrad48k.htm) по этой модели, из нее выяснил следующее:
224T в строке = 128T экран + 32T right border + 16T HSync + 16T Blank + 32T left border
224T в строке = 128T экран + 32T right border + 32T HSync ( он же Blank) + 32T left border
312 строк = 192 экран + 48 bottom border + 16 VSync + 16 Blank + 48 top border
312 строк = 192 экран + 40 bottom border + 16 VSync (он же Blank) + 64 top border
Cоответственно время кадра 312*224 = 69888T
Большая просьба уточнить, если что-то не верно.
У разных Ленинградов стоят разные кварцы, положение перемычек, наличие конденсаторов. От этого зависит количество тактов.
В первом посте (http://www.zx.pk.ru/showthread.php?t=16312) написано, как сделать, чтобы количество тактов было именно таким при кварце 14 МГц:
Входы счетчика D4 К555ИЕ7 настроены для кварца 14 МГц (10 вывод на +5В, а 1,9,15 - на землю). У меня в старом Ленинграде было так и работает, хотя во многих описаниях - не так.
Конденстор 560 pF между выводами 6 и 7 микросхемы К555ЛЛ1 (настройка количества тактов 14 МГц в строке = 896).
Остается непонятным:
1) когда именно формируется сигнал INT?
Начало INT на бордере, в следующей строке растра под последней, 192-ой строкой. То есть если нарисовать точку на экране в начале 192 строки, то INT начинается под этой точкой. Понятно объяснил ?
2) какова длительность сигнала INT?
За висит от резистора и конденсатора в цепи формирователя INT
3) когда формируется сигнал WAIT?
Точный данных не имею - особо не вникал.
может кто-то подскажет когда WAIT'ы формируются в Leningrad-1?
WAIT'ы формируются в Leningrad-1?
походу выборку кода операции выравнивает по четному номеру така.
то есть если m1 начинался в 3м такте, ему вставит wait до 4 такта.
Ну или наоборот... до нечетного там уже сложнее разобраться
добавил WAIT'ы по M1 до четных тактов, но по виду не похоже что правильно, хотя столько лет прошло, могу ошибаться.
Нужно написать тест и прогнать на реальном ленинграде. Остались ленинграды еще у кого-то? :)
Пока тестил в THUNDERCEPTOR, помню что на реальном ленинграде-1 мертвая зона для курсора была где-то выше кнопок.
если у кого-то есть возможность, запустите пожалуйста этот тест на Ленинград-1 и выложите тут фотку экрана (а еще лучше видео). Заранее спасибо :)
PS: для других моделей тоже интересно фотки экрана посмотреть (с указанием что за модель и какие моды) ;)
PPS: добавил магнитофонную версию (забыл что на ленинграде нет дисковода :D)
неужели ни у кого не осталось рабочего Ленинграда-1? :(
balu_dark
05.10.2011, 20:50
у меня есть - именно оригинал - без доработок. но я не собирал схему чтения с магнитофона. если не очень горит - то когда доделаю что-то для чтения - запущу - пока времени кастратофически нет.
добавил в тест выравнивание на 0-й такт, чтобы результат получался более точным.
Большая просьба прогнать тест на Ленинград-1 и выложить фотографию экрана
Два Ленинграда. В первом мы с паяльником развлекались, второй в том состоянии, как мне достался.
С mctest2 - аналогично, с точностью до пикселя.
Два Ленинграда. В первом мы с паяльником развлекались, второй в том состоянии, как мне достался.
С mctest2 - аналогично, с точностью до пикселя.
в первом, я так понял, вы переделали прерывания под пентагон? Бордер на втором не дрожал?
в первом, я так понял, вы переделали прерывания под пентагон?
Под "Академию. Tau Ceti II". (скорее скорпион, чем пентагон)
Бордер на втором не дрожал?
Нет, не дрожит на обоих экземплярах.
Вопрос - как вообще возможно, что Ленинград-1 может работать с отрезанным WAIT ("доработка" В.М.Г.)?
По мне так это неимоверный хак - я не могу физически представить как видеоконтроллер и процессор могут не мешая друг другу юзать одну и ту же память РУ5 на частоте 3.5 МГц (285 нс)
Обычный Ленинград с РУ5 из мусорного бачка без WAIT скорее всего работать не будет. Если поставить нормальную память и немного изменить подключение CLК, то WAIT не нужен. У Зонова в зеленом Скорпионе на 3,5 МГц WAIT уже не используется.
Спасибо за быстрый ответ! А изменить подключение CLK - это его задержка, как в оригинальном спектруме (т.е. тот же WAIT, но другим способом) либо укорачивание отдельных клоков без изменения их периодичности/частоты?
AHTuXPuCT
11.06.2013, 18:25
Shaos, Доработка заключается в том,
что на 24-й вывод процессора вместо -WAIT подается +5В, а на 6-й вывод подается инвертированная частота - H0.
из сборника VMG 5
у меня работал ленинград-1 без WAIT`a (вместо РУ5 ставил SIMM)
Композит на РУ5 у меня без WAITа не заработал.
Shaos, Доработка заключается в том,
что на 24-й вывод процессора вместо -WAIT подается +5В, а на 6-й вывод подается инвертированная частота - H0.
Вот такой рецепт выглядит более научно обоснованным:
КАК СДЕЛАТЬ ЛЕИГРАДОПОДОБУЮ
МАШИУ СОВМЕСТИМОЙ С ПЕТАГООМ.
ДИАГРАММА РАБОТЫ
КОМПЬЮТЕРА ТИПА 'ЖЕЛТЫЙ СКОРПИО'.
┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
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
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot