В этом примере показано, как создать пользовательский блок CTLE на основе отклика шага в Simulink ® для модели проводных ссылок связи ваших собственных спецификаций. Пользовательский блок CTLE показывает эквивалентное поведение как блок CTLE по умолчанию на основе полюса/нуля из SerDes Toolbox™. Этот пример также иллюстрирует:
как использовать блоки MATLAB function для моделирования пользовательских алгоритмов в Simulink,
как включить большие файлы данных в вашу модель,
как создать пользовательские алгоритмы Подсистемы Инициализации для выполнения оптимизации Init (на основе импульсов) перед началом симуляции Simulink, и
как проверить модель с помощью Данных моделирования Inspector.
Первый раз, когда вы вызываете CTLE на основе отклика шага, он загружает таблицу данных в память. Таблица данных содержит ссылку переходной характеристики для каждого строения фильтра. CTLE пересчитывает или интерполирует переходную характеристику во временной шаг симуляции, дифференцирует шаг, чтобы получить импульсную характеристику, и затем свертывает это с входом формой волны. Легче переопределить переходную характеристику, чем импульсную характеристику из-за сложности правильного захвата пика импульсной характеристики.
Обычно таблица данных с эталонными переходными характеристиками получается из симуляций схем. Но в данном примере извлеките переходную характеристику из CTLE по умолчанию из SerDes Toolbox, чтобы охарактеризовать его поведение. Важно гарантировать, что временной шаг данных характеристики является достаточно хорошим, чтобы было зафиксировано все релевантное поведение переходной характеристики. Используйте 32 выборки на символ, что приводит к размеру временного шага 3,125 ps и более чем достаточно для этого 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
Наконец, сохраните матрицу переходных характеристик, 'stepResponse', и интервал расчета, 'dt', в файл .mat. Обратите внимание, что каждый столбец матрицы представляет разное строение CTLE. Этот пример использует имя файла 'myCTLEdata.mat' для данных. Если вы измените имя файла, то также нужно вручную обновить ссылки на файлы в функции stepCTLE.m и ссылках Simulink Initialize Subsystem.
Если у вас уже есть собственное поведение CTLE, записанное из симуляций схем, можно поместить данные в тот же формат файла, что и ниже, с установленными эквивалентно полями 'stepResponse' и 'dt'. Если ваш собственный CTLE характеризуется импульсными характеристиками, вы можете использовать функцию impulse2step, чтобы сначала преобразовать их в переходные характеристики.
Создайте файл ссылочных данных.
save('myCTLEdata.mat','stepResponse','dt')
Используйте приложение SerDes Designer, чтобы создать модель приемника с блоком Pass Through и CTLE. Эта настройка позволяет выполнить простой процесс валидации, чтобы показать, что основанный на переходной характеристике CTLE имеет то же поведение, что и основанный на шесте/нуле CTLE.
Откройте приложение SerDes Designer.
> > serdesDesigner
Добавьте блок Passthrough и переименуйте его в 'StepCTLE'.
Добавьте блок CTLE.
Выберите блок Channel, чтобы открыть диалоговое окно Параметры Блоков. Включите перекрестные помехи, выбрав параметр Enable Crossstalk. Включение перекрестных помех гарантирует, что вход матрицы импульсной характеристики в Init будет иметь несколько столбцов во время проверки, и поэтому любой пользовательский код Init должен будет правильно обработать многомерные массивы. Обеспечение правильного поведения здесь позволит избежать последующих проблем, когда модель экспортируется в IBIS-AMI.
Экспорт системы SerDes в Simulink.
Измените модель Simulink, чтобы включить блок MATLAB function и параметры для управления пользовательским блоком CTLE. Откройте диалоговое окно Параметров блоков для блока Configuration, затем нажмите кнопку Open SerDes IBIS-AMI Manager и выберите вкладку AMI-Rx. Под параметром Model_Specific выберите StepCTLE и нажмите Add Parameter... кнопка. В открывшемся окне установите Параметр имени Mode, Usage на In, Type на Integer, Формат на List, List значений на [2 0 1] и List_Tip значения на [«adapt» «off» «fixed»].
Снова выберите StepCTLE под параметром Model_Specific и нажмите Add Parameter... кнопка. В открывшемся окне установите имя параметра» на «Выбор конфигурации», «Использование» на «InOut», «Тип целого числа», «Формат списка» и «значения» на [0 1 2 3 4 5 6 7 8].
С включением вышеуказанных параметров в представлении модели Simulink отображается подсистема StepCTLE в окне StepCTLE.
Добавьте блок MATLAB Function в подсистему StepCTLE и откройте его.
Скопируйте содержимое файла stepCTLE.m в блок MATLAB Function.
На панели инструментов MATLAB нажмите кнопку «Редактировать данные» на вкладке « Редакторе», чтобы открыть диалоговое окно «Порты и диспетчер данных». Выберите параметр SampleInterval. На вкладке General измените возможности с вход на параметр и нажмите кнопку Apply.
Функция stepCTLE имеет два основных поведения:
Он загружает данные переходной характеристики, повторяет его в соответствии с интервалом выборки симуляции и дифференцирует переходную характеристику, чтобы получить импульсную характеристику.
Он фильтрует (или свертывает) входящий сигнал с импульсной характеристикой.
Первое основное поведение важно, чтобы stepCTLE имел последовательное поведение над изменениями в размере временного шага симуляции.
Заметьте, что эта функция использует постоянные переменные. Постоянные переменные имеют постоянное хранилище в MATLAB, подобное глобальным переменным. Но в отличие от глобальных переменных, стойкие переменные известны только функции, которая объявляет их. В модели Simulink каждый блок MATLAB function содержит свою собственную копию стойких данных. Если функция MATLAB, содержащая постоянную переменную, вызывается из двух разных блоков, модель имеет две постоянные переменные. Кроме того, каждый запуск симуляции создает новую копию стойких данных.
Наблюдайте использование функции coder.load вместо функции 'load' для доступа к данным в .mat файле. При компиляции этого кода данные в .mat-файле будут жестко закодированы в исполняемый файл и являются отличным способом включения в модель больших файлов данных.
Из Simulink соедините блоки параметров с блоком MATLAB function. Удалите блок записи ConfigSelect, так как он не будет использоваться. Также удалите блок объекта Pass Through System.
Добавьте блок отображения из браузера библиотеки Simulink, чтобы увидеть адаптированное значение параметра ConfigSelect. Чтобы наблюдать адаптированный параметр ConfigSelect SerDes Toolbox CTLE, также добавьте блок отображения под маской CTLE. Затем можно проверить, что оба блока адаптируются к одному и тому же выбору строения.
Модель SerDes Simulink может выполнить анализ Init (на основе импульсов) перед нулевым временем симуляции с блоком Initialize Subsystem. Откройте блок Init в подсистеме Rx. Нажмите кнопку Refresh Init, а затем кнопку Show Init, чтобы запустить Редактор MATLAB. Игнорируйте все предупреждающие сообщения об обновлении Init, пропуская блок MATLAB Function.
Вырезайте и вставьте содержимое CustomUserCodeForInit.m в область пользовательского кода функции Init.
Заметьте, что, как и в функции stepCTLE, этот код загружает файл данных переходной характеристики, затем повторяет его и преобразует в импульсные характеристики. Этот код дополнительно выполняет оптимизацию, чтобы выбрать, какая из многих конфигураций CTLE 'best' выравнивает сигнал, используя метрику ОСШ в качестве критерия качества. После определения ConfigSelect реакция CTLE применяется к первичным импульсным и перекрестным помехам импульсных характеристик.
Альтернативой использованию блоков MATLAB function является использование системных объектов. Системные объекты не требуют использования стойких переменных (которые в настоящее время не разрешены в блоке Initialize Subsystem) и допускают лучшее совместное использование кода между версией модели Simulink блока и версией подсистемы Initialize блока, подобной многим системным объектам в SerDes Toolbox.
Чтобы подтвердить, что основанный на переходной характеристике CTLE эквивалентен CTLE по умолчанию из SerDes Toolbox, логгируйте выход сигнал и выполните две симуляции:
Включите основанный на шаге CTLE и отключите основанный на шесте/нуле CTLE
Отключите основанный на шаге CTLE и включите основанный на шесте/нуле CTLE
Выходной сигнал верхнего уровня модели уже регистрируется (как показано символом broadcast или Wi-Fi) для использования результатами анализа после постсимуляции.
Откройте диалоговое окно SerDes IBIS-AMI Manager из блока Configuration. Установите режим CTLE на основе полюса/нуля в смещение. установите режим CTLE на основе шага, чтобы адаптироваться и запустить симуляцию.
Затем установите режим CTLE на основе полюса/нуля, чтобы адаптироваться. Отключите Режим основанного на шаге CTLE и повторите симуляцию
На панели инструментов Simulink нажмите кнопку Data Inspector на вкладке Simulation. Измените цвет линии самых последних результатов симуляции и увеличьте изображение первых нескольких символов симуляции. Наблюдайте, как единственная разница между формами сигналов является задержкой одного символа, таким образом подтверждая точность переходной характеристики основанного CTLE. Одна задержка во время символа связана с данными характеристики переходной характеристики, и хотя это может быть удалено, это не оказывает большого влияния на симуляции или анализ SerDes.