Адаптивная конвейеризация

Определенные шаблоны или комбинация блоков с регистрами могут улучшить достижимую частоту часов и уменьшать использование области на платах FPGA. Адаптивная оптимизация конвейеризации создает эти шаблоны путем вставки конвейерных регистров в блоки в проекте. Чтобы определить оптимальное количество конвейерных регистров, чтобы вставить в ваш проект, оптимизация рассматривает целевое устройство, целевую частоту, размеры слова множителя и настройки в HDL Block Properties. Используйте адаптивную конвейеризацию с:

  • Конвейеризация тактовой частоты, чтобы вставить конвейерные регистры на более быстрой тактовой частоте вместо более медленной скорости передачи данных. С конвейеризацией тактовой частоты можно спроектировать DUT на одном уровне, и затем задать Oversampling factor.

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

Требования

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

    Примечание

    Если вы используете целевое устройство, которое не характеризуется для адаптивной конвейеризации, оптимизация использует Xilinx® Virtex®-7 когда Xilinx Vivado задан как Synthesis Tool и использует Intel® Stratix® V, когда Synthesis Tool является Altera Quartus II или Intel Quartus Pro.

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

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

Примечание

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

Задайте адаптивную конвейеризацию

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

Отключите адаптивную конвейеризацию для модели

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

  • В HDL Workflow Advisor, на вкладке HDL Code Generation> Set Code Generation Options> Set Optimization Options> Pipelining, выбирают Adaptive pipelining.

  • В диалоговом окне Configuration Parameters:

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

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

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

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

Если вы хотите, чтобы HDL Coder выборочно отключил адаптивные конвейеры для подсистемы в вашей модели, установите AdaptivePipelining на off для той подсистемы.

Чтобы изучить, как установить адаптивную конвейеризацию для подсистемы, смотрите Набор Адаптивная Конвейеризация Для Подсистемы.

Поддерживаемые блоки

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

  • n-D Lookup Table

  • Direct Lookup Table (n-D)

  • Sine HDL Optimized

  • Cosine HDL Optimized

  • Downsample

  • Rate Transition

  • Product

  • Gain

  • Multiply-Add

  • Multiply-Accumulate

  • MATLAB Function

Конвейерно обработайте вставку для интерполяционных таблиц

Интерполяционные таблицы являются блоками в библиотеке HDL Coder> Lookup Tables включая блоками Cosine HDL Optimized и Sine HDL Optimized.

Вставить адаптивные конвейеры для блоков интерполяционной таблицы:

  1. Задайте целевое устройство.

  2. Убедитесь, что Interpolation method установлен в Flat.

При генерации кода HDL Coder вставляет регистр без сброса при выходе интерполяционной таблицы. Комбинация блока интерполяционной таблицы и регистра без сброса может потенциально сопоставить с блоками RAM на FPGA.

Этот рисунок является сгенерированной моделью для блока n-D Lookup Table с Xilinx Virtex7 как целевое устройство FPGA.

Конвейерно обработайте вставку для перехода уровня и блоков Downsample

Вставить адаптивные конвейеры для блоков Downsample и Rate Transition:

  1. Задайте целевое устройство.

  2. Убедитесь, что блоки Downsample имеют Downsample factor, больше, чем два.

При генерации кода HDL Coder вставляет конвейерный регистр в выходном порту блока Downsample. Сложение конвейерного регистра может избежать обходной логики регистра, которая сохраняет область на целевом FPGA.

Этот рисунок является сгенерированной моделью для блоков с Xilinx Virtex7 как целевое устройство FPGA.

Конвейерно обработайте вставку для продукта и получите блоки

Вставить адаптивные конвейеры для этих блоков:

  1. Задайте целевое устройство.

  2. Задайте целевую частоту, больше, чем нуль.

При генерации кода HDL Coder вставляет регистры в портах ввода и вывода блоков. Комбинация множителей с регистрами может потенциально сопоставить с модулями DSP на целевом устройстве.

Этот рисунок является сгенерированной моделью для Product, Gain и блоков Multiply-Add с Intel Arria10 как целевое устройство FPGA и целевая частота 500 МГц. Входные параметры с блоками имеют тип int16.

