Образцовый конечный импульсный фильтр ответа (HDL Coder)
Блок Discrete FIR Filter доступен с Simulink®, но лицензия DSP System Toolbox™ требуется, чтобы использовать структуру фильтра кроме прямой формы.
Для получения информации о поведении симуляции и параметрах блоков, смотрите Дискретный КИХ-Фильтр.
Для допустимого благоприятного для оборудования и управляющие сигналы сброса, и смоделировать точное аппаратное поведение задержки в Simulink, используют блок Discrete FIR Filter HDL Optimized вместо этого.
HDL Coder™ поддерживает использование векторных входных параметров к Дискретным КИХ-блокам Фильтра, где каждый элемент вектора представляет независимый канал.
Соедините векторный сигнал с входным портом блока Discrete FIR Filter.
Задайте Input processing как Elements as channels (sample based)
.
Чтобы уменьшать область путем совместного использования ядра фильтра между каналами, установите свойство ChannelSharing на количество каналов.
HDL Coder поддерживает программируемые фильтры для Дискретных КИХ-блоков Фильтра.
На фильтре блокируют маску, набор Coefficient source к Input port.
Соедините векторный сигнал с содействующим портом Num
.
HDL Coder поддерживает использование векторных входных параметров к Дискретным КИХ-блокам Фильтра, где каждый элемент вектора представляет выборку вовремя. Можно использовать входной вектор до 512 выборок. Основанные на кадре типы входных и выходных данных фиксированной точки поддержки внедрения и полная точность использования внутренние типы данных. Можно использовать действительные входные сигналы с действительными коэффициентами, комплексные входные сигналы с действительными коэффициентами или действительные входные сигналы с комплексными коэффициентами. Можно также использовать основанный на кадре вход с программируемыми коэффициентами.
Соедините векторный сигнал с входным портом блока Discrete FIR Filter.
Задайте Input processing как Columns as channels (frame based)
.
Щелкните правой кнопкой по блоку и откройте HDL Code> HDL Block Properties. Установите Architecture на Frame Based
. Блок реализует параллельную архитектуру 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
. Смотрите Оптимизацию Подсистемы для Фильтров.
Вставьте конвейерный регистр между этапами вычисления в фильтре. См. также AddPipelineRegisters.
Для многоканального фильтра сгенерируйте одну реализацию фильтра, которая будет совместно использована каналами. См. также ChannelSharing.
Задайте использование оптимизации канонической цифры со знаком (CSD), чтобы уменьшить область фильтра, заменив содействующие множители на логику shift-and-add. Когда вы выбираете полностью параллельную реализацию фильтра, можно установить CoeffMultipliers на csd
или factored-csd
. Значением по умолчанию является multipliers
, который сохраняет множители в HDL. См. также CoeffMultipliers.
Задайте распределенные арифметические разделы LUT частичного продукта как вектор размеров каждого раздела. Сумма всех векторных элементов должна быть равна длине фильтра. Максимальный размер для раздела является 12 касаниями. Установите DALUTPartition на скалярное значение, равное длине фильтра генерировать код DA без разделов LUT. См. также DALUTPartition.
Задайте, сколько распределенных арифметических битных сумм вычисляется параллельно. Основание DA 8 (2^3
) генерирует реализацию DA, которая вычисляет три суммы за один раз. Значением по умолчанию является 2^1
, который генерирует полностью последовательную реализацию DA. См. также DARadix.
Задайте количество настроек канала связи, чтобы добавить во входных параметрах множителя фильтра. См. также MultiplierInputPipeline.
Задайте количество настроек канала связи, чтобы добавить во множителе фильтра выходные параметры. См. также MultiplierOutputPipeline.
Включите или отключите повторное использование аккумулятора в последовательной реализации фильтра. Установите ReuseAccum на on
использовать каскадно-последовательную реализацию. См. также ReuseAccum.
Задайте разделы для частично последовательных или каскадно-последовательных реализаций фильтра как вектор длин каждого раздела. Для полностью последовательной реализации, установленной этот параметр на длину фильтра. См. также SerialPartition.
Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. Значение по умолчанию 0. См. также ConstrainedOutputPipeline.
Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также InputPipeline.
Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также OutputPipeline.
Генерация HDL-кода не поддержана для:
Входные данные без знака.
Ненулевые начальные состояния. Необходимо установить Initial states на 0
.
Filter Structure: Lattice MA
.
Опции CoeffMultipliers поддерживаются только при использовании полностью параллельной архитектуры. Когда вы выбираете последовательную архитектуру, CoeffMultipliers скрыт от диалогового окна HDL Block Properties.
Программируемые фильтры не поддержаны для:
Архитектура, для которой вы задаете коэффициенты параметрами диалогового окна (например, объедините вход и коэффициенты с последовательной архитектурой),
распределенная арифметика (DA)
Набор CoeffMultipliers к csd
или factored-csd
Основанные на кадре входные фильтры не поддержаны для:
Дополнительный сброс блочного уровня и включает управляющие сигналы
Восстановленные и активированные подсистемы
Комплексные входные сигналы с комплексными коэффициентами. Можно использовать или комплексные входные сигналы и действительные коэффициенты, или объединить коэффициенты и действительные входные сигналы.
Многоканальный вход
Совместное использование и потоковая передача оптимизации