Переходной процесс основанный CTLE

То В этом примере показано, как создать пользовательский основанный на переходном процессе блок CTLE в Simulink® к модели, соединило линии связи ваших собственных технических требований. Пользовательский блок CTLE предоставляет эквивалентное поведение как основанный на полюсе/нуле блок CTLE по умолчанию из SerDes Toolbox™. Этот пример также иллюстрирует:

  • как использовать блоки MATLAB function, чтобы моделировать пользовательские алгоритмы в Simulink,

  • как включать большие файлы данных в вашу модель,

  • как создать пользовательские алгоритмы Подсистемы Инициализации, чтобы выполнить Init (базирующийся импульс) оптимизация, прежде чем симуляция Simulink запустится, и

  • как подтвердить модель с помощью Инспектора Данных моделирования.

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

Охарактеризуйте CTLE с переходными процессами

Как правило, таблица данных со ссылочными переходными процессами получена из симуляций схемы. Но для этого примера, извлеките переходной процесс из CTLE по умолчанию от SerDes Toolbox, чтобы охарактеризовать его поведение. Важно гарантировать, что временной шаг данных о характеристике достаточно прекрасен так, чтобы все соответствующее поведение переходного процесса было получено. Используйте 32 выборки на символ, который приводит к размеру временного шага 3,125 пикосекунд и более, чем достаточен для этого CTLE.

Создайте объект CTLE со значением по умолчанию, достигающим максимума характеристики.

SymbolTime = 100e-12;
SamplesPerSymbol = 32;
dt = SymbolTime/SamplesPerSymbol;

CTLE1 = serdes.CTLE(...
    'SymbolTime',SymbolTime,... %Duration of a single symbol 
    'SampleInterval',dt,...     %time step size
    'DCGain',0:-1:-8,...        %DC Gain
    'PeakingGain',0:8,...       %Peaking Gain
    'PeakingFrequency',5e9,...  %Peaking Frequency
    'Mode',1);                  %Mode is fixed

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

stimulus = ones(25*SamplesPerSymbol,1);
stimulus(1:SamplesPerSymbol) = 0;

numberOfConfig = CTLE1.ConfigCount; 

stepResponse = zeros(length(stimulus),numberOfConfig);
for ii = 1:numberOfConfig
    CTLE1.ConfigSelect = ii-1;
    release(CTLE1);
    stepResponse(:,ii) = CTLE1(stimulus);
end

t1 = dt*(0:size(stepResponse,1)-1);

