Понеаснни. Моделирование систем связи в matlab
Скачать 2.78 Mb.
|
– задает способ масштабирования созвездия. Предполагает варианты: Min. distance between symbols, Average Power, и Peak Power; Phase offset (rad) – фаза нулевой точки созвездия сигнала; Samples per symbol – дискретизация выходного сигнала, ставящегося в соответствие каждому входному двоичному кодовому слову. 3.7 Имитаторы каналов и характеристик приемо-передающего тракта 3.7.1 Канал с аддитивным белым Гауссовским шумом (AWGN Channel) Блок AWGN смешивает входной сигнал с белым Гауссовским шумом. Его плотность распределения может задаваться прямо или косвенно с помощью следующих режимов: Signal to noise ratio (E b /N 0 ) – отношение битовой энергии сигнала к спектральной плотности мощности шума в децибелах; Signal to noise ratio (E s /N 0 ) – отношение символьной энергии сигнала к спектральной плотности мощности шума в децибелах; Signal to noise ratio (SNR) – отношение уровней мощности входного сигнала и шума в децибелах; Variance from mask – в диалоговом окне задается, непосредственно, плотность вероятности шума; Variance from port – функция, описывающая дисперсию, подается на отдельный вход блока. Настраиваемые параметры блока: Initial seed – номер псевдослучайной последовательности; Mode – режим, определяющий дисперсию шума (E b /N 0 , E s /N 0 и т.д.); Number of bits per symbol – количество бит, приходящееся на каждый входной символ. Поле появляется только в режиме E b /N 0 ; Input signal power (watts) – среднеквадратичная мощность входных символов. Поле появляется в режимах E b /N 0 , E s /N 0 или SNR; Symbol period (s) – период символов входного сигнала в секундах. Поле появляется только в режимах E b /N 0 или E s /N 0 ; Variance – Дисперсия белого Гауссовского шума. Поле активно только в режиме Variance from mask. 3.7.2 Канал с замираниями Райса (Rician Fading Channel) Блок реализует среду распространения с замираниями Райса для узкополосным систем, то есть, применим только для моделей использующих 86 узкополосные (baseband) модуляторы. Этот блок полезен для моделирования мобильных беспроводных систем, в которых передаваемый сигнал может достигнуть приемника как в отраженном виде, так и по пути прямой видимости. Настраиваемые параметры блока: K-factor – отношение мощности сигнала, проходящего по прямому пути к мощности рассеянного (отраженного) сигнала. Отношение задается линейно (не в децибелах); Maximum Doppler shift (Hz) – положительная величина, задающая максимальный Доплеровский сдвиг частоты, который характеризует относительной движение между передатчиком и приемником; Sample time – период элементов во входном сигнале; Delay (s) – величина, задающая задержку распространения в секундах; Gain (dB) – величина, задающая уровень сигнала в децибелах; Initial seed – псевдослучайная последовательность для Гауссовского генератора шума. 3.7.3 Канал с замираниями Релея (Multipath Rayleigh Fading Channel) Блок осуществляет узкополосное моделирование среды распространения с замираниями Релея. Так же как и канал с замираниями Райса, блок применяется для моделирования мобильных беспроводных систем. В многолучевом канале распространения сигнал проходит от передатчика до приемника несколькими разными путями, возможно имеющими разную протяженность и вносящими разную временную задержку. Настраиваемые параметры блока: Maximum Doppler shift (Hz) – положительная величина, задающая максимальный Доплеровский сдвиг частоты, который характеризует относительной движение между передатчиком и приемником; Sample time – период элементов во входном сигнале; Delay vector (s) – вектор, определяющий величину задержки распространения для каждого пути в секундах; Gain vector (dB)– вектор, определяющий уровень сигнала в децибелах для каждого пути распространения; Normalize gain vector to 0 dB overall gain – распределяет уровень сигнала в канале таким образом, что уровень для всех путей распространения составляет ноль децибел; 87 Initial seed – псевдослучайная последовательность для Гауссовского генератора шума. 3.7.4 Модель нелинейных характеристик (Memoryless Nonlinearity) Блок Memoryless Nonlinearity предназначен для моделирования искажений сигнала обусловленных использованием нелинейных усилителей. В качестве входного сигнала используется комплексная форма сигнала. Блок Memoryless Nonlinearityможет реализовать пять разных методов моделирования нелинейности: Cubic polynomial; Hyperbolic tangent; Saleh model; Ghorbani model; Rapp model. Блок содержит подсистему, которая вне зависимости от выбранного метода действует по общему принципу: Изменяет сигнал на заданную величину; Разделяет его на модуль и фазовую составляющую; Применяет преобразование AM-to-АM к амплитуде сигнала согласно выбранному методу, получая таким образом выходную амплитуду; Применяет преобразование AM-to-PM к амплитуде сигнала согласно выбранному методу, и прибавляет полученный результат к фазовой составляющей сигнала, получая выходную фазу; Из этих двух реальных значений получает одно комплексное и изменяет уровень сигнала согласно заданному выходному усилению. 3.8 Цифровые фильтры Блоки Фильтр типа «Приподнятый косинус»для предающего и приемного концов (Raised Cosine Transmit Filter и Raised Cosine Receive Filter соответственно) предназначены для ограничения спектра модулированного сигнала на передающем и приемном концах. На выходе модулятора фильтр установлен для уменьшения передаваемой в канал мощности и ограничения бесконечного спектра исходного сигнала, а на входе модулятора – затем, чтобы уменьшить мощность принимаемых шумов. Строго говоря, любой фильтр типа «приподнятый косинус» является НЧ фильтром, а для заявленных выше операций необходим полосовой фильтр. Выбор упомянутых блоков объясняется следующим образом. Блоки Raised Cosine Transmit Filter и Raised Cosine Receive Filter являются узкополосными моделями соответствующих фильтров. Как отмечалось выше, при 88 узкополосном представлении модулированного сигнала несущая частота не используется, и спектр сигнала можно сравнить со спектром последовательности прямоугольных импульсов, а для ограничения такой полосы частот нужен именно НЧ фильтр. Импульсная характеристика фильтра у которого Rolloff Factor равен α, для периода входного символа Т имеет вид: 2 2 2 sin( / ) cos( / ) ( ) ( / ) (1 4 / ) t T t T h t t T t T (3.5) На рисунке 3.3 приведена осциллограмма, иллюстрирующая изменения, происходящие с сигналом QAM-16 после его прохождения через фильтр. Для наглядности на сигнал непосредственно перед осциллографом наложена несущая частота (в канал передается лишь узкополосное представление сигнала). Настраиваемые параметры блока: Filter type – тип фильтра: квадратный корень или нормальный; Group delay – натуральное число, обозначающее число символьных периодов между началом отклика фильтра и его пиком; Rolloff factor – коэффициент скругления характеристики фильтра, задается в пределах от нуля до единицы; Input sampling mode – тип входного сигнала: число или матрица; Upsampling factor – целое число, большее 1, определяющее увеличение частоты дискретизации сигнала на выходе фильтра; Filter gain – характеризует коэффициенты фильтра. 3.9 Канальное кодирование Кодер канала осуществляет преобразование сигнала по трем направлениям: Обнаружение и исправление ошибок – Error Detection and Correction; Перемежение – Interleaving; Скремблирование – Scrambling. Каждое из этих направлений представлено в программе Simulink соответствующими библиотеками. 89 Рисунок 3.3 – Пример использования фильтра Raised Cosine Transmit Filter, для сигнала модулированного QAM-16 3.9.1 Error Detection and Correction – Обнаружение и исправление ошибок Библиотека «Error Detection and Correction» состоит из трех подбиблиотек: Блочное кодирование – Block; Сверточное кодирование – Convolutional; Вычисление циклических сумм – CRC. Блочное кодирование – Block Coding Пакет поддерживает работу с произвольными линейными блочными кодами. Имеется также дополнительная поддержка нескольких более узких классов кодов – кодов Хэмминга, кодов Боуза – Чоудхури – Хоквингема (БЧХ) и кодов Рида – Соломона. Кодер Хэмминга – Hamming Coder 90 Коды Хэмминга являются одним из подклассов циклических блочных кодов. Порождающий полином для кодов Хэмминга неприводим и примитивен, а длина кодированного блока равна 2 m – 1. Порождающая и проверочная матрицы для кодов Хэмминга генерируются функцией hammgen. Блок производит код Хэмминга из К информационных битов с длиной кодового слова N. Длина кодового слова N должна иметь форму 2 М – 1. Где М – целое положительное число большее или равное 3. Тогда К = N – M. Входной сигнал должен содержать ровно К элементов. Выходная последовательность – вектор длиной N. Настраиваемые параметры блока: Codeword length N –Длина кодового слова; Message length K, or M-degree polynomial –Длина информационного слова, или вектор двоичных чисел, представляющих собой простейший полином для полей Галуа. Линейный кодер – Binary Linear Coder Линейный блочный код в общем случае описывается порождающей матрицей (generator matrix). Кодирование блока (вектора) производится путем его умножения на порождающую матрицу. Помимо порождающей, существует проверочная матрица кода (parity-check matrix). Она может использоваться для обнаружения ошибок – при отсутствии ошибок умножение кодированного блока на проверочную матрицу должно давать нулевой вектор. Преобразование порождающей матрицы в проверочную и обратно осуществляется функцией gen2par. Если умножение кодированного блока на проверочную матрицу не дает нулевого вектора, то полученный результат (его называют синдромом – syndrome) позволяет определить, какие именно символы были искажены в процессе передачи. Если код является двоичным (то есть символы могут принимать только значения 0 и 1), это позволяет исправить ошибки. Декодирование линейного блочного кода, таким образом, можно осуществить с помощью таблицы, в которой для каждого значения синдрома указан соответствующий вектор ошибок. Создать такую таблицу на основании проверочной матрицы кода позволяет функция syndtable. Функция gfweight позволяет определить кодовое расстояние для линейного блочного кода по его порождающей или проверочной матрице. Блок Линейного кодера генерирует линейный код, используя заданную генерирующую матрицу. К – количество информационных битов. Генерирующая матрица должна иметь К строк. Если N – длина кодового слова, то генерирующая матрица должна иметь N столбцов. 91 Входной сигнал должен содержать ровно К элементов. Выходная последовательность – вектор длиной N. Настраиваемые параметры блока: Generator matrix – K N матрица, где К – количество информационных битов, N – длина кодового слова. Циклический кодер – Binary Cyclic Coder Циклические коды – это подкласс линейных кодов, обладающие тем свойством, что циклическая перестановка символов в кодированном блоке дает другой возможный кодированный блок того же кода. Для работы с циклическими кодами в пакете Communications имеются две функции. Задав число символов в кодируемом и закодированном блоках, с помощью функции cyclpoly можно получить порождающий полином циклического кода. Далее, использовав этот полином в качестве одного из параметров функции cyclgen, можно получить порождающую и проверочную матрицы для данного кода. Блок циклического кодера производит систематический циклический код из К информационных битов с длиной кодового слова N. Длина кодового слова N должна иметь форму 2 М – 1. Где М – целое положительное число большее или равное 3. Входной сигнал должен содержать ровно К элементов. Выходная последовательность – вектор длиной N. Настраиваемые параметры блока: Codeword length N –Длина кодового слова; Message length K, or M-degree polynomial –Длина информационного слова, или вектор двоичных чисел, представляющих собой простейший образующий полином. Кодер БЧХ – BCH Coder Коды БЧХ являются одним из подклассов циклических блочных кодов. Для работы с ними функции высокого уровня вызывают специализированные функции bchenco (кодирование) и bchdeco (декодирование). Кроме того, функция bchpoly позволяет рассчитывать параметры или порождающий полином для двоичных кодов БЧХ. Блок БЧХ кодера производит код BCH из К информационных битов с длиной кодового слова N. b и К задаются в качестве параметров согласно таблицам [N-K-t]. Входной сигнал должен содержать ровно К элементов. Выходная последовательность – вектор длиной N. 92 Настраиваемые параметры блока: N – Длина кодового слова; bДлина информационного слова. Кодер Рида-Соломона – Binary RS Coder Коды Рида – Соломона являются одним из подклассов циклических блочных кодов. Это единственные поддерживаемые пакетом Communications коды, которые работают не с однобитовыми, а с многобитовыми символами. Для работы с кодами Рида – Соломона функции высокого уровня вызывают специализированные функции rsenco (кодирование) и rsdeco (декодирование). Кроме того, функции rsencode и rsdecode позволяют использовать при кодировании и декодировании экспоненциальный формат данных, а функции rsencof и rsdecof осуществляют кодирование и декодирование текстового файла. Наконец, функция rspoly генерирует порождающие полиномы для кодов Рида-Соломона. Блок кодера производит код Рида-Соломона из К информационных битов с длиной кодового слова N. Символы кода это двоичные последовательности длиной M, соответствующие элементам полей Галуа GF(2 M ), где первый бит в каждой последовательности – наиболее значимый бит. Входной сигнал – двоичный вектор, длиной M К элементов. Выходная последовательность – вектор длиной M N. M должно быть больше или равным log2(N+1). Есть возможность изменить b, задавая специальный образующий полином. Если N меньше 2 М -1, то блок использует упрощенный код Рида-Соломона. (N, K) код может исправить до (N-K)/2 символьных (не битовых) ошибок в каждом кодовом слове. Настраиваемые параметры блока: Codeword length N –Длина кодового слова M N; Message length K –Длина информационного слова M N ; Specify primitive polynomial –Выбрав данный параметр, можно задать простейший полином двоичным вектором; Primitive polynomial –Двоичный вектор, представляющий собой простейший полином со степенями в порядке убывания; Specify generator polynomial –Выбрав данный параметр, можно задать образующий полином десятичным вектором; Generator polynomial –Десятичный вектор, представляющий собой простейший полином со степенями в порядке убывания. Сверточное кодирование – Convolutional Coding 93 Кодер для сверточного кода представляет собой устройство с памятью. Поступающие на вход кодера символы по определенному закону меняют внутреннее состояние кодера. Выходные символы (символы кодированного сообщения) зависят от входных символов и от внутреннего состояния кодера. Этот процесс реализуется с помощью функции convenc. На рисунке 3.4 представлена схема сверточного кодера со скоростью кода 2/3. Рисунок 3.4 – Схема сверточного кодера (2/3) В версии 2.0 пакета Communications по сравнению с предыдущими версиями сильно изменен формат представления сверточных кодов – теперь они описываются наглядной таблицей переходов (функциями poly2trellis и istrellis). Также существенно изменена реализация мягкого декодирования сверточных кодов. Сверточный кодер – Convolutional Coder Сверточный кодер кодирует последовательность входных двоичных векторов в последовательность выходных двоичных векторов. При поступлении на вход k двоичных потоков (возможно 2 k потоков) длина входного вектора равняется L k, при некотором целом положительном L. Подобно этому кодер производит n выходных двоичных потоков (возможно 2 n потоков) при длине выходного вектора L n. L – определяет количество входных бит, обрабатываемых за один такт. Настраиваемые параметры блока: Trellis structure –MATLAB-структура, которая содержит Треллис- описание сверточного кодера; Reset – Определяет условия, при которых состояние кодера будет сброшено на «0»: 94 None – никогда; On each frame – после каждого кадра; On nonzero Rst input – при поступлении сигнала на порт «Rst». Декодер Витерби – Viterbi Decoder Декодирование сверточного кода производится по алгоритму Витерби функцией vitdec. Поддерживаются мягкое и жесткое декодирование. Если сверточный код использует алфавит из 2 n возможных символов, то длина входного вектора равна L n для некоторого положительного L. L – определяет количество входных бит, обрабатываемых за один такт. Настраиваемые параметры блока: Trellis structure –MATLAB-структура, которая содержит Треллис- описание сверточного кодера. Должна использоваться такая же структура, как и в кодере; Decision type –Тип принимаемого решения: Quantized – квантованное решение [+1, -1] Hard Decision – «жесткое» решение [0, 1] Soft Decision – «мягкое» решение Number of soft decision bits –Количество бит для принятия «мягкого» решения для каждого входа; Traceback depth –Число Треллис-ветвей для построения пути принятия решения; Operation mode –Режим сброса состояния декодера; Reset input –Специальный порт для сброса состояния декодера [7]. Вычисление циклических сумм – Cyclic Redundancy Check Подбиблиотека состоит из различных устройств для добавления и проверки циклических сумм. Генератор циклических сумм – CRC-N Generator Блок генерирует CRC-код для каждого входного двоичного вектора и добавляет код к нему. Данный блок предоставляет возможность выбора образующего полинома для CRC алгоритма из списка наиболее широко используемых полиномов. N – степень образующего полинома. Таблица 4.2 показывает варианты образующих полиномов. Настраиваемые параметры блока: CRC-N method –Образующий полином для CRC-алгоритма; 95 Initial states –Двоичный вектор длиной, равной степени образующего полинома, определяющий начальные состояния внутренних регистров сдвига; Таблица 4.2 – Образующие полиномы CRC метод Образующий полином Количе ство бит CRC-32 x 32 +x 26 +x 23 +x 22 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 +x 5 +x 4 +x 2 +x+1 32 CRC-24 x 24 +x 23 +x 14 +x 12 +x 8 +1 24 CRC-16 x 16 +x 15 +x 2 +1 16 Reversed CRC-16 x 16 +x 14 +x+1 16 CRC-8 x 8 +x 7 +x 6 +x 4 +x 2 +1 8 CRC-4 x 4 +x 3 +x 2 +x+1 4 Checksums per frame –Число циклических сумм, вычисляемых генератором на каждый кадр. Детектор циклических сумм – CRC-N Syndrome Detector Блок подсчитывает контрольные суммы для всего входного кадра. С первого выхода блока поступают информационные слова с удаленными контрольными суммами. Со второго выхода блока поступает вектор, длина которого равна количеству контрольных сумм, а каждый элемент – результат проверки. Настраиваемые параметры блока: CRC-N method –Образующий полином для CRC-алгоритма; Initial states –Двоичный вектор длиной, равной степени образующего полинома, определяющий начальные состояния внутренних регистров сдвига; Checksums per frame –Число циклических сумм, вычисляемых генератором на каждый кадр. 3.9.2 Interleaving – перемежение Библиотека «Interleaving» состоит из двух подбиблиотек: Блочное перемежение – Block; Сверточное перемежение – Convolutional. Блочное перемежение – Block Interleaving Пакет поддерживает работу с произвольными блочными перемежителями. Имеется также дополнительная поддержка нескольких 96 более узких классов перемежителей – матричное перемежение, алгебраическое перемежение и перемежение по псевдослучайному закону. Алгебраический перемежитель – Algebraic Interleaver Алгебраический перемежитель реорганизует входной двоичный вектор используя алгебраически заданный закон перемежения. Для N элементов входного вектора задается тип таблицы перемежения из списка с соответствующими параметрами. Настраиваемые параметры блока: Type –Тип таблицы перемежения: Welch-Costas; Takeshita-Costello; Number of elements -Количество элементов N во входном векторе; Multiplicative factor –Коэффициент, используемый при расчете выходного вектора. Используется только при типе таблицы Takeshita- Costello; Cyclic shift – Число на которое блок сдвигает индексы при вычислении таблицы коммутации. Используется только при типе таблицы Takeshita- Costello; Primitive element –Простейший элемент |