Разделение ресурсов является оптимизацией области, в которой HDL Coder™ идентифицирует несколько функционально эквивалентных ресурсов и заменяет их на один ресурс. Данные мультиплексируются временем по совместно используемому ресурсу, чтобы выполнить те же операции. Чтобы узнать больше, как разделение ресурсов работает, смотрите Разделение ресурсов.
Можно следовать этим инструкциям, чтобы изучить, как использовать оптимизацию разделения ресурсов эффективно в подсистемах, таких как атомарные подсистемы и блоки MATLAB function, и с дюйм/с с плавающей точкой. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
3.1.5
Рекомендуемый
Чтобы совместно использовать ресурсы для идентичных подсистем, такой, группируя Product, Add и блоки Delay, чтобы сопоставить с одним срезом DSP, подсистемы, которые будут совместно использованы, должны быть блоками Atomic 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
определить контрольную сумму.
Те же свойства блока HDL.
Убедитесь, что блоки не используют:
Персистентные переменные
Потоковая передача цикла
Выведите конвейеризацию
При помощи MATLAB Datapath
архитектура, можно совместно использовать ресурсы в блоке MATLAB Function и через блок MATLAB Function с другими блоками в модели Simulink. Когда вы используете эту архитектуру, генератор кода обрабатывает блок MATLAB Function как регулярный блок Subsystem. Эта возможность позволяет вам более широко применить различную скорость и оптимизацию области с блоками MATLAB Function. Смотрите Оптимизацию HDL Через Контур блока MATLAB function Используя Архитектуру MATLAB Datapath.
3.1.7
Рекомендуемый
HDL Coder может совместно использовать блоки Atomic Subsystem, которые имеют ту же контрольную сумму Simulink и те же свойства блока HDL.
Чтобы совместно использовать блоки Atomic 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 (союз, эрмитов, транспонируют),
Блоки MATLAB Function, которые содержат персистентные переменные
Sqrt
Каскадная архитектура (MinMax, продукт, Сумма)
Архитектура CORDIC
Взаимная архитектура Ньютона
Отфильтруйте блоки включая Дискретный КИХ-Фильтр
Блоки Communications Toolbox™
Блоки DSP System Toolbox™, кроме Дискретного КИХ-Фильтра
Блоки Stateflow®
Блоки, которые не поддержаны для балансировки задержки. Для получения дополнительной информации смотрите, что Задержка Балансирует Ограничения.
HDL Coder может совместно использовать блоки Atomic Subsystem, которые имеют ту же контрольную сумму Simulink и те же свойства блока HDL.
Если вы хотите совместно использовать блоки Atomic 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 (союз, эрмитов, транспонируют),
Блоки MATLAB Function, которые содержат персистентные переменные
Sqrt
Каскадная архитектура (MinMax, продукт, Сумма)
Архитектура CORDIC
Взаимная архитектура Ньютона
Отфильтруйте блоки включая Дискретный КИХ-Фильтр
Блоки Communications Toolbox
Блоки DSP System Toolbox, кроме Дискретного КИХ-Фильтра
Блоки Stateflow
Блоки, которые не поддержаны для балансировки задержки. Для получения дополнительной информации смотрите, что Задержка Балансирует Ограничения.
3.1.8
Рекомендуемый
Совместно использовать несколько:
Сумматоры с плавающей точкой, набор ShareAdders
к на.
Множители с плавающей точкой, убедитесь ShareMultipliers
установлен в на.
Другие ресурсы с плавающей точкой, набор ShareFloatingPointIP
к на.
См. также Моделирование с Нативной Плавающей точкой.