serdes. FFE

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

Описание

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

Компенсировать основополосный сигнал:

  1. Создайте объект serdes.FFE и установите его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

ffe = serdes.FFE
ffe = serdes.FFE(Name,Value)

Описание

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

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

Пример: ffe = serdes.FFE('Mode',1)

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Схема Modulation, заданная как 2 или 4.

Значение модуляцииСхема модуляции
2Невозврат к нулю (NRZ)
4Четырехуровневая импульсная амплитудная модуляция (PAM4)

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

Основной

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

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

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

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

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

Нормируйте векторы веса касания так, чтобы сумма абсолютных значений элементов вектора TapWeights была той.

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

Усовершенствованный

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

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

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

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

Введите форму типа волны, заданную как:

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

  • 'Impulse' - Импульсный входной сигнал ответа.

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

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

Синтаксис

y = ffe(x)

Описание

y = ffe(x)

Входные параметры

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

Используйте время символа PS 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);

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

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
plot(t2,waveIn,t2,waveOut)
legend('Input','Output')
title('Waveform Comparison')
xlabel('SymbolTimes'),ylabel('Voltage')
grid on 

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')

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

Используйте время символа PS 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]);

Инициализируйте псевдослучайную двоичную последовательность (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

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

Смотрите также

| |

Введенный в R2019a