exponenta event banner

CTLE на основе ответа на шаг

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

  • использование функциональных блоков MATLAB для моделирования пользовательских алгоритмов в Simulink,

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

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

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

При первом вызове 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

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

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. The axes 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 Initialize Subsystem.

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

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

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

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

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

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

> > serdesdesDesigner

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

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

Выберите блок «Канал», чтобы открыть диалоговое окно «Параметры блока». Включите перекрестные помехи, выбрав параметр Enable Crossstalk. Включение перекрестных помех гарантирует, что матрица импульсной характеристики, вводимая в Init, будет иметь несколько столбцов во время тестирования, и поэтому любой пользовательский код Init должен будет правильно обрабатывать многомерные массивы. При экспорте модели в IBIS-AMI можно избежать последующих проблем.

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

Настройка модели Simulink

Измените модель Simulink, включив функциональный блок MATLAB и параметры для управления пользовательским блоком CTLE. Откройте диалоговое окно Block Parameters для блока Конфигурации, затем нажмите на кнопку Open SerDes IBIS-AMI Manager и выберите вкладку AMI-Rx. Под параметром Model_Specific выберите StepCTLE и нажмите кнопку Добавить параметр... кнопка. В открывшемся окне установите для параметра name значение Mode, Usage to In, Type to Integer, Format to List, List value to [2 0 1] и List_Tip значения для [«adapt» «off» «fixed»].

Снова выберите StepCTLE под параметром Model_Specific и нажмите кнопку Добавить параметр... кнопка. В открывшемся окне задайте для параметра имя ConfigSelect, использование InOut, тип Integer, формат для списка и список значений [0 1 2 3 4 5 6 7 8].

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

Добавьте функциональный блок MATLAB в подсистему StepCTLE и откройте его.

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

На панели инструментов MATLAB нажмите кнопку «Редактировать данные» на вкладке «Редактор», чтобы открыть диалоговое окно «Порты и диспетчер данных». Выберите параметр SampleInterval. На вкладке «Общие» измените значение параметра «Область» с «Ввод» на «Параметр» и нажмите кнопку «Применить».

функция stepCTLE

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

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

  • Он фильтрует (или свертывает) поступающий сигнал с импульсной характеристикой.

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

Постоянные переменные

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

Использование файла coder.load для включения файлов данных в модель

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

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

В Simulink подключите блоки параметров к функциональному блоку MATLAB. Удалите блок записи ConfigSelect, так как он не будет использоваться. Также удалите блок объектов «Сквозная система».

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

Инициализация установки

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

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

Обратите внимание, что, как и в функции stepCTLE, этот код загружает файл данных ответа на шаг, затем производит его повторную выборку и преобразует в импульсные ответы. Этот код дополнительно выполняет оптимизацию, чтобы выбрать, какая из множества конфигураций CTLE «наилучшим образом» выравнивает сигнал, используя метрику SNR в качестве критерия благости. Как только ConfigSelect определен, отклик CTLE применяется к первичным импульсным и перекрестным импульсным откликам.

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

Проверка

Для проверки того, что CTLE на основе ответа шага эквивалентен CTLE по умолчанию из панели инструментов SerDes, запишите выходной сигнал и выполните два моделирования:

  • Включение CTLE на основе шага и отключение CTLE на основе полюса/нуля

  • Отключить CTLE на основе шага и включить CTLE на основе полюса/нуля

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

Откройте диалоговое окно SerDes IBIS-AMI Manager из блока конфигурации. Установите для параметра Mode of the pole/zero based CTLE значение offs. Установите значение Mode of the step based CTLE для адаптации и выполнения моделирования.

Затем установите режим CTLE на основе полюса/нуля для адаптации. Выключите режим CTLE на основе шага и повторно запустите моделирование

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