exponenta event banner

Оптимизированный дискретный фильтр FIR HDL

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

  • Библиотека:
  • Системная панель инструментов DSP Поддержка HDL/Фильтрация

  • Discrete FIR Filter HDL Optimized block

Описание

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

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

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

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

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

Порты

Вход

развернуть все

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

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

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

Когда допустимо trueблок захватывает данные из порта ввода данных.

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

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

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

Зависимости

Чтобы включить этот порт, установите для источника коэффициентов значение Input port (Parallel interface).

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

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

Зависимости

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

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

Продукция

развернуть все

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

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

Наборы блоков действительны для true с указанием всех допустимых данных, возвращаемых портом вывода данных.

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

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

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

Зависимости

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

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

Параметры

развернуть все

Главный

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

Выбор Input port (Parallel interface) включает порт coeff в блоке и параметр прототипа коэффициентов. Укажите прототип, чтобы включить блок для оптимизации реализации фильтра в соответствии с симметрией коэффициентов. Использовать Input port (Parallel interface), задайте для параметра «Структура фильтра» значение Direct form systolic.

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

Пример: 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

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

Оптимизация коэффициентов влияет на ожидаемый размер вектора в порту coeff. Предоставьте только коэффициенты без дублирования в порту. Например, если задать для параметра prototype Coefficients симметричный 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. Сведения об архитектуре и производительности см. в разделе Полностью параллельная систолическая архитектура.

  • Direct form transposed - Эта архитектура является полностью параллельной реализацией, которая подходит для приложений FPGA и ASIC. Сведения об архитектуре и производительности см. в разделе Полностью параллельная транспонированная архитектура.

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

Все реализации совместно используют множители для симметричных и антисимметричных коэффициентов. 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 коэффициентами блок реализует последовательный фильтр с не более чем М умножителями и требует входных выборок, которые разнесены по меньшей мере на N циклов, так что L = N × M. Блок применяет оптимизацию коэффициентов после сериализации, поэтому значение M или N конечной реализации фильтра может быть ниже указанного значения.

Примечание

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

Зависимости

Чтобы включить этот параметр, установите для параметра Структура фильтра значение Partly serial systolic.

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

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

Примечание

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

Зависимости

Чтобы включить этот параметр, задайте для параметра Структура фильтра значение Partly serial systolic и задайте для параметра «Указать коэффициент сериализации» значение Minimum number of cycles between valid input samples.

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

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

Примечание

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

Зависимости

Чтобы включить этот параметр, установите для структуры фильтра значение Partly serial systolicи задайте для параметра «Задать коэффициент сериализации» значение Maximum number of multipliers.

Типы данных

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

Дополнительные сведения о сбросе см. в разделе Советы.

Выберите этот параметр для подключения сгенерированного сигнала глобального сброса HDL к регистрам тракта данных. Этот параметр не изменяет внешний вид блока и не изменяет поведение моделирования в Simulink ®. При сбросе этого параметра сгенерированный глобальный сброс HDL очищает только регистры управляющего тракта. Сгенерированный глобальный сброс HDL может быть синхронным или асинхронным в зависимости от параметров «Генерация кода HDL» > «Глобальные настройки» > «Тип сброса» в модели «Параметры конфигурации».

Дополнительные сведения о сбросе см. в разделе Советы.

Совет

Сбросить поведение

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

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

  • Параметр Use HDL global reset соединяет сгенерированный сигнал глобального сброса HDL с регистрами путей передачи данных. Этот параметр не изменяет внешний вид блока и не изменяет поведение моделирования в Simulink. Сгенерированный глобальный сброс HDL может быть синхронным или асинхронным в зависимости от параметров «Генерация кода HDL» > «Глобальные настройки» > «Тип сброса» в модели «Параметры конфигурации». В зависимости от устройства использование глобального сброса может привести к перемещению регистров из блоков DSP и увеличению использования ресурсов.

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

Вопросы сброса для созданных испытательных стендов

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

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

Алгоритмы

развернуть все

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

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

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

развернуть все

В R2019a изменилось поведение

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

.
Представлен в R2017a