Дополнительный бит паритета Хемминга SEC/DED

У меня проблемы с кодом исправления ошибок SEC/DED. Кажется, я нашел несколько случаев, когда декодер считает, что произошел двойной бит, но только один действительно произошел. Я полагаю, что я сделал что-то не так, но я не мог понять, что. Позвольте мне показать вам пример.

Предположим, я хочу закодировать 4 бита 1011 использование кода (7,4) плюс дополнительный бит, необходимый для обнаружения двух ошибок. Закодированное слово должно быть 00110011где самый значимый бит - это бит дополнительной четности, следующие два - это p0 и p1 и так далее.

Теперь давайте предположим, что во время передачи перебрасывается менее значимый бит; Таким образом, полученное слово будет 00110010, Получатель извлечет из этого кода четыре принятых бита данных 1010 и создаст новый код, который приведет к 01011010, Наконец, получатель выполнит побитовое xor получения двух кодов 0111, Последние три бита говорят, что бит 7 перевернут (что верно), но первый бит равен 0, и, насколько я знаю, декодер должен рассматривать эту ситуацию так, как если бы произошел переворот более чем на один бит.

Что я сделал не так?

1 ответ

Я думаю, что я решил проблему.

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

Другие вопросы по тегам