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

 
 
> Обнаружение в канале связи битовых ошибок, нужна идея для реализации
Костян
сообщение Jul 19 2012, 11:40
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Итак дано:

Канал связи между двумя устройствами, в котором допускаются единичные битовые ошибки (1..2 бита на пакет длинной 128 бит). Канал является высокоскоростной последовательной шиной со скоростями передачи ~3ГБит/с. Данные передаются пакетами по 64 байта.

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

Выход кажется простым - применить код Хэмминга, который обнаруживает 2 бита ошибки. Но для последовательной передачи данных применяется кодер 8b/10b, для которого изменения одного бита информации приводит к изменению целого байта.

Есть ли решение, для защиты от единичных битовых ошибок в данном случае ?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
des00
сообщение Jul 19 2012, 17:50
Сообщение #2


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

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



а разве 8b/10b при изменении пары бит не даст символьную ошибку? которая позволит накрыть сразу 8 бит.

и не понятно вам нужно только определить ошибки или их исправить.


--------------------
Go to the top of the page
 
+Quote Post
SKov
сообщение Jul 19 2012, 20:37
Сообщение #3


Знающий
****

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



Цитата(Костян @ Jul 19 2012, 15:40) *
Итак дано:

Канал связи между двумя устройствами, в котором допускаются единичные битовые ошибки (1..2 бита на пакет длинной 128 бит).

Это надо написать более четко. т.к. разница между 1 ошибкой и двумя принципиальная.

Цитата
Выход кажется простым - применить код Хэмминга, который обнаруживает 2 бита ошибки. Но для последовательной передачи данных применяется кодер 8b/10b, для которого изменения одного бита информации приводит к изменению целого байта.
Есть ли решение, для защиты от единичных битовых ошибок в данном случае ?

Похоже, надо использовать байтовый код Хэмминга.
В данном случае есть резон называть его укороченным кодом Рида-Соломона над GF(256) с расстоянием 3.
Т.е. к потоку надо добавить два байта, и будете исправлять любую ошибку в любом одном байте.
Или будете обнаруживать любую ошибку кратности до 2. но ничего исправить не сможете.
Go to the top of the page
 
+Quote Post
petrov
сообщение Jul 19 2012, 21:25
Сообщение #4


Гуру
******

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



ИМХО нечего мудрить, CRC и заново передаём битый пакет.
Go to the top of the page
 
+Quote Post
Костян
сообщение Jul 20 2012, 10:13
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (des00 @ Jul 19 2012, 16:50) *
а разве 8b/10b при изменении пары бит не даст символьную ошибку? которая позволит накрыть сразу 8 бит.

8b/10b может определить только неверную полярность . разве он может определять символьную ошибку ? кодер на логике(не табличный) даст неверную комбинацию и будет разбирать следующий байт как ни в чем не бывало.
Кроме того, я пока затрудняюсь , как вычислить вероятность правильного обнаружения декодером 8b/10b неверной полярности сигнала. Подозреваю она будет всего ~75%, что есть очень плохо.

QUOTE
и не понятно вам нужно только определить ошибки или их исправить.

достаточно определить битый байт. исправлять пока не планирую.

QUOTE
Это надо написать более четко. т.к. разница между 1 ошибкой и двумя принципиальная.

дело в том, что хоть один, что 2 бита ошибки в канале в 8b/10b кодеровке приведет к ошибочному байту после декодирования. поэтому достаточно найти код, котрый будет определять (не исправлять) 1 байт .

QUOTE
Похоже, надо использовать байтовый код Хэмминга.
В данном случае есть резон называть его укороченным кодом Рида-Соломона над GF(256) с расстоянием 3.

более точное название не подскажите ? Либо подскажите название литературы.

Решение впринципе нашел - код Файра. циклический и простой в реализации

QUOTE
ИМХО нечего мудрить, CRC и заново передаём битый пакет.

ээ..не, слишком просто, да и не хочется терять целый пакет, при потере всего 1 бита !. Передавать заново пакет не имею возможности, канал связи и так на пределе своей пропускной способности, могу выделить только 2..3 байта на кодировку.

QUOTE (SKov @ Jul 19 2012, 18:37) *
укороченным кодом Рида-Соломона над GF(256) с расстоянием 3.
Т.е. к потоку надо добавить два байта, и будете исправлять любую ошибку в любом одном байте.
Или будете обнаруживать любую ошибку кратности до 2. но ничего исправить не сможете.

Будте добры, поясните ключевой момент, который я не до конца понимаю.
Что скажет декодер в данном случае, если количество ошибок будет больше 2 ? Какова вероятность необнаружения ошибок при их кол-ве более 2 ?
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 20 2012, 14:33
Сообщение #6


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

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



