User Tag List

Показано с 1 по 10 из 485

Тема: FPGA-реплика ЭВМ ДВК-3 и платы МС1201

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    2$: si i5 ; disable interrupts
    Цитата Сообщение от Vslav Посмотреть сообщение
    Почему пытается - непонятно, прерывания должны быть запрещены.
    А почему запрет прерываний устанавливается в 5-м разряде? Вроде в LSI-11 5-й и 6-й разряды не используются, запрет прерываний устанавливается в 7-м разряде.
    Цитата Сообщение от forth32 Посмотреть сообщение
    resop: jsr sinit ; performs RESET
    Сигнал RESET по идее должен сбросить и внутренний триггер сетевого таймера в процессоре.

    forth32, а какие у вас в первичном загрузчике значения ячеек 0100 и 0102. В стандартном драйвере там нули, т.е. будет перезапуск первичного загрузчика. Также в стандартном драйвере после команды JMP исполняется команда установки указателя стека MOV #10000, SP.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Сигнал RESET по идее должен сбросить и внутренний триггер сетевого таймера в процессоре.
    В M2 не совсем так, триггер который детектирует фронт EVNT - он внешний по отношению к MCP-1600, обычный TM2. И сбрасывается выделенным сигналом CLR_EVNT, который генерируется микропрограммно. После сброса CLR_EVNT генерируется, а по команде G - нет. И сам MCP-1600 уже реагирует на уровень с выхода TM2 - есть высокий - переходим на обработку таймера.

    - - - Добавлено - - -

    Ну что, я вас поздравляю, похоже, мы нашли багу в MicROM от DEC .
    Инструкция si в обработчике cmd_g устанавливает флажок I5, что соответствует разрешению прерываний внутри MCP-1600.
    Этот флажок поступает на матрицу PLM, и если он активен и есть запрос прерывания, то вместо обработки инструкции микропрограмма аппаратно (матрица выдает нужный LC) перебрасывается на обработчик. Итого - в слове PSW PDP-11 флажок-то может быть любой, но если I5 установлен - то оно идет на прерывание. Если фронт от таймера уже был, то и запрос активен. И пока загрузка PSW командой PDP-11 не произойдет и I5 при ее обработке не сбросится - прерывания по факту будут разрешены. Невзирая на PSW PDP-11 . При нормальном старте, не из ODT этой инструкции si нет и все работает. А M4 - то отдельно надо смотреть.

    Update: а это, кстати, может быть и не ошибка, а законный и документированный старт из ODT с разрешенными прерываниями.
    Последний раз редактировалось Vslav; 04.02.2021 в 00:42.

    Эти 3 пользователя(ей) поблагодарили Vslav за это полезное сообщение:

    Alex_K(04.02.2021), forth32(04.02.2021), Hunta(04.02.2021)

  4. #3

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    После сброса CLR_EVNT генерируется, а по команде G - нет.
    А вот это уже недоработка. Да и после запуска по команде G на ДВК в PSW ложится 0340.

  5. #4

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 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?
    Последний раз редактировалось Vslav; 04.02.2021 в 00:53.

    Эти 2 пользователя(ей) поблагодарили Vslav за это полезное сообщение:

    forth32(04.02.2021), hobot(04.02.2021)

  6. #5

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Возможно после сброса была генерация одного фронта, и оно залипло на детекторе фронта (сделанного согласно оригинального М2) внутри lsi_wb:
    Все оказалось именно так. У меня же после старта схемы таймер по умолчанию включен, поскольку
    Код:
    initial timer_on=1;
    А потом, уже при работающем ODT, я его отключил кнопкой. Но триггер успел захватить запрос прерывания. Пересобрал сейчас схему с timer_on=0 - все, проблема ушла, загрузчик запускается сразу.
    Где-то в книжках по электронике-60 мне встречалась фраза, что машину желательно запускать с отключенным таймером, а включать его уже после загрузки ОС. Теперь стало понятно, откуда оно растет. Видимо, зря я повесил выключатель таймера на кнопку - надо было его на переключатель сажать, как в оригинале. Но переключатели на плате - они мелкие и неудобные, кнопкой пользоваться приятнее.

    Эти 2 пользователя(ей) поблагодарили forth32 за это полезное сообщение:

    hobot(04.02.2021), Vslav(04.02.2021)

  7. #6

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    Но переключатели на плате - они мелкие и неудобные, кнопкой пользоваться приятнее.
    А сделать кнопку и переключатель одновременно? Если выключатель выключен - кнопка не работает, прерываний от таймера нет. А если переключатель включен, то разрешение прерываний управляется кнопкой.

    - - - Добавлено - - -

    Цитата Сообщение от forth32 Посмотреть сообщение
    .
    Где-то в книжках по электронике-60 мне встречалась фраза, что машину желательно запускать с отключенным таймером, а включать его уже после загрузки ОС.
    Станочники грузятся, в-основном, с перфоленты, у команды "L" такой проблемы нет. Возможно поэтому факт разрешенных прерываний по "G" малоизвестен.

  8. #7

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    А сделать кнопку и переключатель одновременно?
    Можно и так, но только ситуацию это не спасет. При включении платы переключатель должен быть обязательно выключен, чтобы процессор не защелкнул прерывание. Соответственно, чтобы в RT-11 заработали часы, переключатель надо будет включить. Смысл кнопки пропадает полностью.
    Правильнее было бы сделать так, чтобы переключатель в момент включения платы задавал начальное состояние таймера:
    Код:
    initial timer_on=sw[4];
    Только работать так не будет, к сожалению.

    Я даже не знаю, стоит ли включать плату электроники-60 в проект. Функционально она ничем не лучше МС1201.02, даже хуже, а на ДВКшной плате проблем с таймером нет.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Реплика контроллера НГМД ДВК MY4
    от anasana в разделе ДВК, УКНЦ
    Ответов: 47
    Последнее: 30.06.2023, 19:07
  2. Реплика всего семейства ДВК
    от Daniil Chislov 86 в разделе ДВК, УКНЦ
    Ответов: 21
    Последнее: 13.11.2019, 16:36
  3. Ответов: 6
    Последнее: 30.07.2018, 09:04
  4. Аукцион плат ДВК МС1201.02, НМЛ СМ5300.01 и др.
    от OS в разделе Барахолка (архив)
    Ответов: 45
    Последнее: 19.11.2011, 14:02
  5. Реплика КМД ДВК (MY)
    от KALDYH в разделе ДВК, УКНЦ
    Ответов: 19
    Последнее: 12.11.2009, 15:43

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •