serdes.CTLE

Линейный эквалайзер (CTLE) непрерывного времени или пик-фильтр

Описание

The serdes.CTLE Система object™ применяет линейный пик-фильтр для выравнивания входного сигнала дискретизации или для аналитической обработки входного сигнала вектора импульсной характеристики. Процесс эквализации уменьшает искажения, возникающие из-за потерянных каналов. Фильтр является действительным однонулевым двухполюсным (1z/2p) фильтром, если только вы не задаете матрицу усиление-полюс-ноль (GPZ).

Выравнивание сгенерированного модулированного сигнала с помощью serdes.CTLE:

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

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

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

Создание

Описание

ctle = serdes.CTLE возвращает объект CTLE, который изменяет форму входа волны в соответствии с передаточной функцией нуля полюса, заданной в объекте.

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

Пример: ctle = serdes.CTLE('ACGain',5) возвращает объект CTLE с усилением на пиковой частоте, установленной на 5 дБ.

Свойства

расширить все

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

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

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

Главный

Режим работы КТЛ, заданный как 0, 1, или 2. Mode определяет, обходится ли CTLE или нет. Если CTLE не обходится, то Mode также определяет, какая передаточная функция применяется к входу форме волны.

Значение режимаРежим CTLEОперация CTLE
0прочьserdes.CTLE обходится, и вход сигнала остается неизменной.
1фиксированныйserdes.CTLE применяет передаточную функцию CTLE в соответствии с ConfigSelect на вход сигнал.
2приспособитьсяЕсли WaveType установлено в 'Impulse' или 'Waveform', затем подсистема Init вызывает serdes.CTLE. The serdes.CTLE определяет передаточную функцию CTLE, чтобы максимизировать метрику эффективности, заданную PerformanceCriteria свойство и применяет передаточную функцию к входу сигнала для симуляции временного интервала. Эта оптимизированная передаточная функция используется CTLE для симуляции во всем временном интервале. Для получения дополнительной информации о подсистеме Init, смотрите Статистический анализ в системах SerDes
Если WaveType выбран как 'Sample', затем serdes.CTLE работает в фиксированном режиме.

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

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

Пример: ctle = serdes.CTLE('ConfigSelect',5,'Specification','DC Gain and Peaking Gain') возвращает объект CTLE, который выбирает 6-й элемент DCGain и PeakingGain вектор для применения к передаточной функции фильтра.

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

Определяет, какие входы будут использоваться для семейства передаточных функций CTLE. Существует пять входы, которые могут использоваться для определения семейства передаточных функций CTLE: DCGain, PeakingGain, ACGain, PeakingFrequency и GPZ.

Можно задать ответ CTLE из любых двух из трех коэффициентов усиления и пиковой частоты или можно задать матрицу GPZ для CTLE.

  • Выберите 'DC Gain and Peaking Gain' для определения CTLE-ответа от DCGain, PeakingGain, и PeakingFrequency.

  • 'DC Gain and AC Gain' для определения CTLE-ответа от DCGain, ACGain, и PeakingFrequency.

  • 'AC Gain and Peaking Gain' для определения CTLE-ответа от ACGain, PeakingGain, и PeakingFrequency.

  • 'GPZ Matrix' для определения CTLE-ответа от GPZ.

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

Приблизительная частота, при которой передаточная функция CTLE достигает пиков в величине, задается как скаляр или вектор в Гц. Если он задан как скаляр, он преобразуется, чтобы соответствовать длине ACGain, DCGain, и PeakingGain скалярным расширением. Если задан как вектор, то длина вектора должна быть такой же, как и векторы в ACGain, DCGain, и PeakingGain.

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

Коэффициент усиления на нулевой частоте для передаточной функции CTLE, заданный в виде скаляра или вектора в дБ. Если он задан как скаляр, он преобразуется, чтобы соответствовать длине PeakingFrequency, ACGain, и PeakingGain скалярным расширением. Если задан как вектор, то длина вектора должна быть такой же, как и векторы в PeakingFrequency, ACGain, и PeakingGain.

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

Пиковый коэффициент усиления, заданный как вектор в дБ. Это различие между ACGain и DCGain для передаточной функции CTLE. Если он задан как скаляр, он преобразуется, чтобы соответствовать длине PeakingFrequency, ACGain, и DCGain скалярным расширением. Если задан как вектор, то длина вектора должна быть такой же, как и векторы в PeakingFrequency, ACGain, и DCGain.

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

