exponenta event banner

serdes. FFE

Моделирование эквалайзера прямой подачи

Описание

serdes.FFE Система object™ применяет эквалайзер прямой передачи (FFE) в качестве фильтра конечной импульсной характеристики (FIR), разнесенного по символам. Примените эквалайзер к входному сигналу выборки за выборкой или входному сигналу вектора импульсной характеристики для уменьшения искажений из-за ухудшения канальных потерь.

Для выравнивания сигнала основной полосы частот:

  1. Создать serdes.FFE и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

ffe = serdes.FFE возвращает объект FFE, который изменяет форму входного сигнала в соответствии с передаточной функцией конечного импульсного отклика (FIR), определенной в объекте.

ffe = serdes.FFE(Name,Value) задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в кавычки. Неопределенные свойства имеют значения по умолчанию.

Пример: ffe = serdes.FFE('Mode',1) возвращает объект FFE, который применяет указанные веса отводов ко входному сигналу.

Свойства

развернуть все

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

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Главный

Режим работы FFE, указанный как 0 или 1. Mode определяет, обходится ли FFE.

Значение режимаРежим FFEРабота FFE
0Прочьserdes.FFE обходится, и форма входного сигнала остается неизменной.
1Фиксированныйserdes.FFE применяет входные веса крана FFE, указанные в TapWeights, для ввода формы сигнала.

Типы данных: double

Веса отводов FFE, заданные как вектор строки в V. Длина вектора определяет количество отводов. Значение каждого векторного элемента определяет силу отвода в этом положении. Отвод с наибольшей величиной является главным отводом и, следовательно, определяет количество отводов до и после курсора.

Типы данных: double

Нормализовать векторы веса отводов, указанные как true или false. Если установлено значение true, объект масштабирует TapWeights векторные элементы так, что сумма их абсолютных значений равна 1.

Типы данных: logical

Расширенный

Время длительности одного символа, определяемое как действительный скаляр в s.

Типы данных: double

Равномерный временной шаг формы сигнала, определяемый как действительный скаляр в s.

Типы данных: double

Тип входного сигнала:

  • 'Sample' - Входной сигнал «выборка за выборкой»

  • 'Impulse' - Входной сигнал импульсной характеристики

Типы данных: char

Использование

Синтаксис

Описание

y = ffe(x)

Входные аргументы

развернуть все

Входной сигнал основной полосы частот. Если WaveType имеет значение 'Sample'входной сигнал представляет собой сигнал «выборка за выборкой», заданный как скаляр. Если WaveType имеет значение 'Impulse'входной сигнал должен быть сигналом вектора импульсной характеристики.

Выходные аргументы

развернуть все

Выход отфильтрованного канала. Если входной сигнал представляет собой сигнал «выборка за выборкой», заданный как скаляр, то выходной сигнал также является скалярным. Если входной сигнал является сигналом вектора импульсной характеристики, то выходной сигнал также является вектором.

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

В этом примере показано, как обрабатывать импульсную характеристику канала с помощью serdes.FFE object™ системы.

Используйте время символа 100 пс и 16 выборок на символ. Канал имеет потери 16 дБ.

SymbolTime = 100e-12;                  
SamplesPerSymbol = 16;
dbloss = 16;                                                  

Вычислите интервал выборки.

dt = SymbolTime/SamplesPerSymbol;

Создайте объект FFE с фиксированным режимом работы.

TapWeights = [0 0.7 -0.2 -0.10];
FFEMode = 1;   
FFE1 = serdes.FFE('SymbolTime',SymbolTime,'SampleInterval',dt,...
      'Mode',FFEMode,'WaveType','Impulse',...
      'TapWeights',TapWeights);

Создайте импульсную характеристику канала.

channel = serdes.ChannelLoss('Loss',dbloss,'dt',dt,...
      'TargetFrequency',1/SymbolTime/2);
impulseIn = channel.impulse;

Обработать импульсную характеристику с помощью FFE.

impulseOut = FFE1(impulseIn);

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

ord = 6;
dataPattern = prbs(ord,2^ord-1)-0.5;

pulseIn = impulse2pulse(impulseIn,SamplesPerSymbol,dt);
waveIn = pulse2wave(pulseIn,dataPattern,SamplesPerSymbol);
eyeIn = reshape(waveIn,SamplesPerSymbol,[]);
 
