В этом примере показано, как выполнить оптимизацию набора компонентов приемника как системы с использованием функции. optPulseMetric вычислять метрики, такие как высота глаза, ширина и оценка рабочего запаса канала (COM), по импульсному отклику при целевой частоте битовых ошибок (BER) для оценки оптимальной производительности конкретной конфигурации. Адаптация выполняется как статистический анализ (Init), затем оптимизированный результат передается во временную область (GetWave).
В этом примере используется модель SerDes Designer rx_ctle_adapt_dfe_train в качестве отправной точки. Введите следующую команду в окне команд MATLAB ®, чтобы открыть модель:
>> serdesDesigner('rx_ctle_adapt_dfe_train.mat')

Этот проект содержит секцию приемника с двумя блоками CTLE, за которыми следует блок DFECDR. В конфигурации по умолчанию эти блоки оптимизируются по отдельности. Целью этого примера является оптимизация блоков как системы.
Для CTLE_LowFreq блок, пиковая частота (ГГц) устанавливается в [10 11 12 13 14 15 16], коэффициент усиления постоянного тока (дБ) установлен в [0 0 0 0 0 0 0]и коэффициент усиления пика (дБ) устанавливается равным 0. Все остальные параметры сохраняются на уровне значений по умолчанию.
Для CTLE_HighFreq блок, для параметра «Спецификация» установлено значение DC Gain and AC Gain, пиковая частота (ГГц) установлена в 14, коэффициент усиления постоянного тока (дБ) установлен в 0и коэффициент усиления переменного тока (дБ) устанавливается в [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]. Все остальные параметры сохраняются на уровне значений по умолчанию.
Для блока DFECDR начальные веса отводов (V) устанавливаются в [0 0 0 0 0 0 0 0 0 0]. Все остальные параметры сохраняются на уровне значений по умолчанию.
Экспортируйте систему SerDes в модель Simulink ®.
Дважды щелкните подсистему Init внутри блока Rx и нажмите кнопку Show Init. Можно разместить код в области Пользовательский код (Custom user code) из следующих шагов и сохранить модель. Код разбит ниже в нескольких подразделах для облегчения понимания.
Примечание.Чтобы завершить пример, можно также сослаться на прикрепленный файл 'rx_init_custom_user_code.m' и поместите в область пользовательского кода в подсистему Init. Дополнительные сведения о подсистеме Init см. в разделе Статистический анализ в системах SerDes.
В первом разделе пользовательской области пользовательского кода проверяется, находятся ли оба CTLEs в режиме адаптации и создания экземпляров переменных для хранения временных значений и наилучших параметров конфигурации.
%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed) % If both CTLEs are in Adapt mode, use global adaptation if CTLE_LowFreqParameter.Mode == 2 && CTLE_HighFreqParameter.Mode == 2 CTLE_LowFreqInitBestConfig = 0; CTLE_HighFreqInitBestConfig = 0; bestMetric = 0; SPB = SymbolTime/SampleInterval;
Пример кода устанавливает параметр CTLE.Mode из adapt кому fixed обеспечение алгоритмического управления значениями для каждого блока. В этом случае значения непосредственно сдвигаются, и блоки вызываются для обработки импульсной характеристики.
CTLE_LowFreqInit.Mode = 1;
CTLE_HighFreqInit.Mode = 1;
for CTLE_LowFreqInitSweep = 0:1:6
for CTLE_HighFreqInitSweep = 0:1:15
% Set current sweep configs on each CTLE
CTLE_LowFreqInit.ConfigSelect = CTLE_LowFreqInitSweep;
CTLE_HighFreqInit.ConfigSelect = CTLE_HighFreqInitSweep;
% Call CTLEs and DFE
[sweepImpulse, ~] = CTLE_LowFreqInit(LocalImpulse);
[sweepImpulse, ~] = CTLE_HighFreqInit(sweepImpulse);
[sweepImpulse, ~, ~, ~, ~] = DFECDRInit(sweepImpulse);
Преобразование импульсной характеристики в импульсную для оценки функцией optPulseMetric. Импульсная характеристика легче поддается оценке на основе метрик, чем импульсная характеристика. optPulseMetric используется для оптимизации системы SerDes в целом. Эта функция сообщает о многих метриках, и можно использовать алгоритм для оценки нескольких компонентов приемника вместе как системы.
Примечание: Функция optPulseMetric предназначен для анализа одного ответа, а не матрицы ответов, чтобы можно было использовать sweepPulse(:,1) для отсечения основного отклика от импульсной матрицы или импульсной матрицы.
% Convert impulse after DFE to pulse then calculate eye metrics sweepPulse = impulse2pulse(sweepImpulse,SPB,SampleInterval); eyeMetric = optPulseMetric(sweepPulse(:,1),SPB,SampleInterval,1e-6); % Select eye metric to evaluate results sweepMetric = eyeMetric.maxMeanEyeHeight; % sweepMetric = eyeMetric.maxEyeHeight; % sweepMetric = eyeMetric.maxCOM; % sweepMetric = eyeMetric.centerMeanEyeHeight; % sweepMetric = eyeMetric.centerEyeHeight; % sweepMetric = eyeMetric.centerCOM;
Сохраните конфигурации CTLE на основе сравнения с предыдущими результатами. Окончательные наилучшие конфигурации сохраняются в блоках для окончательного статистического (Init) анализа, а затем передаются во временную область (GetWave) моделирования.
% If current sweep metric is better than previous, save the CTLE configs if sweepMetric > bestMetric bestMetric = sweepMetric; CTLE_LowFreqInitBestConfig = CTLE_LowFreqInitSweep; CTLE_HighFreqInitBestConfig = CTLE_HighFreqInitSweep; end end end % Set CTLEs to best configs from sweep CTLE_LowFreqInit.ConfigSelect = CTLE_LowFreqInitBestConfig; CTLE_HighFreqInit.ConfigSelect = CTLE_HighFreqInitBestConfig; end % END: Custom user code area (retained when 'Refresh Init' button is pressed)
Запустите систему SerDes и проверьте поведение оптимизации. Можно попытаться изменить метрику, вычисляемую для выполнения различных оптимизаций.


CTLE | DFECDR | optPulseMetric