serdes.CTLE

Непрерывное время линейный эквалайзер (CTLE) или худой фильтр

Описание

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

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

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

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

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

Создание

Описание

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

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

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

Свойства

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

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

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

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

Основной

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

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

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

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

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

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

Задает, какие входные параметры будут использоваться в семействе передаточных функций 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 (дБ) в столбце 1 и затем орудует шестами и нули в переменных столбцах. Полюса и нули заданы в Гц.

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

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

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

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

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

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

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

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

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

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

  • 'Waveform' — Тип формы волны комбинации двоичных разрядов входного сигнала, такого как псевдослучайная двоичная последовательность (PRBS).

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

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

Синтаксис

Описание

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

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

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

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

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

Используйте время символа 100 PS и 16 выборки на символ. Канал имеет 16 потеря дБ. Худой частотой является 11 GHz. Выберите 12- th заказывают псевдослучайную двоичную последовательность (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]);

Инициализируйте генератор 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

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

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

| | | | |

Введенный в R2019a