pulseOut = impulse2pulse(impulseOut,SamplesPerSymbol,dt);
waveOut = pulse2wave(pulseOut,dataPattern,SamplesPerSymbol);
eyeOut = reshape(waveOut,SamplesPerSymbol,[]);

Создайте векторы времени.

t = dt*(0:length(pulseOut)-1)/SymbolTime;
teye = t(1:SamplesPerSymbol);
t2 = dt*(0:length(waveOut)-1)/SymbolTime;

Постройте график сравнения импульсной характеристики, сравнения формы сигнала, а также диаграммы входного и выходного глаз.

figure
plot(t,pulseIn,t,pulseOut)
legend('Input','Output')
title('Pulse Response Comparison')
xlabel('SymbolTimes'),ylabel('Voltage')
grid on
axis([47 60 -0.1 0.4])

Figure contains an axes. The axes with title Pulse Response Comparison contains 2 objects of type line. These objects represent Input, Output.

figure
plot(t2,waveIn,t2,waveOut)
legend('Input','Output')
title('Waveform Comparison')
xlabel('SymbolTimes')
ylabel('Voltage')
grid on 

Figure contains an axes. The axes with title Waveform Comparison contains 2 objects of type line. These objects represent Input, Output.

figure
subplot(211),plot(teye,eyeIn,'b')
ax = axis;
xlabel('SymbolTimes')
ylabel('Voltage')
grid on
title('Input Eye Diagram')
subplot(212),plot(teye,eyeOut,'b')
axis(ax);
xlabel('SymbolTimes')
ylabel('Voltage')
grid on
title('Output Eye Diagram')

Figure contains 2 axes. Axes 1 with title Input Eye Diagram contains 63 objects of type line. Axes 2 with title Output Eye Diagram contains 63 objects of type line.

В этом примере показано, как обрабатывать импульсную характеристику канала по одной выборке за раз с использованием serdes.FFE object™ системы.

Используйте время символа 100 пс с 16 выборками на символ. Канал имеет потери 16 дБ.

SymbolTime = 100e-12;                  
SamplesPerSymbol = 16;
dbloss = 16;                           

Вычислите интервал выборки.

dt = SymbolTime/SamplesPerSymbol;

Создайте объект FFE в фиксированном режиме.

FFEMode = 1;
TapWeights = [0 0.7 -0.2 -0.1];
FFE = serdes.FFE('SymbolTime',SymbolTime,'SampleInterval',dt,...
      'Mode',FFEMode,'WaveType','Sample',...
      'TapWeights',TapWeights);

Создайте импульсную характеристику канала.

channel = serdes.ChannelLoss('Loss',dbloss,'dt',dt,...
      'TargetFrequency',1/SymbolTime/2);

Создайте диаграмму глаз.

eyediagram = comm.EyeDiagram('SampleRate',1/dt,'SamplesPerSymbol',SamplesPerSymbol,...
      'YLimits',[-0.5 0.5]);
Warning: comm.EyeDiagram will be removed in a future release. Use eyediagram instead.

Инициализируют генератор кода псевдослучайной двоичной последовательности (PRBS) порядка 12.

prbsOrder = 12;                         
M = 500;                                %number of symbols to simulate
[dataBit,prbsSeed]=prbs(prbsOrder,1);

Закольцовывать по одному символу за раз.

inwave = zeros(SamplesPerSymbol,1);
outwave = zeros(SamplesPerSymbol,1);
for ii = 1:M
      %Get new symbol
      [dataBit,prbsSeed]=prbs(prbsOrder,1,prbsSeed);
      inwave(1:SamplesPerSymbol) = dataBit-0.5;
 
      %convolve input waveform with channel
      y = channel(inwave);
 
      %process one sample at a time through the FFE
      for jj = 1:SamplesPerSymbol
          outwave(jj) = FFE(y(jj));
      end
 
      %Plot eye diagram
      eyediagram(outwave)
end

Figure Eye Diagram contains 2 axes and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes 1 contains an object of type line. Axes 2 is empty.

Расширенные возможности

.

См. также

| |

Представлен в R2019a