Jump to content
    

Коды для восстановления ошибок

Там же ясно написано, что проблема с помехами (шумом?) в канале. Если они на уровне 4-ого бита, то хоть 20 битный АЦП ставь, пользы не будет.

Вопрос относительно "там" это где ?

 

Share this post


Link to post
Share on other sites

Вопрос относительно "там" это где ?

Чукча не читатель :)

Но вследствие помех в канале измерение иногда дает результат, отличающийся на единицу.

Очень предположительно, канал аналоговый. Или полуаналоговый. И ошибки аналоговые (+-1).

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

Edited by GetSmart

Share this post


Link to post
Share on other sites

Про код Грэя не понял. В канале ж не передаются монотонные последовательности. Самые разные коды могут идти друг за другом. И кодировать разные состояния кодом Грэя не даст ничего.

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

Share this post


Link to post
Share on other sites

Про код Грэя не понял. В канале ж не передаются монотонные последовательности. Самые разные коды могут идти друг за другом. И кодировать разные состояния кодом Грэя не даст ничего.

как не даст то ? в сабжевом примере, код из канала 1000, описывает 3 кода 0111/1000/1001 (4/0/1 битовая ошибка). в случае использования кода грея прием из канала 1000, даст 3 кода 0000/1000/1001 (всегда одна битовая ошибка или ошибок нет). и не важно что код немонотонный.

Share this post


Link to post
Share on other sites

Про код Грэя не понял. В канале ж не передаются монотонные последовательности. Самые разные коды могут идти друг за другом. И кодировать разные состояния кодом Грэя не даст ничего.

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

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

Share this post


Link to post
Share on other sites

То, что описал ТС - это не ошибка в канале передачи, а ошибка измерения его телеметрии. Я так думаю. И кодируй их в чем попало, от этого ошибка не пропадет.

ошибка в декодировании соседнего символа

Что есть "соседний" символ, если передается некий результат измерений? Сейчас 1000, в следующий момент 1010, 1100... Или в коде Грэя - какие-нибудь 1000, 1011, 0001... Совершенно не зависящие от слова к слову последовательности.

 

Если в канале часто случаются одиночные ошибки, эти ошибки могут появиться в любом бите слова (не обязательно в младшем, как написал ТС +-1). Они с равной вероятностью могут появиться в словах, закодированных в двоичном коде, или в коде Грэя.

Есть коды, обнаруживающие такие одиночные ошибки. Есть коды, исправляющие.

Share this post


Link to post
Share on other sites

Или в коде Грэя - какие-нибудь 1000, 1011, 0001... Совершенно не зависящие от слова к слову последовательности.

#  0 0000
#  1 0001
#  2 0011
#  3 0010
#  4 0110
#  5 0111
#  6 0101
#  7 0100
#  8 1100
#  9 1101
# 10 1111
# 11 1110
# 12 1010
# 13 1011
# 14 1001
# 15 1000

 

Если в канале часто случаются одиночные ошибки, эти ошибки могут появиться в любом бите слова (не обязательно в младшем, как написал ТС +-1). Они с равной вероятностью могут появиться в словах, закодированных в двоичном коде, или в коде Грэя.

читали тему не винимательно, автор пришет источник этих ошибок, метод формирования и приема сигнала.

Share this post


Link to post
Share on other sites

читали тему не винимательно, автор пришет источник этих ошибок, метод формирования и приема сигнала.

Если сигнал действительно практически неизменный (к примеру 1000), а из-за ошибки измерения может измениться (0111, 1001), то, наверное, оба эти значения для автора считаются неправильными. Ему нужно их "исправить"? Так просто найти разность между текущим значением и предыдущим (или усредненным). Вот и получится разница в 1. Дальше делайте, что хотите - отбрасывайте или используйте.

 

Могут ли такие ошибки (0111, 1001) с равной вероятностью появиться в самом канале связи? Сомнительно.

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

Share this post


Link to post
Share on other sites

То, что описал ТС - это не ошибка в канале передачи, а ошибка измерения его телеметрии. Я так думаю. И кодируй их в чем попало, от этого ошибка не пропадет.

 

Что есть "соседний" символ, если передается некий результат измерений? Сейчас 1000, в следующий момент 1010, 1100... Или в коде Грэя - какие-нибудь 1000, 1011, 0001... Совершенно не зависящие от слова к слову последовательности.

 

Если в канале часто случаются одиночные ошибки, эти ошибки могут появиться в любом бите слова (не обязательно в младшем, как написал ТС +-1). Они с равной вероятностью могут появиться в словах, закодированных в двоичном коде, или в коде Грэя.

Есть коды, обнаруживающие такие одиночные ошибки. Есть коды, исправляющие.

