реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Мягкое декодирование кода Голея (24, 12, 8), Возможно ли? И какой профит может это дать?
soldat_shveyk
сообщение Sep 5 2018, 08:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Доброго дня!
Есть радиоканал с QPSK модуляцией, в котором использую расширенный код Голея длиной (24, 12, 8). Сейчас принимаю жесткое решение и декодирую Голея через перебор всех 4096 комбинаций с выбором по минимуму ошибок. Работает, исправляет до 4-х ошибок. Есть время и желание еще улучшить прием за счет мягкого декодирования. Что это может дать в конкретных цифрах, будет ли стоить игра свеч? И возможно ли в принципе мягкое декодирование для кода Голея?
Go to the top of the page
 
+Quote Post
x736C
сообщение Sep 5 2018, 09:47
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(soldat_shveyk @ Sep 5 2018, 11:57) *
И возможно ли в принципе мягкое декодирование для кода Голея?
Возможно.

Цитата(soldat_shveyk @ Sep 5 2018, 11:57) *
Что это может дать в конкретных цифрах, будет ли стоить игра свеч?
Правильнее будет в матлабе набросать на стандартных функциях скрипт и посчитать выигрыш.

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

https://ieeexplore.ieee.org/document/5450028/
https://pdfs.semanticscholar.org/a562/14de7...0425fd42d50.pdf
и т.п.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 5 2018, 10:25
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



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

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

