При включении оптимизации скорости и площади, при которой вставляются регистры трубопроводов, используйте оптимизацию конвейера тактовой частоты для определения многоцикловых путей в проекте. Конвейер тактовой частоты вставляет регистры конвейера с более высокой тактовой частотой, что улучшает тактовую частоту без введения дополнительной задержки или путем добавления минимальной задержки.
Генератор кода вводит конвейеры при указании определенных реализаций блоков или включении некоторых оптимизаций в модели, таких как:
Реализации многоцикловых блоков
Трубопровод ввода и вывода
Распределенная конвейерная обработка
Сопоставление библиотеки с плавающей запятой
Создание собственного кода 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 или используйте команду 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 верхнего уровня. По умолчанию в модели включена конвейеризация тактовой частоты. Для отключения конвейерной передачи тактовой частоты от пользовательского интерфейса:
На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code).
Щелкните Настройки (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 ®.
Генератор кода не поддерживает применение оптимизации потоковой передачи и совместного использования на одном и том же ресурсе при использовании оптимизации конвейера тактовой частоты. Отключите конвейерную передачу тактовой частоты или используйте либо оптимизацию потоковой передачи, либо оптимизацию совместного использования на том же ресурсе, когда конвейерная передача тактовой частоты включена.