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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> коды, исправляющие ошибки
mluk
сообщение Jun 7 2010, 15:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721



Всем здравствуйте.
Есть блок данных размером 8 байт. Кодовое слово состоит из 12 байт. Данные кодируются при помощи кода Рида-Соломона, реализованного в IP Core пакета Xilinx ISE. Этот кодер исправляет 2 байта из 12. Хотелось бы реализовать код с большей корректирующей способностью при той же длине кодового слова. К примеру код исправляющий те же 16 бит, но размазанных по всему пакету. Подскажите, кто знает.
Go to the top of the page
 
+Quote Post
Methane
сообщение Jun 7 2010, 16:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(mluk @ Jun 7 2010, 18:04) *
Всем здравствуйте.
Есть блок данных размером 8 байт. Кодовое слово состоит из 12 байт. Данные кодируются при помощи кода Рида-Соломона, реализованного в IP Core пакета Xilinx ISE. Этот кодер исправляет 2 байта из 12. Хотелось бы реализовать код с большей корректирующей способностью при той же длине кодового слова. К примеру код исправляющий те же 16 бит, но размазанных по всему пакету. Подскажите, кто знает.

Перетасовать биты шоли?
Go to the top of the page
 
+Quote Post
mluk
сообщение Jun 7 2010, 16:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721



нет, не перетасовать. Код исправляет 2 байта из 12 при 8 информационных. Есть ли возможность его улучшить. Например, исправляя 16 бит из 96 при 64 информационных.
Суть в том, что в первом случае алфавит кодирования состоит из 2^8 символов, есть ли возможность его уменьшить.
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 7 2010, 16:42
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(mluk @ Jun 7 2010, 11:26) *
нет, не перетасовать. Код исправляет 2 байта из 12 при 8 информационных. Есть ли возможность его улучшить. Например, исправляя 16 бит из 96 при 64 информационных.

перемежение и будут те же яйца только в профиль.

Цитата
Суть в том, что в первом случае алфавит кодирования состоит из 2^8 символов, есть ли возможность его уменьшить.

при генерации корки указать размер символа меньше байта ?


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 7 2010, 19:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Таких мощных как вы хотите нету или они неизвестны.

БЧХ(127,64) исправляет 10 ошибок, расположенных в любых местах, в кодовом слове из 127 бит при 64 бит данных.
Код Голея(23,12) исправляет 3 любых ошибки в кодовом слове из 23 бит при 12 бит данных.
Если известно расположение ошибок(так называемые стирания) то можно исправить вдвое больше.
Ещё больше можно исправить если мягкая информация доступна с выхода демодулятора.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Jun 7 2010, 19:44
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



попробуйте блоковые турбокоды, хотя бы на базе все тех же расширенных кодов Хемминга, можно получить требуемую корректирующую способность. прелесть турбокодов заключаеться в том, что они обладают хорошей гибкостью в построении необходимой Вам корректирующей способности. кроме того код даже с простой проверкой на четность способен исправить пакет ошибок.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 8 2010, 04:35
Сообщение #7


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Serg76 @ Jun 7 2010, 23:44) *
кроме того код даже с простой проверкой на четность способен исправить пакет ошибок.

???
Скорее, способен выявить некоторые ошибочные пакеты (но далеко не все)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
mluk
сообщение Jun 8 2010, 05:26
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721



Цитата(des00 @ Jun 7 2010, 20:42) *
перемежение и будут те же яйца только в профиль.


Перемежение - к сожалению не те же яйца. Оно даже может ухудшить рабоду кодера. Например байт с большим количеством ошибок "испортит" много других байт пакета.


Цитата(des00 @ Jun 7 2010, 20:42) *
при генерации корки указать размер символа меньше байта ?


при генерации корки минимальный размер символа 3 бита, но естественно чем меньше - тем лучше.
И еще вопрос: в Блейхуте рассматриваются коды Рида Соломона "мультипликативный порядок алфавита которых делится на длину кода". Каким образом может получаться код (12,8) с байтовым алфавитом (в корке этот код можно сгенерить).

Сообщение отредактировал mluk - Jun 8 2010, 05:45
Go to the top of the page
 
+Quote Post
Methane
сообщение Jun 8 2010, 05:56
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(mluk @ Jun 8 2010, 08:26) *
Перемежение - к сожалению не те же яйца. Оно даже может ухудшить рабоду кодера. Например байт с большим количеством ошибок "испортит" много других байт пакета.

От распределения шума зависит. Так либо будет несправимая ошибка, либо просто исправимая, но не в одном а в нескольких байтах.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 8 2010, 06:06
Сообщение #10


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(mluk @ Jun 8 2010, 09:26) *
Перемежение - к сожалению не те же яйца. Оно даже может ухудшить рабоду кодера. Например байт с большим количеством ошибок "испортит" много других байт пакета.

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
mluk
сообщение Jun 8 2010, 06:14
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721



