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

User Tag List

Страница 12 из 24 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 232

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

  1. #111

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    функция crc16_m16() - это и есть итерация чистой операции mod
    функция crc16_m2 - это функция деления 17-го бита CRC на полином 0x11021. Итеративное полиномиальное деление CRC там не производится.

    ---------- Post added at 16:02 ---------- Previous post was at 15:47 ----------

    Цитата Сообщение от Vslav Посмотреть сообщение
    Аргумент crc содержит остаток от деления предыдущих битов сообщения
    Не содержит.

    После подачи первого бита данных - остаток от деления данных на полином появляется в CRC только на 17-й вызов, поэтому после подачи последнего бита данных - нужно выполнить ещё 16 холостых вызовов. Иначе последний бит данных не будет подвергнут полиномиальному делению.
    Последний раз редактировалось Patron; 15.12.2013 в 16:46.

  2. #112

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    функция crc16_m2 - это функция деления 17-го бита CRC на полином 0x11021. Итеративное полиномиальное деление CRC там не производится.
    Переменная/параметр crc - это текущее значение остатка при делении длинного сообщения. То есть то что у Вас при делении в столбик в новую строчку переносится. Поэтому Ваш добавленный комментарий "деление 17-го бита CRC" некорректен и делится именно сообщение. А значение CRC уже появится в этой переменной когда все что нужно (в том числе финальные нули для умножения *s) будет поделено.

    ---------- Post added at 15:13 ---------- Previous post was at 15:06 ----------

    Цитата Сообщение от Patron Посмотреть сообщение
    Не содержит.
    Содержит содержит

    Математически:
    0x00001 mod 0x11021 = 0x00001
    0x00002 mod 0x11021 = 0x00002
    0x00004 mod 0x11021 = 0x00004
    0x00008 mod 0x11021 = 0x00008
    0x00010 mod 0x11021 = 0x00010
    ....
    0x08000 mod 0x11021 = 0x08000
    0x10000 mod 0x11021 = 0x01021

    Так что функция находит именно полиномиальный mod, а если ее правильно вызывать то можно реализовать алгоритм CRC получить нужное значение суммы CRC. Сумма CRC - это результат работы алгоритма (см. описание в сообщении #110) , а не просто операции mod.

  3. #113

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    делится именно сообщение
    Чтобы делению на полином 16 степени подверглось сообщение - сообщение нужно дополнить 16-ю нулевыми битами.

    Поэтому, итеративное полиномиальное деление сообщения выполняет программа в целом ( когда вслед за байтами сообщения посылает в функцию два нулевых байта ).

    ---------- Post added at 17:07 ---------- Previous post was at 16:47 ----------

    Цитата Сообщение от Vslav Посмотреть сообщение
    0x00001 mod 0x11021 = 0x00001
    А чему равен остаток итеративного полиномиального деления "в столбик" сообщения 0xA1 на полином 0x11021 ?
    Последний раз редактировалось Patron; 15.12.2013 в 18:10.

  4. #114

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    А чему равен остаток итеративного полиномиального деления "в столбик" сообщения 0xA1 на полином 0x11021 ?
    Именно остаток от деления равен 0xA1. Остаток для деления любого числа меньшего 0x10000 (по факту - меньше старшей степени полинома-делителя) равен самому числу. Так же как в десятичной арифметике. Когда мы в третьем классе искали 12 mod 5 то мы же не умножали предварительно 12 на 4 либо на что-то еще.
    А чтобы найти CRC-16 для сообщения 0xA1 надо фактически найти остаток от деления числа 0xA10000.

  5. #115

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Именно остаток от деления равен 0xA1. А чтобы найти CRC-16 для сообщения 0xA1 надо фактически найти остаток от деления числа 0xA10000.
    Теперь понятно - добавление нулевых битов в конце сообщения нужно только для того, чтобы влияние каждого бита сообщения на результат деления не зависело от количества последующих битов в сообщении.
    Последний раз редактировалось Patron; 15.12.2013 в 18:32.

  6. #116

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё вопросы по работе 1801ВП1-128.

    1. Когда при записи пропущено требование - на диск пишется контрольная сумма. Но что 1801ВП1-128 делает потом:

    1.1. Переходит в режим чтения.
    1.2. Переходит в режим поиска маркера.


    2. Что произойдёт, если при получении требования в режиме записи - выполнить чтение регистра данных вместо записи:

    2.1. Требование "удовлетворится" и на диск будет записано старое содержимое регистра данных.
    2.2. Требование не "удовлетворится" и на диск будет записана контрольная сумма.
    2.3. 1801ВП1-128 перейдёт в режим чтения без записи контрольной суммы.
    Последний раз редактировалось Patron; 21.12.2013 в 21:54.

  7. #117

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Ещё вопросы по работе 1801ВП1-128.

    1. Когда при записи пропущено требование - на диск пишется контрольная сумма. Но что 1801ВП1-128 делает потом:

    1.1. Переходит в режим чтения.
    1.2. Переходит в режим поиска маркера.
    Остается в режиме записи, это видно по подпрограммам форматирования. Свежеотформатированную дорожку можно считать целиком, начиная с маркера самого первого заголовка. Если бы был переход в режим чтения (поиск маркера является его подвидом), то были бы пробелы, и при чтении дорожки целиком происходила бы рассинхронизация после чтения байтов CRC. А вот если требование не удовлетворять, то что будет далее записываться я не знаю, об этом надо спросить у Vslav, он разбирал работу контроллера.

    Цитата Сообщение от Patron Посмотреть сообщение
    2. Что произойдёт, если при получении требования в режиме записи - выполнить чтение регистра данных вместо записи:

    2.1. Требование "удовлетворится" и на диск будет записано старое содержимое регистра данных.
    2.2. Требование не "удовлетворится" и на диск будет записана контрольная сумма.
    2.3. 1801ВП1-128 перейдёт в режим чтения без записи контрольной суммы.
    То что перейдет в режим чтения это точно. Вряд ли запишется CRC, т.к. требование возникает в момент копирования последнего байта из регистра записи в сдвиговый регистр. Весьма вероятно может не записать и последний байт из сдвигового регистра, но тут надо анализировать схему.
    Во всяком случае после начала записи CRC подпрограмма записи записывает в регистр записи 0x4E4E, и после ждет появление бита готовности, а потом переводит контроллер в режим чтения, прочитав регистр 177132.

  8. #118

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Бит 14 CSR сбрасывается по INIT и обновляется при пропуске требования. А сбрасывается ли этот бит при выполнении требования или когда-то ещё ?

  9. #119

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    И при каждом пропущенном требовании пишет на диск новую контрольную сумму ?
    Я уже выше сказал, что не знаю, таких опытов не делал. Думая Vslav ответит, он же разбирал работу схемы и даже моделировал ее, может быть он об этом уже и говорил, надо читать весь топик.

    ---------- Post added at 21:57 ---------- Previous post was at 21:52 ----------

    Полезной информацией Vslav поделился здесь.

  10. #120

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Весьма вероятно может не записать и последний байт из сдвигового регистра
    Это вряд ли - байты там различаются на старшие и младшие, поэтому нет смысла пропускать запись старшего байта - ведь начинать чтение надо всегда с младшего байта, а очередь младшего байта наступает после старшего.
    Последний раз редактировалось Patron; 21.12.2013 в 22:28.

Страница 12 из 24 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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