С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я, вообще говоря, не помню, совпадает ли этот тест в моем Векторе на 100%. Он очень въедливый![]()
Больше игр нет
svofski,
проверьте тесты у себя.
у меня получается так:
если запустить tst8253 сразу после запуска эмулятора, то значения похожи на настоящие, только сдвинуты.
Если потом запустить како-то другой тест из набора, например, i8253, а потом опять tst8253, то значения будут странные, состоящие только из 88, 48 и еще пары на 8 заканчивающиеся. Такое впечатление что ВИ53 не перепрограммируется заново.
Почитал я доки на 8080... посмотрел графики... схемы Вектора...
Не нашел ничего говорящего о том, что процессор так долго не реагирует на INT...
"28 процессорных тактов" - это 28 импульсов тактовой частоты 3МГц ???
И "держится активным 191 такт" - это входной сигнал INT остаётся в высоком уровне 191 импутьс частоты 3МГц ???
Судя по докам, входной INT опрашивается в 3-ем такте (выполнения команд) и уже через 1 такт делает активным INTE - запрет прерывания, который в схеме Вектора через триггер отключает водной INT...
В общем ни найдя ни в доках, ни в схеме ничего "криминального", вздохнул, расчистил завал на столе и собрал разобранный Вектор (02ой). Подключил логгер (25МГц) к выводам INT, INTE, F1, F2 (процессора, тактовые - до инверторов в низковольтовой части), и к D89.5 - где в схеме подписано "F50Гц"...
Результат такой, INTE появляется через 1.25 мкс после F50Гц. Т.е. через 4 такта (импульса частоты 3МГц) процессор уже блокирует (отключает через триггер) входной INT.
Т.е. я пока не могу понять необходимость указанных задержек 28 и 191 такт...
Saar, мне сейчас несподручно все подключать. Может быть ivagor сможет быстрее проверить, если у него найдется минутка.
- - - Добавлено - - -
KTSerg, спасибо, это очень интересно. Возможно это связано с какими-то особенностями моего генератора развертки. А сколько времени удерживается INT, если INTE не появляется?
Больше игр нет
вот что у меня с Exolon:
https://mega.nz/#!AdBHFATb!CahoIsUS9...vS5nkbNt-tvsvM
может это и не таймер? такое впечатление что переключают плоскости.
Воообще, схема формирования INT у Вектора довольно простая. Я посмотрел на схему и написал полный аналог:
Retrace у меня длится 10 строк. А длительность INT регулируется сигналом INTE.Код:reg INT = 0; always @(posedge retrace, negedge cpu_inte) begin if(!cpu_inte) INT <= 0; else INT <= 1; end
Последний раз редактировалось Saar; 23.02.2016 в 04:13.
Да, у меня то-же эта мысль появилась, что у тебя задержки просто компенсируют разницу в формировании длительности КСИ.
Про INT уже ответили. Он поступает на процессор с триггера. Фронт "F50Гц" перебрасывает триггер, и на процессор поступает INT. Появление INTE на выходе проца - сбрасывает триггер, и INT с проца снимается, до следующего фронта "F50Гц".
Кстати, INTE - это аппаратный сигнал, но и программные DI/EI его то-же формируют, на сколько я понял.
Последний раз редактировалось KTSerg; 23.02.2016 в 06:48.
Возможно так оно и есть, я не претендую на знание английского, что-бы быстро уточнить этот вопрос в дата-шитах, и сложным программированием на Векторе занимался 20лет назад и не помню деталей (подробностей работы с прерываниями).
Но отключение INTE (переход в 0) через 4 такта после прихода фронта INT - проявление аппаратной зависимости этих сигналов, на мой взгляд. Поскольку 4 такта - это одна команда, и она навряд-ли будет DI, с моей точки зрения.
Хотя я могу путать с другими процами, у которых внешнее прерывание формирует аппаратный запрет прерываний, и по окончании обработки прерывания его приходится всегда разрешать, иначе следующего не наступит.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)