exponenta event banner

Глобальная адаптация компонентов приемника во временной области

В этом примере показано, как выполнить оптимизацию набора компонентов приемника в системе во время моделирования временной области (GetWave). Вы увидите, как настроить блок CTLE и DFECDR, чтобы их настройки глобально адаптировались во время моделирования. Ниже приведен пример «Глобальная адаптация компонентов приемника с использованием метрик импульсного отклика для повышения производительности SerDes».

Обзор глобальной адаптации компонентов приемника:

Компоненты приемника для CTLE и DFECDR могут работать совместно для выполнения адаптации в моделировании временной области. Обычно они работают независимо следующим образом:

  • CTLE адаптируется в статистическом (Init), а затем устанавливает это значение, когда начинается моделирование временной области

  • DFECDR адаптируется в статистическом (Init), затем устанавливает эти значения отводов для временной области, и блок переходит к непрерывному обучению значений отводов

Чтобы настроить CTLE и DFECDR для совместного использования сигналов в системе RX для глобальной адаптации во время моделирования временной области, выполните следующие действия:

Часть 1. Определение метода оптимизации формы сигнала RX по сравнению с выравниванием

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

Примечание.В этом примере используется понятие слов данных (3 символа на слово) из теории коммуникаций.

Низкочастотное (LF) и высокочастотное (HF) слово данных определяются для этого примера следующим образом:

  • Слово LF сохраняет одно и то же логическое значение для 3 символов UI (например, 111 или 000), чтобы представлять неизменяемые битово-битовые значения в слове.

  • HF слово изменяется в течение 3 символов UI (например, 101 или 010), чтобы представлять изменение битовых значений внутри слова.

Примечание.Блок CTLE оптимизируется только для внутреннего глаза (только содержимое HF).

Часть 2: Настройка блоков симулятора в секции приемника

  • Деактивизация внутренней адаптации CTLE путем подключения выходного сигнала к терминатору

  • Изменение входного сигнала CTLE для использования сигнала от DFECDR (что обеспечивает глобальную адаптацию)

  • Настройте DFECDR, создав функциональный блок MATLAB, который оценивает метрики Eye, в зависимости от параметров внутренней шины и CTLE, а затем выводит значение, используемое для конфигурации CTLE.

Часть 3: Реализация пользовательской функции MATLAB для адаптации выравнивания во время моделирования временной области

  • В DFECDR кодируйте функцию MATLAB для работы с входными сигналами во время границ пользовательского интерфейса, а не на каждом интервале выборки.

  • Добавьте условные операторы для сравнения метрик глаза между низкочастотными (LF) словами данных и высокочастотными (HF) словами данных, чтобы определить следующее наилучшее значение выравнивания.

  • Значение выравнивания, выводимое функцией MATLAB, является сигналом в Simulink. Это означает, что блок КТЛ будет использовать это в качестве своего входа, поэтому каждый раз, когда он изменяется, форма сигнала RX будет выравниваться с этим новым значением во время моделирования временной области.

Примечание.Блоки в системе RX могут совместно использовать сигналы. Это также справедливо в системе TX. Однако никакие сигналы не могут совместно использоваться системами RX и TX.

Часть 1. Определение метода оптимизации формы сигнала приемника по сравнению с выравниванием

Инициализация системы SerDes с помощью CTLE и DFECDR в приемнике

Откройте систему, набрав serdesdesDesigner («TDadapt.mat»). Вы увидите систему с базовым TX, 100-омным каналом с потерей 16dB при 5GHz и RX, содержащим CTLE, за которым следует DFECDR. В этом примере CTLE настраивается для использования «фиксированного» режима (поскольку в этом примере показано, как программно адаптироваться путем оценки фиксированных значений в функции MATLAB)и спецификация установлена на «коэффициент усиления постоянного тока и пиковый коэффициент усиления», а «коэффициент усиления постоянного тока» установлен в диапазоне от 0 до -15 дБ (с шагом -1 дБ) и установите значение «Пиковый коэффициент усиления» в диапазоне от 0 до + 15 дБ (с шагом + 1 дБ), как показано ниже. Также следует отметить, что DFECDR должен быть настроен на режим «адаптации».

Можно нажать на CTLE и установить режим «фиксированный».

Затем можно циклически просматривать различные значения для опции Configuration Select for the CTLE и наблюдать влияние различных значений выравнивания на диаграмму глаз приемника:

