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

Мягкое декодирование кода Голея (24, 12, 8)

Доброго дня!

Есть радиоканал с QPSK модуляцией, в котором использую расширенный код Голея длиной (24, 12, 8). Сейчас принимаю жесткое решение и декодирую Голея через перебор всех 4096 комбинаций с выбором по минимуму ошибок. Работает, исправляет до 4-х ошибок. Есть время и желание еще улучшить прием за счет мягкого декодирования. Что это может дать в конкретных цифрах, будет ли стоить игра свеч? И возможно ли в принципе мягкое декодирование для кода Голея?

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


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

И возможно ли в принципе мягкое декодирование для кода Голея?
Возможно.

 

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

 

Погуглите по словам: extended Golay code soft decoding

 

https://ieeexplore.ieee.org/document/5450028/

https://pdfs.semanticscholar.org/a562/14de7...0425fd42d50.pdf

и т.п.

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


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

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

Вот именно это и хотелось бы сделать, чтобы сравнить с тем, что сейчас работает. Но для этого надо написать модель мягкого декодера. Написать не проблема, но алгоритм мне пока что не известен.

За ссылки спасибо, попробую скачать.

 

А может существуют хотя бы приблизительные оценки прироста SNR для мягкого декодирования блочного кода? Что-то типа для блочного кода 1/2 длиной 24 бита мягкое декодирование обеспечит выигрыш 2 дБ (ли 3, или 0.2). Было бы интересно.

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


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

Для кода Голея (24,12) алгоритм Чейза дает следующие характеристики

 

Алгоритмы 1 и 2:

Pb Eb/No, dB

1e-3 3,7

1e-4 4,7

1e-5 5,4

 

Алгоритм 3:

Pb Eb/No, dB

1e-3 4,3

1e-4 5,3

1e-5 6,0

 

Сравнивайте с вашим жестким декодером

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


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

Serg76, спасибо огромное!!!

Сейчас сравню со своим декодером при SNR 6дБ.

 

А как Вы это посчитали? Ткните в источник, если не трудно.

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


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

Кларк. Кодирование с исправлением ошибок в системах цифровой связи. стр.161, рис.4.8

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


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

Спасибо, скачал, изучаю.

Промоделировал свой декодер в мталабе, получил следующие цифры:

SNR 6 dB, BER = 2.5e-4

SNR 5 dB, BER = 1.7e-3

SNR 4 dB, BER = 1.1e-2

SNR 3 dB, BER = 2.4e-2

SNR 2 dB, BER = 5.7e-2

SNR 1 dB, BER = 1.1e-1

SNR 0 dB, BER = 1.4e-1

 

По сравнению с этим, алгоритм Чейза 1 и 2 дает неплохой профит. Попробую разобраться с реализацией.

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


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

Да, выигрыш больше, чем на порядок по BER и около 1,5 дБ по С/Ш. Да и реализация декодера сама по себе несложная

Изменено пользователем Serg76

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


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

По сравнению с этим, алгоритм Чейза 1 и 2 дает неплохой профит. Попробую разобраться с реализацией.

 

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

Писать там мало, а работать будет чуть лучше самого хорошего Чейза.

 

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


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

можно декодер максимального правдоподобия реализовать - потребуется вычисление 4096 сверток длиной 24 и выбор максимума

У меня QPSK, и один код длиной 24 имеет укладывается 12 символов - комплексных отсчетов.

Я попробовал сделать 4096 dot product с выбором максимума на модели в матлабе - получил такой же результат, как и в моем декодере с жестким решением.

Это максимальное правдоподобие или нет?

Я брал принятые 12 символов QPSK и делал скалярное произведение с каждым из 4096 кодом, который тоже был модулирован QPSK. B процессе умножения выбирал код с максимальным результатом dot.

 

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


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

а работать будет чуть лучше самого хорошего Чейза.

Да, разница будет порядка одной десятой дБ :)

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


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

У меня QPSK, и один код длиной 24 имеет укладывается 12 символов - комплексных отсчетов.

Я попробовал сделать 4096 dot product с выбором максимума на модели в матлабе - получил такой же результат, как и в моем декодере с жестким решением.

Это максимальное правдоподобие или нет?

Я брал принятые 12 символов QPSK и делал скалярное произведение с каждым из 4096 кодом, который тоже был модулирован QPSK. B процессе умножения выбирал код с максимальным результатом dot.

 

Это максимальное правдоподобие для binary symmetric channel ;). А Вам на входе декодера "мягкий" демодулятор нужен, оценивающий LLR принятых бит. Но тут с Чейзом никакой разницы нет.

У него на входе тоже мягкие решения должны быть.

 

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


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

Вам на входе декодера "мягкий" демодулятор нужен

Мягкий демодулятор у меня есть. После установления синхронизации, я получаю по 12 комплексных отсчетов - символов, в которых лежит 24-битный код Голея. Сейчас я каждый символ жестко интерпретирую в два бита [00], [01]... [11] и получаю 24 бита, которые идут на декодер. Чтобы перейти на мягкое решение, я должен каждый комплексный отсчет символа интерпретировать на некое малоразрядное число, и подавать эти числа на алгоритм Чейза?

 

 

Это максимальное правдоподобие для binary symmetric channel

Понятно. Это только для BPSK будет работать. А как тогда для QPSK реализовать максимальное правдоподобие?

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


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

Мягкий демодулятор у меня есть. После установления синхронизации, я получаю по 12 комплексных отсчетов - символов, в которых лежит 24-битный код Голея. Сейчас я каждый символ жестко интерпретирую в два бита [00], [01]... [11] и получаю 24 бита, которые идут на декодер. Чтобы перейти на мягкое решение, я должен каждый комплексный отсчет символа интерпретировать на некое малоразрядное число, и подавать эти числа на алгоритм Чейза?

 

Каждый комплексный отсчет - 2 мягких бита (re и im), по сути LLR. Их и подаем на чейза. Или на мп-декодер.

 

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


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

Или на мп-декодер.

Если я правильно понял, то таким образом можно 12 комплексных отсчетов преобразовать в 24 вещественных для реализации максимального правдоподобия?

 

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


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

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

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

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

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

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

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

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

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

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