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

 
 
> Обнаружение в канале связи битовых ошибок, нужна идея для реализации
Костян
сообщение 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
Ответов
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
Костян
сообщение Jul 20 2012, 10:13
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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
Сообщение #4


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

Группа: Модераторы
Сообщений: 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



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

 


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


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