Jump to content
    

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

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

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

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

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

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

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

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

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

Edited by sd1074

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Данная тулза генерит непосредственно 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]

 

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

Edited by vladv

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...