serdes.DFECDR

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

Описание

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

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

Функция часов и восстановления данных предоставляет местоположение выборки часов DFE. Восстановление тактового сигнала является фазой первого порядка, отслеживающей модель CDR. Для получения дополнительной информации смотрите Часы и Восстановление данных в Системе SerDes.

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

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

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

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

Создание

Описание

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

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

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

Свойства

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

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

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

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

Свойства DFE

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

Значение режимаРежим DFEОперация DFE
0'off'serdes.DFECDR исключен и входная форма волны остается неизменной.
1фиксированныйserdes.DFECDR применяет веса касания входа DFE, заданные в TapWeights к входной форме волны.
2адаптироватьсяserdes.DFECDR адаптивно определяет оптимальные значения весов касания DFE и применяет их к входной форме волны.

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

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

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

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

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

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

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

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

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

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

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

Свойства CDR

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

Early/late count threshold также управляет пропускной способностью CDR, который приблизительно вычисляется при помощи уравнения:

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

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

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

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

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

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

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

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

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

Расширенные свойства

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

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

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

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

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

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

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

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

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

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

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

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

Синтаксис

Описание

y = dfecdr(x)

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

В этом примере показано, как обработать импульсную характеристику канала с помощью 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
plot(t2,waveIn,t2,waveOut)
legend('Input','Output')
title('Waveform Comparison')
xlabel('SymbolTimes'),ylabel('Voltage')
grid on 

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

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

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

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

Вычислите демонстрационный интервал.

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

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

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

Сгенерируйте глазковую диаграмму выборки выборкой.

%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

Постройте историю адаптации DFE.

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

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

Введенный в R2019a