Перейти к содержанию
    

Обнаружение в канале связи битовых ошибок

Итак дано:

 

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

 

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

 

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

 

Есть ли решение, для защиты от единичных битовых ошибок в данном случае ?

post-19059-1342697454_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак дано:

 

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

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

 

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

Есть ли решение, для защиты от единичных битовых ошибок в данном случае ?

Похоже, надо использовать байтовый код Хэмминга.

В данном случае есть резон называть его укороченным кодом Рида-Соломона над GF(256) с расстоянием 3.

Т.е. к потоку надо добавить два байта, и будете исправлять любую ошибку в любом одном байте.

Или будете обнаруживать любую ошибку кратности до 2. но ничего исправить не сможете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

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

 

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

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

 

Похоже, надо использовать байтовый код Хэмминга.

В данном случае есть резон называть его укороченным кодом Рида-Соломона над GF(256) с расстоянием 3.

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

 

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

 

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

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

 

укороченным кодом Рида-Соломона над GF(256) с расстоянием 3.

Т.е. к потоку надо добавить два байта, и будете исправлять любую ошибку в любом одном байте.

Или будете обнаруживать любую ошибку кратности до 2. но ничего исправить не сможете.

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

Что скажет декодер в данном случае, если количество ошибок будет больше 2 ? Какова вероятность необнаружения ошибок при их кол-ве более 2 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если ошибок будет больше, показать сможет все что угодно.

т.е может показать как отсутствие ошибок , так и неверно указать ошибочный байт ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е и отсутствие ошибок и неверно указать ошибочный байт ?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

весьма верное замечание.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Вопрос - кто является генератором ошибок при

передаче данных, учитывая что 1 ошибка на 128 бит

это достаточно много. Обычно на порядки меньше.

 

Я подозреваю, что проблема в аппаратной части

работающей на пределе возможностей, т.е. вероятность

срыва фронтов достаточно велика.

 

Если так, то лучше банально контролировать четность

каждого байта. Можно также рассчитать вероятность

появления двух ошибок в одном байте - она будет малой.

 

Избыточность метода достаточно высока, но эффективность

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

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я подозреваю, что проблема в аппаратной части

работающей на пределе возможностей, т.е. вероятность

срыва фронтов достаточно велика.

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

 

Если так, то лучше банально контролировать четность

каждого байта. Можно также рассчитать вероятность

появления двух ошибок в одном байте - она будет малой.

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

 

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

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

 

Хитрость со структорой 8b/10b не пройдет, в патенте есть связь кодера 3b/4b на всю схему 8b/10b :-(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...