Discrete FIR Filter HDL Optimized

Фильтр с конечной импульсной характеристикой - оптимизирован для генерации HDL-кода

  • Библиотека:
  • Поддержка/фильтрация HDL-файлов DSP System Toolbox

  • Discrete FIR Filter HDL Optimized block

Описание

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

Блок обеспечивает три структуры фильтра. Системная архитектура прямой формы обеспечивает полностью параллельную реализацию, которая эффективно использует Intel® и Xilinx® Блоки DSP. Транспонированная архитектура прямой формы является полностью параллельной реализацией и подходит для приложений FPGA и ASIC. Частично последовательная сестрическая архитектура обеспечивает конфигурируемую последовательную реализацию, которая эффективно использует блоки DSP FPGA. Для реализации фильтра, который совпадает с множителями, регистрами трубопроводов и предварительными добавками к строению DSP вашего поставщика FPGA, укажите целевое устройство, когда вы генерируете HDL-код.

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

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

Для конечная импульсная характеристика с многоканальными или основанными на кадрах входами используйте блок Discrete FIR Filter (Simulink) вместо этого блока.

Порты

Вход

расширить все

Входные данные, заданные как действительный или комплексный скаляр. Когда тип входных данных является целым типом или типом с фиксированной точкой, блок использует арифметику с фиксированной точкой для внутренних вычислений.

double и single типы данных поддерживаются для симуляции, но не для генерации HDL-кода.

Типы данных: fixed point | single | double | int8 | int16 | int32 | uint8 | uint16 | uint32
Поддержка комплексного числа: Да

Когда valid trueблок захватывает данные от data входного порта.

Типы данных: Boolean

Фильтруйте коэффициенты, заданные как вектор вещественных или комплексных чисел. Вы можете изменить входные коэффициенты в любой момент. Размер вектора зависит от размера и симметрии коэффициентов выборки, заданных в параметре Coefficients prototype. Прототип задает вектор коэффициента выборки, который представляет симметрию и нулевые положения ожидаемых входных коэффициентов. Блок использует прототип, чтобы оптимизировать фильтр путем совместного использования умножителей для симметричных или антисимметричных коэффициентов и удаления умножителей для нулевых коэффициентов. Поэтому обеспечьте только недупликационные коэффициенты в порту. Для примера, если вы задаете для параметра Coefficients prototype симметричный 14-контактный фильтр, блок ожидает вектор с 7 значениями на coeff входа порте. Вы все еще должны предоставить нули во входном векторе coeff для недупликационных нулевых коэффициентов.

double и single типы данных поддерживаются для симуляции, но не для генерации HDL-кода.

Зависимости

Чтобы включить этот порт, установите Coefficients source равным Input port (Parallel interface).

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Когда reset trueблок останавливает текущее вычисление и очищает внутреннее состояние фильтра. Сигнал сброса является синхронным и очищает путь данных и состояния пути управления. Дополнительные факторы сброса см. в разделе Подсказки.

Зависимости

Чтобы включить этот порт, на вкладке Control Ports, выберите Enable reset input port.

Типы данных: Boolean

Выход

расширить все

Отфильтрованные выходные данные, возвращенные как действительный или комплексный скаляр. Когда тип входных данных является типом с плавающей точкой, выходные данные наследуют тип данных входных данных. Когда тип входных данных является целым типом или типом с фиксированной точкой, параметр Output на вкладке Data Types управляет типом данных выходов.

Типы данных: fixed point | single | double
Поддержка комплексного числа: Да

Блок устанавливает valid на true с каждым действительным данным, возвращаемым на data выходном порте.

Типы данных: Boolean

Блок устанавливает ready на true чтобы указать, что он готов к новым входным данным на следующем цикле.

При использовании частично-последовательной архитектуры блок обрабатывает по одной выборке за раз. Если ваш проект ждет, когда ready выведет 0 перед отменой утверждения входа valid, затем к порту приходит одно дополнительное значение входа данных. Блок хранит эти дополнительные данные во время обработки текущих данных, а затем не устанавливает ready на 1 пока дополнительный вход не будет обработан.

Зависимости

Чтобы включить этот порт, установите Filter structure равным Partly serial systolic.

Типы данных: Boolean

Параметры

расширить все

Главный

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

Выбор Input port (Parallel interface) включает порт coeff для блока и параметр Coefficients prototype. Задайте прототип, чтобы позволить блоку оптимизировать реализацию фильтра в соответствии с симметрией ваших коэффициентов. Как использовать Input port (Parallel interface), установите параметр Filter structure равным Direct form systolic.

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

Пример: firpm(30,[0 0.1 0.2 0.5]*2,[1 1 0 0])

Зависимости

Чтобы включить этот параметр, установите Coefficients source равным Property.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Коэффициенты фильтра прототипа, заданные как вектор вещественных или комплексных чисел. Прототип задает вектор коэффициента выборки, который представляет симметрию и нулевые положения ожидаемых входных коэффициентов. Если все векторы входного коэффициента имеют одинаковую симметрию и нулевые положения коэффициентов, установите Coefficients prototype на один из этих векторов. Если ваши коэффициенты неизвестны или не должны разделять симметрию или нулевые местоположения, задайте Coefficients prototype []. Блок использует прототип, чтобы оптимизировать фильтр путем совместного использования умножителей для симметричных или антисимметричных коэффициентов и удаления умножителей для нулевых коэффициентов.

Оптимизация коэффициентов влияет на ожидаемый размер вектора на coeff порте. Обеспечьте только недупликационные коэффициенты в порту. Для примера, если вы устанавливаете параметр Coefficients prototype на симметричный 14-контактный фильтр, блок разделяет один умножитель между каждой парой повторяющихся коэффициентов, поэтому блок ожидает вектор с 7 значениями на coeff порте. Вы все еще должны предоставить нули во входном векторе coeff для недупликационных нулевых коэффициентов.

Зависимости

Чтобы включить этот параметр, установите Coefficients source равным Input port (Parallel interface).

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Задайте архитектуру HDL-фильтра как одну из следующих структур:

  • Direct form systolic - Эта архитектура обеспечивает полностью параллельную реализацию фильтра, которая позволяет эффективно использовать блоки Intel и Xilinx DSP. Для получения дополнительной информации об архитектуре и эффективности см. раздел «Полностью параллельная Systolic архитектура».

  • Direct form transposed - Эта архитектура является полностью параллельной реализацией, которая подходит для приложений FPGA и ASIC. Для получения дополнительной информации об архитектуре и эффективности смотрите Fully Parallel Transposed Architecture.

  • Partly serial systolic - Эта архитектура обеспечивает реализацию последовательного фильтра и опции для компромиссов между пропускной способностью и использованием ресурсов. Он обеспечивает эффективное использование блоков Intel и Xilinx DSP. Блок осуществляет сериал L - содействующий фильтр с M множителями и требует выборок входа, которые являются, по крайней мере N циклами обособленно, такой что L = <reservedrangesplaceholder4> × <reservedrangesplaceholder3>. Можно задать M или N. Для этой реализации блок предоставляет выходу порт, ready, который указывает, когда блок готов к новым входным данным. Для получения дополнительной информации об архитектуре и эффективности см. разделы «Частичная последовательная Systolic Architecture (1 < N < L)» и «Fully Serial Systolic Architecture (N ≥ L)».

Все реализации используют множители для симметричных и антисимметричных коэффициентов. The Direct form systolic и Direct form transposed структуры также удаляют умножители для нулевых коэффициентов.

Можно задать правило, которое блок использует для сериализации фильтра как:

  • Minimum number of cycles between valid input samples - Задайте требование для синхронизации входных данных с помощью параметра Number of cycles.

  • Maximum number of multipliers - Задайте требование для использования ресурса, используя параметр Number of multipliers.

Для фильтра с L коэффициентами блок осуществляет последовательный фильтр с не больше, чем M множители и требует выборок входа, которые являются, по крайней мере N циклами обособленно, такой что L = <reservedrangesplaceholder3> × <reservedrangesplaceholder2>. Блок применяет оптимизацию коэффициентов после сериализации, поэтому M или N значение конечной реализации фильтра может быть ниже заданного значения.

Примечание

Инструкции по строению перед R2019a см. в разделе Изменения параметров последовательного фильтра.

Зависимости

Чтобы включить этот параметр, установите параметр Filter structure равным Partly serial systolic.

Требование сериализации для входного таймирования, заданное как положительное целое число. Этот параметр представляет N, минимальное количество циклов между допустимыми входными выборками. В этом случае блок вычисляет M = L/ N. Чтобы реализовать полностью последовательную архитектуру, установите Number of cycles больше, чем длина фильтра, L или равной Inf.

Блок применяет оптимизацию коэффициентов после сериализации, поэтому M и N значения итогового фильтра могут быть ниже заданного вами значения.

Примечание

Инструкции по строению перед R2019a см. в разделе Изменения параметров последовательного фильтра.

Зависимости

Чтобы включить этот параметр, установите Filter structure равным Partly serial systolic и установите Specify serialization factor as равным Minimum number of cycles between valid input samples.

Требование сериализации для использования ресурса, заданное как положительное целое число. Этот параметр представляет M, максимальное количество умножителей в реализации фильтра. В этом случае блок вычисляет N = L/ M. Если входные данные комплексны, блок выделяет floor(M/2) умножители для действительной части фильтра и floor(M/2) умножители для мнимой части фильтра. Чтобы реализовать полностью последовательную архитектуру, установите Number of multipliers равным 1 для действительного входа, или 2 для комплексного входа.

Блок применяет оптимизацию коэффициентов после сериализации, поэтому M и N значения итогового фильтра могут быть ниже заданного вами значения.

Примечание

Инструкции по строению перед R2019a см. в разделе Изменения параметров последовательного фильтра.

Зависимости

Чтобы включить этот параметр, установите Filter structure равным Partly serial systolic, и установите Specify serialization factor as равным Maximum number of multipliers.

Типы данных

Режим округления для приведения выхода к типу данных, заданному параметром Output. Когда тип входных данных с плавающей точкой, блок игнорирует этот параметр. Для получения дополнительной информации см. Раздел «Режимы округления»

Обработка переполнения для приведения выхода к типу данных, заданному параметром Output. Когда тип входных данных с плавающей точкой, блок игнорирует этот параметр. Для получения дополнительной информации см. раздел «Обработка переполнения».

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

Рекомендуемый тип данных для этого параметра Inherit: Same word length as input.

Блок возвращает предупреждение или ошибку, если:

  • Тип данных коэффициентов не имеет достаточной дробной длины, чтобы точно представлять коэффициенты.

  • Тип данных коэффициентов не подписан, в то время как коэффициенты включают отрицательные значения.

Можно отключить или контролировать серьезность этих сообщений типа данных из Параметров конфигурации модели, изменив Diagnostics > Type Conversion > Detect precision loss.

Зависимости

Чтобы включить этот параметр, установите Coefficients source равным Property.

Блок приводит выходы фильтра к этому типу данных. Квантование использует настройки параметров Rounding mode и Overflow mode. Когда тип входных данных с плавающей точкой, блок игнорирует этот параметр.

Блок увеличивает размер слова для полной точности внутри каждого отвода фильтра и приводит конечный выход к указанному типу. Максимальный окончательный тип внутренних данных (WF) зависит от типа входных данных (WI), типа данных коэффициента (WC) и количества коэффициентов (L) и задается как

WF = WI + WC + ceil(log2(L)).

Когда вы задаете фиксированный набор коэффициентов, потому что значения коэффициентов ограничивают потенциальный рост, обычно фактическая полная точность внутреннего размера слова меньше WF.

Когда вы используете программируемые коэффициенты, блок не может вычислить динамическую область значений, и внутренний тип данных всегда WF.

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

Выберите этот параметр, чтобы включить reset входной порт. Сигнал сброса реализует локальный синхронный сброс регистров пути данных.

Дополнительные факторы сброса см. в разделе Подсказки.

Выберите этот параметр, чтобы подключить сгенерированный сигнал глобального сброса HDL к регистрам пути данных. Этот параметр не изменяет внешний вид блока и не изменяет поведение симуляции в Simulink®. Когда вы очищаете этот параметр, сгенерированный глобальный сброс HDL очищает только регистры пути управления. Сгенерированный глобальный сброс HDL может быть синхронным или асинхронным в зависимости от параметра HDL Code Generation Global Settings > Reset type > в Параметры конфигурации модели.