Шаблон и количество конвейера указывают тот HDL Coder, вставки могут варьироваться в зависимости от целевого устройства, целевой частоты и размеров слова множителя.

Этот рисунок является сгенерированной моделью для блоков с Xilinx Virtex7 как целевое устройство FPGA и целевая частота 1 500 МГц. Входные параметры имеют тип int8.

Блоки имеют различное количество конвейерных регистров в выходных портах. Чтобы совпадать с задержками, HDL Coder добавляет задержку при выходе блоков Gain и Product.

Конвейерно обработайте вставку для, умножаются - добавляют и умножаются - накапливают блоки

Вставить адаптивные конвейеры для этих блоков:

  1. Задайте целевое устройство.

  2. Задайте целевую частоту, больше, чем нуль.

  3. Используйте Parallel Архитектура HDL для блока Multiply-Accumulate. Для входного вектора размера N, эта архитектура использует N Multiply-Add блокируется последовательно, чтобы вычислить результат.

Внимание

Блок Multiply-Add с набором PipelineDepth к auto или значение, больше, чем нуль и блок Multiply-Accumulate с архитектурой HDL, заданной как Parallel проигнорируйте адаптивную установку конвейеризации. Если вы задаете целевое устройство FPGA и целевую частоту, больше, чем нуль, генератор кода вставляет конвейерные регистры при вводах и выводах блока, даже когда адаптивная конвейеризация отключена.

При генерации кода HDL Coder вставляет регистры в портах ввода и вывода блоков. Комбинация блоков с регистрами может потенциально сопоставить с модулями DSP на целевом устройстве.

Этот рисунок является сгенерированной моделью для Multiply-Add и Multiply-Accumulate с Intel Arria10 как целевое устройство FPGA и целевая частота 500 МГц. Входные параметры с блоками имеют тип int8.

Шаблон и количество конвейера указывают тот HDL Coder, вставки могут варьироваться в зависимости от целевого устройства, целевой частоты и размеров слова множителя.

Этот рисунок является сгенерированной моделью для блоков с Xilinx Virtex7 как целевое устройство FPGA и целевая частота 1 500 МГц. Входные параметры имеют тип int16.

Конвейерно обработайте вставку для блоков MATLAB function

Вставить адаптивные конвейеры для блоков MATLAB Function:

  1. Задайте целевое устройство.

  2. Задайте целевую частоту, больше, чем нуль.

  3. Установите архитектуру HDL для блоков MATLAB Function к MATLAB Datapath.

HDL Coder обрабатывает блоки MATLAB Function с набором архитектуры к MATLAB Datapath как регулярные Подсистемы. Генератор кода преобразует алгоритм MATLAB® в блок-схему Simulink®. Если схема Simulink использует блоки, которые поддерживаются адаптивной конвейеризацией, такой как Product или Add. генератор кода вставляет конвейерные регистры в портах ввода и вывода блоков. Комбинация множителей с регистрами может потенциально сопоставить с модулями DSP на целевом устройстве.

Рассмотрите блок MATLAB Function, который использует MATLAB Datapath архитектура. Этот код является алгоритмом в блоке MATLAB Function.

function y = fcn(u)

y = u*5;

Этот рисунок является сгенерированной моделью для блока MATLAB Function с Intel Arria10 как целевое устройство FPGA и целевая частота 500 МГц. Входные параметры с блоками имеют тип int16. Генератор кода вывел алгоритм как умножение константой и вставил адаптивные конвейеры при вводе и выводе.

См. приложения HDL для блока MATLAB function.

Адаптивный отчет конвейеризации

Чтобы видеть, что адаптивное конвейерно обрабатывает информацию в отчете, прежде чем вы сгенерируете код для каждой Подсистемы или модели - ссылки, включают отчет Генерации кода. Чтобы включить отчет Генерации кода, в диалоговом окне Configuration Parameters, на панели HDL Code Generation, выбирают Generate optimization report.

Когда вы генерируете код, HDL Coder представляет отчет Генерации кода. Выберите раздел Adaptive Pipelining отчета Оптимизации.

Адаптивный отчет Конвейеризации отображает состояние адаптивной оптимизации конвейеризации и вставил ли HDL Coder адаптивные конвейеры в ваш проект.

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

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

Похожие темы