
Сообщение от
Alex_K
А вот это уже недоработка. Да и после запуска по команде G на ДВК в PSW ложится 0340.
Не, я вижу что все законно в cmd_g:
Код:
sw RPSWL,RPSWL ;
lcf NZVC,RPSWL ;
Вот команда SW - она вычитает 16-битную пару, тут сама из себя. То есть PSW=0. Это у меня комментарий дебильный и ошибочный "disable interrupts". А изначально люди намерено поставили в обработчике "G" PSW=0 и разрешили прерывания. Ну мы можем добавить сброс запроса таймера по INIT, но это не совсем в тему, оно же будет сбрасываться при нормальном исполнении инструкции RESET - и будем терять прерывания от таймера. Вот в обрабочик cmd_g можно сброс запроса таймера и добавить. Но будет ненулевая вероятность что после сброса и до запрета прерываний инструкцией PDP-11 все-таки таймер прилетит, то есть - сброс в cmd_g - не гарантия.
- - - Добавлено - - -

Сообщение от
forth32
Ситуация изменилась. Теперь процессор влетает в двойной таймаут шины ровно 1 раз
Возможно после сброса была генерация одного фронта, и оно залипло на детекторе фронта (сделанного согласно оригинального М2) внутри lsi_wb:
Код:
//
// Periodic timer interrupt edge detector
//
always @(posedge vm_clk_p)
begin
evnt_ed <= vm_evnt;
if (mc_clr_evnt | vm_dclo)
evnt_rq <= 1'b0;
else
if (vm_evnt & ~evnt_ed)
evnt_rq <= 1'b1;
end
А щелкнули переключателем выключения таймера когда? Уже после выпадения в ODT?