Дополнительный бит четности Hamming SEC/DED

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

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

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

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


person Marco Giglio    schedule 30.06.2013    source источник


Ответы (1)


Думаю, я решил проблему.

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

person Marco Giglio    schedule 01.07.2013