кстате о растактовке корвета
из документации
частота кадровой похоже
49.8166746373346
20мгц/16=1.25мгц
1.25мгц/164=7.62кгц
7.62кгц/153=49.8166746373346
~hbl = 1(64T=51.2мкс)0(18T=14.1мкс)
~vbl = 0(25T)1(128T)
и еще цитата
"при обращении МП к УВВ формируется один такт ожидания"
УВВ это все бисы
и еще похоже (но не уверен) что при форимровании CALL от контроллера прерываний на каждый байт добавляем по такту ожидания ....
может это что-то объяснит ?
Ну в принципе, и у меня почти также, только я считаю по-другому, исходя из тактовой частоты процессора:
2.5МГц / 164 / 306 = 49.8166...Гц
Насчёт hbl они где-то общитались: 51.2+14.1=65.3мкс, а если по тактам посчитать 164/2.5Мгц = 65.6мкс
А, понял, 18Т=14.4мкс
А насчёт vbl я вообще не понял, почему они считают в половину меньше, стандартная ТВ развёртка 625 чересстрочная, то есть в кадре 312,5 строк, с учётом Корветовской развёртки 306, а у них только 153...
Один такт ожидания при обращении к УВВ - это только +1 такт в тесте, т.к. там только одна команда обращения к PIC. Насчёт такта ожидания при формировании CALL я сомневаюсь.
А вот сколько тактов тратится на выход из режима HLT, мне неизвестно. На данный момент этот выход у меня мгновенный, и в этом, видимо, главная причина.
---------- Post added at 13:26 ---------- Previous post was at 13:13 ----------
Если порассуждать про команду HLT, то получится следующее.
Циклы МП могут быть 3,4 и 5 тактов. Первый цикл М1 - всегда 4 такта (я так думаю), по документации HLT выполняется за 7 тактов (минимум), т.е. это 4 такта цикла M1 и скорее всего 3 такта цикла ожидания прерывания. Если в начале цикла ожидания обнаруживается запрос на прерывание, то происходит выход из HLT за те-же 3 такта. Однако собственно запрос может возникнуть и на 1-2 такта раньше. Получается на выход из HLT потратится 4-5 тактов. Плюс один такт на обращение к УВВ описанный выше. Итого 5-6 тактов, что подтверждается результатами теста: я пробовал укорачивать размер кадра на 5 тактов, а не на 6 - результат не изменился.
Последний раз редактировалось b2m; 09.04.2010 в 12:17.
еще про корвет, нашел ответ Скурихина на вопрос по таймеру
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
From: A.Skurikhin <sk@------->
To: Sergey Erokhin <esl@-----.--->
Date: Wednesday, May 21, 2003, 1:51:27 PM
Subject: PK8020, новая версия winbeta1
Files: <нет>
--====----====----====----====----====----====----====----====----====----===--
> какая точно частота подавалась на вход 2-го канала корвета ?
Сколько помню, есть две модификации Корвета. В исходной версии подвалось
50гц (VBL). Но очень быстро выяснилось, что для практических применений
гораздо лучше иметь на входе таймера строчную частоту(64мкс), а
веритикальный синхронизирующий импульс подавать на вход управления этого же
таймера. Такая схема позволяет настроить таймер в режим, когда по сигналу
вертикального синхроимпульса таймер сбрасывается, затем отсчитывает заданное
количество строк и генерит прерывание.
Используя эту технологию, можно обеспечить "гладкий" вывод на экран.
уточнение
~vbl = 0(25T1)1(128T1)
период Т1 = 164Т = 131.2 мксек
и цитата из Технического описания
Нам осталось разобраться с обработкой прерываний, т.е. с сигналом INTA. При формировании контроллером прерываний D8(12.4) сигнала INT процессор заканчивает выполнение команды и начинает выполнять трехбайтную команду "CALL", которую он принимает из контроллера прерываний, при условии, что прерывания разрешены командой "EI".
Как это делается? Попробуем разобраться без наглядной иллюстрации. В первом цикле процессор выполняет цикл М10, который отличается от М1 наличием единицы в разряде D0 шины данных. Кроме этого вводится такт ожидания, потому при обращении к контроллеру прерываний вырабатывается сигнал CSDEV. Положительным фронтом сигнала на тактовом входе С триггера D15 (3.25) единица в D0 устанавливает выход триггера D15 (5 ножка) в единицу. На рисунке 5 сигнал на тактовом входе D15 показан.
Изменить состояние D15 теперь можно двумя способами. Первый: с приходом следующего положительного перепада на тактовый вход сигнал на линии D0 должен низкий уровень. Но такая ситуация может наступить после выполнения полностью команды "CALL". Второй способ: подать на вход R (RESET) сигнал низкого уровня. Из рисунка 5 видно, что это возможно при выполнении цикла записи (М3 или М5).
Итак, триггер D15 находится в состоянии единица. Сигнал высокого уровня с выхода триггера поступает на дешифратор адресов, запрещая его работу, и на микросхему D18 (3.27) - И. Поэтому сигнал INTA будет инвертированным сигналом DBIN. Сигнал INTA выбирает контроллер прерываний и в цикле М10 в процессор вводится код команды CALL из контроллера.
Команда "CALL" выполняется за пять машинных циклов, из которых первые три связаны с вводом команды в процессор, а два последних с записью в стек текущего адреса прерванной команды. Первый цикл (М10), мы уже разобрали. Затем выполняется два раза подряд цикл М8, отличающийся от М2 только единицей в разряде D0 шины данных. В первом цикле М8 читается младший байт адреса, а во втором цикле М8 - старший байт адреса перехода на программу обработки прерываний. В конце цикла М8 будет вырабатываться сигнал INTA, который и обеспечивает чтение из контроллера.
В четвертом и пятом циклах будет выполняться цикл М5, обеспечивающий запись в стек старшего и младшего байта адреса прерванной программы. Отрицательный сигнал с выхода регистра D27 (3.26) сбросит триггер D15 в нуль. Поэтому в четвертом и пятом циклах команды CALL сигнал INTA формироваться не будет.
---------- Post added at 13:06 ---------- Previous post was at 13:05 ----------При обращении к УВВ низкий уровень сигнала CSDEV появляется на выходе D24 и процессор переходит в режим ожидания, устанавливая на выходе WI сигнал WAIT высокого уровня.
во первых обещался, во вторых информация от авторов вполне интересна сама по себе![]()
Последний раз редактировалось esl; 09.04.2010 в 15:32.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Запустил тест на реале
sta/lda
0DFA - при записи в регистры БИС
0F0D - при записи в обычную память
добавил в TestDataInit еще один sta
сталоmvi a,020h
sta 0FB28h
sta 0FB28h
ei
0DF9 - при записи в регистры БИС
0F0С - при записи в обычную память
а для
nop
1x 30e7
2x 30e7
3x 30e3
соответсвенно 1,2,3 sta
есть предложение
по результатам ваших коллективных эксперементов над процом
вышли мне детали, а я сведу в табличку, чтоб осталось в доступе
Последний раз редактировалось esl; 10.04.2010 в 02:25.
esl, интересно бы еще потестировать быстродействие записи в графическое и символьное ВидеоОЗУ и чтения оттуда (если в документации или еще где не написано, например, что доступ полностью прозрачный).
Последний раз редактировалось ivagor; 10.04.2010 в 15:50.
запись/чтение в ACZU и область клавиатуры и LUT совпадает с обычной памятью
это я проверял
судя по описанию в VRAM не должно быть торможения
но проверить надо бы конечно, но эт не скоро
надо тест переписать и опять железку достать ....
кстати, прогнал сегодня на корвете 8080 CPU Exerciser (KR580VM80A)
с вполне ожидаемым OK :)
какой точно стоит проц - не знаю, он под радиатором ...
а в доке вот что
Рассмотрим теперь сигнал 1READY, который через разъем XS3 поступает на вход RA (готовность) процессора. Он формируется на выходе микросхемы D24 (ИЛИ). На вход D24 подаются два сигнала CSDEV и WAIT. CSDEV - это сигнал обращения к УВВ (при обращении он имеет низкий уровень). Когда обращения к УВВ нет, то на выходе 1READY сигнал высокого уровня и процессор, анализируя этот сигнал в такте Т2, не переходит в режим ожидания. При обращении к УВВ низкий уровень сигнала CSOEV появляется на выходе D24 и процессор переходит в режим ожидания, устанавливая на выходе WI сигнал WAIT высокого уровня. Сигнал WAITЕ формирует сигнал 1READY высокого уровня, поэтому, пропустив после такта Т2 один такт - такт ожидания, процессор продолжает работу с выполнения такта Т3. Таким образом при обращении к УВВ процессор автоматически вставляет один такт ожидания между тактами Т2 и Т3. Эта хитрость применена для надежного обращения к УВВ. На рисунке 5 такт ожидания не показан. Заметим только, что в случае появления такта ожидания сигнал DBIN автоматически расширяется до 800 нсек.
---------- Post added at 15:30 ---------- Previous post was at 15:26 ----------
кстати, могу выполнить любые ваши тесты :)
эт батник, компилит ваш тест и сразу пишет на диск для эмулятора :)Код:tasm -b -85 vst.asm @copy vst.obj A.COM @xkorvet d disk.kdi A.COM >nul @xkorvet a disk.kdi A.COM >nul
esl, если я правильно понимаю, "ширина" активной области изображения корвета 51,2 мкс, а большинство ТВ отображают максимум примерно 48 мкс. Старые ТВ и мониторы имели регулировки развертки, которыми (почти всегда) можно было сжать изображение. Была (есть) проблема с обрезанием краев изображения корвета? Как было на старых мониторах, есть ли опыт подключения к новым ТВ (у которых нужных регулировок, как правило, нет)?
Сам я сидел за реальным корветом буквально несколько минут, про края изображения ничего не помню.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)