На склад поступили жидко-кристаллические индикаторы и дисплеи от KSE

IEEE 802.11 Viterbi decoding with C

Новичок
 
Регистрация: 05.02.2012
Сообщений: 3
Репутация: 10
 
05.02.2012 22:43 #1
Здравствуйте!

Так уж случилось что через год мне придётся защищать дипломную работу, тема работы - "Wireless Simulator"

За основу взят документ: http://standards.ieee.org/getieee802...02.11-2007.pdf

Сейчас я закончил стадию кодирования, сделал всё точь-в-точь как описано в параграфе 17.3.5.5 Convolutional encoder

[size=]The DATA field, composed of SERVICE, PSDU, tail, and pad parts, shall be coded with a convolutional
encoder of coding rate R = 1/2, 2/3, or 3/4, corresponding to the desired data rate. The convolutional encoder
shall use the industry-standard generator polynomials, g0 = 1338 and g1 = 1718, of rate R = 1/2, as shown in
Figure 17-8. The bit denoted as “A” shall be output from the encoder before the bit denoted as “B.” Higher
rates are derived from it by employing “puncturing.” Puncturing is a procedure for omitting some of the
encoded bits in the transmitter (thus reducing the number of transmitted bits and increasing the coding rate)
and inserting a dummy “zero” metric into the convolutional decoder on the receive side in place of the
omitted bits. The puncturing patterns are illustrated in Figure 17-9. Decoding by the Viterbi algorithm is
recommended.[/size]




На вход кодирующей функции поступает такая последовательность:
10101010101010101010101010101010101010101010101010 1010101010101010101010101010101010101010101010

[syntax lang="c"]W8 * WSDecodeBits(W8 *bitSeq)
{
W8 *buf;

W8 reg[] = "1111111";
W8 g1[] = "1011011";
W8 g2[] = "1111001";
W16 i, j = 0;
W16 curBit;
W16 res;

buf = (W8*)malloc(WS_RAW_MSG_SIZE * 2);

if ( NULL == buf )
{
WSFailureReport_m(OUT_OF_MEMORY);
}

for (i=0; i<WS_RAW_MSG_SIZE; i++)
{
curBit = bitSeq[i]-'0';

(void)WSbitDisplase(curBit, (char**)reg);
(void)WSxor(reg, g1, &res);

if (res)
{
buf[j++] = (char)'1';
}
else
{
buf[j++] = (char)'0';
}

(void)WSxor(reg, g2, &res);

if (res)
{
buf[j++] = '1';
}
else
{
buf[j++] = '0';
}
}

buf[WS_RAW_MSG_SIZE * 2] = '\0';

return buf;
}[/syntax]


В итоге на выходе мы имеем:
11001011011111001100110011001100110011001100110011 00110011001100110011001100110011001100110011001100 11001100110011001100110011001100110011001100110011 001100110011001100110011001100110011001100


Всё вроде бы хорошо, и замечательно. Было.... пока я не захотел реализовать декодер(Витерби - судя по документации)

Перерыл кучу сайтов, кучу форумов, самый адекватный код видел на сайте http://www.eccpage.com/ Но после пары дней безуспешных попыток к декодированию пришёл к выводу что он байт-ориентированный.. У меня же лимитируется процесс передачи бит. Задачка как мне до сих пор кажется вполне решаемая и не сложная. Но вот охота послушать ваши мнения. Как стоит написать код для декодирования, если такой уже существует пожалуйста делитесь, если есть какая-либо литература по этому вопросу(кроме Скляра) делитесь тоже. Интересует именно программная реализация, как работает в теории ясно.









Дополнение:

Функция: WSbitDisplase
[syntax lang="c"]W16 WSbitDisplase(W16 b, W8 **reg)
{
int i;

for(i=6;i>0;i--)
{
*((char*)reg+i) = *((char*)reg+i-1);
}

*((char*)reg) = (char)b + 48;

return 0;
}[/syntax]


Функция: WSxor
[syntax lang="c"]int WSxor(char *a, char *mask, int *res)
{
int i, tmp;
tmp = 0;
for(i=0;i<7;i++)
{
if (*(mask+i) == (char)'1')
{
tmp += *(a+i) - '0';
}
}

if ( !(tmp%2) )
{
*res = 0;
}
else
{
*res = 1;
}

return 0;
}[/syntax]
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей.
Новичок
 
Аватар для First
 
Регистрация: 22.03.2006
Сообщений: 31
Записей в дневнике: 1
Репутация: 18
8 13
0 7
 
08.02.2012 21:00 #2
Посмотрите в книге Морелос-Сарагоса Р. "Искусство помехоустройчивого кодирования", она есть на русском, по-моему там неплохо написано об этом декодере. На сайте http://the-art-of-ecc.com/ этой книги есть много программ кодеров-декодеров, вроде и Витерби есть.

А о чем ваш диплом если не секрет?
Оценка
Новичок
 
Регистрация: 09.02.2011
Сообщений: 4
Репутация: 10
 
10.02.2012 10:35 #3

Viterbi decoding with C

Если вопрос еще актуален, предлагаю взглянуть на реализацию кодека в GNU Radio: viterbi. Может будут интересными ссылки на открытые проекты GNU Radio wireless и отечественный проект Wimax-scanner.
Удачи.
Оценка
Новичок
 
Регистрация: 05.02.2012
Сообщений: 3
Репутация: 10
 
21.02.2012 23:04 #4
Огромное спасибо за ответы!

Мой диплом представляет собой симулятор для анализа потерь, snr, многолучёвости, и тп. Ничего особо сложного, фактически просто проверка основных результатов (уже полученных).

Сейчас попробовал кодер/декодер с GNU Radio, дело в том что это реальная, рабочая вещь, кодирует - декодирует реальную информацию..

А мне же нужно кодировать - декодировать всего-то 300 - 500 бит.

У меня задача - показать наглядно, на примерах из нулей и единиц. Вот я и изобретаю(как сейчас уже начинаю понимать) велосипед...
Оценка
Новичок
 
Регистрация: 09.02.2011
Сообщений: 4
Репутация: 10
 
22.02.2012 12:56 #5

GSMSP

Понятно.
Могу предложить декодер Витерби из проекта GSM Scanner Project (GSMSP), предельно подробно выполненный в MatLab в виде m-файла. Декодер предназначен для декодирования L2-сообщений GSM (456 битов сверточного кода со скоростью 1/2). Если будет интерес, могу предоставить ссылку (или hackchina.com в помощь ).
Оценка
Новичок
 
Регистрация: 05.02.2012
Сообщений: 3
Репутация: 10
 
26.02.2012 15:52 #6
Привет, да! Поделись пожалуйста m-файлом, возможно его удастся транслировать в СИ
Оценка
Новичок
 
Регистрация: 09.02.2011
Сообщений: 4
Репутация: 10
 
28.02.2012 09:57 #7

GSMSP

Удачи!
Вложения
Тип файла: zip channel_dec_sacch.zip (2.2 Кб, 0 просмотров)
Оценка
Ответ
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 18:07.
Обратная связь РадиоЛоцман Вверх