exponenta event banner

serdes. DFECDR

Эквалайзер обратной связи принятия решений (DFE) с синхронизацией и восстановлением данных (CDR)

Описание

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

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

Для обработки импульсной характеристики алгоритм hula-hoop используется для поиска местоположений выборки тактового сигнала. Затем алгоритм форсирования нуля используется для определения N поправочных коэффициентов, необходимых для отсутствия ISI в N последующих местоположениях выборки, где N - количество отводов DFE.

Для обработки по выборке восстановление тактового сигнала осуществляется с помощью модели отслеживания фаз первого порядка. Фазовый детектор взрыва использует неравные граничные выборки и выровненные выборки данных для определения оптимального местоположения выборки. Напряжение коррекции DFE для N-го отвода адаптивно обнаруживается путем нахождения напряжения, которое компенсирует любую корреляцию между двумя выборками данных, разнесенными на N символов. Для правильного адаптивного поведения требуется шаблон данных, который не коррелирует с ISI канала.

Для выравнивания входного сигнала:

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

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

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

Создание

Описание

dfecdr = serdes.DFECDR возвращает объект DFECDR, который изменяет форму входного сигнала с помощью DFE и определяет время дискретизации тактового сигнала. Системный объект оценивает символ данных согласно алгоритму CDR Bang-Bang.

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

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

Свойства

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

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

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

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

Свойства DFE

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

Значение режимаРежим DFEРабота DFE
0прочьserdes.DFECDR обходится, и форма входного сигнала остается неизменной.
1фиксированныйserdes.DFECDR применяет входные веса отводов DFE, указанные в TapWeights во входной сигнал.
2приспособитьсяПодсистема Init вызывает serdes.DFECDR. serdes.DFECDR находит оптимальные значения отводов DFE для наилучшего отверстия высоты глаза для статистического анализа. Во время моделирования во временной области DFECDR использует адаптированные значения в качестве начальной точки и применяет их к входной форме сигнала. Дополнительные сведения о подсистеме Init см. в разделе Статистический анализ в системах SerDes

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

Начальные веса отводов DFE, заданные как вектор строки в вольтах. Длина вектора определяет количество отводов. Каждое значение векторного элемента определяет силу отвода в этой позиции элемента. Установка нулевого значения векторного элемента только инициализирует отвод.

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

Минимальное значение адаптированных отводов, определяемое как действительный скаляр или действительный вектор строки в вольтах. Укажите как скаляр для применения ко всем отводам DFE или как вектор, имеющий ту же длину, что и TapWeights.

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

Максимальное значение адаптированных отводов, определяемое как неотрицательный действительный скаляр или неотрицательный действительный вектор строки в вольтах. Укажите как скаляр для применения ко всем отводам DFE или как вектор, имеющий ту же длину, что и TapWeights.

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

Управляет скоростью обновления веса отводов DFE, указанной как неотрицательный действительный скаляр без единиц. Увеличение значения EqualizationGain приводит к более быстрой конвергенции адаптации DFE за счет большего шума в значениях отводов DFE.

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

Адаптивное ступенчатое разрешение DFE, определяемое как неотрицательный действительный скаляр или неотрицательный действительный вектор строки в вольтах. Укажите как скаляр для применения ко всем отводам DFE или как вектор, имеющий ту же длину, что и TapWeights.

EqualizationStep указывает минимальное изменение отводов DFE с одного временного шага на следующий для имитации аппаратных ограничений. Настройка EqualizationStep до нуля дает значения отводов DFE без какого-либо ограничения разрешения.

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

Выберите для умножения весов отводов DFE на два раза.

Выходной сигнал среза в serdes.DFECDR Системный объект из Toolbox™ SerDes имеет значение [-0.5 0.5]. Но некоторые отраслевые приложения требуют, чтобы выход среза был [-1 1]. Taps2x позволяет быстро удвоить веса отводов DFE для изменения привязки среза.

Свойства CDR

Ранний или поздний порог подсчета CDR для запуска фазового обновления, определяемого как действительное положительное целое число без единиц, большее 4. Увеличение значения Count обеспечивает более стабильную выходную тактовую фазу за счет скорости сходимости. Поскольку битовые решения принимаются на выходе тактовой фазы, более стабильная тактовая фаза имеет лучшую частоту битовых ошибок (BER).

Count также управляет полосой пропускания CDR, которая приблизительно вычисляется с использованием уравнения:

Полоса пропускания =  1Символьное время ·   Число ранних/поздних пороговых значений·  Шаг

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

Разрешение фазы синхросигнала, определяемое как действительный скаляр в доле времени символа. ClockStep - обратное число фазовых регулировок в CDR.

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

Сдвиг фазы тактового сигнала, заданный как действительный скаляр в диапазоне [− 0,5, 0,5] в долях времени символа .PhaseOffset используется для ручного сдвига функции распределения вероятности синхронизации (PDF) для улучшения BER.

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

Ухудшение смещения опорного синхросигнала, указанное как действительный скаляр в диапазоне [− 300, 300] в частях на миллион (ppm ).ReferenceOffset - отклонение между частотой генератора передатчика и частотой генератора приемника.

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

