exponenta event banner

Вытекание

Что такое потоковая передача?

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

Задавая коэффициент потоковой передачи для подсистемы, можно управлять степенью совместного использования таких ресурсов в этой подсистеме. При соотношении коэффициента потоковой передачи (Nst) к ширине пути данных подсистемы (Vdim) равно 1:1, кодер HDL реализует полностью скалярный путь данных. Коэффициент потока, равный 0 (по умолчанию), создает полностью параллельную реализацию (то есть без совместного использования) для векторных вычислений.

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

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

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

Указать потоковую передачу

Чтобы указать потоковую передачу из пользовательского интерфейса:

  • На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code). Выберите подсистему, ссылку на модель или функциональный блок MATLAB, а затем щелкните Свойства блока HDL (HDL Block Properties). В поле StreamingFactor введите количество ресурсов для потоковой передачи.

    Примечание

    Для функциональных блоков MATLAB, чтобы указать StreamingFactor, в диалоговом окне Свойства блока HDL необходимо задать для архитектуры HDL блока значение MATLAB Datapath.

  • Щелкните правой кнопкой мыши подсистему, ссылку на модель или функциональный блок MATLAB и выберите «Код HDL» > «Свойства блока HDL». В поле StreamingFactor введите количество ресурсов для потоковой передачи.

В командной строке можно задать StreamingFactor с использованием hdlset_param , как в следующем примере.

modelname = 'sfir_fixed'
dut = 'sfir_fixed/symmetric_fir';
open_system(modelname)
hdlset_param(dut,'StreamingFactor', 4);

Определение коэффициента потоковой передачи и времени выборки

В данной подсистеме, если Nst - коэффициент потоковой передачи, и Vdim - максимальная векторная размерность, то путь данных результирующей потоковой подсистемы является одним из следующих:

  • Ширины Vstream = (Vdim/Nst), если Vdim > Nst.

  • Ширины Vstream = (Nst/Vdim), если Nst > Vdim.

  • Скаляр.

Если исходный путь данных работал с временем выборки, S, что равно базовому времени выборки, то потоковая подсистема работает с временем выборки, равным:

  • S / Nst, если Vdim > Nst.

  • S / Vdim, если Nst > Vdim.

Если исходный путь данных работал с временем выборки, S, что больше базового времени выборки,Sbase, то потоковая подсистема работает с временем выборки Sbase / Oversampling. Обратите внимание, что время потоковой выборки не зависит от времени исходной выборки. S.

Определение блоков, поддерживающих потоковую передачу

Кодер HDL поддерживает множество блоков для потоковой передачи. В качестве наилучшей практики запустите checkhdl перед формированием потокового кода для подсистемы. checkhdl сообщает о блоках в подсистеме, несовместимых с потоковой передачей. Если инициируется генерация потокового кода для подсистемы, содержащей несовместимые блоки, кодер работает вокруг этих блоков и генерирует для них непоточный код.

Кодер HDL не может применить оптимизацию потоковой передачи к ссылке модели.

Требования к потоковым подсистемам

Перед применением потоковой передачи HDL Coder выполняет ряд проверок подсистем, подлежащих потоковой передаче. Потоковая передача подсистемы возможна в следующих случаях:

  • Коэффициент потоковой передачи Nst является совершенным делителем ширины вектора Vdim, или ширина вектора должна быть идеальным делителем коэффициента потоковой передачи.

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

Потоковый отчет

Для просмотра потоковой информации в отчете перед созданием кода для каждой подсистемы или ссылки на модель включите отчет оптимизации. Чтобы включить этот отчет, на вкладке Код HDL (HDL Code) выберите Параметры отчета (Report Options), а затем выберите Создать отчет по оптимизации (Generate optimization report).

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

Если потоковая передача выполнена успешно, в отчете отображается выведенный коэффициент StreamingFactor и таблица, определяющая:

  • Группа: уникальный идентификатор группы для группы блоков Simulink ®, принадлежащих потоковой группе.

  • Выведенный Текущий Фактор: Текущий фактор, выведенный Кодером HDL с Текущим Фактором, который Вы определяете в HDL Block Properties.

Чтобы просмотреть группы блоков, принадлежащих потоковой группе в модели Simulink и в созданной модели, щелкните ссылку Подсветить потоковые группы и диагностику в отчете.

Связанные темы