Этот пример сначала выбирает оптимизированную скоростью реализацию блока Sum для простой модели, которая вычисляет векторную сумму. Это затем исследует сгенерированную модель и определяет местоположение числовых изменений, введенных оптимизацией.
Модель, simplevectorsum
, состоит из Подсистемы, vsum
, управляемого векторным входом ширины 10, со скалярным выводом. Следующие данные показывают корневой уровень модели.
Устройство под тестом является подсистемой vsum
, показанной в следующей фигуре. Подсистема содержит блок Sum, сконфигурированный для векторного суммирования.
Модель сконфигурирована, чтобы использовать реализацию Tree
при генерации HDL-кода для блока Sum в подсистеме vsum
. Эта реализация, оптимизированная в течение минимальной задержки, генерирует структуру древовидной формы сумматоров для блока Sum.
Выбрать реализацию не по умолчанию для отдельного блока:
Щелкните правой кнопкой по блоку и выберите HDL Code> HDL Block Properties .
В диалоговом окне HDL Properties выберите желаемую реализацию из меню Architecture.
Нажмите Apply и закройте диалоговое окно.
После генерации кода можно просмотреть модель валидации, gm_simplevectorsum_tree_vnl
.
Подсистема vsum
была подсвечена в голубом цвете. Это выделение указывает, что подсистема отличается по некоторому уважению от подсистемы vsum
исходной модели.
Следующие данные показывают подсистему vsum
в сгенерированной модели. Заметьте, что блок Sum теперь реализован как подсистема, которая также кажется подсвеченной.
Следующие данные показывают внутреннюю структуру подсистемы Суммы.
Сгенерированная модель реализует векторную сумму как дерево сумматоров (Блоки суммы). Векторный входной сигнал демультиплексируется и соединяется, как пять пар операндов, к пяти крайним левым сумматорам. Ширины сумматора выходные параметры увеличиваются слева направо, как требуется чтобы избежать переполнения в вычислительных промежуточных результатах.