Совместное использование ресурсов - это оптимизация области, при которой HDL- Coder™ идентифицирует несколько функционально эквивалентных ресурсов и заменяет их одним ресурсом. Данные мультиплексируются во времени по совместно используемому ресурсу для выполнения тех же операций. Дополнительные сведения о том, как работает совместное использование ресурсов, см. в разделе Совместное использование ресурсов.
Можно следовать этим рекомендациям, чтобы узнать, как эффективно использовать оптимизацию совместного использования ресурсов для подсистем, таких как атомарные подсистемы и Блоки MATLAB function, а также для IP с плавающей точкой. Каждое руководство имеет уровень серьезности, который указывает на уровень податливостей. Для получения дополнительной информации см. HDL-руководства по моделированию уровней серьезности.
3.1.5
Рекомендуется
Чтобы совместно использовать ресурсы для идентичных подсистем, таких как при группировке Product, Add и Delay блоков для сопоставления с одним срезом DSP, подсистемы, которые будут совместно использоваться, должны быть Atomic Subsystem блоками, Virtual Subsystem блоками или MATLAB Function блоками.
Определите, хотите ли вы совместно использовать ресурсы с существующей тактовой частотой или с более высокой тактовой частотой.
Совместное использование включенных подсистем не поддерживается. Для совместного использования ресурсов используйте атомарные или виртуальные подсистемы без включения семантики.
Укажите SharingFactor, который больше или равен количеству подсистем, которые вы хотите использовать совместно.
Для примера, если у вас есть 10
подсистемы, и вы устанавливаете SharingFactor равной 5
, HDL Coder не может реализовать совместное использование ресурсов для 2
образцы подсистемы. Чтобы совместно использовать подсистемы, разделите подсистемы, а затем разделите образцы меньших подсистем.
Проверьте SharingFactor, которые вы задаете для различных подсистем. Оптимизация совместного использования ресурсов разгоняет общие ресурсы LCM (наименее распространенное множество) SharingFactor различных подсистем.
Для примера, если вы задаете SharingFactor 5
для одного Subsystem и SharingFactor 7
для другого Subsystem оптимизация совместного использования ресурсов разгоняет общие ресурсы по 35
. В таких случаях рекомендуется использовать одно и то же SharingFactor для обеих подсистем, таких как 5
или 7
. Дополнительные сведения об этом вычислении см. в разделе Как работает совместное использование ресурсов.
3.1.6
Рекомендуется
HDL Coder делится MATLAB Function блоками, которые имеют:
Тот же Simulink® контрольная сумма. Использовать Simulink.Subsystem.getChecksum
для определения контрольной суммы.
Те же свойства блоков.
Убедитесь, что блоки не используют:
Постоянные переменные
Потоковая передача циклов
Выходконвейеризации
При помощи MATLAB Datapath
архитектура позволяет совместно использовать ресурсы внутри блока MATLAB Function и через блок MATLAB Function с другими блоками в модели Simulink. Когда вы используете эту архитектуру, генератор кода обрабатывает блок MATLAB Function как обычный блок Subsystem. Эта возможность позволяет вам более широко применять различные оптимизации скорости и площади с MATLAB Function блоками. Смотрите Оптимизации HDL через контур блока MATLAB function с использованием архитектуры MATLAB Datapath.
3.1.7
Рекомендуется
HDL Coder может совместно использовать Subsystem блоки с той же контрольной суммой Simulink и теми же свойствами HDL-блоков.
Чтобы поделиться Subsystem блоками, элементы состояния, которые могут содержать блоки, являются:
Delay
Unit Delay
Unit Delay Enabled Synchronous
Unit Delay Resettable Synchronous
Unit Delay Enabled Resettable Synchronous
Элементы состояния должны иметь Initial condition набора параметров к 0.
Совместное использование подсистем внутри включенных подсистем с синхронной семантикой не поддерживается. Для совместного использования ресурсов используйте включенные подсистемы с классической семантикой.
Вы не можете совместно использовать подсистемы, которые содержат следующие блоки или реализации блоков:
Detect Change
Discrete Transfer Fcn
HDL FFT
HDL FIFO
Math Function (conj, hermitian, транспонирование)
MATLAB Function блоки, которые содержат постоянные переменные
Sqrt
Каскадная архитектура (MinMax, Продукт, Сумма)
Архитектура CORDIC
Взаимная архитектура Ньютона
Фильтрующие блоки, включая дискретный конечная импульсная характеристика
Блоки Communications Toolbox™
DSP System Toolbox™ блоки, кроме дискретного конечная импульсная характеристика
Stateflow® блоки
Блоки, которые не поддерживаются для балансировки задержки. Для получения дополнительной информации смотрите Ограничения балансировки задержки.
HDL Coder может совместно использовать Subsystem блоки с той же контрольной суммой Simulink и теми же свойствами HDL-блоков.
Если вы хотите поделиться Subsystem блоками, элементы состояния, которые могут содержать блоки, являются:
Delay
Unit Delay
Unit Delay Enabled Synchronous
Unit Delay Resettable Synchronous
Unit Delay Enabled Resettable Synchronous
Элементы состояния должны иметь Initial condition набора параметров к 0.
Вы не можете совместно использовать подсистемы, которые содержат следующие блоки или реализации блоков:
Detect Change
Discrete Transfer Fcn
HDL FFT
HDL FIFO
Math Function (conj, hermitian, транспонирование)
MATLAB Function блоки, которые содержат постоянные переменные
Sqrt
Каскадная архитектура (MinMax, Продукт, Сумма)
Архитектура CORDIC
Взаимная архитектура Ньютона
Фильтрующие блоки, включая дискретный конечная импульсная характеристика
Блоки Communications Toolbox
Блоки DSP System Toolbox, кроме дискретного конечная импульсная характеристика
Блоки Stateflow
Блоки, которые не поддерживаются для балансировки задержки. Для получения дополнительной информации смотрите Ограничения балансировки задержки.
3.1.8
Рекомендуется
Чтобы поделиться несколькими:
Сумматоры с плавающей точкой, заданные ShareAdders
на.
Множители с плавающей точкой, убедитесь, что ShareMultipliers
имеет значение on.
Другие ресурсы с плавающей точкой, set ShareFloatingPointIP
на.
Смотрите также Моделирование с собственной плавающей точкой.