Моделирование системы SerDes включает в себя передатчик (Tx) и приемник (Rx), соединенные пассивным аналоговым каналом. Моделирование системы SerDes состоит из двух различных этапов: статистический анализ и анализ временной области. Статистический анализ (также известный как аналитический, линейный инвариантный по времени или анализ Init) основан на импульсных откликах, позволяющих быстро анализировать и адаптировать алгоритмы выравнивания. Анализ во временной области (также известный как эмпирический, побитовый или GetWave анализ) - это основанная на форме волны реализация алгоритмов выравнивания, которые могут необязательно включать нелинейные эффекты.
Эталонный поток статистического анализа отличается от анализа во временной области. Во время моделирования статистического анализа генерируется импульсная характеристика. Импульсная характеристика представляет собой совокупную характеристику аналогового выхода передатчика, канала и аналогового внешнего интерфейса приемника. Импульсная характеристика канала модифицируется статистическими функциями модели передатчика. Модифицированная импульсная характеристика выходного сигнала передатчика затем дополнительно модифицируется статистическими функциями модели приемника. Затем моделирование завершается с использованием окончательной модифицированной импульсной характеристики, которая представляет поведение обеих AMI моделей, объединенных с аналоговым каналом.

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

В SerDes Toolbox™ подсистема Init в блоках Tx и Rx использует блок Initialize Function Simulink ®. Блок инициализации функции содержит функцию MATLAB ® для обработки статистического анализа вектора импульсной характеристики. Вектор импульсной характеристики генерируется блоком аналогового канала.
Код MATLAB в подсистемах Init имитирует архитектуру симулирования временной области Simulink, инициализируя и настраивая блоки библиотеки из SerDes Toolbox, которые реализуют алгоритмы выравнивания. Затем каждая подсистема обрабатывает вектор импульсной характеристики через один или несколько системных объектов, представляющих соответствующие блоки.
Кроме того, подсистема Init может адаптировать или оптимизировать алгоритмы выравнивания, а затем применять модифицированные алгоритмы к импульсной характеристике. Выход подсистемы Init представляет собой адаптированную импульсную характеристику. Если подсистема Init адаптирует алгоритмы выравнивания, она также может выводить измененные настройки выравнивания в качестве параметров AMI. Эти модифицированные параметры выравнивания также могут быть переданы на анализ временной области в качестве оптимальной установки или для обеспечения начальной точки для более быстрой адаптации временной области.
В модели Simulink системы SerDes имеются две подсистемы Init, одна на стороне передатчика (блок Tx) и одна на стороне приемника (блок Rx). Во время статистического анализа импульсная характеристика аналогового канала сначала выравнивается подсистемой Init внутри блока Tx на основе свойств object™ системы. Модифицированная импульсная характеристика затем подается на вход блока Rx. Система Init внутри блока Rx дополнительно выравнивает импульсную характеристику и выдает конечный выходной сигнал.
Объекты System, соответствующие блокам Tx и Rx, изменяют импульсную характеристику в том же порядке, в каком они были приняты. Если в блоке Tx или Rx имеется несколько самоадаптирующихся объектов System, каждый объект System находит наилучшую настройку импульсной характеристики и изменяет ее перед отправкой следующему объекту System.
Конечная выровненная импульсная характеристика используется для получения импульсной характеристики, статистического глаза и формы сигнала.

Чтобы понять, как подсистема Init обрабатывает статистический анализ в системе SerDes, создайте систему SerDes с помощью приложения SerDes Designer. Система SerDes содержит блок FFE на стороне Tx и блоки CTLE и DFECDR на стороне Rx. Используйте параметры по умолчанию для каждого блока.

