Глобальная адаптация компонентов приемника с помощью метрик импульсной характеристики для улучшения эффективности SerDes

Этот пример показывает, как выполнить оптимизацию набора компонентов приемника как системы с помощью функции optPulseMetric вычисляют метрики, такие как высота глаза, ширина и оценка рабочего запаса канала (COM), из импульсной характеристики при целевой вероятности битовой ошибки (BER), чтобы оценить оптимальную эффективность конкретного строения. Адаптация выполняется как статистический анализ (Init), затем оптимизированный результат передается во временной области (GetWave).

Инициализация системы SerDes с несколькими CTLE и DFECDR

Этот пример использует модель SerDes Designer rx_ctle_adapt_dfe_train как начальная точка. Введите следующую команду в командном окне MATLAB ®, чтобы открыть модель:

>> serdesDesigner('rx_ctle_adapt_dfe_train.mat')

Этот проект содержит раздел приемника с двумя блоками CTLE, за которыми следует блок DFECDR. В своём строении по умолчанию эти блоки оптимизируются по отдельности. Цель этого примера состоит в том, чтобы оптимизировать блоки как систему.

Для CTLE_LowFreq блок, частота Peaking (ГГц) установлена на [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 ®.

Добавьте код для оптимизации CTLE и DFECDR как системы

Дважды кликните подсистему Init внутри блока Rx и нажмите кнопку Show Init. Вы можете разместить код в области Пользовательский код из следующих шагов и сохранить модель. Код разбит ниже в нескольких подразделах для легкого понимания.

Примечание: Чтобы завершить пример, вы также можете ссылаться на вложенный файл 'rx_init_custom_user_code.m' и поместите в область пользовательского кода внутри подсистемы Init. Для получения дополнительной информации о подсистеме Init, смотрите Статистический анализ в SerDes Systems.

Инициализация параметров приемника

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

%% 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

Код примера устанавливает параметр 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. Импульсная характеристика поддается метрической оценке легче, чем импульсная характеристика. The 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; 

Оценка результатов optPulseMetric

Сохраните строения 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

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

См. также

| |

Похожие темы