Рисунок выше: Недостаточно выровненная форма сигнала RX: Выбор конфигурации CTLE установлен в 0 (минимум).

Рисунок выше: Переравненная форма сигнала RX: Выбор конфигурации CTLE установлен на 15 (максимум).

Рис. Выше: Критически выровненный сигнал: выбор конфигурации CTLE установлен на 7 (например, значение среднего диапазона).

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

Часть 2: Настройка блоков симулятора в системе приемника

Экспортируйте систему в Simulink.

В разделе Приемник (Receiver) можно изменить CTLE и DFECDR для совместного использования значений с использованием Сигналов (Signals), чтобы обеспечить глобальную адаптацию во время моделирования временной области.

Изменение CTLE

Можно просмотреть маску CTLE (CTRL-U), а затем изменить вывод ConfigSelect на Terminator вместо DataStireWrite. Размещая терминатор на выходе ConfigSelect, КТЛ больше не находится в режиме обратной связи, и любой другой блок в системе RX может управлять этим КТЛ, записывая его входной сигнал ConfigSelect.

Для подключения к терминатору необходимо изменить выходные данные CTLE.ConfigSelect:

Добавление адаптации CTLE к DFECDR

Теперь можно изменить DFECDR для управления значением ввода ConfigSelect, используемого CTLE во время моделирования временной области. Это может быть достигнуто путем добавления функции MATLAB, которая использует следующие параметры для оценки конфигурации CTLE для адаптации к следующему наилучшему значению выравнивания:

• Режим

• ConfigIn

• symbolRecovered (Восстановлено)

• voltageSample

Далее будет показано, как изменить DFECDR для добавления этой функции MATLAB.

На выходном порту Interior появится селектор шины. Дважды щелкните, чтобы открыть меню «Параметры блока» и внести следующие изменения:

Щелкните по символу сигнала Recovered и нажмите кнопку с пометкой «Select > >» (Выбрать > >) и повторите это для параметра voltageSample. Это необязательные выходные данные, поэтому их необходимо включить. Кроме того, необходимо изменить конфигурацию и symbolTime и sampleInterval с «signal» на «parameter». Это можно сделать с помощью панели инструментов «edit data» в редакторе функций в MATLAB:

Добавьте функцию MATLAB в холст Simulink. Simulink позволяет автоматически генерировать порты, определяя строку кода оператора функции следующим образом:

%  ctleTimeDomainAdapt - Simple adaptation algorithm to optimize a CTLE configuration
%                        in the time domain for NRZ signals.  Current serdes.CTLE
%                        adapts in Init/Statistical only.
%
%  Goal is to monitor the symbol decisions and voltage level of decisions from the
%  serdes.DFECDR.  From this, calculate the high and low frequency voltage averages to 
%  adjust the CTLE config bringing the averages together. Once settled, detect toggle
%  of config and lock adapted configuration.  The config adjustment operates under the
%  assumption that the CTLE 'boost' increases with increasing config from 0 to X and
%  modulation is NRZ only.

%   Copyright 2020 The MathWorks, Inc.

function config = ctleTimeDomainAdapt(mode, configIn, symbolRecovered, voltageSample, SampleInterval, SymbolTime)

Примечание.Вы можете либо использовать фрагменты кода, конкатенированные, как они описаны в этом примере, либо использовать присоединенную функцию MATLAB «ctleTimeGroupAdapt.m» для справки.

Для создания портов можно также использовать инструменты холста в Simulink. При использовании любого из этих методов порты должны выглядеть следующим образом:

Входные данные:

  • способ

  • configIn

  • symbolRecovered

  • voltageSample

  • Примечание: symbolRecovered и voltageSample - дополнительная продукция блока DFECDR (и зарегистрированы в рамках кодекса MATLAB для CDR),

Вывод (совпадает с именем функции):

  • конфигурация

Создайте блок константы и настройте его назначение элемента CTLESignal.Mode. Затем подключите его к порту ввода функции для режима.

Затем создайте блок чтения хранилища данных и настройте назначение элемента CTLESignal.ConfigSelect. Затем подключите его к порту ввода функции для конфигурирования.

Затем создайте блок записи хранилища данных и настройте назначение элемента CTLESignal.ConfigSelect. Затем подключите его к порту вывода функции для конфигурации.

Примечание.Можно добавить область для наблюдения за адаптирующимися значениями CTLESignal.ConfigSelect во время моделирования.

По завершении подключения сигналов DFECDR отображается следующим образом:

