реклама на сайте
подробности

 
 
> Алгоритм CRC-32
maksya
сообщение Jan 25 2005, 17:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-08-04
Из: Ленинград
Пользователь №: 562



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

Суть формирования контрольной суммы понятна - деление входной посылки на фиксированный полином, остаткаток от деления и есть CRC. Непонятно отчего возникают различия. Например, при использовании табличного метода подсчета CRC, непонятно как влияет начальное значение, заносимое в регистр.

Единственный толковый источник, обнаруженный мной - это "Элементарное руководство по CRC алгоритмам обнаружения ошибок" Ross N. Williams (в переводе на русский). Файл на всякий случай прикладываю к сообщению, вдруг кому пригодиться. Но там рассматриваются общие вопросы. Мне же необходимо выработать точный алгоритм. И реализовать его на VHDL.

Если кто в этой теме разбирается - просьба откликнуться.
Прикрепленные файлы
Прикрепленный файл  crcguide.pdf ( 199.59 килобайт ) Кол-во скачиваний: 472
 


--------------------
Лень - это не врожденное чувство русского человека, а средство борьбы с неуемной, но бестолковой энергией начальника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Z0Rk
сообщение Apr 7 2005, 19:19
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 3-03-05
Пользователь №: 3 055



Дабы не начинать новый топик, позвольте мне задать следующий вопрос...
Как формировать образующие полиномы для алгоритма CRC-32?
ИМХО каждый из полиномов оптимизирован для обнаружения определенной совокупности ошибок (одиночных, двойных, пакетных) и таким образом ориентирован на определнный канал передачи данных или систему хранения информации.
Также встает вопрос оценки вероятности ошибки... как её оценивать?
В известной литературе есть ссылки на источники, но заполучить их не удается sad.gif (Tanenbaum "Computer Networks").
Если есть возможность, поделитесь информацией на данный счет.


--------------------
Victoria Concordia Crescit
Go to the top of the page
 
+Quote Post
Fast
сообщение Apr 8 2005, 10:15
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



Цитата(Z0Rk @ Apr 7 2005, 22:19)
Как формировать образующие полиномы для алгоритма CRC-32?
ИМХО каждый из полиномов оптимизирован для обнаружения определенной совокупности ошибок (одиночных, двойных, пакетных) и таким образом ориентирован на определнный канал передачи данных или систему хранения информации.
Также встает вопрос оценки вероятности ошибки... как её оценивать?
*

На память, могу ошибаться: для формирования полиномов используют разложение (XстепN - 1) в расширеном поле GF(2степ32). Вариантов получается много. Лит-ру сказать не могу, надо искать что-то вроде полей Галуа.
Для систематических блоковых кодов, образованных добавлением CRC-32 к инф.части, строится весовой спектр и рассчитывается вероятность необнаруженной ошибки (в формулу входят весовые компоненты. начиная с 32-й). Вероятность ошибки декодирования для них не считают, т.к. CRC-32 используется в системах ARQ (переспроса). Искать нужно теорему Мак-Вильямс о дуальности весового спектра расстояний для линейных блоковых кодов.
Для всех полиномов весовой спектр разный, в зависимости от его формы существует различная вероятность необнаруженной ошибки (как характеристики кода!) для данной длины кода. Для CRC-32 обнаруживаются все ошибки кратности (32-1), далее с какой-то вероятностью ошибки большей кратности. И чем больше смещен спектр в область "тяжелых" составляющих (т.е. большего веса), тем меньше вероятность необнаруженной ошибки для более "легких" составляющих. Вкратце так.

Исправляющая способность 3-4 бита, т.к. мин. рассояние для кодовых слов =8 (определяется только степенью полинома), поэтому для исправления CRC-32 не используют, только для обнаружения. Исправление осущ. за счет переспроса по каналу обратной связи.
см. Теория кодов, исправляющих ошибки
Задачи очень ресурсоемкие, давно уже решены. Все просто ислользуют CRC-32 из рекомендованного перечня с хор. спектр. хар-ми.

Для оценки вероятности ошибки в канале связи(КС) используется формула, в кот. входят
- закон распр. ошибок в КС
- С/Ш
- составляющие весового спектра используемого кода. Вообще-то, обычно используются аппрокс. формулы для блоковых кодов с верхней и нижей границами для вероятности ошибки, чтоб не мучиться. Года 2-3 назад видел статью в ППИ (проблемы передачи информации) про границу Блиновского, да вообще, тут много всего.. Лит-ру поищу, потом кину.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- maksya   Алгоритм CRC-32   Jan 25 2005, 17:16
- - makc   Думаю это поможет http://www.easics.be/webtools/cr...   Jan 25 2005, 17:30
|- - maksya   Цитата(makc @ Jan 25 2005, 20:30)Думаю это по...   Jan 26 2005, 10:06
- - jojo   Кое-что положил в /upload/CODE/crclib_toolbox   Jan 25 2005, 18:52
- - aal   Вот кусочек для CRC 16. Может аналогично и CRC 32 ...   Jan 26 2005, 03:56
- - Esquire   ALL ЦитатаМне же необходимо выработать точный алг...   Jan 26 2005, 08:35
- - makc   Идея проста до гениальности - берется модель сдвиг...   Jan 26 2005, 11:46
- - aal   2 Esquire При схемном вводе этот алгоритм можно р...   Jan 26 2005, 12:10
- - Esquire   aal Все зависит от конкретных требований проекта: ...   Jan 26 2005, 17:40
|- - CeDeX   Тут у меня файлец валялся на винте. Мож кому сгоди...   Feb 9 2005, 04:32
- - derun   «A Painless Guide to CRC Error Detection Algorithm...   Feb 9 2005, 07:50
- - basileus   Может, моё изложение на пальцах тебе поможет реали...   Feb 18 2005, 15:53
- - Esquire   basileus Есть ли литература, в которой описан указ...   Feb 19 2005, 09:52
|- - evgeniy_s   Цитата(Esquire @ Feb 19 2005, 12:52) Есть...   Dec 4 2005, 14:03
- - Porychik Kize   Посмотри на Xilinx.com - XAPP209. К нему прилагает...   Mar 16 2005, 14:21
- - Z0Rk   То есть прямая задачка формирования полинома по за...   Apr 8 2005, 14:59
|- - Fast   Цитата(Z0Rk @ Apr 8 2005, 17:59)То есть пряма...   Apr 11 2005, 07:16
- - Anton_org   Вот замечательная программка, правда под Сол...   Apr 15 2005, 09:29
- - basileus   Совершенно верно- поля Галуа. Я даже где-то (уж ...   May 17 2005, 10:45
- - Z0Rk   2basileus Каких полиномов? формирующих для CRC32?...   May 17 2005, 16:16


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 14:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016