Экспортируйте систему SerDes в модель Simulink. В Simulink дважды щелкните блок Tx, чтобы открыть блок Init. Затем дважды щелкните блок Init, чтобы открыть диалоговое окно «Параметры блока». Нажмите кнопку Show Init, чтобы открыть код, относящийся к функции Init датчика.
Функция Init сначала изменяет форму вектора импульсной характеристики аналогового канала на 2-D матрицу. Первый столбец в 2-D матрице представляет импульсную характеристику аналогового канала (жертва). Последующие столбцы (если таковые имеются) представляют собой перекрестные помехи (агрессоры).
%% Impulse response formatting % Size ImpulseOut by setting it equal to ImpulseIn ImpulseOut = ImpulseIn; % Reshape ImpulseIn vector into a 2D matrix using RowSize and Aggressors called LocalImpulse LocalImpulse = zeros(RowSize,Aggressors+1); AggressorPosition = 1; for RowPosition = 1:RowSize:RowSize*(Aggressors+1) LocalImpulse(:,AggressorPosition) = ImpulseIn(RowPosition:RowSize-1+RowPosition)'; AggressorPosition = AggressorPosition+1; end
Затем функция Init инициализирует системные объекты, представляющие блоки на стороне Tx, и настраивает параметры моделирования и AMI, а также свойства блоков. В этой системе SerDes имеется только один блок на стороне передачи, FFE.
%% Instantiate and setup system objects % Create instance of serdes.FFE for FFE FFEInit = serdes.FFE('WaveType', 'Impulse'); % Setup simulation parameters FFEInit.SymbolTime = SymbolTime; FFEInit.SampleInterval = SampleInterval; % Setup FFE In and InOut AMI parameters FFEInit.Mode = FFEParameter.Mode; FFEInit.TapWeights = FFEParameter.TapWeights; % Setup FFE block properties FFEInit.Normalize = true;
Импульсная характеристика канала затем обрабатывается объектом System на стороне Tx.
%% Impulse response processing via system objects % Return impulse response for serdes.FFE instance LocalImpulse = FFEInit(LocalImpulse);
Модифицированную импульсную характеристику в матричной форме 2-D обратно в вектор импульсной характеристики и направляют на сторону Rx для дальнейшего выравнивания.
%% Impulse response reformating % Reshape LocalImpulse matrix into a vector using RowSize and Aggressors ImpulseOut(1:RowSize*(Aggressors+1)) = LocalImpulse;
Аналогично, если посмотреть на код Rx Init, можно увидеть, что функция Rx Init сначала изменяет форму вывода функции Tx Init в матрицу 2-D.
Затем функция Init инициализирует системные объекты, представляющие блоки на стороне приема, и настраивает параметры моделирования и AMI, а также свойства блоков. В этом случае имеется два блока на стороне приема, CTLE и DFECDR.
%% Instantiate and setup system objects % Create instance of serdes.CTLE for CTLE CTLEInit = serdes.CTLE('WaveType', 'Impulse'); % Setup simulation parameters CTLEInit.SymbolTime = SymbolTime; CTLEInit.SampleInterval = SampleInterval; % Setup CTLE In and InOut AMI parameters CTLEInit.Mode = CTLEParameter.Mode; CTLEInit.ConfigSelect = CTLEParameter.ConfigSelect; % Setup CTLE block properties CTLEInit.Specification = 'DC Gain and Peaking Gain'; CTLEInit.DCGain = [0 -1 -2 -3 -4 -5 -6 -7 -8]; CTLEInit.ACGain = 0; CTLEInit.PeakingGain = [0 1 2 3 4 5 6 7 8]; CTLEInit.PeakingFrequency = 5000000000; CTLEInit.GPZ = [0 -23771428571 -10492857142 -13092857142;-1 -17603571428 -7914982142 -13344642857;... -2 -17935714285 -6845464285 -13596428571;-3 -15321428571 -5574642857 -13848214285;... -4 -15600000000 -4960100000 -14100000000;-5 -15878571428 -4435821428 -14351785714;... -6 -16157142857 -3981285714 -14603571428;-7 -16435714285 -3581089285 -14855357142;... -8 -16714285714 -3227142857 -15107142857]; % Create instance of serdes.DFECDR for DFECDR DFECDRInit = serdes.DFECDR('WaveType', 'Impulse'); % Setup simulation parameters DFECDRInit.SymbolTime = SymbolTime; DFECDRInit.SampleInterval = SampleInterval; DFECDRInit.Modulation = Modulation; % Setup DFECDR In and InOut AMI parameters DFECDRInit.ReferenceOffset = DFECDRParameter.ReferenceOffset; DFECDRInit.PhaseOffset = DFECDRParameter.PhaseOffset; DFECDRInit.Mode = DFECDRParameter.Mode; DFECDRInit.TapWeights = DFECDRParameter.TapWeights; % Setup DFECDR block properties DFECDRInit.EqualizationGain = 9.6e-05; DFECDRInit.EqualizationStep = 1e-06; DFECDRInit.MinimumTap = -1; DFECDRInit.MaximumTap = 1; DFECDRInit.Count = 16; DFECDRInit.ClockStep = 0.0078; DFECDRInit.Sensitivity = 0;
Импульсная характеристика, которая была ранее изменена объектами System на стороне Tx, затем дополнительно изменяется объектами System на стороне Rx.
%% Impulse response processing via system objects % Return impulse response and any Out or InOut AMI parameters for serdes.CTLE instance [LocalImpulse, CTLEConfigSelect] = CTLEInit(LocalImpulse); % Return impulse response and any Out or InOut AMI parameters for serdes.DFECDR instance [LocalImpulse, DFECDRTapWeights, DFECDRPhase, ~, ~] = DFECDRInit(LocalImpulse);
Окончательная выровненная импульсная характеристика в 2-D матричной форме преобразуется обратно в вектор импульсной характеристики.
Каждая функция Init также содержит раздел Custom user code area, в котором можно настроить собственный код.
%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed) % END: Custom user code area (retained when 'Refresh Init' button is pressed)
Дополнительные сведения о том, как можно использовать область пользовательского кода Custom, см. в разделах Настройка Building Blocks Datapath и Внедрение Custom CTLE в SerDes Toolbox PassThrough Block.
Создание кода функции Init (Refresh Init) может поддерживать один или несколько системных объектов при использовании пользовательского блока PassThrough. Если присутствует несколько системных объектов, они должны быть последовательными. Первый входной порт должен иметь форму сигнала в качестве входного сигнала. Если имеется какой-либо выходной сигнал, он должен быть первым выходным портом.
Если Вы используете Комплект инструментов SerDes datapath блок библиотеки, пороги PAM4 в функции Init сохраняются для Вас автоматически. При использовании пользовательской конфигурации с использованием PassThrough при генерации кода функции Init обнаруживаются блоки записи хранилища данных, которые ссылаются на PAM4 пороговые сигналы (PAM4_UpperThreshold, PAM4_CenterThreshold, PAM4_LowerThreshold) и определяет связности. Поддерживаются следующие соединения:
Прямое подключение к объекту System
Подключение к объекту System через селектор шины
Подключение к объекту системы через блок усиления
Прямое подключение к блоку константы
Если генерация кода Init не может найти поддерживаемую топологию, она применяет пороговые значения PAM4 по умолчанию.