serdes. DFECDR

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

Описание

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

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

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

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

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

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

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

Создание

Синтаксис

dfecdr = serdes.DFECDR
dfecdr = serdes.DFECDR(Name,Value)

Описание

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. Mode определяет, какие значения веса касания DFE применяются к входной форме волны.

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

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

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

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

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

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

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

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

Свойства CDR

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 'Impulse' — Импульсный входной сигнал ответа.

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

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

Синтаксис

y = dfecdr(x)

Описание

y = dfecdr(x)

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

Используйте время символа PS 100. Существуют выборки 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™.

Используйте время символа PS 100 с выборками 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