PDA

Просмотр полной версии : Тайминги Leningrad-1



ZXMAK
02.10.2011, 12:52
Кто-то может помочь разобраться с таймингами для 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?

zx-kit
02.10.2011, 17:54
Кто-то может помочь разобраться с таймингами для 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?
Точный данных не имею - особо не вникал.

ZXMAK
03.10.2011, 14:16
может кто-то подскажет когда WAIT'ы формируются в Leningrad-1?

ZEK
03.10.2011, 15:10
WAIT'ы формируются в Leningrad-1?
походу выборку кода операции выравнивает по четному номеру така.
то есть если m1 начинался в 3м такте, ему вставит wait до 4 такта.

Ну или наоборот... до нечетного там уже сложнее разобраться

ZXMAK
03.10.2011, 20:54
добавил WAIT'ы по M1 до четных тактов, но по виду не похоже что правильно, хотя столько лет прошло, могу ошибаться.
Нужно написать тест и прогнать на реальном ленинграде. Остались ленинграды еще у кого-то? :)

Пока тестил в THUNDERCEPTOR, помню что на реальном ленинграде-1 мертвая зона для курсора была где-то выше кнопок.

ZXMAK
04.10.2011, 04:45
если у кого-то есть возможность, запустите пожалуйста этот тест на Ленинград-1 и выложите тут фотку экрана (а еще лучше видео). Заранее спасибо :)

PS: для других моделей тоже интересно фотки экрана посмотреть (с указанием что за модель и какие моды) ;)
PPS: добавил магнитофонную версию (забыл что на ленинграде нет дисковода :D)

ZXMAK
05.10.2011, 20:38
неужели ни у кого не осталось рабочего Ленинграда-1? :(

balu_dark
05.10.2011, 20:50
у меня есть - именно оригинал - без доработок. но я не собирал схему чтения с магнитофона. если не очень горит - то когда доделаю что-то для чтения - запущу - пока времени кастратофически нет.

ZXMAK
07.10.2011, 02:52
добавил в тест выравнивание на 0-й такт, чтобы результат получался более точным.

Большая просьба прогнать тест на Ленинград-1 и выложить фотографию экрана

DDp
07.10.2011, 23:42
Два Ленинграда. В первом мы с паяльником развлекались, второй в том состоянии, как мне достался.
С mctest2 - аналогично, с точностью до пикселя.

ZXMAK
08.10.2011, 02:42
Два Ленинграда. В первом мы с паяльником развлекались, второй в том состоянии, как мне достался.
С mctest2 - аналогично, с точностью до пикселя.

в первом, я так понял, вы переделали прерывания под пентагон? Бордер на втором не дрожал?

DDp
08.10.2011, 15:21
в первом, я так понял, вы переделали прерывания под пентагон?
Под "Академию. Tau Ceti II". (скорее скорпион, чем пентагон)

Бордер на втором не дрожал?
Нет, не дрожит на обоих экземплярах.

Shaos
11.06.2013, 17:57
Вопрос - как вообще возможно, что Ленинград-1 может работать с отрезанным WAIT ("доработка" В.М.Г.)?

По мне так это неимоверный хак - я не могу физически представить как видеоконтроллер и процессор могут не мешая друг другу юзать одну и ту же память РУ5 на частоте 3.5 МГц (285 нс)

Blade
11.06.2013, 18:10
Обычный Ленинград с РУ5 из мусорного бачка без WAIT скорее всего работать не будет. Если поставить нормальную память и немного изменить подключение CLК, то WAIT не нужен. У Зонова в зеленом Скорпионе на 3,5 МГц WAIT уже не используется.

Shaos
11.06.2013, 18:19
Спасибо за быстрый ответ! А изменить подключение CLK - это его задержка, как в оригинальном спектруме (т.е. тот же WAIT, но другим способом) либо укорачивание отдельных клоков без изменения их периодичности/частоты?

AHTuXPuCT
11.06.2013, 18:25
Shaos, Доработка заключается в том,
что на 24-й вывод процессора вместо -WAIT подается +5В, а на 6-й вывод подается инвертированная частота - H0.

из сборника VMG 5

у меня работал ленинград-1 без WAIT`a (вместо РУ5 ставил SIMM)

Blade
11.06.2013, 18:41
Композит на РУ5 у меня без WAITа не заработал.

Shaos
14.06.2013, 03:09
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