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

    

Мягкое декодирование кода Голея (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 вещественных для реализации максимального правдоподобия?

 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация