Вытекание

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

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

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

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

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

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

Настройка потоковой передачи

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

  • На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code. Выберите подсистему, модель-ссылку или MATLAB Function блок и нажмите HDL Block Properties. В поле StreamingFactor введите количество ресурсов, которые вы хотите передать.

    Примечание

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

  • Щелкните правой кнопкой мыши подсистему, модель-ссылку или MATLAB Function блок и выберите HDL Code > HDL Block Properties. В поле 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 Coder поддерживает множество блоков для потоковой передачи. Как лучшая практика, запустите checkhdl функция перед генерацией потокового кода для подсистемы. checkhdl сообщает блоки в подсистеме, которые несовместимы с потоковой передачей. Если вы инициируете генерацию потокового кода для подсистемы, которая содержит несовместимые блоки, кодер работает вокруг этих блоков и генерирует для них непотоковый код.

HDL Coder не может применить потоковую оптимизацию к модели-ссылке.

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

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

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

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

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

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

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

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

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

  • Inferred Streaming Factor: Коэффициент потоковой передачи, выводимый путем HDL Coder с Streaming Factor, которые вы задаете в свойствах HDL- Блока.

Чтобы увидеть группы блоков, которые относятся к потоковой группе, в модели Simulink и в сгенерированной модели, щелкните Highlight streaming groups and diagnostics ссылку в отчете.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте