Дискретный КИХ-фильтр

Образцовый конечный импульсный фильтр ответа (HDL Coder)

Описание

Блок Discrete FIR Filter доступен с Simulink®, но лицензия DSP System Toolbox™ требуется, чтобы использовать структуру фильтра кроме прямой формы.

Для получения информации о поведении симуляции и параметрах блоков, смотрите Дискретный КИХ-Фильтр.

Для допустимого благоприятного для оборудования и управляющие сигналы сброса, и смоделировать точное аппаратное поведение задержки в Simulink, используют блок Discrete FIR Filter HDL Optimized вместо этого.

Многоканальная поддержка фильтра

HDL Coder™ поддерживает использование векторных входных параметров к Дискретным КИХ-блокам Фильтра, где каждый элемент вектора представляет независимый канал.

  1. Соедините векторный сигнал с входным портом блока Discrete FIR Filter.

  2. Задайте Input processing как Elements as channels (sample based).

  3. Чтобы уменьшать область путем совместного использования ядра фильтра между каналами, установите свойство ChannelSharing на количество каналов.

Программируемая поддержка фильтра

HDL Coder поддерживает программируемые фильтры для Дискретных КИХ-блоков Фильтра.

  1. На фильтре блокируют маску, набор Coefficient source к Input port.

  2. Соедините векторный сигнал с содействующим портом Num.

Основанная на кадре входная поддержка

HDL Coder поддерживает использование векторных входных параметров к Дискретным КИХ-блокам Фильтра, где каждый элемент вектора представляет выборку вовремя. Можно использовать входной вектор до 512 выборок. Основанные на кадре типы входных и выходных данных фиксированной точки поддержки внедрения и полная точность использования внутренние типы данных. Можно использовать действительные входные сигналы с действительными коэффициентами, комплексные входные сигналы с действительными коэффициентами или действительные входные сигналы с комплексными коэффициентами. Можно также использовать основанный на кадре вход с программируемыми коэффициентами.

  1. Соедините векторный сигнал с входным портом блока Discrete FIR Filter.

  2. Задайте Input processing как Columns as channels (frame based).

  3. Щелкните правой кнопкой по блоку и откройте HDL Code> HDL Block Properties. Установите Architecture на Frame Based. Блок реализует параллельную архитектуру HDL. Смотрите Основанную на кадре Архитектуру.

Порты управления

Можно сгенерировать HDL-код для фильтров с, или без дополнительного включают порт, и с или без дополнительного порта сброса.

Архитектура HDL

Чтобы уменьшать область или скорость увеличения, блок Discrete FIR Filter поддерживает или оптимизацию блочного уровня или оптимизацию уровня подсистемы. Когда вы включаете оптимизацию блока, блок не может участвовать в оптимизации подсистемы. Используйте оптимизацию блока, когда ваш проект будет одним фильтром с одним каналом. Используйте оптимизацию подсистемы, чтобы совместно использовать ресурсы через несколько каналов или несколько фильтров.

Щелкните правой кнопкой по блоку или подсистеме, чтобы открыть соответствующее диалоговое окно HDL Properties и установить свойства оптимизации.

Блокируйте оптимизацию

Последовательная архитектура

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

Когда вы задаете SerialPartition и ReuseAccum для блока Discrete FIR Filter, устанавливаете Filter structure на Direct form, Direct form symmetric или Direct form asymmetric. Структура Direct form transposed не поддержана с последовательной архитектурой.

Распределенная арифметика

Чтобы минимизировать множители, заменяя их на LUTs и сдвиговые регистры, используйте реализацию фильтра распределенной арифметики (DA). Смотрите Распределенную Арифметику для Фильтров HDL.

Когда вы выбираете архитектуру Distributed Arithmetic (DA) и используете DALUTPartition, и DARadix распределил арифметические свойства, установите Filter structure на Direct form, Direct form symmetric или Direct form asymmetric. Структура Direct form transposed не поддержана с распределенной арифметикой.

Многоканальное сокращение области

Чтобы совместно использовать логику между каналами, можно использовать блочный уровень опция ChannelSharing или уровень подсистемы опция StreamingFactor. Установите любое свойство на количество каналов. Используя ChannelSharing исключает фильтр из другой оптимизации. StreamingFactor действует по всей имеющей право логике в подсистеме, а не на одном блоке. Это также позволяет фильтру участвовать в другой оптимизации подсистемы. Смотрите раздел Streaming Оптимизации Подсистемы для Фильтров.

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

Чтобы улучшить тактовую частоту, используйте AddPipelineRegisters, чтобы использовать конвейерное дерево сумматора, а не линейный сумматор по умолчанию. Можно также задать количество настроек канала связи до и после множителей. Смотрите Архитектуру Фильтра HDL.

Оптимизация подсистемы

Этот блок может участвовать в оптимизации уровня подсистемы, такой как совместное использование, потоковая передача и конвейеризация. Для блока, чтобы участвовать в оптимизации уровня подсистемы, установите Architecture на Fully parallel. Смотрите Оптимизацию Подсистемы для Фильтров.

Свойства фильтра HDL

AddPipelineRegisters

Вставьте конвейерный регистр между этапами вычисления в фильтре. См. также AddPipelineRegisters.

ChannelSharing

Для многоканального фильтра сгенерируйте одну реализацию фильтра, которая будет совместно использована каналами. См. также ChannelSharing.

CoeffMultipliers

Задайте использование оптимизации канонической цифры со знаком (CSD), чтобы уменьшить область фильтра, заменив содействующие множители на логику shift-and-add. Когда вы выбираете полностью параллельную реализацию фильтра, можно установить CoeffMultipliers на csd или factored-csd. Значением по умолчанию является multipliers, который сохраняет множители в HDL. См. также CoeffMultipliers.

DALUTPartition

Задайте распределенные арифметические разделы LUT частичного продукта как вектор размеров каждого раздела. Сумма всех векторных элементов должна быть равна длине фильтра. Максимальный размер для раздела является 12 касаниями. Установите DALUTPartition на скалярное значение, равное длине фильтра генерировать код DA без разделов LUT. См. также DALUTPartition.

DARadix

Задайте, сколько распределенных арифметических битных сумм вычисляется параллельно. Основание DA 8 (2^3) генерирует реализацию DA, которая вычисляет три суммы за один раз. Значением по умолчанию является 2^1, который генерирует полностью последовательную реализацию DA. См. также DARadix.

MultiplierInputPipeline

Задайте количество настроек канала связи, чтобы добавить во входных параметрах множителя фильтра. См. также MultiplierInputPipeline.

MultiplierOutputPipeline

Задайте количество настроек канала связи, чтобы добавить во множителе фильтра выходные параметры. См. также MultiplierOutputPipeline.

ReuseAccum

Включите или отключите повторное использование аккумулятора в последовательной реализации фильтра. Установите ReuseAccum на on использовать каскадно-последовательную реализацию. См. также ReuseAccum.

SerialPartition

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

Свойства блока HDL

ConstrainedOutputPipeline

Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. Значение по умолчанию 0. См. также ConstrainedOutputPipeline.

InputPipeline

Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также InputPipeline.

OutputPipeline

Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также OutputPipeline.

Ограничения

  • Генерация HDL-кода не поддержана для:

    • Входные данные без знака.

    • Ненулевые начальные состояния. Необходимо установить Initial states на 0.

    • Filter Structure: Lattice MA.

  • Опции CoeffMultipliers поддерживаются только при использовании полностью параллельной архитектуры. Когда вы выбираете последовательную архитектуру, CoeffMultipliers скрыт от диалогового окна HDL Block Properties.

Программируемые фильтры не поддержаны для:

  • Архитектура, для которой вы задаете коэффициенты параметрами диалогового окна (например, объедините вход и коэффициенты с последовательной архитектурой),

  • распределенная арифметика (DA)

  • Набор CoeffMultipliers к csd или factored-csd

Основанные на кадре входные фильтры не поддержаны для:

  • Дополнительный сброс блочного уровня и включает управляющие сигналы

  • Восстановленные и активированные подсистемы

  • Комплексные входные сигналы с комплексными коэффициентами. Можно использовать или комплексные входные сигналы и действительные коэффициенты, или объединить коэффициенты и действительные входные сигналы.

  • Многоканальный вход

  • Совместное использование и потоковая передача оптимизации

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Генерация HDL-кода
Сгенерируйте Verilog и код VHDL для FPGA и проекты ASIC с помощью HDL Coder™.

Введенный в R2014a