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

CRC комбинационной схемой?

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

Стоит учебная задача, защитить пакет из 15 бит 5ю битами CRC (ну то есть создать соответствующий кодер). Решить надо на VHDL. Насколько я успел понять, 5 этих битов в реальном времени можно вычислить двумя способами (не вдаваясь в подробности):

1) Делить на соответсвующий образующий полином и взять остаток

2) Сделать готовую табличку соответсвия "12битное число" => "5битный CRCкод" и брать результат оттуда

Нашёл на форуме такую полезную ссылочку:

http://www.easics.com/webtools/crctool

Данная тулза генерит непосредственно VHDL-код. Однако тут меня засмущал такой факт... Она по сути просто создаёт комбинационную схемы (причём довольно компактную). Правильно ли я понимаю, что данная комбинационная схема является результатом минимизации таблички, описанной в п.2?

Выходит в связи с тем, что у меня пакет такой короткий, я могу в один такт с минимальнейшими аппаратными затратами осущестить циклическое кодирование?

Изменено пользователем sd1074

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


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

Правильно ли я понимаю, что данная комбинационная схема является результатом минимизации таблички, описанной в п.2?
В общем случае да. Вот тут подробно.

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


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

Данная тулза генерит непосредственно VHDL-код. Однако тут меня засмущал такой факт... Она по сути просто создаёт комбинационную схемы (причём довольно компактную). Правильно ли я понимаю, что данная комбинационная схема является результатом минимизации таблички, описанной в п.2?

Это зависит от того, что подразумевается под словами "результатом минимизации таблички". Если говорить про сам процесс создания такой комбинационной схемы, то никакая табличка там реально используется и не минимизируется. Комбинационная схема строится исходя из свойств генератора CRC (он же LFSR, он же делитель на образующий полином).

 

Лично мне нравится такой способ. На примере 4-х бит CRC 1011 (т.е. при сдвиге старший бит XOR-ится с младшим и следующим за младшим битом) для 8-бит входного слова. Старший разряд везде слева.

 

1. Строим таблицу состояний регистра CRC для 8-ми тактов с начальным состоянием 0001:

0. 0001

1. 0010

2. 0100

3. 1000

4. 0011

5. 0110

6. 1100

7. 1011

 

2. "Транспонируем" эту таблицу так, что номер такта - это номер бита входного слова, а "1" в значении состояния означает в какой бит результата CRC надо этот входной бит по-XOR-ить:

CRC[0] = D[0] ^ D[4] ^ D[7]

CRC[1] = D[1] ^ D[4] ^ D[5] ^ D[7]

CRC[2] = D[2] ^ D[5] ^ D[6]

CRC[3] = D[3] ^ D[6] ^ D[7]

 

Собственно, все.

Изменено пользователем vladv

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


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

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

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

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

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

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

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

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

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

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