exponenta event banner

serdes. CTLE

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

Описание

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 с использованием системных объектов.

Главный

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

Значение режимаРежим CTLEРабота CTLE
0прочьserdes.CTLE обходится, и форма входного сигнала остается неизменной.
1фиксированныйserdes.CTLE применяет функцию передачи CTLE, как указано в ConfigSelect во входной сигнал.
2приспособитьсяЕсли WaveType имеет значение 'Impulse' или 'Waveform', затем подсистема Init вызывает serdes.CTLE. serdes.CTLE определяет передаточную функцию CTLE для максимизации показателя производительности, как указано в PerformanceCriteria и применяет передаточную функцию к входной форме сигнала для моделирования во временной области. Эта оптимизированная передаточная функция используется КТЛ для моделирования всей временной области. Дополнительные сведения о подсистеме 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.

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

  • Выбрать '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

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

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

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

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

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

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

Коэффициент усиления на пиковой частоте для передаточной функции КТЛ, определяемый как скаляр или вектор в дБ. Если указан как скаляр, он преобразуется в соответствии с длиной 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', то входной сигнал является сигналом вектора импульсной характеристики.

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

В этом примере показано, как обрабатывать импульсную характеристику канала с помощью 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