А может существуют хотя бы приблизительные оценки прироста SNR для мягкого декодирования блочного кода? Что-то типа для блочного кода 1/2 длиной 24 бита мягкое декодирование обеспечит выигрыш 2 дБ (ли 3, или 0.2). Было бы интересно.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Sep 5 2018, 11:25
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Для кода Голея (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

Сравнивайте с вашим жестким декодером
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 5 2018, 11:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



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

А как Вы это посчитали? Ткните в источник, если не трудно.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Sep 5 2018, 11:44
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Кларк. Кодирование с исправлением ошибок в системах цифровой связи. стр.161, рис.4.8
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 5 2018, 12:22
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Спасибо, скачал, изучаю.
Промоделировал свой декодер в мталабе, получил следующие цифры:
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 дает неплохой профит. Попробую разобраться с реализацией.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Sep 5 2018, 12:30
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



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

Сообщение отредактировал Serg76 - Sep 5 2018, 12:38
Go to the top of the page
 
+Quote Post
andyp
сообщение Sep 5 2018, 12:33
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(soldat_shveyk @ Sep 5 2018, 15:22) *
По сравнению с этим, алгоритм Чейза 1 и 2 дает неплохой профит. Попробую разобраться с реализацией.


Если в вычислительной дури не сильно ограничены, то можно декодер максимального правдоподобия реализовать - потребуется вычисление 4096 сверток длиной 24 и выбор максимума.
Писать там мало, а работать будет чуть лучше самого хорошего Чейза.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 5 2018, 12:44
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



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

У меня QPSK, и один код длиной 24 имеет укладывается 12 символов - комплексных отсчетов.
Я попробовал сделать 4096 dot product с выбором максимума на модели в матлабе - получил такой же результат, как и в моем декодере с жестким решением.
Это максимальное правдоподобие или нет?
Я брал принятые 12 символов QPSK и делал скалярное произведение с каждым из 4096 кодом, который тоже был модулирован QPSK. B процессе умножения выбирал код с максимальным результатом dot.
Go to the top of the page
 
+Quote Post
Serg76
сообщение Sep 5 2018, 12:49
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(andyp @ Sep 5 2018, 15:33) *
а работать будет чуть лучше самого хорошего Чейза.

Да, разница будет порядка одной десятой дБ sm.gif
Go to the top of the page
 
+Quote Post
andyp
сообщение Sep 5 2018, 12:55
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(soldat_shveyk @ Sep 5 2018, 15:44) *
У меня QPSK, и один код длиной 24 имеет укладывается 12 символов - комплексных отсчетов.
Я попробовал сделать 4096 dot product с выбором максимума на модели в матлабе - получил такой же результат, как и в моем декодере с жестким решением.
Это максимальное правдоподобие или нет?
Я брал принятые 12 символов QPSK и делал скалярное произведение с каждым из 4096 кодом, который тоже был модулирован QPSK. B процессе умножения выбирал код с максимальным результатом dot.


Это максимальное правдоподобие для binary symmetric channel wink.gif. А Вам на входе декодера "мягкий" демодулятор нужен, оценивающий LLR принятых бит. Но тут с Чейзом никакой разницы нет.
У него на входе тоже мягкие решения должны быть.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 5 2018, 13:10
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



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

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


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

Понятно. Это только для BPSK будет работать. А как тогда для QPSK реализовать максимальное правдоподобие?
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 5 2018, 13:21
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(soldat_shveyk @ Sep 5 2018, 16:10) *
Мягкий демодулятор у меня есть. После установления синхронизации, я получаю по 12 комплексных отсчетов - символов, в которых лежит 24-битный код Голея. Сейчас я каждый символ жестко интерпретирую в два бита [00], [01]... [11] и получаю 24 бита, которые идут на декодер. Чтобы перейти на мягкое решение, я должен каждый комплексный отсчет символа интерпретировать на некое малоразрядное число, и подавать эти числа на алгоритм Чейза?


Каждый комплексный отсчет - 2 мягких бита (re и im), по сути LLR. Их и подаем на чейза. Или на мп-декодер.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 5 2018, 13:30
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



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

Если я правильно понял, то таким образом можно 12 комплексных отсчетов преобразовать в 24 вещественных для реализации максимального правдоподобия?
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 5 2018, 13:47
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(soldat_shveyk @ Sep 5 2018, 16:30) *
Если я правильно понял, то таким образом можно 12 комплексных отсчетов преобразовать в 24 вещественных для реализации максимального правдоподобия?


Да. А можно сразу считать корреляционные метрики для комплексных и выбирать максимальную по модулю.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 5 2018, 14:00
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
А можно сразу считать корреляционные метрики для комплексных

Да я вроде так и делал. Но получилось так же , как и при жестком демодуляторе.
А как правильно считать корреляционную метрику?
Например для пакета из четырех бит данных [d0 d1 d2 d3] я получил два комплексных символа (a1+jb1) и (a2+jb2). Что дальше?
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 5 2018, 17:04
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(soldat_shveyk @ Sep 5 2018, 17:00) *
Да я вроде так и делал. Но получилось так же , как и при жестком демодуляторе.
А как правильно считать корреляционную метрику?
Например для пакета из четырех бит данных [d0 d1 d2 d3] я получил два комплексных символа (a1+jb1) и (a2+jb2). Что дальше?


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

Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 6 2018, 07:26
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Хм.. Странно. Я так и делал. При совпадающих пакетах метрика будет равна 12 + j0. При не совпадающих +/-4 +/- j*4, так как кодовое расстояние равно 8.
В процессе вычисления метрик делал выбор максимума. Но на тестах по BER получил результат, аналогичный жесткому декодированию. В чем подвох?
Отдельный расчет корреляционной метрики для комплексных отсчетов при совпадении кодовых слов:
% 24-bit Data Packet
txb = randi([0 1], 1, 24);
% QPSK Modulator
tx_signal = zeros(1, 12);
for k = 1:12
dibit = [txb(2*k - 1) txb(2*k)];
tx_signal(k) = sqrt(2) / 2 * ((dibit(1) * 2 - 1) + 1j * (dibit(2) * 2 - 1));
end
% Rx packet = Tx packet + white noise
rx_signal = awgn(tx_signal, 30, 'measured');
% Calculation of the correlation metric for complex samples
metric = abs(sum(conj(rx_signal) .* tx_signal))
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 6 2018, 20:02
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(soldat_shveyk @ Sep 6 2018, 10:26) *
Хм.. Странно. Я так и делал. При совпадающих пакетах метрика будет равна 12 + j0. При не совпадающих +/-4 +/- j*4, так как кодовое расстояние равно 8.
В процессе вычисления метрик делал выбор максимума. Но на тестах по BER получил результат, аналогичный жесткому декодированию. В чем подвох?
Отдельный расчет корреляционной метрики для комплексных отсчетов при совпадении кодовых слов:
% 24-bit Data Packet
txb = randi([0 1], 1, 24);
% QPSK Modulator
tx_signal = zeros(1, 12);
for k = 1:12
dibit = [txb(2*k - 1) txb(2*k)];
tx_signal(k) = sqrt(2) / 2 * ((dibit(1) * 2 - 1) + 1j * (dibit(2) * 2 - 1));
end
% Rx packet = Tx packet + white noise
rx_signal = awgn(tx_signal, 30, 'measured');
% Calculation of the correlation metric for complex samples
metric = abs(sum(conj(rx_signal) .* tx_signal))



Не знаю. Корреляции, и выбор корреляции с максимальной вещественной частью (не модулем. это важно. Про модуль я машинально написал).

Сообщение отредактировал thermit - Sep 6 2018, 20:03
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 7 2018, 06:34
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



thermit, спасибо, попробую.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 10 2018, 06:19
Сообщение #22


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(soldat_shveyk @ Sep 7 2018, 13:34) *
thermit, спасибо, попробую.

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


--------------------
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 10 2018, 13:20
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Сделал мягкий декодер Чейза, BER стал лучше на порядок в диапазоне SNR 3..6 дБ.
Всем спасибо за помощь!
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 19 2018, 15:12
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Продолжу тему.
Понаблюдал, как работает Чейз при малом SNR (0..2 дБ).
Иногда получается так, что среди 16 гипотез кода есть правильная, но у нее не минимальная метрика, и соответственно она отбрасывается, а выбирается ошибочная.
Посему вопрос - всегда ли правильный код будет иметь минимальную метрику?

Я использую код Голея 24,12 с кодовым расстоянием 8.
На приеме беру 16 мягких решений. Пусть для простоты будет BPSK, мягкие решения = сами символы.
Выбираю 4 бита с минимальной достоверностью (abs() от принятых символов) и путем перебора их позиций порождаю 16 гипотез кода, которые декодирую и выбираю код с минимальной метрикой.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Sep 19 2018, 15:43
Сообщение #25


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



А вы попробуйте сравнить процедуру Чейза и прямой перебор.
Информационная часть у вас короткая, должно получиться быстро.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 20 2018, 02:22
Сообщение #26


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(soldat_shveyk @ Sep 19 2018, 22:12) *
Посему вопрос - всегда ли правильный код будет иметь минимальную метрику?

Нет ни всегда. При большом количестве ошибок, евклидово расстояние до правильного слова, может стать большим чем до другого кодового слова.


--------------------
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 20 2018, 06:30
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
А вы попробуйте сравнить процедуру Чейза и прямой перебор

Пробовал, Чейз дает меньший BER. Да и 4096 IF-ов в коде прямого перебора тормозят процесс.

Цитата
Нет ни всегда. При большом количестве ошибок, евклидово расстояние до правильного слова, может стать большим чем до другого кодового слова.

Спасибо.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Sep 20 2018, 07:33
Сообщение #28


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Это, разумеется, не верно, т.к. прямой перебор выдает максимально правдоподобную оценку, а Чейз - ее аппроксимацию. Разница в пользу мп-оценки будет более заметна при низких отношениях сигнал-шум.

Цитата(soldat_shveyk @ Sep 20 2018, 10:30) *
Пробовал, Чейз дает меньший BER.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Sep 20 2018, 08:43
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
Это, разумеется, не верно, т.к. прямой перебор выдает максимально правдоподобную оценку, а Чейз - ее аппроксимацию

Я делал не перебор максимального правдоподобия, а перебор 4096 кодов Голея после жесткого решения. Выбирал результат по минимуму sum(bitxor()).
На полноценное максимальное правдоподобие ресурсы решили не тратить, да и задержка приличная получается.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 22:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.02466 секунд с 7
ELECTRONIX ©2004-2016