Streaming является оптимизацией области, в которую HDL Coder™ преобразовывает векторный информационный канал к скалярному информационному каналу (или к нескольким векторным информационным каналам меньшего размера). По умолчанию кодер генерирует реализации fully parallel для векторных вычислений. Например, генератор кода понимает векторную сумму как несколько сумматоров, выполняясь параллельно во время одного такта. Этот метод может использовать много аппаратных ресурсов. С потоковой передачей сгенерированный код сохраняет область чипа путем мультиплексирования данных по меньшему числу ресурсов общего оборудования.
Путем определения streaming factor для подсистемы можно управлять степенью, до которой такие ресурсы совместно используются в той подсистеме. Когда отношение потоковой передачи фактора (Nst
) к ширине информационного канала подсистемы (Vdim
) 1:1, HDL Coder реализует совершенно скалярный информационный канал. Фактор потоковой передачи 0 (значение по умолчанию) производит полностью параллельную реализацию (то есть, не совместно используя) для векторных вычислений.
Если вы знаете максимальные векторные размерности и частоту дискретизации для подсистемы, можно вычислить возможные факторы потоковой передачи и получившиеся частоты дискретизации для подсистемы. Однако, даже если требуемый фактор потоковой передачи математически возможен, подсистема должна соответствовать другим критериям для потоковой передачи.
По умолчанию, когда вы применяете оптимизацию потоковой передачи, HDL Coder сверхдискретизировал ресурс общего оборудования, чтобы сгенерировать оптимизированную областью реализацию с исходной задержкой. Если переданный потоком информационный канал действует на уровне медленнее, чем базовая ставка, кодер реализует информационный канал в базовой ставке. Можно также ограничить отношение сверхдискретизации, чтобы соответствовать ограничениям часов целевого компьютера. Чтобы узнать больше, смотрите, что Тактовая частота Конвейерно обрабатывает.
Можно сгенерировать и использовать модель валидации, чтобы проверить, что вывод оптимизированного DUT битно-верен для результатов, приведенных исходным DUT. Чтобы узнать больше о модели валидации, см. Сгенерированную Модель Модели и Валидации.
Задавать потоковую передачу от пользовательского интерфейса:
Щелкните правой кнопкой по подсистеме, модели - ссылке или блоку MATLAB function.
Выберите HDL Code> HDL Block Properties.
В поле StreamingFactor введите номер ресурсов, которые вы хотите передать потоком.
В командной строке можно установить StreamingFactor
с помощью функции hdlset_param
, как в следующем примере.
dut = 'sfir_fixed/symmetric_fir'; 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
, или векторная ширина должна быть совершенным делителем фактора потоковой передачи.
Все входные параметры к подсистеме имеют тот же векторный размер. Если входные параметры имеют различные векторные размеры, можно передать подсистему потоком путем выравнивания иерархии подсистемы. Когда вы сглаживаете иерархию, оптимизация потоковой передачи идентифицирует области с различными векторными размерами и создает группы потоковой передачи для этих областей. У этих групп есть различные факторы потоковой передачи, которые выведены из векторных размеров.
Чтобы видеть информацию о потоковой передаче в отчете, прежде чем вы сгенерируете код для каждой подсистемы или модели - ссылки, включают отчет Генерации кода. Чтобы включить отчет Генерации кода, в диалоговом окне Configuration Parameters, на панели HDL Code Generation, включают Generate optimization report.
Когда вы генерируете отчет генерации кода в разделе Streaming and Sharing Optimization Report, вы видите эффект оптимизации потоковой передачи. Если потоковая передача неудачна, отчет показывает диагностические сообщения и нарушающие блоки, которые заставили потоковую передачу перестать работать. Когда требуемый фактор потоковой передачи не может быть реализован, HDL Coder генерирует код непотоковой передачи.
Если потоковая передача успешна, отчет отображает StreamingFactor, который был выведен, и таблица, которая задает:
Group: уникальный ID группы для группы блоков Simulink®, которые принадлежат группе потоковой передачи.
Inferred Streaming Factor: Потоковая передача фактора, выведенного HDL Coder с Streaming Factor, который вы задаете в HDL Block Properties.
Чтобы видеть группы блоков, которые принадлежат группе потоковой передачи в вашей модели Simulink и в сгенерированной модели, щелкните по ссылке Highlight streaming groups and diagnostics в отчете.