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

 
 
> реализация перфорации в декодере Витерби, Проблема с описанием канала или самой перфорацией?
Muscat
сообщение Oct 22 2010, 13:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



В процессе реализации декодера Витерби (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. потом квантую.

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



--------------------
Because it's there
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Muscat
сообщение Oct 25 2010, 11:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



Глубина декодирования 64, увеличение ее не приносит заметно улучшения, так же как и число уровней квантования - 8 уровней дает проигрыш по сравнению с бесконечностью что то там около 0.5 дБ.
Сейчас считаю 3 кривых БЕР, для чистого потока, для перфорированного и для системы без кодирования. Досчитаю, покажу. По уровню 10^-4 ожидается проигрыш между чистым и перфорированным около 3 дБ.

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


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

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

Сообщение отредактировал Muscat - Oct 25 2010, 11:27


--------------------
Because it's there
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 21:48
Рейтинг@Mail.ru


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