Цитата(MrYuran @ Jun 8 2010, 10:06) *
Для начала определитесь с характером ошибок и вообще с требованиями.
При увеличении длины пакета резко возрастает сложность кодека. Если для байта можно просто тупо таблицу забить, то для больших пакетов применяются сложные алгоритмы. Скремблирование применяется, если ошибки вываливаются редкими пачками (например, при чтении компактного диска или при мощных импульсных помехах на линии).


Сформулирую вопрос так: пакет состоит из 96 бит, информационных 64, ошибки случайным образом (с гауссовым распределением) встречаются по всей длине пакета. Какое кодирование в такой ситуации может быть оптимальным.

Сообщение отредактировал mluk - Jun 8 2010, 06:17
Go to the top of the page
 
+Quote Post
Serg76
сообщение Jun 8 2010, 10:45
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(MrYuran @ Jun 8 2010, 08:35) *
???
Скорее, способен выявить некоторые ошибочные пакеты (но далеко не все)

Если код с проверкой на четность используется в качестве компонентных кодов в составе блокового турбокода и допустим прошла помеха, которая привела к искажению одной строки, то код по столбцам выявит и исправит ошибки в этой строке.
Go to the top of the page
 
+Quote Post
SKov
сообщение Jun 8 2010, 17:50
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119



Цитата(mluk @ Jun 8 2010, 10:14) *
Сформулирую вопрос так: пакет состоит из 96 бит, информационных 64, ошибки случайным образом (с гауссовым распределением) встречаются по всей длине пакета. Какое кодирование в такой ситуации может быть оптимальным.


Все просто. У Вас двоичный код длины 96 и избыточностью 32. По таблице лучших кодов определяем, что
наилучший код с такими параметрами исправляет 4 ошибки. Кстати, укороченный БЧХ код над GF(2^7)
тоже имеет такую же корректирующую способность, так что нет смысла городить огород. Берете БЧХ код,
алгоритм Берлекэмпа - и с песнями вперед!
wink.gif
Go to the top of the page
 
+Quote Post
mluk
сообщение Jun 9 2010, 05:38
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721



Цитата(SKov @ Jun 8 2010, 21:50) *
Все просто. У Вас двоичный код длины 96 и избыточностью 32. По таблице лучших кодов определяем, что
наилучший код с такими параметрами исправляет 4 ошибки. Кстати, укороченный БЧХ код над GF(2^7)
тоже имеет такую же корректирующую способность, так что нет смысла городить огород. Берете БЧХ код,
алгоритм Берлекэмпа - и с песнями вперед!
wink.gif


Большое спасибо за совет, но как я понимаю укороченный БЧХ код над GF(2^7) код будет исправлять "недобайты" - последовательности из 7 бит и уж лучше сохранить укороченный код Рида соломона имеющийся в корке. Не подскажете, что за таблица лучших кодов, и где ее посмотреть.
Go to the top of the page
 
+Quote Post
SKov
сообщение Jun 9 2010, 07:53
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119



Цитата(mluk @ Jun 9 2010, 09:38) *
Большое спасибо за совет, но как я понимаю укороченный БЧХ код над GF(2^7) код будет исправлять "недобайты" - последовательности из 7 бит и уж лучше сохранить укороченный код Рида соломона имеющийся в корке. Не подскажете, что за таблица лучших кодов, и где ее посмотреть.

Нет, Вы неправильно понимаете, "недобайты" Вы исправлять не сможете. Или я Вас неправильно понял. Вы писали о том, что хотите исправлять любые ошибки, и желательно никак не привязанные к границам байтов. Например, ваш РС код заткнется и на 3-х одиночных ошибках, если они лягут в три разных байта.
Для исправления независимых (непакетных) ошибок код РС подходит плохо. Как видите, можно исправлять одиночные ошибки в 4-х разных байтах и вообще в любых местах кодового слова. Как это делать - я Вам и написал. Но оказалось, что Вы хотите исправлять и как код PC и как двоичный код ВЧХ. На этот счет есть одна известная русская пословица, смысл который сводится к тому, что так не бывает. wink.gif
С таблицей наилучших кодов все сложно. Свежие таблицы мне не известны.
Была хорошая таблица в книжке Теория кодов, исправляющих ошибки,
авторы: Мак-Вильямс Ф. Дж., Слоэн Н. Дж. А.
Она есть в И-нете.
Но она (таблица, не книга) сильно устарела. Попробуйте поискать такой препринт:
Зиновьев В. А., Лицын С. Н. Таблица наилучших известных двоичных кодов: Препринт. М.: ИППИ АН СССР. 1984.
Эта таблица тоже немножко устарела, но не слишком wink.gif
Кроме того, в этих таблицах указаны любые коды, в том числе и нелинейные, в том числе и с очень хитроумными (сложными) алгоритмами построения (и декодирования), так что практическое использование этих лучших кодов может быть не так просто.
Go to the top of the page
 
+Quote Post

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

 


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


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