Руководство по работе с пакетом программ TurboSuccess 1.02, страница 5

Данный раздел Вам необходимо прочесть в том случае, если Вы хотите внести какие-либо изменения в программы турбо кодирования-декодирования, модели канала связи и т.д. Для этого Вам потребуются некоторые сведения о структуре исходного кода программы-ядра, навыки программирования на языке C, а также наличие инсталлированного раздела Matlab Compiler в Вашей системе Matlab.

3.2. Структура исходного кода программы-ядра TurboCore.c.

Весь исходный код программы-ядра располагается в одном текстовом файле TurboCore.c. Программа-ядро состоит из следующих функций (по порядку следования в файле):

§  генератор бинарных псевдослучайных чисел RandBin;

§  генератор нормально распределенных псевдослучайных чисел RandNorm;

§  генератор псевдослучайных чисел, распределенных по закону Релея RandRayleigh (используется при моделировании совместного использования турбо кода и сигнальной конструкции из 8 ортогональных сигналов при некогерентном приеме);

§  турбо кодер TurboCoder;

§  функция моделирования характеристик канала связи TurboChannel;

§  турбо декодер TurboDecoder;

§  функция TurboCore, обеспечивающая последовательный запуск всех необходимых подпрограмм в процессе моделирования;

§  функция mexFunction (Gateway Routine), обеспечивающая реализацию интерфейса между средой Matlab и mex приложением.

Далее мы приводим очень короткие описания каждой из функций, т.к. исчерпывающие сведения чрезвычайно тяжело отразить в приемлемом объеме, однако, более подробные сведения можно получить у автора.

Функция RandBin. Генератор бинарной псевдослучайной последовательности, используемый для формирования информационного наполнения пакета, передаваемого по каналу связи. Данная функция использует стандартный генератор псевдослучайных чисел с равномерным распределением из библиотеки языка C. 0 генерируется этой функцией, если значение возвращаемое C функцией rand() меньше среднего значения генерируемых ею чисел, а 1 — в противном случае.

Функция RandNorm. Генерирует последовательность нормально распределенных псевдослучайных чисел с математическим ожиданием 0 и дисперсией 1. Данная функция использует стандартный генератор псевдослучайных чисел с равномерным распределением из библиотеки языка C. Два псевдослучайных нормально распределенных числа генерируются этой функцией как координаты конца вектора величина модуля, которого распределена по закону Релея, а фаза — по равномерному закону [8].

Функция RandRayleigh. Генерирует последовательность псевдослучайных чисел, распределенную по закону Релея с параметром s=1 [9]. Данная функция использует стандартный генератор псевдослучайных чисел с равномерным распределением из библиотеки языка C.

Функция TurboCoder. Осуществляет формирование последовательности проверочных символов турбо кода, выкалывание четных проверочных символов, формирование стабилизирующих последовательностей (устанавливают кодеры составных кодов в нулевые состояния после окончания информационного пакета — по 4 бита на каждый составной код) и формирует массив двоичных символов, предназначенный для передачи по каналу связи (он включает информационные, проверочные символы и стабилизирующие последовательности для каждого составного кода). Биты стабилизирующих последовательностей не перемежаются турбо перемежителем-деперемежителем в этой функции, что улучшает характеристики всей конструкции [10].

Функция TurboChannel. Производит все необходимые операции, связанные с добавлением шума к передаваемому по каналу связи сообщению, формирует значения логарифмов отношений правдоподобия для каждого информационного символа по результатам его приема (с учетом и проверочных символов данного ребра сверточного составного кода), а также проводит необходимые операции модуляции-демодуляции в системе связи без кодирования и подсчитывает вероятность ошибки на бит в ней.