Коэффициент усиления на пиковой частоте для передаточной функции CTLE, заданный как скаляр или вектор в дБ. Если он задан как скаляр, он преобразуется, чтобы соответствовать длине PeakingFrequency, DCGain, и PeakingGain скалярным расширением. Если задан как вектор, то длина вектора должна быть такой же, как и векторы в PeakingFrequency, DCGain, и PeakingGain.

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

Нуль полюса усиления, заданный как матрица. GPZ явно определяет семейство передаточных функций CTLE путем определения DCGain (дБ) в первом столбце, а затем полюсы и нули в чередующихся столбцах. Полюса и нули указаны в Гц. Дополнительные строки в матрице определяют дополнительные строения, которые можно выбрать с помощью ConfigSelect.

Повторные полюсы или нули не допускаются. Комплексные полюса или нули должны иметь сопряженные. Количество полюсов должно быть больше, чем количество нулей для устойчивости системы. Поляки и нули 0 Гц игнорируются и могут использоваться, чтобы обнулить матрицу.

Типы данных: double
Поддержка комплексного числа: Да

Расширенный

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

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

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

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

Форма типа входной волны:

  • 'Sample' - входной сигнал дискретизации по дискретизации.

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

  • 'Waveform' - тип волны битового шаблона входного сигнала, такого как псевдослучайная двоичная последовательность (PRBS).

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

Критерий, используемый для оптимизации CTLE, когда serdes.CTLE Mode настроен на адаптацию. Критерии эффективности вычисляются с помощью optPulseMetric функция.

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

Метод вычисления коэффициентов фильтра временного интервала рациональной передаточной функции:

  • PartialFraction метод фильтра использует расширение полюсов и нулей частичной дроби, чтобы непосредственно вычислить коэффициенты фильтра.

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

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

Синтаксис

Описание

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

расширить все

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

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

расширить все

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Этот пример показывает, как обработать импульсную характеристику канала, используя serdes.CTLE Системные object™.

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

 SymbolTime = 100e-12;              
 SamplesPerSymbol = 16;
 dbloss = 16;                       
 DCGain = 0:-1:-26;
 PeakingGain = 0:26;
 PeakingFrequency = 11e9;

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

dt = SymbolTime/SamplesPerSymbol;

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

CTLE1 = serdes.CTLE('SymbolTime',SymbolTime,'SampleInterval',dt,...
      'Mode',2,'WaveType','Impulse',...
      'DCGain',DCGain,'PeakingGain',PeakingGain,...
      'PeakingFrequency',PeakingFrequency);

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

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

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

[impulseOut, Config] = CTLE1(impulseIn);

Отобразите адаптированное строение.

fprintf('Adapted CTLE Configuration Selection is %g \n',Config)
Adapted CTLE Configuration Selection is 17 

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

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('Symbol Times'),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('Symbol Times'),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('Symbol Times'),ylabel('Voltage')
grid on
title('Input Eye Diagram')
subplot(212),plot(teye,eyeOut,'b')
axis(ax);
xlabel('Symbol Times'),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.CTLE Системные object™.

Используйте время символа 100 ps и 16 выборок на символ. Канал имеет 16 потеря дБ. Пиковая частота 11 ГГц. Выберите 12- псевдослучайная двоичная последовательность (PRBS) первого порядка и моделирует первую 500 символы.

SymbolTime = 100e-12;           
SamplesPerSymbol = 16;
dbloss = 16;                    
DCGain = 0:-1:-26;
PeakingGain = 0:26;
PeakingFrequency = 11e9;
ConfigSelect = 15;
prbsOrder = 12;                 
M = 500;                        

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

dt = SymbolTime/SamplesPerSymbol;

Создайте объект CTLE. Поскольку мы обрабатываем выборку по одному каналу за раз, форма входа волны 'sample' тип. Объект адаптивно применяет оптимальную передаточную функцию фильтра для лучшего открытия высоты глаза.

CTLE = serdes.CTLE('SymbolTime',SymbolTime,'SampleInterval',dt,...
      'Mode',2,'WaveType','Sample',...
      'DCGain',DCGain,'PeakingGain',PeakingGain,...
      'PeakingFrequency',PeakingFrequency,...
      'ConfigSelect',ConfigSelect);

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

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.

[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 CTLE
      for jj = 1:SamplesPerSymbol
          outwave(jj) = CTLE(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