В этом примере показано, как настроить управляющие сигналы в системе SerDes datapath путем добавления новых пользовательских параметров AMI и использования функциональных блоков MATLAB®. Это позволяет вам настраивать существующие параметры управления, не изменяя встроенные блоки в библиотеке SerDes Toolbox™.
В этом примере показано, как добавить новый параметр AMI, чтобы управлять операцией трех касаний передатчика, используемых блоком FFE. Пользовательский параметр AMI одновременно устанавливает все три касания на одно из этих десяти значений, заданных спецификацией PCIe4, или позволяет вам вводить три пользовательских значения касания с плавающей точкой. Чтобы знать больше о том, как задать модель передатчика PCIe4, см. Модель PCIe4 Transmitter/Receiver IBIS-AMI.
Модель передатчика в этом примере выполняет спецификацию PCIe4. Получатель является простой моделью передачи. Совместимый передатчик PCIe4 использует 3
- коснитесь канала прямого эквалайзера (FFE) с одним предварительным касанием и одним посткасанием и десятью предварительными установками.
Откройте модель adding_tx_ffe_params
. Система SerDes модель Simulink® состоит из Настройки, Стимула, Tx, Analog Channel и блоков Rx.
open_system('adding_tx_ffe_params.slx')
Подсистема Tx содержит блок FFE, чтобы смоделировать фрагмент временного интервала модели AMI и блока Init, чтобы смоделировать статистический фрагмент.
Блок Analog Channel имеет значения параметров PCIe4 для Целевой частоты, Потери, Импеданса и параметров аналоговой модели Tx/Rx.
Подсистема Rx имеет блок Pass-Through и блок Init.
Добавьте новый параметр AMI в передатчик, который доступен и для блоков Init и для GetWave datapath и функций. Параметр также включен в файл Tx IBIS-AMI.
Дважды кликните Блок Configuration, чтобы открыть диалоговое окно Block Parameters. Нажмите кнопку Open SerDes IBIS-AMI Manager. Перейдите к вкладке AMI-Tx диалогового окна SerDeS IBIS-AMI Manager.
Выберите параметр FFE, затем нажмите Add Parameter..., чтобы добавить новый подпараметр FFE.
Установите Название параметра к ConfigSelect
.
Сохраните Текущее значение как 0
.
В Описании добавьте Pre/Main/Post tap configuration selector
.
Сохраните использование как In
.
Установите тип на Integer
.
Установите формат на List
.
Под деталями Формата списка, Значением по умолчанию набора к 0
.
Значения Сетлиста к [-1 0 1 2 3 4 5 6 7 8 9]
Установите значения List_Tip к ["User Defined" "P0" "P1" "P2" "P3" "P4" "P5" "P6" "P7" "P8" "P9"]
Новый параметр ConfigSelect* добавляется к вкладке AMI-Tx.
Измените Инициализировать функцию MATLAB в блоке Init в подсистеме Tx, чтобы использовать недавно добавленного Конфигселект*параметера. ConfigSelect* параметр управляет существующими тремя касаниями передатчика. Чтобы выполнить это, добавьте оператор switch, который берет в значениях ConfigSelect* и автоматически устанавливает значения для всех трех касаний Tx, игнорируя определяемые пользователем значения для каждого касания. Если значение ConfigSelect -1
используется, затем пользовательские значения касания Tx передаются до FFE datapath неизменный блок.
В подсистеме Tx дважды кликните блок Init, чтобы открыть диалоговое окно Block Parameters и нажать кнопку Refresh Init, чтобы распространить новый параметр AMI к Инициализировать подсистеме.
Введите Ctrl-U, чтобы посмотреть под маской для блока Init, затем дважды кликните на инициализировать блоке, чтобы открыть Инициализировать Функцию.
Дважды кликните на impulseEqualization блоке MATLAB function, чтобы открыть функцию в MATLAB. Это - автоматически сгенерированная функция, которая обеспечивает обработку импульсной характеристики системного блока SerDes (AMI-Init IBIS). %% BEGIN:
и % END:
линии обозначают раздел, где пользовательский пользовательский код может быть введен. Данные в этом разделе не будут перезаписаны, когда Обновление Init будет запущено:
%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed) FFEParameter.ConfigSelect; % User added AMI parameter % END: Custom user code area (retained when 'Refresh Init' button is pressed)
Чтобы добавить пользовательский код системы управления ConfigSelect, прокрутите Потребительскую пользовательскую область кода вниз, прокомментируйте FFEParameter.ConfigSelect
линия, затем введите следующий код:
%% BEGIN: Custom user code area (retained when 'Refresh Init' button is pressed) %FFEParameter.ConfigSelect; % User added AMI parameter switch FFEParameter.ConfigSelect case -1 % User defined tap weights FFEInit.TapWeights = FFEParameter.TapWeights; case 0 % PCIe Configuration: P0 FFEInit.TapWeights = [0.000 0.750 -0.250]; case 1 % PCIe Configuration: P1 FFEInit.TapWeights = [0.000 0.830 -0.167]; case 2 % PCIe Configuration: P2 FFEInit.TapWeights = [0.000 0.800 -0.200]; case 3 % PCIe Configuration: P3 FFEInit.TapWeights = [0.000 0.875 -0.125]; case 4 % PCIe Configuration: P4 FFEInit.TapWeights = [0.000 1.000 0.000]; case 5 % PCIe Configuration: P5 FFEInit.TapWeights = [-0.100 0.900 0.000]; case 6 % PCIe Configuration: P6 FFEInit.TapWeights = [-0.125 0.875 0.000]; case 7 % PCIe Configuration: P7 FFEInit.TapWeights = [-0.100 0.700 -0.200]; case 8 % PCIe Configuration: P8 FFEInit.TapWeights = [-0.125 0.750 -0.125]; case 9 % PCIe Configuration: P9 FFEInit.TapWeights = [-0.166 0.834 0.000]; otherwise FFEInit.TapWeights = FFEParameter.TapWeights; end % END: Custom user code area (retained when 'Refresh Init' button is pressed)
Чтобы протестировать это, новый параметр управления FFE работает правильно, откройте диалоговое окно SerDes IBIS-AMI Manager от Блока Configuration. Во вкладке AMI-Tx отредактируйте ConfigSelect* параметр, чтобы установить Текущее значение к P7
. Это соответствует Настройке PCIe P7: Пред =-0.100, Основной = 0.700 и Сообщение =-0.200.
Запустите симуляцию и наблюдайте результаты статистического анализа Init.
Затем установите Текущее значение ConfigSelect* параметр к User Defined
. Это соответствует пользовательским весам касания: Пред = 0.000, Основной = 1.000 и Сообщение = 0.000.
Запустите симуляцию и наблюдайте результаты статистического анализа Init.
Попробуйте различные значения ConfigSelect*, чтобы проверить правильное функционирование. Статистический глаз открывается и закрывается на основе объема эквализации, примененной FFE. Сколько изменяет глаз, и значения касания, которые создают самый открытый глаз, варьируются на основе потери, заданной в блоке Analog Channel.
Чтобы изменить GetWave, добавьте новую функцию MATLAB, которая действует таким же образом в качестве Инициализировать функции.
В подсистеме Tx введите Ctrl-U, чтобы посмотреть под маской блока FFE.
Добавьте блок Constant в холст от библиотеки Simulink/Sources.
Переименуйте блок Constant как FFEConfigSelect
и установленный Постоянное значение к FFEParameter.ConfigSelect
.
Добавьте блок MATLAB function в холст от библиотеки Simulink / User-Defined.
Переименуйте блок MATLAB function в PCIe4FFEconfig
.
Дважды кликните блок MATLAB function и замените шаблон кода на следующее:
% PCIe4 tap configuration selector % Selects pre-defined Tx FFE tap weights based on PCIe4 specified % configurations. % % Inputs: % TapWeightsIn: User defined floating point tap weight values. % ConfigSelect: 0-9: PCIe4 defined configuration (P0-P9). % -1: User defined configuration (from TapWeightsIn). % Outputs: % TapWeightsOut: Array of tap weights to be used. % function TapWeightsOut = PCIe4FFEconfig(TapWeightsIn, ConfigSelect)
switch ConfigSelect case -1 % User defined tap weights TapWeightsOut = TapWeightsIn; case 0 % PCIe Configuration: P0 TapWeightsOut = [0.000 0.750 -0.250]; case 1 % PCIe Configuration: P1 TapWeightsOut = [0.000 0.833 -0.167]; case 2 % PCIe Configuration: P2 TapWeightsOut = [0.000 0.800 -0.200]; case 3 % PCIe Configuration: P3 TapWeightsOut = [0.000 0.875 -0.125]; case 4 % PCIe Configuration: P4 TapWeightsOut = [0.000 1.000 0.000]; case 5 % PCIe Configuration: P5 TapWeightsOut = [-0.100 0.900 0.000]; case 6 % PCIe Configuration: P6 TapWeightsOut = [-0.125 0.875 0.000]; case 7 % PCIe Configuration: P7 TapWeightsOut = [-0.100 0.700 -0.200]; case 8 % PCIe Configuration: P8 TapWeightsOut = [-0.125 0.750 -0.125]; case 9 % PCIe Configuration: P9 TapWeightsOut = [-0.166 0.834 0.000]; otherwise TapWeightsOut = TapWeightsIn; end
Повторно соедините подсистему FFE так, чтобы FFETapWeights и FFEConfigSelect постоянные блоки соединились с входными параметрами недавно заданного блока MATLAB function PCIe4FFEconfig. TapWeightsOut сигнализируют от подключений блока PCIe4FFEconfig до порта TapWeights блока FFE.
Чтобы протестировать это, новый параметр управления FFE работает правильно, откройте диалоговое окно SerDes IBIS-AMI Manager от Блока Configuration. Во вкладке AMI-Tx отредактируйте ConfigSelect* параметр, чтобы установить Текущее значение к P7
. Это соответствует Настройке PCIe P7: Пред =-0.100, Основной = 0.700 и Сообщение =-0.200. Наблюдайте выходную форму волны.
Затем установите Текущее значение ConfigSelect* параметр к User Defined
. Это соответствует пользовательским весам касания: Пред = 0.000, Основной = 1.000 и Сообщение = 0.000. Наблюдайте, как выходная форма волны изменяется.
Попробуйте различные значения ConfigSelect*, чтобы проверить правильное функционирование. Глаз временного интервала открывается и закрывается на основе объема эквализации, примененной FFE. Сколько изменяет глаз, и значения касания, которые создают самый открытый глаз, варьируются на основе потери, заданной в блоке Analog Channel.
Проверьте, что и Init и GetWave ведут себя как ожидалось, затем генерируют итоговый IBIS-AMI совместимые исполняемые файлы модели PCIe4, IBIS и файлы AMI.
Дважды кликните Блок Configuration, чтобы открыть диалоговое окно Block Parameters. Нажмите кнопку Open SerDes IBIS-AMI Manager, затем выберите вкладку Export:
Обновите имя модели Tx к pcie4_tx
.
Угловой процент Tx и Rx установлен в 10
. Это будет масштабировать угловые значения аналоговой модели min / макс. угловые значения аналоговой модели +/-10%.
Проверьте, что модель Dual выбрана как Тип модели для Tx. Это создаст исполняемые файлы модели, которые поддерживают и статистический (Init) и временной интервал (GetWave) анализ.
Установите Биты модели Tx игнорировать параметр к 3
с тех пор в Tx FFE существует три касания.
Установите Модели экспортировать в Tx только.
Установите имя файла IBIS (.ibs) на pcie4_tx_serdes.ibs
Нажмите кнопку Export, чтобы сгенерировать модели в директории Target.
Модель IBIS-AMI передатчика PCIe4 теперь завершена и готова быть протестированной в любом промышленном стандарте средство моделирования модели AMI.
FFE | PassThrough | SerDes Designer