figure,
plot(t1,stepResponse)
xlabel('time [s]'),ylabel('[V]')
title('CTLE Step responses')
legend(cellstr(num2str((0:(numberOfConfig-1))')))
grid on

Figure contains an axes object. The axes object with title CTLE Step responses contains 9 objects of type line. These objects represent 0, 1, 2, 3, 4, 5, 6, 7, 8.

Наконец сохраните матрицу переходных процессов, 'stepResponse', и демонстрационный интервал, 'dt', к .mat файлу. Заметьте, что каждый столбец матрицы представляет различную настройку CTLE. Этот пример использует имя файла 'myCTLEdata.mat' для данных. Если вы изменяете имя файла, то также необходимо вручную обновить ссылки на файл в функции stepCTLE.m, и Simulink Инициализируют ссылки Подсистемы.

Если у вас уже есть свое собственное поведение CTLE, зарегистрированное от симуляций схемы, можно поместить данные в тот же формат файла как ниже с полями 'stepResponse' и 'dt' эквивалентно набор. Если ваш собственный CTLE характеризуется импульсными характеристиками, можно использовать функцию impulse2step, чтобы сначала преобразовать их в переходные процессы.

Создайте файл справочных данных.

save('myCTLEdata.mat','stepResponse','dt')

Создайте системную модель SerDes

Используйте Приложение SerDes Designer, чтобы создать модель приемника с Передачей Через и блоком CTLE. Эта настройка позволяет, чтобы прямой процесс валидации показал, что переходной процесс базирующийся CTLE имеет то же поведение как полюс/нуль базирующийся CTLE.

Откройте приложение SerDes Designer.

>> serdesDesigner

Добавьте блок Passthrough и переименуйте его в 'StepCTLE'

Добавьте блок CTLE.

Выберите блок Channel, чтобы открыть его диалоговое окно Block Parameters. Включайте перекрестные помехи путем выбора параметра Enable Crosstalk. Включение перекрестных помех гарантирует, что матричный вход импульсной характеристики к Init будет иметь несколько столбцов во время тестирования и таким образом, любой пользовательский код Init должен будет правильно обработать многомерные массивы. Обеспечение правильного поведения здесь избежит более поздних проблем, когда модель будет экспортироваться в IBIS-AMI.

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

Setup модель Simulink

Измените модель Simulink, чтобы включать блок MATLAB function и параметры, чтобы управлять пользовательским блоком CTLE. Откройте диалоговое окно Block Parameters для Блока Configuration, затем нажмите на кнопку Open SerDes IBIS-AMI Manager и выберите вкладку AMI-Rx. Под параметром Model_Specific выберите StepCTLE и нажмите Add Parameter … кнопка. В недавно открытом окне, Названии параметра набора к Режиму, Использовании к В, Тип до Целого числа, Формат, чтобы Перечислить, Перечисляет значения к [2 0 1], и значения List_Tip к ["адаптируются" "от" "фиксированного"].

Выберите StepCTLE под параметром Model_Specific снова и нажмите Add Parameter … кнопка. В недавно открытом окне, Названии параметра набора к ConfigSelect, Использовании к InOut, Типе до Целого числа, Формат, чтобы Перечислить, и Перечислить значения к [0 1 2 3 4 5 6 7 8].

С включением вышеупомянутых параметров представление модели Simulink показывает подсистему StepCTLE в окне StepCTLE.

Добавьте блок MATLAB function в подсистему StepCTLE и откройте ее.

Скопируйте содержимое файла stepCTLE.m в блоке MATLAB function.

От панели инструментов MATLAB нажмите Edit Data button во вкладке Editor, чтобы открыть диалоговое окно Ports и Data Manager. Выберите параметр SampleInterval. Во вкладке "Общие" измените Осциллограф от Входа до Параметра и нажмите кнопку Apply.

Функция stepCTLE

Функция stepCTLE имеет два первичных поведения:

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

  • Это фильтрует (или применяет операцию свертки), входящая форма волны с импульсной характеристикой.

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

Персистентные переменные

Заметьте, что эта функция использует персистентные переменные. Персистентные переменные имеют постоянное хранение в MATLAB, похожем на глобальные переменные. Но различающиеся глобальные переменные, персистентные переменные известны только функции, которая объявляет их. В модели Simulink каждый блок MATLAB function содержит свою собственную копию персистентных данных. Если функция MATLAB, которая содержит персистентную переменную, называется от двух различных блоков, модель имеет две персистентных переменные. Кроме того, каждый запуск симуляции создает новую копию персистентных данных.

Используя coder.load к Включению Файлов данных в Модель

Наблюдайте, что использование функции coder.load вместо функции 'загрузки' получает доступ к данным в .mat файле. Когда этот код будет скомпилирован, данные в .mat файле будут трудно закодированы в исполняемый файл и являются отличным способом включать большие файлы данных в модель.

Возможность соединения

От Simulink, соединяют блоки параметра с блоком MATLAB function. Удалите блок записи ConfigSelect, когда он не будет использоваться. Также удалите Передачу Через блок Системного объекта.

Добавьте блок отображения из Браузера Библиотеки Simulink, чтобы наблюдать адаптированное значение параметра ConfigSelect. Чтобы наблюдать адаптированный параметр ConfigSelect CTLE SerDes Toolbox, также добавьте блок отображения под маской CTLE. Можно затем проверить, что оба блока адаптируются к тому же выбору настройки.

Setup Init

Модель SerDes Simulink может выполнить Init (основанный на импульсе) анализ перед нулевым временем симуляции с Инициализировать блоком Subsystem. Откройте блок Init в подсистеме Rx. Нажмите кнопку Refresh Init и затем кнопку Show Init, чтобы поднять редактор MATLAB. Игнорируйте любые предупреждающие сообщения об обновлении Init, пропускающий блок MATLAB function.

Вырежьте и вставьте содержимое CustomUserCodeForInit.m в пользовательской пользовательской области кода функции Init.

Заметьте, что как в функции stepCTLE, этот код загружает файл данных переходного процесса, затем передискретизирует его и преобразует в импульсные характеристики. Этот код дополнительно выполняет оптимизацию, чтобы выбрать, какая из многих настроек CTLE 'лучше всего' компенсирует сигнал с помощью метрики ОСШ в качестве критериев совершенства. Если ConfigSelect был определен, ответ CTLE применяется к первичному импульсу и импульсным характеристикам перекрестных помех.

Альтернатива использованию блоков MATLAB function должна использовать Системные объекты. Системные объекты не требуют использования персистентных переменных (которым в настоящее время не позволяют Инициализировать блок Subsystem войти), и позвольте, чтобы лучший код совместно использовал между версией модели Simulink блока и Инициализировать версией подсистемы блока как многие Системные объекты в SerDes Toolbox.

Валидация

Чтобы подтвердить это переходной процесс, базирующийся CTLE эквивалентен CTLE по умолчанию от SerDes Toolbox, регистрируйте выходную форму волны и выполните две симуляции:

  • Включите шагу базирующийся CTLE и отключите полюс/нуль базирующийся CTLE

  • Отключите шаг базирующийся CTLE и включите полюсу/нулю базирующийся CTLE

Выходная форма волны верхнего уровня модели уже регистрируется (как показано широковещательной передачей или символом Wi-Fi) для использования результатами постанализа методом моделирования.

Откройте диалоговое окно SerDes IBIS-AMI Manager от Блока Configuration. Установите Режим основанного на полюсе/нуле CTLE's к прочь. Установите Режим шага базирующийся CTLE адаптировать и запускать симуляцию.

Затем установите Режим основанного на полюсе/нуле CTLE's адаптироваться. Установите Режим шага базирующийся CTLE к прочь и повторно выполните симуляцию

От панели инструментов Simulink нажмите кнопку Data Inspector от вкладки Simulation. Измените цвет линии новых результатов симуляции и увеличьте масштаб первых нескольких символов симуляции. Наблюдайте, как единственной разницей между формами волны является одна задержка символа, таким образом подтверждающая точность переходного процесса базирующийся CTLE. Одна разовая символом задержка происходит из-за данных о характеристике переходного процесса и в то время как это может быть удалено, это не оказывает большое влияние на симуляции SerDes или анализ.