Цитата(Костян @ Jul 20 2012, 04:13) *
8b/10b может определить только неверную полярность . разве он может определять символьную ошибку ? кодер на логике(не табличный) даст неверную комбинацию и будет разбирать следующий байт как ни в чем не бывало.

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

Цитата
дело в том, что хоть один, что 2 бита ошибки в канале в 8b/10b кодеровке приведет к ошибочному байту после декодирования. поэтому достаточно найти код, котрый будет определять (не исправлять) 1 байт .

не совсем верно, если 2 бита пришлись на разные слова, то будет "битым" 2 слова/байта

Цитата
ээ..не, слишком просто, да и не хочется терять целый пакет, при потере всего 1 бита !. Передавать заново пакет не имею возможности, канал связи и так на пределе своей пропускной способности, могу выделить только 2..3 байта на кодировку.

самое простое байтовый рид соломон, с 2 мя проверочными байтами. можно получить : исправление 1 ошибки/исправление 2-х стираний/обнаружение 1/2 ошибок. (ошибка == байту). Если ошибок будет больше, показать сможет все что угодно.


--------------------
Go to the top of the page
 
+Quote Post
Костян
сообщение Jul 20 2012, 14:39
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (des00 @ Jul 20 2012, 12:33) *
Если ошибок будет больше, показать сможет все что угодно.

т.е может показать как отсутствие ошибок , так и неверно указать ошибочный байт ?
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 20 2012, 14:41
Сообщение #8


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

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



Цитата(Костян @ Jul 20 2012, 08:39) *
т.е и отсутствие ошибок и неверно указать ошибочный байт ?

в том числе и отсутствие ошибок. смысл в том, что кодовое слово с количеством ошибок больше 2-х, может стать равным другому кодовому слову. Тут уже никуда, это физика %)


--------------------
Go to the top of the page
 
+Quote Post
Костян
сообщение Jul 23 2012, 11:48
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (des00 @ Jul 20 2012, 12:41) *
в том числе и отсутствие ошибок. смысл в том, что кодовое слово с количеством ошибок больше 2-х, может стать равным другому кодовому слову. Тут уже никуда, это физика %)

спасибо, с возможностями кода разобрался.

Но в процессе появилась другая идея. В данном случае возможно прийдется обнаруживать пакет не 8бит ошибочной информации, а всего лишь 5, так как 8b/10b является по своей сути суммой между 5b/6b и 3b/4b. Но для окончательного выяснения этой идеи, мне нужно еще раз пересмотреть патент на 8b/10b

QUOTE (des00 @ Jul 20 2012, 12:33) *
не совсем верно, если 2 бита пришлись на разные слова, то будет "битым" 2 слова/байта

весьма верное замечание.
Go to the top of the page
 
+Quote Post
i-mir
сообщение Jul 23 2012, 16:03
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 17-06-10
Из: Киев
Пользователь №: 57 986



Я бы взглянул на вашу задачу со стороны физики.

Вопрос - кто является генератором ошибок при
передаче данных, учитывая что 1 ошибка на 128 бит
это достаточно много. Обычно на порядки меньше.

Я подозреваю, что проблема в аппаратной части
работающей на пределе возможностей, т.е. вероятность
срыва фронтов достаточно велика.

Если так, то лучше банально контролировать четность
каждого байта. Можно также рассчитать вероятность
появления двух ошибок в одном байте - она будет малой.

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



Go to the top of the page
 
+Quote Post
Костян
сообщение Jul 24 2012, 07:22
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (i-mir @ Jul 23 2012, 14:03) *
Я подозреваю, что проблема в аппаратной части
работающей на пределе возможностей, т.е. вероятность
срыва фронтов достаточно велика.

верно, второй источник ошибок - импульсные помехи

QUOTE
Если так, то лучше банально контролировать четность
каждого байта. Можно также рассчитать вероятность
появления двух ошибок в одном байте - она будет малой.

в данном случае не пройдет. так как 1 бит ошибки в закодированном при помощи 8b/10b превращается в целый байт ошибки, в этом то и вся проблема, что в канале передачи не чистая информация, а пройденная через кодер 8b/10b и я не могу подсчитать четность в каждом слове.

QUOTE
эффективность побайтного контроля в вашем случае может быть плюсом.

решение прежние - ловить пачку ошибок длинной 2 байта.

Хитрость со структорой 8b/10b не пройдет, в патенте есть связь кодера 3b/4b на всю схему 8b/10b :-(
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:54
Рейтинг@Mail.ru


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