Разделение ресурсов является оптимизацией области, в которой HDL Coder™ идентифицирует несколько функционально эквивалентных ресурсов и заменяет их на один ресурс. Данные мультиплексируются временем по совместно используемому ресурсу, чтобы выполнить те же операции. Чтобы узнать больше, как разделение ресурсов работает, смотрите Разделение ресурсов.
Можно следовать этим инструкциям, чтобы изучить, как использовать оптимизацию разделения ресурсов эффективно для подсистем, таких как атомарные подсистемы и блоки MATLAB function, и с дюйм/с с плавающей точкой. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований соответствия. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
3.1.5
Рекомендуемый
Чтобы совместно использовать ресурсы для идентичных подсистем, такой, группируя продукт, Добавляют, и блоки Задержки, чтобы сопоставить с одним срезом DSP, подсистемы, которые будут совместно использованы, должны быть блоками Атомарной подсистемы или блоками MATLAB function.
Общие факторы для совместного использования подсистем
Определите, хотите ли вы совместно использовать ресурсы на существующей тактовой частоте или на более высокой тактовой частоте.
Задайте SharingFactor, который больше, чем или равен количеству подсистем, которые вы хотите совместно использовать. Например, если у вас есть атомарные подсистемы 10
, и вы устанавливаете SharingFactor на 5
, HDL Coder не может реализовать разделение ресурсов к экземплярам 2
подсистемы. Чтобы совместно использовать подсистемы, разделите подсистемы и затем совместно используйте экземпляры меньших подсистем.
Проверяйте SharingFactor, который вы задаете для различных подсистем. Оптимизация разделения ресурсов разгоняет совместно используемые ресурсы LCM (Наименьшее общее кратное) SharingFactor различных подсистем. Например. f вы задаете SharingFactor 5
для одной Подсистемы и SharingFactor 7
для другой Подсистемы, оптимизация разделения ресурсов разгоняет совместно используемые ресурсы 35
. В таких случаях рекомендуется, чтобы вы использовали тот же SharingFactor для обеих подсистем, таких как 5
или 7
. Чтобы узнать больше об этом вычислении, смотрите Как работы Разделения ресурсов
Совместное использование блоков MATLAB function
HDL Coder совместно использует блоки MATLAB function, которые имеют:
Та же контрольная сумма Simulink®. Используйте Simulink.Subsystem.getChecksum
, чтобы определить контрольную сумму.
Те же свойства блока HDL.
Убедитесь, что блоки не используют:
Персистентные переменные
Потоковая передача цикла
Выведите конвейеризацию
Совместное использование атомарных подсистем
HDL Coder может совместно использовать блоки Атомарной подсистемы, которые имеют ту же контрольную сумму Simulink и те же свойства блока HDL.
Если вы хотите совместно использовать блоки Атомарной подсистемы, элементы состояния, которые могут содержать блоки:
Задержка
Единичная задержка
Единичная задержка, Enabled синхронный
Единичная задержка, восстановленная синхронный
Единичная задержка, Enabled восстановленный синхронный
Элементам состояния нужно было установить параметр Initial condition на 0.
Вы не можете совместно использовать атомарные подсистемы, которые содержат следующие блоки или реализации блока:
Обнаружьте изменение
Дискретная передача Fcn
БПФ HDL
FIFO HDL
Математическая функция (союз, эрмитов, транспонируют),
Блоки MATLAB function, которые содержат персистентные переменные
Sqrt
Каскадная архитектура (MinMax, продукт, Сумма)
Архитектура CORDIC
Взаимная архитектура Ньютона
Отфильтруйте блоки включая Дискретный КИХ-Фильтр
Блоки Communications Toolbox™
Блоки DSP System Toolbox™, кроме Дискретного КИХ-Фильтра
Блоки Stateflow®
Блоки, которые не поддержаны для балансировки задержки. Для получения дополнительной информации смотрите, что Задержка Балансирует Ограничения.
3.1.6
Рекомендуемый
Совместно использовать несколько:
Сумматоры с плавающей точкой, набор ShareAdders
к на.
Множители с плавающей точкой, убедитесь, что ShareMultipliers
установлен в на.
Другие ресурсы с плавающей точкой, набор ShareFloatingPointIP
к на.
См. также Моделирование с Нативной Плавающей точкой.