Часть 3: Реализация алгоритма адаптации выравнивания во время моделирования временной области

В качестве отправной точки для алгоритма адаптации можно отредактировать файл «ctleTimeStartAdapt.m», присоединенный к этому примеру. В этом примере используются постоянные переменные для отслеживания значений при каждом вызове функции MATLAB. В качестве отправной точки вы оцените ненулевые переменные (например, используя функцию isempty ()), чтобы при первом вызове функции их можно было инициализировать. После этого значения настраиваются блоками CTLE и DFECDR, работающими вместе.

    persistent sps sampleCounter symbolCounter
    persistent internalConfig updateConfig symbols voltages 
    persistent lowFreqCount highFreqCount lowFreqVoltage highFreqVoltage
    persistent preventToggle toggling

    if isempty(sps)
        sps = SymbolTime/SampleInterval;
        sampleCounter = 0; % Total samples
        symbolCounter = 0; % Total symbols
        internalConfig = configIn; % Take config from Init and set for initial config
%         internalConfig = 0;  % Use this instead to ignore value from Init
        updateConfig = false;
        symbols = [0 0 0]; % Symbol history (3)
        voltages = [0 0 0]; % Voltage at each symbol (3)
        lowFreqCount = 0; % Low frequency event count
        highFreqCount = 0; % High frequency event count
        lowFreqVoltage = 0; % Voltage sum at low frequency events
        highFreqVoltage = 0; % Voltage sum at high frequency events
        preventToggle = [0 0 0 0]; % Toggle tracker; last 4 config updates -1/+1
        toggling = false; % Toggle detected flag
    end 

Примечание.Если переменная является постоянной, она сохраняет свое значение. В противном случае они создаются как неопределенные для каждого вызова функции MATLAB.

Реализация таких контрольных журналов, как детектор переключений

Можно реализовать многие типы контрольного тестирования, но в этом примере реализован детектор переключения. Если CTLE имеет заданное значение и начинает увеличиваться или уменьшаться на 1 (например, 4-5, 5-4, 4-5) от слова к слову, программа будет проверять состояние переключения путем обнаружения 3 повторов. Если true, он выходит из цикла, таким образом, КТЛ сохраняет свое обученное оптимальное значение.

Примечание.Пример реализации такого алгоритма можно увидеть в прикрепленном файле.

    if mode == 2 && ~toggling

Общие сведения о срезах данных

Для обработки формы сигнала RX можно использовать сигналы symbolRecoverReved и voltageSample. Но во-первых, важно понимать работу Data Slicer:

1. Каждый раз, когда тактовое время возникает в начале пользовательского интерфейса,

2. Блок DFECDR применяет свои отводы,

3. Срез данных запускается на + 0,5 UI позже,

4. Затем для этого бита принимается решение о значении отвода.

Срезатель данных выводит как символ, так и напряжение. Например, если срезатель данных работает в местоположении 0,5 UI, срезатель выводит символ как + 0,5 или -0,5 и значение напряжения, которого достиг символ.

Поиск границ пользовательского интерфейса из среза данных

Система работает на шаге времени на основе выборки, поэтому можно отслеживать границы пользовательского интерфейса путем настройки счетчика проб и символов. Когда число выборок делится на эту настройку для «выборок на бит», это определяет границу символа. Таким образом, можно найти комбинации HF (например, 010, 101) или LF (например, 111, 000) слов данных для оптимизации для критического выравнивания:

        % How often to update CTLE Config
        updateFrequencySymbols = 1000;
        % Range of CTLE configurations
        minCTLEConfig = 0;
        maxCTLEConfig = 15;
        % Set up a sample and symbol counter to track overall progress
        sampleCounter = sampleCounter+1; % Every call to this function is a sample
        % When sample count is divisible by samples per bit, there is a symbol boundary
        if mod(sampleCounter,sps) == 0
            symbolCounter = symbolCounter+1;
            updateConfig = true; % Flag to keep from looping in update section 
            % Maintain bit/voltage history
            symbols = [symbols(2:3) symbolRecovered]; % -0.5 or 0.5
            voltages = [voltages(2:3) voltageSample]; % Voltages at each symbol
            % Keep count of low/high frequency events and sum voltages across those events
            % Low frequency = Steady high or low
            % High frequency = Rapid tranition
            if isequal(symbols, [0.5 0.5 0.5]) || isequal(symbols, [-0.5 -0.5 -0.5]) % 1 1 1 OR 0 0 0
                lowFreqCount = lowFreqCount + 1;
                lowFreqVoltage = lowFreqVoltage+ abs(voltages(2)); % keep middle voltage sample
            elseif isequal(symbols, [-0.5 0.5 -0.5]) || isequal(symbols, [0.5 -0.5 0.5])% 0 1 0 OR 1 0 1
                highFreqCount = highFreqCount + 1;
                highFreqVoltage = highFreqVoltage+ abs(voltages(2)); % keep middle voltage sample
            end
        end