Дополнительные факторы сброса см. в разделе Подсказки.

Примеры моделей

Совет

Сброс поведения

  • По умолчанию блок Discrete FIR Filter HDL Optimized соединяет сгенерированный глобальный сброс HDL только с регистрами пути управления. Два параметра сброса, Enable reset input port и Use HDL global reset, соединяют сигнал сброса с регистрами пути данных. Из-за дополнительной маршрутизации и загрузки сигнала сброса сброс регистров пути данных может снизить эффективность синтеза.

  • Параметр Enable reset input port включает порт reset на блоке. Сигнал сброса реализует локальный синхронный сброс регистров пути данных. Для оптимального использования ресурсов FPGA эта опция не соединяет сигнал сброса с регистрами, нацеленными на блоки DSP FPGA.

  • Параметр Use HDL global reset соединяет сгенерированный HDL сигнал глобального сброса с регистрами пути данных. Этот параметр не изменяет внешний вид блока и не изменяет поведение симуляции в Simulink. Сгенерированный глобальный сброс HDL может быть синхронным или асинхронным в зависимости от параметра HDL Code Generation Global Settings > Reset type > в Параметры конфигурации модели. В зависимости от вашего устройства, использование глобального сброса может переместить регистры из блоков DSP и увеличить использование ресурсов.

  • Когда вы выбираете параметры Enable reset input port и Use HDL global reset вместе, глобальные и локальные сигналы сброса очищают регистры пути данных и управления.

Факторы о сбросе для сгенерированных испытательных стендов

  • Инициализация FPGA в цикле обеспечивает глобальный сброс, но не обеспечивает автоматически локальный сброс. С параметрами сброса по умолчанию регистры пути данных, которые не сбрасываются, могут привести к несоответствиям цикл (FIL), если вы запускаете модель FIL более одного раза, не сбрасывая плату. Выберите Use HDL global reset, чтобы автоматически сбросить регистры пути данных или выберите Enable reset input port и утвердите локальный сброс в модели, чтобы сигнал сброса стал частью испытательного стенда Simulink FIL.

  • Сгенерированный испытательный стенд HDL обеспечивает глобальный сброс, но не обеспечивает автоматического локального сброса. С параметрами сброса по умолчанию и параметрами конфигурации сброса регистра по умолчанию, сгенерированный HDL-код включает начальное значение симуляции для регистров пути данных. Однако, если вы обеспокоены X-предложение в проекте, можно задать параметр HDL Code Generation Global Settings > Coding style > No-reset register initialization > в Параметрах конфигурации Do not initialize. В этом случае, с параметрами сброса блоков по умолчанию, регистры пути данных, которые не сбрасываются, могут вызвать X-предложение по пути данных в начале симуляции HDL. Выберите Use HDL global reset, чтобы автоматически сбросить регистры пути данных или выберите Enable reset input port и задайте локальный сброс в модели, чтобы сигнал сброса стал частью сгенерированного HDL- испытательного стенда.

Алгоритмы

расширить все

Блок обеспечивает несколько реализаций фильтра в зависимости от настроек вашего параметра. Реализация фильтра учитывает специфические для поставщика оборудование детали блоков DSP при добавлении регистров конвейера к архитектуре. Эти различия в местоположениях регистров трубопроводов помогают подгонять создание фильтра к блокам DSP на ПЛИС.

Диаграммы архитектуры предполагают передаточную функцию, которая имеет L коэффициенты (до применения оптимизации).

Filter structureNumber of cycles (<reservedrangesplaceholder0>)Архитектура и Эффективность Ссылки
Direct form systolicН/ДПолностью параллельная Systolic архитектура
Direct form transposedН/ДПолностью параллельная транспонированная архитектура
Partly serial systolicN <LЧастичная последовательная системная архитектура (1 < N < L)
Partly serial systolic<reservedrangesplaceholder1> ≥ <reservedrangesplaceholder0>Полностью последовательная системная архитектура (N ≥ L)

Вопросы совместимости

расширить все

Поведение изменено в R2019a

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

.

См. также

Объекты

Блоки

Введенный в R2017a