Важная информация

User Tag List

Страница 1 из 24 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 231

Тема: Эмуляция 1801ВП1-128 в ПЛИС

  1. #1
    Activist Аватар для Woland
    Регистрация
    26.10.2011
    Адрес
    Москва
    Сообщений
    239
    Благодарностей: 304
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Эмуляция 1801ВП1-128 в ПЛИС

    В процессе решения обозначенной задачи обнаружили, что внутри ВП1-128 есть некий алгоритм определения готовности записи, о котором ничего не сказано в скудных доках на эту микросхему. Были предположения, что этот алгоритм содран с контроллера MX, но изучение его схемы не дало ответа на вопросы.
    Алгоритм приблизительно ясен для форматирования (т.к. бит готовности выставляется строго одновременно с битом наличия индекса), но для записи есть только предположения, а хотелось бы конкретики. Может у кого-то есть какие-то данные от первоисточника?

    UPDATE 14.10.2013: Благодаря уважаемым Vslav и BarsMonster был вскрыт и документально воспроизведен кристалл БМК КР1801ВП1-128.

    К сожалению, пока это не помогло пролить свет на оставшуюся проблему в работе FPGA-аналога данного чипа (нечастые зависания при чтении), но будем надеяться, что скоро это уже случится.

    UPDATE 01.11.2014: Итак, для любознательных прикладываю исходники прошивки cpld для SMK-512. Скорее всего окончательная версия.
    Вложения Вложения
    Последний раз редактировалось Woland; 01.11.2014 в 12:31.

  2. Этот пользователь поблагодарил Woland за это полезное сообщение:
    perestoronin (07.01.2013)

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

  4. #2
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,624
    Благодарностей: 2755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Woland Посмотреть сообщение
    хотелось бы конкретики
    Можно подключить один канал логического анализатора к сигналу готовности, а другие два к Index и Rdata - и узнать точный момент, когда ВП1-128 выдаёт готовность записи.

  5. #3
    Activist Аватар для Woland
    Регистрация
    26.10.2011
    Адрес
    Москва
    Сообщений
    239
    Благодарностей: 304
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Можно подключить один канал логического анализатора к сигналу готовности, а другие два к Index и Rdata - и узнать точный момент, когда ВП1-128 выдаёт готовность записи.
    так как же "точный момент" узнать, если готовность - это бит в слове состояния, и он как сигнал наружу не выходит ?
    Но даже если считывать это слово, то для записи мы все равно ничего не поймем, т.к. готовность будет сразу как слово данных записалось.

    Бит устанавливается в слове состояния по адресу 177130 (для БК), когда сдвиговый регистр опустел и готов к приему нового слова. Но данные в сдвиговый регистр пишутся не напрямую, а с буферного регистра данных, который пишется с шины, поэтому там "точные" моменты ловить абсолютно бесполезно при наличии такой двойной буферизации, тем более, что нужен не сам бит готовности, а тот сигнал, который разрешает установку готовности, а он никак сам по себе не доступен снаружи микросхемы.
    Для эксперимента пока сделали, чтобы бит готовности ставился по факту опустения регистра, но так не хочет работать с дисководом IBM.
    В спецификации ВП1-128 тоже написано, что по факту опустения регистра. Только регистру не дают опустошаться, пока диск не начнет вертеться, чего в доке нет в помине. Сейчас пытаемся как-то вычислись точный алгоритм определения микросхемой 1801ВП1-128 факта вращения мотора.
    Последний раз редактировалось Woland; 29.11.2012 в 14:28.

  6. #4
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,624
    Благодарностей: 2755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Woland Посмотреть сообщение
    Только регистру не дают опустошаться, пока диск не начнет вертеться, чего в доке нет в помине. Сейчас пытаемся как-то вычислись точный алгоритм определения микросхемой 1801ВП1-128 факта вращения мотора.
    Насколько я понимаю - у ВП1-128 есть блок синхронизации, который непрерывно анализирует сигнал с диска. Нормальная скорость вращения детектируется по нормальному потоку синхроимпульсов. Сигнал маркера детектируется по пропуску синхроимпульсов в коде А1 (10100001).

    Алгоритм работы ВП1-128 при записи (на мой взгляд) следующий:

    1. Ожидание маркера.
    2. Чтение байта.
    3. Чтение CRC.
    4. CRC Good ? Нет -> пункт 1. Да -> Байт == номер сектора.
    5. Это нужный сектор ? Нет -> пункт 1.
    6. Ожидание маркера.
    7. Запись 512 байт.
    8. Запись CRC.

  7. #5
    Activist Аватар для Woland
    Регистрация
    26.10.2011
    Адрес
    Москва
    Сообщений
    239
    Благодарностей: 304
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Откуда же возьмется "нормальный поток синхроимпульсов", если например диск девственно чист и не форматирован ?

  8. #6
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,624
    Благодарностей: 2755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Woland Посмотреть сообщение
    Откуда же возьмется "нормальный поток синхроимпульсов", если например диск девственно чист и не форматирован ?
    Если диск чист, сигнал индекса не анализируется и привод не имеет сигнала "готовность" - определить момент готовности записи невозможно.

    Если привод имеет сигнал "готовность" - определить готовность записи можно только по этому сигналу.

  9. #7
    Activist Аватар для Woland
    Регистрация
    26.10.2011
    Адрес
    Москва
    Сообщений
    239
    Благодарностей: 304
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    При таком раскладе чистый диск никогда не начнет форматироваться, все будет ждать готовность для записи и так и не дождется.

  10. #8
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,624
    Благодарностей: 2755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Woland Посмотреть сообщение
    При таком раскладе чистый диск никогда не начнет форматироваться, все будет ждать готовность для записи и так и не дождется.
    Значит, анализируется и синхросмесь, и индекс, а бит готовности устанавливается по ИЛИ этих двух признаков.
    Тогда у неразмеченного диска сигнал готовности появится только после первого индекса, а у размеченного - сразу после синхронизации с сигналом RDATA.

    .........

    Я тоже собираюсь сэмулировать ВП1-128, поэтому у меня есть несколько вопросов:

    1. Как часто ВП1-128 может писать маркер ( в каждом втором байте ? ).

    2. В каком порядке пишутся байты слова ( сначала старший, потом младший ? ).

    3. Формат регистра состояния:

    Код:
         Формат РС по записи :
    
      ------------------------------------------------------------
      I15I14I13I12I11I 10I  9I  8I  7I  6I  5I  4I  3I  2I  1I  0I
      ------------------------------------------------------------
      I**I**I**I**I**IRezIWm IGdrI StIDirI HsIMswIDs3IDs2IDs1IDs0I
      ------------------------------------------------------------
    
         Значение разрядов РС :
             0-й - выбор накопителя 0;
             1-й - выбор накопителя 1;
             2-й - выбор накопителя 2;
             3-й - выбор накопителя 3;
             4-й - включ. э.д.;
             5-й - выбор поверхности;
             6-й - направление перемещения;
             7-й - шаг;
             8-й - признак 'начало чтения';
             9-й - признак 'запись маркера';
            10-й - резервный;
            Разряды 11-15 не используются.
    
         Формат РС по чтению:
    
      -------------------------------------------------------
      I 15I 14I13I12I11I10I 9I 8I  7I 6I 5I 4I 3I  2I  1I  0I
      -------------------------------------------------------
      IIndICrcI**I**I**I**I**I**I TrI**I**I**I**IWprIRdyITr0I
      -------------------------------------------------------
    
         Значение разрядов РС :
             0-й - признак '0-я дорожка';
             1-й - признак 'накопитель готов к работе'(отсутствует 
                   на 6022);
             2-й - запрет записи;
             7-й - признак 'готовность';
            14-й - при чтении - признак 'прочлось без ошибок', при 
                   записи - признак 'записывается контр. код на 
                   диск';
             15-й - индекс накопителя.
             Разряды 3-6 и 8-13 не используются.
    3.1. В каком бите читается маркер ?

    3.2. Какой бит переключает, а какой запускает чтение/запись ?

  11. Этот пользователь поблагодарил Patron за это полезное сообщение:
    perestoronin (07.12.2012)

  12. #9
    Activist Аватар для Woland
    Регистрация
    26.10.2011
    Адрес
    Москва
    Сообщений
    239
    Благодарностей: 304
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Битов для переключения режима чтения-записи там нет, в отличие от контроллера MX. Там вообще никаких специальных битов вроде нет сверх того, что в официальной доке, просто происходит хитрая манипуляция тем, что есть.
    Переход в режим записи происходит автоматом, когда пишутся данные в регистр 177132, когда не пишутся - записывает CRC и переходит в режим чтения, или если при записи считать регистр 177132, то выходит из режима записи без записи CRC.
    Записывается сначала младший байт, потом старший. С битами - наоборот, сначала старший.

  13. #10
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,624
    Благодарностей: 2755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Woland Посмотреть сообщение
    Там вообще никаких специальных битов вроде нет сверх того, что в официальной доке
    А как определить, что прочитан маркер?

    Цитата Сообщение от Woland Посмотреть сообщение
    Записывается сначала младший байт, потом старший.
    Из описания
    Код:
    В режиме 'запись' 7-й разряд РС (TR) устанавливается в единицу
    после того, как младший байт РДЗ переписался в сдвиговый регистр.
    можно заключить, что в сдвиговый регистр переписывается сначала старший байт, а потом младший - это ошибка описания ?
    Последний раз редактировалось Patron; 29.11.2012 в 18:04.

Страница 1 из 24 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. ЮТ-88: Реализация на ПЛИС (DE1)
    от Santechnik в разделе ЮТ-88
    Ответов: 59
    Последнее: 31.01.2016, 23:41
  2. Вопрос по ПЛИС
    от Zloy в разделе Unsorted
    Ответов: 23
    Последнее: 17.10.2015, 17:12
  3. Аксель на ПЛИС
    от iceoflame в разделе Amiga
    Ответов: 163
    Последнее: 25.03.2012, 13:51
  4. Список версий 1801ВП1 и 1801РЕ2
    от CodeMaster в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 28.02.2012, 21:39
  5. 1801вп1-128
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 0
    Последнее: 29.05.2010, 09:24

Ваши права

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