exponenta event banner

Конвейер тактовой частоты

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

Обоснование трубопровода тактовой частоты

Генератор кода вводит конвейеры при указании определенных реализаций блоков или включении некоторых оптимизаций в модели, таких как:

  • Реализации многоцикловых блоков

  • Трубопровод ввода и вывода

  • Распределенная конвейерная обработка

  • Сопоставление библиотеки с плавающей запятой

  • Создание собственного кода HDL с плавающей запятой

  • Совместное использование ресурсов

  • Вытекание

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

Как работает конвейер тактовой частоты

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

Если задать коэффициент избыточной дискретизации больше единицы, время выборки DUT становится медленнее фактической тактовой частоты. Генератор кода определяет максимальное количество конвейеров тактовой частоты, которые он может вставить, на основе отношения времени выборки DUT к блоку и коэффициента избыточной дискретизации.

Максимальное число задержек тактовой частоты = (block_rate start DUT_base_rate) × Oversampling

Конвейеризация тактовой частоты идентифицирует области в модели, которые имеют ту же самую медленную скорость передачи данных и ограничены либо блоками задержки, либо блоками, которые вводят переход скорости. Генератор кода преобразует эти области в более высокую тактовую частоту путем введения блоков повтора на входе области и блоков перехода скорости на выходе области. Если выходной сигнал области тактовой частоты является блоком задержки на скорости передачи данных, HDL Coder™ поглощает этот блок задержки. Для учета задержки генератор кода вводит несколько конвейеров тактовой частоты, соответствующих отношению скорости передачи данных к тактовой частоте.

Кодер HDL создает сценарий, который выделяет блоки в модели, которые являются препятствиями для конвейеризации тактовой частоты, и сценарий, чтобы очистить подсветку. Иногда, если генератор кода не может реализовать совместное использование ресурсов или потоковую передачу с тактовой частотой, он отображает ошибку генерации кода с рекомендацией изменить Oversampling значение. Чтобы снять выделение, щелкните значок clearhighlighting сценарий в окне команд MATLAB ®.

Конвейерная обработка тактовой частоты и сглаживание иерархии

Можно использовать оптимизацию конвейера тактовой частоты с выравниванием иерархии подсистем или без него. Выровняйте иерархию подсистем, если необходимо максимизировать возможности совместного использования ресурсов в конструкции. Чтобы выровнять иерархию подсистемы, включите функцию FlattenHierarchy в подсистеме верхнего уровня. По умолчанию все блоки подсистемы в подсистеме верхнего уровня наследуют этот параметр FlattenHierarchy. Сведение иерархии приводит несколько областей тактовой частоты к одному уровню в иерархии и объединяет их, что увеличивает возможности конвейеризации тактовой частоты. Однако это нарушает модульность конструкции и влияет на читаемость сгенерированного кода HDL. См. также Сведение иерархии.

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

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

  • Улучшает читаемость созданного кода HDL за счет создания нескольких файлов Verilog или VHDL для различных блоков подсистемы в проекте.

Конвейер тактовой частоты для выходных портов DUT

Чтобы вставить регистры конвейера выходного порта DUT на тактовой частоте вместо скорости передачи данных, выберите опцию Разрешить конвейерирование тактовой частоты выходных портов DUT или используйте команду ClockRatePipelineOutputPorts собственность. Эта опция изменяет синхронизацию интерфейса DUT, поскольку изменяет время выборки выходных портов DUT с низкой скорости на тактовую частоту. Для корректировки разницы в синхронизации кодер HDL генерирует сообщения, которые обеспечивают фазовое смещение каждого выходного порта. Например, это сообщение означает, что выходные данные из portname действителен после 31 такта: Phase of output port portname: 31 clock cycles.

Модель валидации корректирует разницу во времени путем вставки блока Rate Transition на выходе DUT и сравнения выходного сигнала Rate Transition с исходным выходным сигналом. Стенд тестирования RTL регистрирует выходные данные на входе Rate Transition и сравнивает их с выходными данными DUT при моделировании RTL.

Рекомендации по трубопроводированию тактовой частоты

  • Если в проекте используется блок Rate Transition, переключите блок Rate Transition на блок Downsample с ненулевым смещением Sample. Конвейеризация тактовой частоты оптимизирует блок Downsample, избегая дополнительной задержки, которую может ввести блок Rate Transition, что экономит область и время.

  • Создайте DUT с одной скоростью и укажите коэффициент избыточной дискретизации. Избегайте использования блоков Rate Transition, Upsample, Downsample или других блоков изменения скорости.

Определение трубопровода тактовой частоты

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

  1. На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code).

  2. Щелкните Настройки (Settings). На вкладке Создание кода HDL > Оптимизация > Конвейерная обработка снимите флажок Конвейерная обработка тактовой частоты и нажмите кнопку ОК.

В командной строке используйте команду makehdl или hdlset_param для установки ClockRatePipelining свойство для off.

Для подсистемы в подсистеме DUT верхнего уровня можно использовать конвейер тактовой частоты. Чтобы смоделировать управляющий тракт в конструкции на скорости передачи данных вместо тактовой частоты, поместите управляющий тракт в подсистему и отключите конвейер тактовой частоты для этой подсистемы. Чтобы отключить конвейерную обработку тактовой частоты для подсистемы в подсистеме DUT верхнего уровня, установите ClockRatePipelining в значение off для этой подсистемы. См. также раздел Установка трубопровода тактовой частоты для подсистемы.

Ограничения для трубопровода тактовой частоты

Эти блоки запрещают конвейерную обработку тактовой частоты и, следовательно, ограничивают области конвейерной обработки тактовой частоты:

  • Счетчик свободно работает

  • Счетчик ограничен

  • Deserializer1D

  • Дискретный PID-контроллер

  • Двухпортовая ОЗУ

  • Двухскоростная двухпортовая ОЗУ

  • FFT HDL оптимизирован

  • Косимуляция ЛПВП

  • HDL FIFO

  • Счетчик HDL

  • Переход удара

  • Минимальный ресурс HDL FFT

  • Потоковый БПФ HDL

  • Система MATLAB, если она использует постоянные переменные

  • Переход ставки

  • Serializer1D

  • Простая двухпортовая оперативная память

  • Однопортовая ОЗУ

  • Подсистема, если FlattenHierarchy не включен

Генератор кода не поддерживает конвейер тактовой частоты для:

  • Подсистема черного ящика или ссылочные блоки модели черного ящика.

  • Подсистемы, содержащие блоки, не поддерживаемые для конвейеризации тактовой частоты.

  • Подсистемы Altera DSP Builder.

  • Подсистемы генератора системы Xilinx

  • Связь Toolbox™ блоками.

  • Блоки Toolbox™ системы DSP, за исключением задержки и дискретного фильтра FIR.

  • Блок Stateflow ®.

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

См. также

Параметры конфигурации Simulink

Связанные примеры

Подробнее