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