Конвейеризация тактовой частоты

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

Объяснение для конвейеризации тактовой частоты

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

  • Реализации блока мультицикла

  • Конвейеризация ввода и вывода

  • Распределенная конвейеризация

  • Отображение библиотеки с плавающей точкой

  • Нативная генерация HDL-кода с плавающей точкой

  • Разделение ресурсов

  • Потоковая передача

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

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

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

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

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

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

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

Конвейеризация тактовой частоты и выравнивание иерархии

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

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

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

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

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

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

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

Лучшые практики для конвейеризации тактовой частоты

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

  • Разработайте свой DUT на одном уровне и задайте Oversampling factor. Избегайте использования Перехода Уровня, Сверхдискретизируйте, Субдискретизируйте, или другие изменяющие уровень блоки.

Задайте конвейеризацию тактовой частоты

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

  • В диалоговом окне Configuration Parameters, на вкладке HDL Code Generation> Target and Optimizations> Pipelining, выбирают Clock-rate pipelining

  • В командной строке используйте makehdl или функцию hdlset_param, чтобы установить свойство ClockRatePipelining на off.

Можно управлять конвейеризацией тактовой частоты для подсистемы в подсистеме DUT верхнего уровня. Чтобы смоделировать путь к управлению в вашем проекте на скорости передачи данных вместо тактовой частоты, поместите путь к управлению в подсистему и отключите конвейеризацию тактовой частоты для той подсистемы. Чтобы отключить конвейеризацию тактовой частоты для подсистемы в подсистеме DUT верхнего уровня, установите ClockRatePipelining на off для той подсистемы. См. также Конвейеризацию Тактовой частоты Набора Для Подсистемы.

Ограничения для конвейеризации тактовой частоты

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

  • Счетчик, свободного доступа

  • Counter Limited

  • Deserializer1D

  • Дискретный ПИД-регулятор

  • Двухпортовый RAM

  • Двойной уровень двухпортовый RAM

  • Оптимизированный HDL БПФ

  • HDL Cosimulation

  • FIFO HDL

  • Счетчик HDL

  • Поразите пересечение

  • БПФ ресурса минимума HDL

  • БПФ потоковой передачи HDL

  • Функция MATLAB, если это использует персистентные переменные

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

  • Переход уровня

  • Serializer1D

  • Простой двухпортовый RAM

  • Один порт RAM

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

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

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

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

  • Разработчик DSP Altera подсистемы.

  • Системные подсистемы Генератора Xilinx

  • Блоки Communications Toolbox™.

  • Блоки DSP System Toolbox™, за исключением Задержки и Дискретного КИХ-Фильтра.

  • Блоки Stateflow®.

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

Больше о