Материал: OPISIS_LAB4

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рисунок 2 – Эквивалентность циклической и линейной сверток для случая циклического префикса

Таким образом, мы заменили линейную свертку на циклическую почти на всей длине символа, добавив циклическое расширение к символу OFDM. На приемнике нас интересует только средняя часть lin_scp_h , которая является выходом канала. Поэтому первый блок в приемнике OFDM удаляет дополнительные символы в начале и конце выходного сигнала. Итоговый вектор – это принятый символ r после удаления циклического префикса.

r = lin_scp_h(Ncp+1:N+Ncp)%cut from index Ncp+1 to N+Ncp

4. Проверка свойства DFT

Свойство DFT, указанное в уравнении (5), можно переписать как

r n IDFT R k

IDFT H k S k

(7)

IDFT DFT h n DFT s nh n s[n]

Чтобы проверить это в Matlab, возьмем N-точечное ДПФ принятого сигнала и CIR.

Тогда мы можем видеть, что ОДПФ произведения ДПФ s и h будет равняться N-точечной циклической свертке векторов s и h

R = fft(r,N); %frequency response of received signal H = fft(h,N); %frequency response of CIR

S = fft(s,N); %frequency response of OFDM signal (non CP) r1 = ifft(S.*H); %IFFT of product of individual DFTs display(['IFFT(DFT(H)*DFT(S)) : ',num2str(r1)]) display(['cconv(s,h): ', numstr(r)]

IFFT ( DFT ( H ) * DFT ( S ) ) : 0.8618 -1.4217 -4.898 -2.316 0.945 0.901 -0.446 2.993

cconv (s , h ) : 0.8618 -1.4217 -4.898 -2.316 0.945 0.901 -0.446 2.993

5. Дискретно-временная реализация CP-OF в основной полосе частот Принципиальная схема упрощенной системы передачи данных OFDM с

циклическим префиксом (CP-OFDM) показана на рисунке 3. Базовым параметром для описания системы OFDM является указание количества подканалов (N), необходимых для отправки данных. Количество подканалов обычно устанавливается равным степени 2,

например {64,256,512,1024, ...}. Размер обратного дискретного преобразования Фурье

(ОДПФ) и дискретного преобразования Фурье (ДПФ) необходимо установить соответствующим.

Передача начинается с преобразования потока исходной информации в N

параллельных подканалов. Для удобства информационный поток d уже представлен как символ из набора {1,2, ..., M}. Символ данных в каждом подканале модулируется с использованием выбранного типа модуляции, такой как BPSK, QPSK или MQAM.

Поскольку это модель с дискретным временем в основной полосе частот, где сигналы представлены в моменты выборки символов, предполагается, что информационный символ в каждом параллельном потоке модулирует единственную ортогональную несущую. На этом этапе модулированные символы X в параллельных потоках можно визуализировать как поступающие из разных ортогональных подканалов в частотной области. Компоненты ортогональных подканалов в частотной области преобразуются во временную область с использованием операции ОДПФ.

Следующая общая функция реализует отображение модуляции (отображение созвездия), показанное на рисунке 3. Функция поддерживает модуляцию MPSK для M

{2,4,8, ...} и модуляцию MQAM, которая имеет квадратное созвездие: M

{4,16,64,256,1024, ···}. Он построен на основе функций mpsk_modulator.m и mqam modulator.m, использованных в предыдущих лабораторных работах.

Рисунок 3 – Имитационная модель с дискретным временем для передачи и приема OFDM

Программа 1: modulation_mapper.m: реализация преобразователя модуляции для

MPSK и MQAM

function [X,ref]=modulation_mapper(MOD_TYPE,M,d) %Modulation mapper for OFDM transmitter

%MOD_TYPE - 'MPSK' or 'MQAM' modulation

%M - modulation order, For BPSK M=2, QPSK M=4, 256-QAM M=256 etc..,

%d - data symbols to be modulated drawn from the set {1,2,...,M} %returns

%X - modulated symbols

%ref -ideal constellation points that could be used by IQ detector if strcmpi(MOD_TYPE,'MPSK'),

[X,ref]=mpsk_modulator(M,d);%MPSK modulation else

if strcmpi(MOD_TYPE,'MQAM'), [X,ref]=mqam_modulator(M,d);%MQAM modulation else

error('Invalid Modulation specified'); end

end;end

Сигнал OFDM – это составной сигнал, который содержит информацию из подканалов. Поскольку модулированные символы X визуализируются как находящиеся в

частотной области, они преобразуются во временную область с помощью ОДПФ. В

приемнике соответствующая обратная операция выполняется блоком ДПФ. Блоки ОДПФ

иДПФ в схеме также можно менять местами, и это не влияет на передачу.

Вканале с временной дисперсией ортогональность поднесущих не может поддерживаться в идеальном состоянии из-за искажения задержки. Эта проблема решается путем добавления циклического расширения (также называемого циклическим префиксом) к символу OFDM [2]. Циклическое расширение добавляется путем

копирования последних символов Ncp из вектора x и вставки его в начало, как показано на рисунке 4. Циклическое расширение символа OFDM преобразует канал линейной свертки в канал, выполняющий циклическую свертку, и это обеспечивает ортогональность поднесущих в канале с временной дисперсией. Он также полностью устраняет помехи от поднесущих, если импульсная характеристика канала короче циклического префикса. В

приемнике добавленный циклический префикс просто удаляется из принятого символа

OFDM.

Рисунок 4 – Добавление циклического префикса в CP-OFDM

Программа 2. add_cyclic_prefix.m: функция для добавления циклического префикса длиной Ncp символов.

function s = add_cyclic_prefix(x,Ncp)

%function to add cyclic prefix to the generated OFDM symbol x that %is generated at the output of the IDFT block

%x - ofdm symbol without CP (output of IDFT block)

%Ncp-num. of samples at x's end that will copied to its beginning

%s - returns the cyclic prefixed OFDM symbol

s = [x(end-Ncp+1:end) x]; %Cyclic prefixed OFDM symbol end

Программа 3. remove_cyclic_prefix.m: функция для удаления циклического

префикса из символа OFDM.

function y = remove_cyclic_prefix(r,Ncp,N)

%function to remove cyclic prefix from the received OFDM symbol r

%r - received ofdm symbol with CP

%Ncp - num. of samples at beginning of r that need to be removed

%N - number of samples in a single OFDM symbol

%y - returns the OFDM symbol without cyclic prefix y=r(Ncp+1:N+Ncp);%cut from index Ncp+1 to N+Ncp

end

На стороне приемника устройство обратного преобразования для демодуляции

MPSK и MQAM может быть реализовано с помощью простого детектора IQ, который использует метрику минимального евклидова расстояния для демодуляции.

6. Характеристики CP-OFDM в канале с АБГШ

Соберем итоговую схему для моделирования системы с OFDM. Код поддерживает два типа базовой модуляции для OFDM – MPSK или MQAM. Он генерирует случайные символы данных, модулирует их с использованием выбранного типа модуляции,

преобразует модулированные символы в частотную область с помощью операции ОДПФ и добавляет циклический префикс для формирования символа OFDM. Затем к результирующим символам OFDM добавляется вектор, соответствующий воздействию АБГШ, который соответствует заданному значению Eb / N0 . На стороне приемника циклический префикс удаляется из принятого символа OFDM, выполняется ДПФ, а затем символы отправляются через устройство обратного преобразования для получения оценки исходных символов. Обратный преобразователь реализован с помощью простого детектора IQ, который использует метрику минимального евклидова расстояния для демодуляции. Наконец, частоты ошибок символов вычисляются и сравниваются с теоретическими кривыми частоты ошибок символов для соответствующих модуляций в условиях канала с АБГШ. На рисунке 5 показано, что моделируемые точки коэффициента ошибок символа хорошо совпадают с кривыми теоретической частоты ошибок символа.

Программа 4. ofdm_on_awgn.m: передача и прием OFDM на канале AWGN

clear all; close all;

%--------Simulation parameters----------------

nSym=10^4; %Number of OFDM Symbols to transmit EbN0dB = 0:2:20; % bit to noise ratio MOD_TYPE='MPSK'; %modulation type - 'MPSK' or 'MQAM'

M=64; %choose modulation order for the chosen MOD_TYPE

N=64; %FFT size or total number of subcarriers (used + unused) 64 Ncp= 16; %number of symbols in the cyclic prefix

%--------Derived Parameters--------------------

k=log2(M); %number of bits per modulated symbol EsN0dB=10*log10(k)+EbN0dB;%convert to symbol energy to noise ratio errors= zeros(1,length(EsN0dB)); %to store symbol errors

Источник: https://studfile.net/preview/16500183/