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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Во вкладке Apps выберите HDL Coder. Вкладка HDL Code появляется.

  2. Нажмите Settings. Во вкладке HDL Code Generation> Optimization> Pipelining очистите Clock-rate pipelining и нажмите OK.

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

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

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

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

  • Counter Free-Running

  • Counter Limited

  • Deserializer1D

  • Discrete PID Controller

  • Dual Port RAM

  • Dual Rate Dual Port RAM

  • FFT HDL Optimized

  • HDL Cosimulation

  • HDL FIFO

  • HDL Counter

  • Hit Crossing

  • HDL Minimum Resource FFT

  • HDL Streaming FFT

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

  • Rate Transition

  • Serializer1D

  • Simple Dual Port RAM

  • Single Port RAM

  • Subsystem, если FlattenHierarchy не включен

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

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

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

  • Altera DSP Builder subsystems.

  • Xilinx System Generator subsystems

  • Блоки Communications Toolbox™.

  • Блоки DSP System Toolbox™, за исключением Delay и Discrete FIR Filter.

  • Блоки Stateflow®.

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

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

Больше о