Оптимизация подсистемы для фильтров

Discrete FIR Filter (Simulink) (когда используется со скалярными или многоканальными входными данными) и блоки Biquad Filter участвует в оптимизации уровня подсистемы. Чтобы установить свойства оптимизации, щелкните правой кнопкой по подсистеме и откройте диалоговое окно HDL Properties.

Для этих блоков, чтобы участвовать в оптимизации уровня подсистемы, необходимо оставить блочный уровень набором Architecture значению по умолчанию, Fully parallel.

Вы не можете использовать эту оптимизацию подсистемы при использовании Дискретного КИХ, Просачиваются основанный на системе координат режим ввода.

Совместное использование

Эти фильтруют, блокирует ресурсы совместного использования поддержки в фильтре и через несколько блоков в подсистеме. Когда вы задаете SharingFactor, инструменты оптимизации генерируют реализацию фильтра в HDL, который совместно использует ресурсы с помощью мультиплексирования времени. Чтобы сгенерировать реализацию HDL, которая использует минимальное количество множителей, устанавливает SharingFactor на номер, больше, чем или равный общему количеству множителей. Алгоритм совместного использования совместно использует множители, которые имеют те же типы входных и выходных данных. Чтобы позволить совместно использовать между блоками, вы, возможно, должны настроить внутренние типы данных фильтров. В качестве альтернативы можно предназначаться для конкретного уровня системных часов с выбором SharingFactor.

Разделение ресурсов применяется ко множителям по умолчанию. Чтобы совместно использовать сумматоры, установите флажок под Resource sharing на диалоговом окне Configuration Parameters > HDL Code Generation> Global Settings> Optimizations.

Для получения дополнительной информации смотрите Разделение ресурсов (HDL Coder) и Сокращение области Многоканального примера Подсистемы Фильтра.

Можно также использовать SharingFactor с многоканальными фильтрами. Смотрите Сокращение области Подсистемы Фильтра.

Потоковая передача

Потоковая передача относится к совместному использованию атомарной части проекта через несколько каналов. Чтобы сгенерировать реализацию HDL потоковой передачи многоканальной подсистемы, установите StreamingFactor на количество каналов в вашем проекте.

Если подсистема содержит один блок фильтра, блочный уровень опция ChannelSharing и уровень подсистемы результат опции StreamingFactor в подобных реализациях HDL. Используйте StreamingFactor, когда ваша подсистема содержит или больше чем один блок фильтра или дополнительную многоканальную логику, которая может участвовать в оптимизации. Необходимо установить блочный уровень ChannelSharing на off использовать StreamingFactor на уровне подсистемы.

Смотрите Потоковую передачу (HDL Coder) и Сокращение области примера Подсистемы Фильтра.

Конвейеризация

Можно позволить DistributedPipelining на уровне подсистемы позволить фильтру участвовать в конвейерной оптимизации. Инструменты оптимизации работают с InputPipeline и настройками канала связи OutputPipeline, заданными на уровне подсистемы. Инструменты оптимизации также работают с этими настройками канала связи блочного уровня:

  • InputPipeline и OutputPipeline

  • MultiplierInputPipeline и MultiplierOutputPipeline

  • AddPipelineRegisters

Инструменты оптимизации не перемещают задержки проекта в архитектуре фильтра. Смотрите Распределенную Конвейеризацию (HDL Coder).

Блок фильтра также участвует в конвейеризации тактовой частоты, если включено в Configuration Parameters. Эта опция активирована по умолчанию. Смотрите, что Тактовая частота Конвейерно обрабатывает (HDL Coder).

Сокращение области многоканальной подсистемы фильтра

Чтобы сократить количество множителей в реализации HDL многоканального фильтра и окружающей логики, используйте оптимизацию HDL Coder™ StreamingFactor.

Модель включает двухканальный синусоидальный источник сигнала, питающий подсистему фильтра, предназначенную для генерации HDL-кода.

Подсистема содержит блок Discrete FIR Filter и постоянный множитель. Множитель включен, чтобы показать оптимизацию, действующую по всей имеющей право логике в подсистеме.

Фильтр имеет 44 симметричных коэффициента. Без включенной оптимизации сгенерированный HDL-код использует в своих интересах симметрию. Неоптимизированная реализация HDL использует 46 множителей: 22 для каждого канала фильтра и 1 для каждого канала блока продукта.

Чтобы позволить передать оптимизацию потоком для Многоканальной КИХ-Подсистемы Фильтра, щелкните правой кнопкой по подсистеме и выберите HDL Code> HDL Block Properties.

Установите StreamingFactor на 2, потому что этот проект является двухканальной системой.

Чтобы наблюдать эффект оптимизации, под Параметрами конфигурации> генерация HDL-кода, выбирают отчет использования ресурса Generate и Генерируют отчет оптимизации. Затем чтобы сгенерировать HDL-код, щелкните правой кнопкой по Multichannel FIR Filter Subsystem и выберите HDL Code> Generate HDL for Subsystem.

С примененным фактором потоковой передачи логика для одного канала инстанцируют однажды и запуск на дважды уровне исходной модели.

В окне Code Generation Report нажмите High-level Resource Report. Сгенерированный HDL-код теперь использует 23 множителя, по сравнению с 46 в неоптимизированном коде. Множители в ядре фильтра и последующем масштабировании совместно используются каналами.

Чтобы применить SharingFactor к многоканальным фильтрам, установите SharingFactor на 23.

Оптимизированный HDL теперь использует только 2 множителя. Инструменты оптимизации не совместно используют множители различных размеров.

Сокращение области подсистемы фильтра

Чтобы сократить количество множителей в реализации HDL мультисоздания фильтра, используйте оптимизацию HDL Coder™ SharingFactor.

Модель включает синусоидальный источник сигнала, питающий подсистему фильтра, предназначенную для генерации HDL-кода.

Подсистема содержит блок Discrete FIR Filter и блок Biquad Filter. Этот проект демонстрирует, как инструменты оптимизации совместно используют ресурсы между несколькими блоками фильтра.

Блок Discrete FIR Filter имеет 43 симметричных коэффициента. Блок Biquad Filter имеет 6 коэффициентов, два из которых являются единицей. Без включенной оптимизации сгенерированный HDL-код использует в своих интересах коэффициенты единицы и симметрия. Неоптимизированная реализация HDL подсистемы использует 27 множителей.

Чтобы позволить передать оптимизацию потоком для Подсистемы Мультифильтра, щелкните правой кнопкой по подсистеме и выберите HDL Code> HDL Block Properties.

Установите SharingFactor на 27 уменьшать проект до одного множителя. Инструменты оптимизации пытаются совместно использовать множители с соответствием с типами данных. Чтобы уменьшать до одного множителя, необходимо установить внутренние типы данных блоков фильтра совпадать друг с другом.

Чтобы наблюдать эффект оптимизации, под Параметрами конфигурации> генерация HDL-кода, выбирают отчет использования ресурса Generate и Генерируют отчет оптимизации. Затем чтобы сгенерировать HDL-код, щелкните правой кнопкой по Multi-Filter Subsystem и выберите HDL Code> Generate HDL for Subsystem.

С примененным SharingFactor подсистема сверхдискретизировала уровень 27, чтобы совместно использовать один множитель для всех коэффициентов.

В окне Code Generation Report нажмите High-level Resource Report. Сгенерированный HDL-код теперь использует один множитель.

Похожие темы