Сначала декодер демодулятора примет решение по переданным символам и при малом уровне шума в канале по максимальному правдоподобию с большой долей вероятности исказится ближайший к переданному символ. При этом неважно как кодировался сигнал - по амплитуде, частоте или фазе. Так вот в случае использования Грея эта ошибка в соседнем символе приведет уже к одиночной, а не групповой битовой ошибке, точно так как на рисунке des00. С одиночной ошибкой затем бороться проще.

Share this post


Link to post
Share on other sites

Так отож. И при чем здесь кодирование? У вас проблемы с измерениями а не в канале связи.

Вы принципиально решаете не ту задачу. Лучше решить вопросы с 4-х битным АЦП.

А самый младший бит будет гулять - тут уж закон природы АЦП. Нужно 5 разрядов.

Не пытайтесь понять меня неправильно ©. Телеметрию канала я описал в сообщении #8. Амплитуда несущей синусоиды измеряется 14-разрдным АЦП с периодом 0.96 мкс, но в канале есть шумы, которые тоже измеряются в результате чего возникает ошибка.

 

Идея с переводом данных в код Грея + Хемминг конечно интересна, но сам код Хемминга требует большой избыточночти, с таким же успехом можно уменьшить число градаций амплитуды вдвое. Но обидно, что ошибка случаеся редко, одна на несколько десятков слов, а из-за этого не хочется уменьшать скорость в разы. Тогда уж лучше воспользоваться Ридом-Соломоном, для него даже есть исходники, настраивающиеся на разные размеры слов. Но я надеялся что если ошибка меняет значение слова на единицу, то может для такого случая есть коды с еще меньшей избыточностью.

 

Очень предположительно, канал аналоговый. Или полуаналоговый. И ошибки аналоговые (+-1).

Вообще, подробности ТС зажал.

Это не предположительно, это так и есть, написано об этом в сообщении #8

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

Все резервы повышения на аналоговом уровне исчерпаны. Сигнал оцифровывается 16 раз за 15.84 мкс и из суммы квадратов извлекается квадратный корень. От количества отсчетов точность зависит очень сильно, но больше 16 я измерить уже не могу, имеющаяся аппаратура не позволяет. Поэтому остаются чисто математические методы.

Share this post


Link to post
Share on other sites

Сигнал оцифровывается 16 раз за 15.84 мкс и из суммы квадратов извлекается квадратный корень.

А почему складываете квадраты, а не просто числа?

А результат измерения всегда будет скакать на 1, никакими способами от этого не избавиться, можно только сделать реже или чаще.

P.S. а про Грэя так и остался в непонятках. :(

Тоже считаю, что проблема не в связи, а в измерении.

 

P.P.S. Добавьте бит четности, будете обнаруживать одиночную ошибку. И отбрасывать такой код.

Share this post


Link to post
Share on other sites

Идея с переводом данных в код Грея + Хемминг конечно интересна, но сам код Хемминга требует большой избыточночти, с таким же успехом можно уменьшить число градаций амплитуды вдвое. Но обидно, что ошибка случаеся редко, одна на несколько десятков слов, а из-за этого не хочется уменьшать скорость в разы. Тогда уж лучше воспользоваться Ридом-Соломоном, для него даже есть исходники, настраивающиеся на разные размеры слов. Но я надеялся что если ошибка меняет значение слова на единицу, то может для такого случая есть коды с еще меньшей избыточностью.

накройте данные БЧХ укороченным кодом 240/224/2 исправит 2 битовых ошибки на блок в 240 бит. и реализуется просто.

 

ЗЫ. вот только синхронизацию декодера нужно будет сделать(в случае РС тоже самое).

 

P.S. а про Грэя так и остался в непонятках. :(

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

Share this post


Link to post
Share on other sites

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

конретно?

Share this post


Link to post
Share on other sites

А почему складываете квадраты, а не просто числа?

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

 

А результат измерения всегда будет скакать на 1, никакими способами от этого не избавиться, можно только сделать реже или чаще.

С чего бы ему скакать, если амплитуды дискретны и отстоят далеко? Только помеха может исказить сигнал.

P.S. а про Грэя так и остался в непонятках. :(

Если в кратце - код Хемминга позволяет исправить один испорченный бит. Код Грея позволяет превратить изменение числа на +-1 в изменение одного бита (и задача сводится к предыдущей как в анекдоте про чайник)

 

P.P.S. Добавьте бит четности, будете обнаруживать одиночную ошибку. О отбрасывать такой код.

Это понятно, до этого так и делали. Но жалко выбрасывать целый пакет если в нем всего одна-две ошибки, да еще и отличающиеся всего на единицу.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...