2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Реадизация свёрточного кодера
Сообщение03.11.2011, 16:47 
Аватара пользователя


07/07/10
100
Нижний Новгород
Здравствуйте!

Передо мной стоит задачка, реализовать свёрточный кодер.(самый обычный кодер из стандарта 802.11.а)

Дано:

Функциональная схема:
Изображение

Два образующий поленома: $g_{0} = 133_{8}, g_{1} = 171_{8}$

Темп кодирования:$ R = 1/2$

Разрядность: $k = 7$


Хочу реализовать это на СИ.

У меня есть поток бит, нужно получить из них кодированную последовательность.

Помогите пожалуйста ссылками, или кодом(если доводилось встречать такое). Сам конечно-же искал, то ничего полезного не обнаружил.

 Профиль  
                  
 
 Re: Реадизация свёрточного кодера
Сообщение04.11.2011, 10:40 
Аватара пользователя


07/07/10
100
Нижний Новгород
Кажется нашёл то что мну нужно написанное на языке Паскаль(если не ошибаюсь). Помогите перевести в си цикл while :)


код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
program KodDemo;
 {$F+,R+}
 uses StrBit16;
var NameIs, NameRez : String;
 FIn, FOut : PBitFile;
 Reg1, Reg2, RegCoder: PStr_bit;
 i : integer; PrBit : byte;
begin
 Writeln('Пpогpамма генерации кодированного сигнала СК с R=1/2');
 write('Введите имя файла c обрабатываемыми данными : ');
 readln(NameIs);
 Write('Имя файла результата: '); Readln(NameRez);
 FIn := New(PBitFile, Init(8192,4096)); {Выделение памяти}
 FOut := New(PBitFile,Init(8192,4096)); {Выделение памяти}
 FIn^. OpenBitFile  (NameIs, btOpenRead); {Открытие файла}
 FOut^.OpenBitFile(NameRez, btCreate);
 { Задание регистров СК с R=1/2 }
 Reg1 := New(PStr_Bit,Init(7)); Reg1^.Init_Sim('1111001');
 Reg2 := New(PStr_Bit,Init(7)); Reg2^.Init_Sim('1011011');
 RegCoder := New(PStr_Bit,Init(7)); RegCoder^.Init_1;
 PrBit := Fin^.ReadBit;
 while PrBit < 2 do begin
 RegCoder^.BitDisplase(PrBit);
 FOut^.WriteBit( RegCoder^.ModReg(Reg1, 0) );
 FOut^.WriteBit( RegCoder^.ModReg(Reg2, 0) );
 PrBit := Fin^.ReadBit;
end;
 FIn^.CloseBitFile; {Закрытие обрабатываемых файлов}
 FOut^.CloseBitFile;
Dispose(FIn,Done); Dispose(FOut,Done); {Освобождение памяти}
 Dispose(Reg1,Done); Dispose(Reg2,Done);
 writeln('конец обpаботки');
end.



Кажется это не совсем паскаль, а надстройка над ним... Битовая переменная RegCoder имитирует работу регистра сдвига. Процедура BitDisplase обеспечивает сдвиг данных в регистре, а процедура ModReg вычисляет результат сложения по модулю 2 бит данных, находящихся в регистре на позициях, заданных битовыми переменными Reg1 и Reg2.

 Профиль  
                  
 
 Re: Реадизация свёрточного кодера
Сообщение04.11.2011, 12:29 
Аватара пользователя


07/07/10
100
Нижний Новгород
Всё почти разобрался, только вот что делают эти две строчки?

Используется синтаксис Pascal
 FOut^.WriteBit( RegCoder^.ModReg(Reg1, 0) );
  FOut^.WriteBit( RegCoder^.ModReg(Reg2, 0) );

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group