Перейти к содержанию
    

вычисление crc14 при помощи железа в stm32

Нет, блок вычисления CRC есть, но полином там Ethernet-овский фиксирован. В линейке F3 можно задать размерность полинома (8-16-32).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. основная идея какбы заключается в том, чтобы скармливать контроллеру по 14 бит данных, и результат взять те же 14 бит

если контроллер сдвигает влево, то скармливать данные как младшие биты слова, если вправо - как старшие

полином какой есть - не важно

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как зачем, аппаратная реализация должна побыстрее работать

Я не об этом. Вы уже сказали, что CRC14 вам не принципиально. Тогда какие цели ставите? Что-нибудь (не так важно, что именно) посчитать аппаратно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы уже сказали, что CRC14 вам не принципиально.

 

не правда, вроде по-русски написано

 

полином какой есть - не важно

 

Тогда какие цели ставите?

 

crc 14 бит

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посчитайте CRC16 и возьмите от него 14 любых бит. В ваших терминах это то что вам нужно.

 

Если у вас входные данные 14 битные, то добейте их двумя нулями до 16 бит. Ибо CRC16 - это не входной размер а как бы величина буфера участвующего в расчете, так CRC16 можно и для 1 байта рассчитать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. основная идея какбы заключается в том, чтобы скармливать контроллеру по 14 бит данных, и результат взять те же 14 бит

если контроллер сдвигает влево, то скармливать данные как младшие биты слова, если вправо - как старшие

полином какой есть - не важно

Между разрядностью полинома и разрядностью данных нет никакой связи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Между разрядностью полинома и разрядностью данных нет никакой связи.

CRC тем хорош, что если рассчитать вместе буфер с данными и значением CRC этих данных, то получим 0.

По сути это остаток от деления длинного числа полученного последовательной записью всех байтов на

полином. Если полином 16-бит (реально 16+1), то остаток 16 бит. И получается, что 16 битную CRC нельзя добавить

в конец массива 14 битных данных для получения CRC всего блока (данные + CRC) равной 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И получается, что 16 битную CRC нельзя добавить

в конец массива 14 битных данных для получения CRC всего блока (данные + CRC) равной 0.

Вообще-то деление полиномов можно делать хоть побитно, поэтому добавить можно. Другое дело, что автор хочет от 32-битной CRC взять только 14 бит, а в этом случае свойство нулевого остатка потеряется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CRC тем хорош, что если рассчитать вместе буфер с данными и значением CRC этих данных, то получим 0.

По сути это остаток от деления длинного числа полученного последовательной записью всех байтов на

полином. Если полином 16-бит (реально 16+1), то остаток 16 бит. И получается, что 16 битную CRC нельзя добавить

в конец массива 14 битных данных для получения CRC всего блока (данные + CRC) равной 0.

 

это для меня всегда было маленьким чудом, и что-то мне подсказывает что в общем случае это не так. Это для определенного вида полиномов вроде бы верно. Или я где то заблуждаюсь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это для меня всегда было маленьким чудом, и что-то мне подсказывает что в общем случае это не так. Это для определенного вида полиномов вроде бы верно. Или я где то заблуждаюсь?

В общем случае верно всегда, но при неудачном выборе полинома CRC слабо зависит от данных, т.е. не реагирует на изменение битов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почему у меня интересно не получилось для модбаса... надо будет почитать...

Должен получаться не ноль, а некая константа, которая не зависит от данных (часто - именно ноль). Видимо, зависит от вариаций алгоритма CRC: начальное значение бывает разное, биты инвертируют и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...