|
|
  |
Golay (12,6,6) |
|
|
|
Feb 19 2015, 21:26
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Спасибо, витерби выглядит весьма привлекательно к задаче. Почитал лекцию: http://web.mit.edu/6.02/www/f2010/handouts/lectures/L9.pdfНашел подходящую готовую реализацию: http://gnuradio.org/redmine/attachments/do...io-3.7.5.tar.gzОкно декодирования 64 бита (в принципе, приемлемо, для 81-битный MELPE-блок даст лишние 53 mS латентности и потребует буферизации 67.5 mS фрейма перед проигрыванием). Выдача декодера - каждые 16 бит, тоже приемлемо. K=7, rate=1/2. Мягкое декодирование - именно то, что может существенно снизить BER в данном случае, надо подумать о вариантах адекватной оценки Es/N0 в демодуляторе. Как думаете, какой BER можно скомпенсировать и в какой мере? Буду пробовать.
|
|
|
|
|
Feb 19 2015, 21:53
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(GeGeL @ Feb 19 2015, 22:33)  Спасибо, сейчас почитаю о витерби. Я так понял, он использует 7-битные символы в виде блока произвольной длины? Вариант 2*12 блоков выглядит интересным. Что он может скорректировать? Можно ли на входе использовать мягкие биты (в моем случае соотношение энергий в предполагаемых позициях пульсов в виде float)? Нет 7 - это просто память регистра, используемого в кодере. Этот код сверточный, так что блоки могут быть любыми, больше примерно 30 бит. На счет BER на сколько помню, жесткое декодирование дает выигрыш ~7 dB ну и еще ~2.5 dB даст мягкое декодирование. Это очень грубая оценка. К сожалению под рукой нет weight enumerator function стандартного кода, чтобы посчитать BER. Можете поискать в интернете кривые BER кода (133, 171) чтобы прикинуть результаты мягкого декодирования.
Сообщение отредактировал andyp - Feb 19 2015, 21:57
|
|
|
|
|
Feb 19 2015, 22:13
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Serg76 @ Feb 20 2015, 00:56)  наверное, это все-таки для каскадной схемы RSV, для чистого Витерби многовато Может быть. Книжек под рукой нет. Вот картинка для мягкого 8-уровней квантования:
Сообщение отредактировал andyp - Feb 19 2015, 22:13
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 19 2015, 22:38
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Serg76 @ Feb 20 2015, 01:36)  как я и отмечал выше, где-то 5,5 дБ для Pb=1e-6 ))) Там еще один стандартный код есть с K=9 (полиномов не помню). У него dfree побольше, он получше будет, но декодер сложнее PS Добрался до Lin Costello и понял, откуда у меня 7 dB в голове оказалось  это asymptotic coding gain как 10log10(Rate*d_free/2)
Сообщение отредактировал andyp - Feb 19 2015, 22:48
|
|
|
|
|
Feb 19 2015, 22:52
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(andyp @ Feb 20 2015, 01:38)  Там еще один стандартный код есть с K=9 (полиномов не помню). У него dfree побольше, он получше будет, но декодер сложнее на самом деле их достаточно, из практических есть даже с К = 15 { 0x45dd, 0x69e3 }, для К = 9 { 0x1af, 0x11d } - под стандарт IS-95 CDMA, да в том же GSM c К =5 { 0x13, 0x1b }, а сложность растет экспоненциально от К
|
|
|
|
|
Feb 20 2015, 06:57
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(andyp @ Feb 20 2015, 03:05)  Сверточные коды с длинным регистром - совершенно забытая сейчас тема. Раньше делали в погоне за d_free. Кстати, да. Я думаю это произошло из-за того, что несмотря на присущие достоинства методов последовательного декодирования (декодирование любых сверточных кодов с большими степенями порождающих полиномов как для мягкого, так и жесткого входа), у них есть один недостаток: в зависимости от уровня канального шума число вычислительных операций для продвижения в каждую следующую кодовую вершину является случайной величиной, что требует наличия достаточно большого объема памяти для буферизации данных, особенно, для мягкого входа, а во времена расцвета сверточного кодирования это было определяющим фактором. Сам как-то из спортивного интереса баловался с Фано, декодировал упоминавшийся здесь код с К = 7, по энергетике, конечно, проигрыш, но по скорости несравнимо выше по сравнению алгоритмом Витерби.
|
|
|
|
|
Feb 20 2015, 11:02
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(GeGeL @ Feb 20 2015, 13:01)  После беглого ознакомления с темой у меня возник конкретный вопрос: очевидно, существует какой-то максимальный исходный ber, начиная с которого, FEC работает эффективно. Например, Голей исправляет любые 3 ошибки в 23-битном слове, т.о. оценочно исходный BER должен быть не хуже 0.13 (13%). Как оценить это значение для Витерби r=1/2, K=7, с окном 64 бита (ориентируясь пока на жесткое декодирование)? Если так же грубо, то сверточный код характеризуется понятием d_free. Для кода r=1/2, K=7 d_free = 10. Оценить вероятность ошибки жесткого декодирования грубо можно по следующей формуле: P_e ~ B*2^(d_free)*p^(d_free/2) Для рассматриваемого кода B = 36. Для BER 1% на входе на выходе получится 3e-6 Только не спрашивайте, откуда я это взял
|
|
|
|
|
Feb 20 2015, 11:44
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(GeGeL @ Feb 20 2015, 13:01)  После беглого ознакомления с темой у меня возник конкретный вопрос: очевидно, существует какой-то максимальный исходный ber, начиная с которого, FEC работает эффективно. Например, Голей исправляет любые 3 ошибки в 23-битном слове, т.о. оценочно исходный BER должен быть не хуже 0.13 (13%). Как оценить это значение для Витерби r=1/2, K=7, с окном 64 бита (ориентируясь пока на жесткое декодирование)? Ошибки не группируются по заказу 3 на блок, в среднем может быть и 3, но например будут встречаться блоки как без ошибок, так и с числом ошибок больше 3, поэтом хорошие коды в принципе имеют большую длину блока, чтобы исправлять неудачные участки с большим количеством ошибок. В вашем случае кодирование может быть не эффективно из-за неудачных последовательностей данных, которые сильно искажаются кодеком, что превышает возможности кода исправлять ошибки.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|