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

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

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

Генератор кода представляет конвейеры, когда вы задаете определенные реализации блоков или разрешаете некоторые оптимизации в модели, такие как:

  • Многоциклические реализации блоков

  • Входная и выходная конвейеризация

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

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

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

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

  • Вытекание

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

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

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

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

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

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

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

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

Можно использовать оптимизацию конвейеризации с тактовой частотой с выравниванием иерархии подсистемы или без нее. Сглаживайте иерархию подсистем, когда хотите максимизировать возможности для совместного использования ресурсов в проекте. Чтобы выровнять иерархию подсистем, включите 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. Во вкладке <reservedrangesplaceholder4>> <reservedrangesplaceholder3>> <reservedrangesplaceholder2>, ясной Clock-rate pipelining и нажатие кнопки OK.

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

Можно использовать конвейеризацию с тактовой частотой для подсистемы в пределах подсистемы DUT верхнего уровня. Чтобы смоделировать путь управления в вашем проекте со скоростью передачи данных вместо тактовой частоты, поместите путь управления в подсистему и отключите конвейеризацию тактовой частоты для этой подсистемы. Чтобы отключить конвейеризацию с тактовой частотой для подсистемы в подсистеме DUT верхнего уровня, установите ClockRatePipelining равной off для этой подсистемы. Смотрите также Set Clock-Rate Pipelining For a Subsystem.

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

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

  • 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® блоки.

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

См. также

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

Похожие примеры

Подробнее о