Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: реализация перфорации в декодере Витерби
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Muscat
В процессе реализации декодера Витерби (7, 133 171) столкнулся со следующей проблемой.

Не могу разобраться с алгоритмом перфорирования. Как его реализовывать?

Вариант 1, взят из мануала Texac Instruments к одному из ДСП
Заменять выкалываемые биты слабыми нулями и единицами.
Код
     data_dec(4:6:2*l)=3;
     data_dec(5:6:2*l)=4;

Далее декодирование как обычно, получается такая вот кривая (под Rate 1 подразумевается 1/2, чистый поток).

нижний зеленый график - без перфорации, согласуется с ожидаемым. Загиб синего связан с ограничением на число прогонов.
Вариант второй, когда мы не учитываем в принципе выколотые биты. Это я так понял делается так.
Исходные пары бит на входе декодера
1 3 5
2 4 6
Но 4 и 5 были "выколоты", значит в первой паре для вычисления метрики перехода используем оба бита, во втором случае не рассматриваем 2 бит, в третей паре - 1 бит.
Можно сформировать следующий вектор
021021021...
Код
if Perf==1
     data_dec(4:6:2*l)=3;
     data_dec(5:6:2*l)=4;
     puncture_vector(1:3:l)=0;
     puncture_vector(2:3:l)=2;
     puncture_vector(3:3:l)=1;

И добавить этот вектор в качестве входного аргумента для функции вычисления метрик.
Код
function [BM] = BranchMetric_punc(X,hard_soft,punct)
if hard_soft==1
    One=7;
else One=1;
end

if punct==0
    BM(1)=X(1)+X(2);
    BM(2)=X(1)+(One-X(2));
    BM(3)=(One-X(1))+X(2);
    BM(4)=(One-X(1))+(One-X(2));
elseif punct==1
    BM(1)=X(2);
    BM(2)=One-X(2);
    BM(3)=X(2);
    BM(4)=One-X(2);
elseif  punct==2
    BM(1)=X(1);
    BM(2)=X(1);
    BM(3)=(One-X(1));
    BM(4)=(One-X(1));
end
end


Результат чуть лучше.
Те же результаты я увидел в дипломной работе одного китайского студента. Однако "теория" в виде книги "Кодирование с исправлением ошибок в ЦСПИ" Дж.Кларка и Дж.Кейна говорит мне, что я ничего не понимаю в кодерах и дает следующие кривые.

Нижняя правая группа графиков как раз мой случай, кривая 7.
У них для перфорированного кода при 5 децибелах- Pбитовое на уровне 10^-5, при 4= 10^-4.
Проигрыш по сравнению с кодером без перфорирования (верний правый) составляет что то около 1 дБ.Что я делаю не так?
Есть предположение, что проблема в том, что я работаю с отношением Сигнал-Шум, а в учебнике кривые для Ебита-Ншума.
Если так, то вопрос по поводу того, как привести все к единому стандарту, а то у функции awgn много не ясных для меня параметров.
sigpower - зачем нам указание мощи сигнала в дебиваттах, если мы работаем с относительным значением сигнал шум?
'measured' - взвешенный к чему? К средней мощности сигнала?

Короче говоря, какие параметры нужно установить для моделирования передачи BPSK через AWGN с заданным Eбита/N0?
Я делаю это сначала заменяя нули на -1, а затем подаю полученный вектор в качестве аргумента для функции awgn. потом квантую.

Подскажите, что не так?

ASN
"Помехоустойчивость и эффективность систем передачи информации". Под редакцией А.Г.Зюко.Москва "Радио и связь".1985
Страница 90, таблица 3.4.
Код
speed (1/2), d=10 (11)
speed (2/3), d=06 (1110)
speed (3/4), d=05 (111001)
speed (4/5), d=04 (11101010)
speed (5/6), d=04 (1110011001)
speed (6/7), d=03 (111010011001)
speed (7/8), d=03 (11101010011001)

На место выколотых бит заносится 0.
Muscat
Да спасибо, только вопрос не об этом. У меня как раз и стоит такой вектор перфорирования, выкалывание 4 и 5 бита.
Вопрос в том что заносить и как декодировать?

Вы предлагаете заносить просто нули, я уже проверял такой вариант, он плохой, лучше заносить чередующиеся слабые нули и единицы. Еще лучше, чтобы при вычислении метрики этот бит не принимал участия. Пытаюсь понять, есть ли еще какой третий вариант.
Grumbler_2002
Сразу уточню, чтобы было меньше вопросов, что Ваша кривая у Кларка и Кейна 6, а не 7, поскольку параметр v=k-1. Глубина декодирования для данной скорости у Вас какая? Учтите, что все графики даются без квантования, то есть будут потери, которые надо тоже оценить.
Muscat
Глубина декодирования 64, увеличение ее не приносит заметно улучшения, так же как и число уровней квантования - 8 уровней дает проигрыш по сравнению с бесконечностью что то там около 0.5 дБ.
Сейчас считаю 3 кривых БЕР, для чистого потока, для перфорированного и для системы без кодирования. Досчитаю, покажу. По уровню 10^-4 ожидается проигрыш между чистым и перфорированным около 3 дБ.

рассчиталась следующая кривуля.


"Загиб" вверх синего графика связан с тем, что расчет шел для 100 000 бит, так что ошибку по уровню 10^-4 он оценил не вполне корректно. Зеленый график посчитан для 1М бит.

Короче говоря этот график подтвердил мои сомнения в том, что введение перфорации это вовсе не хороший способ увеличить скорость пожертвовав парой дБ, а достаточно сомнительная процедура, так как видно что при сигнал-шуме в 4дБ неперфорированный кодек справляется с задачей выдавая ошибку на уровне 10^-4, а перфорированный работает даже хуже, чем "чистый" поток.
Из этого графика так же можно сделать вывод, что применение такого кодера целесообразно в достаточно хороших каналах, где уровень сигнала на 10дБ выше шума и где нужно исправлять совсем уж редкие ошибки, то есть там где "синий" график уже ощутимо удалиться от "красного".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.