Распределенная конвейеризация или повторная синхронизация регистра, является оптимизацией скорости, которая перемещает существующие задержки проекта, чтобы уменьшать критический путь при сохранении функционального поведения.
Программное обеспечение 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.