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

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

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

Вы не можете использовать эти оптимизации подсистемы при использовании дискретной конечной импульсной характеристики в основанном на кадрах режиме входа.

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

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

Совместное использование ресурсов применяется к множителям по умолчанию. Чтобы разделить гадюк, выберите опцию под Resource sharing на диалоговом окне <reservedrangesplaceholder3>> <reservedrangesplaceholder2>> <reservedrangesplaceholder1>> <reservedrangesplaceholder0>.

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

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

Вытекание

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

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

Смотрите пример потоковой передачи и сокращения площади Подсистемы Фильтра.

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

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

  • InputPipeline и OutputPipeline

  • MultiplierInputPipeline и MultiplierOutputPipeline

  • AddPipelineRegisters

Инструменты оптимизации не перемещают проекта в пределах архитектуры фильтра. См. Раздел «Распределённая конвейеризация»

Блок фильтра также участвует в конвейеризации с тактовой частотой, если включен в Configuration Parameters. Эта функция включена по умолчанию. См. Раздел «Трубная конвейеризация с тактовой частотой»

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

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

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

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

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

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

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

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

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

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

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

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

Уменьшение площади подсистемы фильтра

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

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

Подсистема содержит блок Дискретный конечная импульсная характеристика и блок Биквадский фильтр. Этот проект демонстрирует, как инструменты оптимизации делят ресурсы между несколькими фильтрующими блоками.

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

Чтобы включить потоковую оптимизацию для Подсистемы нескольких Фильтров, щелкните правой кнопкой мыши подсистему и выберите HDL-код > Свойства блоков HDL.

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

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

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

В окне Отчет о генерации кода щелкните Высокоуровневый отчет о ресурсах. Теперь сгенерированный HDL-код использует один множитель.

Похожие темы