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