Поиск комбинаций 3-Symbol для сортировки содержимого HF и LF-сигнала

Функцию MATLAB Mod можно использовать для определения того, когда образцы достигли Mod 0, что определяет границу пользовательского интерфейса. Как только счетчик символов достигнет значения по модулю 0, можно накопить эти местоположения в виде битов. Затем после накопления достаточного количества битов (например, 1000) вычислите среднее напряжение в этой совокупности и обновите конфигурацию CTLE.

Создайте оператор if для выполнения следующего теста и решения:

  • Если сигнал 111 или 000, переменная инкрементного счета для LF

  • Если сигнал 010 или 101, переменная инкрементного счета для HF

  • Для каждого случая возьмем напряжение на этом символе и переменную приращения для счетчика напряжения

        % When symbol count is divisible by update frequency, check if CTLE update is needed
        if mod(symbolCounter,updateFrequencySymbols) == 0  && updateConfig
            % Calculate low/high voltage average
            lowFreqAvg = lowFreqVoltage/lowFreqCount;
            highFreqAvg = highFreqVoltage/highFreqCount;             

Обновление CTLE

Можно реализовать любой нужный алгоритм, но в этом примере CTLE начинается со значения configSelect из Init, и функция выполняет приращение. Каждый раз DFECDR оценивается и сравнивается с постоянной переменной. В зависимости от этих результатов CTLE увеличивается или уменьшается.

Примечание.Для вашего кода важно проверить, что для CTLE не задано недопустимое значение configSelect.

            % Increase CTLE config if low freq is above high freq
            if lowFreqAvg > highFreqAvg
                % Prevent exceeding maximum CTLE config
                if internalConfig < maxCTLEConfig
                    % If toggle is detected, disable adaptation
                    if ~isequal(preventToggle,[1 -1 1 -1])
                        internalConfig = internalConfig + 1;
                        % Add current action to toggle tracker
                        preventToggle = [preventToggle(2:4) 1];
                    else
                        toggling = true;
                    end
                end
            % Decrease CTLE config if high freq is above low freq
            elseif lowFreqAvg <= highFreqAvg
                % Prevent exceeding minimum CTLE config
                if internalConfig > minCTLEConfig
                    if ~isequal(preventToggle,[-1 1 -1 1])
                        internalConfig = internalConfig - 1;
                        % Add current action to toggle tracker
                        preventToggle = [preventToggle(2:4) -1];
                    else
                        toggling = true;
                    end
                end
            end
            % Reset variables associated with averaging every updateFrequencySymbols
            lowFreqCount = 0;
            lowFreqVoltage = 0;
            highFreqCount = 0;
            highFreqVoltage = 0;
            updateConfig = false; % Lock updates until next symbol boundary
        end
    end
    
    config = internalConfig;
end

Рисунок: Диаграмма глаз во время моделирования временной области.

В Области можно увидеть, что CTLE начинается со значения из Init, и код переключателя-детектора «блокирует» конфигурацию CTLE после нескольких итераций:

Рисунок: Когда начинается моделирование временной области, CTLE начинается со значения Init.

Можно задать код для запуска из конфигурации CTLE 0 и увидеть, что алгоритм увеличивает конфигурацию до тех пор, пока она не переключится:

Рисунок: Объем вывода сигнала CTLESignal.ConfigSelect, если функция запрограммирована на запуск с нуля вместо значения Init.

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

Рис.: Для параметра Ignore Bits можно установить значение 16, которое является количеством конфигураций CTLE, доступных в этом примере.

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

Рисунок: Статистические результаты и результаты временной области с достаточным количеством битов игнорирования.

Можно проверить эффект «Игнорировать биты», установив нулевое значение и повторно запустив моделирование:

Рисунок: Можно установить значение параметра Ignore Bits равным 0 из 16, чтобы проверить его влияние на результаты Time Domain.

Рисунок: Статистические результаты и результаты временной области с недостаточным количеством битов игнорирования.

См. также

| |

Связанные темы