Напряжение метастабильности защелки выборки, указанное как действительный скаляр в вольтах (В). Если напряжение выборки данных находится в пределах области (±Sensitivity), существует 50% вероятность битовой ошибки.

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

Дополнительные свойства

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

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

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

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

Схема модуляции, указанная как 2, 3 или 4.

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

Примечание

IBIS не поддерживает PAM3 схему модуляции. Поэтому нельзя экспортировать в модель IBIS-AMI, если схема модуляции является PAM3.

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

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

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

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

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

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

Синтаксис

Описание

y = dfecdr(x)

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

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

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

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

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

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

Оцененные значения веса отводов DFE, возвращенные в виде вектора.

Относительная восстановленная фаза тактового сигнала, возвращенная в виде единиц SymbolTime в диапазоне [0,1].

Шина часов AMI, возвращаемая как структура, состоящая из:

  • ClockTime - время, затрачиваемое на выборку сигнала данных.

  • clockValidOnRising - допустимое значение тактового времени на переднем фронте сигнала

Шина, содержащая дополнительные внутренние сигналы CDR, возвращаемые в виде структуры, состоящей из:

  • clockPhase - относительная фаза синхронизации в единицах SymbolTime в диапазоне [0,1].

  • symbolRecovered - символ, восстановленный из сигнала данных в ClockTime.

  • voltageSample - напряжение, наблюдаемое из сигнала данных в ClockTime.

  • PAM4Threshold - Расчетный верхний глаз при PAM4 пороге.

  • CDRedVoltage - напряжение, наблюдаемое из сигнала данных в ClockTime - SymbolTime/2.

  • CDRCounter - внутренний счетчик CDR bang-bang, используемый для запуска выборок.

  • Счетчик CDREarureCounter - аккумулированный (или отфильтрованный) сигнал CDR bang-bang, используемый для запуска обновления до фазы CDR.

  • PAM4SymbolMiddleVoltage - Оцененное напряжение символа PAM4 внутреннего глаза внешний конверт, чтобы оценить порог PAM4.

  • PAM4OuterVoltage - Оцененное внешнее напряжение конверта PAM4, чтобы оценить порог PAM4.

  • EyeHeightAbsAve - Оценочная глазная высота.

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

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

release(obj)

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

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

Примеры

свернуть все

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

Использовать время символа, равное 100 ps. Есть 16 выборок на символ. Канал имеет 14 Потеря дБ.

SymbolTime = 100e-12;         
SamplesPerSymbol = 16;
dbloss = 14;                  
NumberOfDFETaps = 2;

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

dt = SymbolTime/SamplesPerSymbol; 

Создайте объект DFECDR. Объект адаптивно применяет оптимальные веса отводов DFE к входной импульсной характеристике.

DFE1 = serdes.DFECDR('SymbolTime',SymbolTime,'SampleInterval',dt,...
      'Mode',2,'WaveType','Impulse','TapWeights',zeros(NumberOfDFETaps,1));

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

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

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

[impulseOut,TapWeights] = DFE1(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([41 55 -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')
xlabel('SymbolTimes'),ylabel('Voltage')
grid on
title('Input Eye Diagram')
subplot(212),plot(teye,eyeOut,'b')
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.DFECDR object™ системы.

Использовать время символа, равное 100 ps, с 8 выборок на символ. Потеря канала 14 дБ. Выбрать 12-й порядок псевдослучайной двоичной последовательности (PRBS) и имитировать первую 20000 символы.

SymbolTime = 100e-12;           
SamplesPerSymbol = 8;
dbloss = 14;                    
NumberOfDFETaps = 2;
prbsOrder = 12;                 
M = 20000;                      

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

dt = SymbolTime/SamplesPerSymbol;

Создайте системный объект DFECDR. Обработка канала по одной выборке за раз путем установки входных сигналов в 'sample' тип. Объект адаптивно применяет оптимальные веса отводов DFE к входной форме сигнала.

DFE2 = serdes.DFECDR('SymbolTime',SymbolTime,'SampleInterval',dt,...
      'Mode',2,'WaveType','Sample','TapWeights',zeros(NumberOfDFETaps,1),...
      'EqualizationStep',0,'EqualizationGain',1e-3);

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

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

Создайте диаграмму «sample-by-sample eye».

%Loop through one symbol at a time.
inwave = zeros(SamplesPerSymbol,1);
outwave = zeros(SamplesPerSymbol,1);
dfeTapWeightHistory = nan(M,NumberOfDFETaps);

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 DFE
      for jj = 1:SamplesPerSymbol
          [outwave(jj),TapWeights] = DFE2(y(jj));
      end
      
    %Save DFE taps
      dfeTapWeightHistory(ii,:) = TapWeights;
      
    %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.

Постройте график истории адаптации DFE.

figure
plot(dfeTapWeightHistory)
grid on
legend('TapWeights(1)','TapWeights(2)')
xlabel('Symbols')
ylabel('Voltage')
title('DFE Taps')   

Figure contains an axes. The axes with title DFE Taps contains 2 objects of type line. These objects represent TapWeights(1), TapWeights(2).

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

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