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