Распределенная конвейеризация

Что распределяется, конвейерно обрабатывая?

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

Программное обеспечение HDL Coder™ использует адаптацию Leiserson-Saxe повторно синхронизирующийся алгоритм.

Например, в следующей модели, существует задержка 2 при выходе.

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

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

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

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

Требования для распределенной конвейеризации

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

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

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

Можно задать распределенную конвейеризацию для подсистемы, и графики Stateflow® и блоки MATLAB Function в подсистеме. Смотрите Распределенную Конвейерную Вставку для блоков MATLAB function.

Задавать распределенную конвейеризацию с помощью пользовательского интерфейса:

  • Во вкладке Apps выберите HDL Coder. Вкладка HDL Code появляется. Выберите Subsystem и затем нажмите HDL Block Properties. Установите DistributedPipelining на on и нажмите OK.

  • Щелкните правой кнопкой по Subsystem и выберите HDL Code> HDL Block Properties. Установите DistributedPipelining на on и нажмите OK.

Включить распределенную конвейеризацию, на командной строке, введите:

hdlset_param('path/to/block', 'DistributedPipelining', 'on')

Совет

Выходные данные могли быть в недопустимом состоянии первоначально, если вы вставляете конвейерные регистры. Чтобы избежать ошибок испытательного стенда, следующих из начальных недопустимых выборок, отключите выходную проверку те выборки. Для получения дополнительной информации смотрите, Игнорируют проверку выходных данных (количество выборок).

Ограничения распределенной конвейеризации

Распределенная оптимизация конвейеризации имеет нижеследующие ограничения:

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

  • Программное обеспечение HDL Coder генерирует конвейерные регистры при выходных параметрах в следующих ситуациях вместо того, чтобы распределить регистры, чтобы уменьшать критический путь:

    • Диаграмма Stateflow, содержащая состояние, локальную переменную или матрицу со статически неразрешимым индексом.

  • HDL Coder распределяет конвейерные регистры вокруг следующих блоков вместо в них:

    • Model

    • Sum (Cascade реализация

    • Product (Cascade реализация

    • MinMax

    • Upsample

    • Downsample

    • Rate Transition

    • Zero-Order Hold

    • Reciprocal Sqrt (RecipSqrtNewton реализация

    • Trigonometric Function (CORDIC Приближение)

    • Single Port RAM

    • Dual Port RAM

    • Simple Dual Port RAM

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

    • M-PSK Demodulator Baseband

    • M-PSK Modulator Baseband

    • QPSK Demodulator Baseband

    • QPSK Modulator Baseband

    • BPSK Demodulator Baseband

    • BPSK Modulator Baseband

    • PN Sequence Generator

    • Repeat

    • HDL Counter

    • LMS Filter

    • Sine Wave

    • Viterbi Decoder

    • Triggered Subsystem

    • Counter Limited

    • Counter Free-Running

    • Frame Conversion

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

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

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

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

Выбранная библиография

Лейсерсон, C.E и Джеймс Б. Сэйкс. “Повторно синхронизируя Синхронную Схему”. Algorithmica. Издание 6, Номер 1, 1991, стр 5-35.

Похожие темы