Discrete FIR Filter

Моделируйте конечная импульсная характеристика

  • Библиотека:
  • Simulink/Дискретный

    HDL-кодер/дискретный

    Операции HDL-кодера/HDL с плавающей точкой

  • Discrete FIR Filter block

Описание

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

Этот блок фильтрует каждый канал входного сигнала независимо с течением времени. Параметр Input processing позволяет вам задать, обрабатывает ли блок каждый элемент входа как независимый канал (обработка на основе выборки) или каждый столбец входа как независимый канал (обработка на основе фрейма). Для выполнения обработки на основе фрейма необходимо иметь лицензию DSP System Toolbox™.

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

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

Выходы этого блока численно совпадают с выходами блока DSP System Toolbox Digital Filter Design (DSP System Toolbox).

Этот блок поддерживает Simulink® функция логгирования состояний. Для получения дополнительной информации смотрите Состояние.

Поддержка структуры фильтра

Можно изменить структуру фильтра, реализованную с помощью блока Discrete FIR Filter, выбрав один из следующих параметров Filter structure:

  • Direct form

  • Direct form symmetric

  • Direct form antisymmetric

  • Direct form transposed

  • Lattice MA

Вы должны иметь доступную лицензию DSP System Toolbox, чтобы запустить модель с любой из этих структур фильтра, кроме Direct form.

Определение начальных состояний

Блок Discrete FIR Filter по умолчанию инициализирует состояния внутреннего фильтра до нуля, что имеет тот же эффект, что и предположение, что прошедшие входы и выходы равны нулю. Можно опционально использовать параметр Initial states, чтобы задать ненулевые начальные условия для задержек фильтра.

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

Допустимые начальные состояния

Начальное условиеОписание

Скаляр

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

Вектор или матрица
(для применения различных элементов задержки к каждому каналу)

Каждый вектор или элемент матрицы задает уникальное начальное условие для соответствующего элемента задержки в соответствующем канале:

  • Длина вектора равна продукту числа каналов входа и количества элементов задержки в фильтре, #_of_filter_coeffs-1 (или #_of_reflection_coeffs для Lattice MA).

  • Матрица должна иметь одинаковое число строк как количество элементов задержки в фильтре, #_of_filter_coeffs-1 (#_of_reflection_coeffs для Lattice MA), и должен иметь по одному столбцу для каждого канала входного сигнала.

Порты

Вход

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

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

Зависимости

Когда вы задаете Coefficient source Dialog parametersпорт для входного сигнала не маркирован. Когда вы задаете Coefficient source Input portпорт для входного сигнала помечается In.

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

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

Зависимости

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

Чтобы реализовать несколько фильтров, Filter structure должны быть Direct form, и вход должен быть скаляром.

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

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

Совет

Значок для этого порта меняется на основе значения параметра External reset.

Зависимости

Чтобы включить этот порт, установите External reset равным Rising, Falling, Either, Level, или Level hold.

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

Включите сигнал, заданный как скаляр. Этот порт может управлять выполнением блока. Блок активируется, когда вход к этому порту ненулевый, и отключается, когда вход 0. Значение входа проверяется в том же временном шаге, что и выполнение блока.

Зависимости

Чтобы включить этот порт, установите флажок Show enable port.

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

Выход

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

Отфильтрованный выходной сигнал.

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

Параметры

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

Главный

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

Программное использование

Параметры блоков: CoefSource
Тип: Вектор символов
Значения: 'Dialog parameters' | 'Input port'
По умолчанию: 'Dialog parameters'

Выберите структуру фильтра, которую требуется реализовать блоку.

Зависимости

У вас должна быть доступная лицензия DSP System Toolbox, чтобы запустить модель с блоком Discrete FIR Filter, который реализует любую структуру фильтра, кроме Direct form.

Программное использование

Параметры блоков: FilterStructure
Тип: Вектор символов
Значения: 'Direct form' | 'Direct form symmetric' | 'Direct form antisymmetric' | 'Direct form transposed' | 'Lattice MA'
По умолчанию: 'Direct form'

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

Зависимости

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

Чтобы реализовать несколько фильтров, Filter structure должны быть Direct form, и вход должен быть скаляром.

Программное использование

Параметры блоков: Coefficients
Тип: Вектор символов
Значения: вектор
По умолчанию: '[0.5 0.5]'

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

  • Elements as channels (sample based) - Обрабатывайте каждый элемент входа как независимый канал (основанная на выборке обработка).

  • Columns as channels (frame based) - Обрабатывайте каждый столбец входа как отдельный канал (обработка на основе фрейма).

    Примечание

    Для обработки на основе фрейма требуется лицензия DSP System Toolbox.

    Для получения дополнительной информации смотрите Концепции на основе выборок и фреймов (DSP System Toolbox).

Программное использование

Параметры блоков: InputProcessing
Тип: Вектор символов
Значения: 'Columns as channels (frame based)' | 'Elements as channels (sample based)'
По умолчанию: 'Elements as channels (sample based)'

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

Программное использование

Параметры блоков: InitialStates
Тип: Вектор символов
Значения: скаляр | вектор | матрица
По умолчанию: '0'

Выберите для управления выполнением этого блока с портом включения. Блок считается активным, когда вход к этому порту ненулевый, и отключается, когда вход 0. Значение входа проверяется в том же временном шаге, что и выполнение блока.

Программное использование

Параметры блоков: ShowEnablePort
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

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

Режим сбросаПоведение
NoneНет сброса
RisingСброс на приподнятом ребре
FallingСброс на падающем ребре
EitherСброс на восходящем или падающем ребре
Level

Сброс в любом из следующих случаев:

  • Когда сигнал сброса ненулевой на текущем временном шаге

  • Когда значение сигналов сброса изменяется с ненулевого на предыдущем временном шаге до нуля на текущем временном шаге

Level holdСброс, когда сигнал сброса ненулевой на текущем временном шаге

Программное использование

Параметры блоков: ExternalReset
Тип: Вектор символов
Значения: 'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold'
По умолчанию: 'None'

Задайте временной интервал между выборками. Чтобы наследовать шаг расчета, установите этот параметр равным -1. Для получения дополнительной информации см. Раздел «Задание шага расчета».

Программное использование

Параметры блоков: SampleTime
Тип: Вектор символов
Значения: скаляр | вектор
По умолчанию: '-1'

Типы данных

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

  • Правило, которое наследует тип данных, например Inherit: Inherit via internal rule

  • Встроенное целое число, например int8

  • Объект типа данных, например, Simulink.NumericType объект

  • Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)

Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.

Зависимости

Этот параметр видим только, когда вы устанавливаете Filter structure на Direct form symmetric или Direct form antisymmetric.

Программное использование

Параметры блоков: TapSumDataTypeStr
Тип: Вектор символов
Значения: 'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>'
По умолчанию: 'Inherit: Same as input'

Задайте тип данных коэффициента. Вы можете установить его на:

  • Правило, которое наследует тип данных, например Inherit: Same word length as input

  • Встроенное целое число, например int8

  • Объект типа данных, например, Simulink.NumericType объект

  • Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)

Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.

Программное использование

Параметры блоков: CoeffDataTypeStr
Тип: Вектор символов
Значения: 'Inherit: Same word length as input'| 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<data type expression>'
По умолчанию: 'Inherit: Same wordlength as input'

Задайте минимальное значение, которое должен иметь коэффициент фильтра. Значение по умолчанию [] (не определено). Программное обеспечение Simulink использует это значение для выполнения:

Программное использование

Параметры блоков: CoeffMin
Тип: Вектор символов
Значения: скаляр
По умолчанию: '[]'

Задайте максимальное значение, которое должен иметь коэффициент фильтра. Значение по умолчанию [] (не определено). Программное обеспечение Simulink использует это значение для выполнения:

Программное использование

Параметры блоков: CoeffMax
Тип: Вектор символов
Значения: скаляр
По умолчанию: '[]'

Укажите тип выходных данных продукта. Вы можете установить его на:

  • Правило, которое наследует тип данных, например Inherit: Inherit via internal rule

  • Встроенный тип данных, например int8

  • Объект типа данных, например, Simulink.NumericType объект

  • Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)

Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.

Программное использование

Параметры блоков: ProductDataTypeStr
Тип: Вектор символов
Значения: 'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>'
По умолчанию: 'Inherit: Inherit via internal rule'

Задайте тип данных аккумулятора. Вы можете установить его на:

  • Правило, которое наследует тип данных, например Inherit: Inherit via internal rule

  • Встроенный тип данных, например int8

  • Объект типа данных, например, Simulink.NumericType объект

  • Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)

Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.

Программное использование

Параметры блоков: AccumDataTypeStr
Тип: Вектор символов
Значения: 'Inherit: Inherit via internal rule' | 'Inherit: Same as input' | 'Inherit: Same as product output' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>'
По умолчанию: 'Inherit: Inherit via internal rule'

Укажите тип данных о состоянии. Вы можете установить его на:

  • Правило, которое наследует тип данных, например Inherit: Same as accumulator

  • Встроенное целое число, например int8

  • Объект типа данных, например, Simulink.NumericType объект

  • Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)

Зависимости

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

Программное использование

Параметры блоков: StateDataTypeStr
Тип: Вектор символов
Значения: 'Inherit: Same as accumulator' | 'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | '<data type expression>'
По умолчанию: 'Inherit: Same as accumulator'

Задайте тип выходных данных. Вы можете установить его на:

  • Правило, которое наследует тип данных, например Inherit: Same as accumulator

  • Встроенный тип данных, например int8

  • Объект типа данных, например, Simulink.NumericType объект

  • Выражение, которое вычисляется как тип данных, например fixdt(1,16,0)

Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.

Программное использование

Параметры блоков: OutDataTypeStr
Тип: Вектор символов
Значения: 'Inherit: Same as accumulator' | 'Inherit: Same as input' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | '<data type expression>'
По умолчанию: 'Inherit: Same as accumulator'

Более низкое значение выходной области значений, который Simulink проверяет.

Simulink использует минимум для выполнения:

Примечание

Output minimum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.

Программное использование

Параметры блоков: OutMin
Тип: Вектор символов
Значения: '[ ]'| скаляр
По умолчанию: '[ ]'

Верхнее значение выходной области значений, который Simulink проверяет.

Simulink использует максимальное значение для выполнения:

Примечание

Output maximum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.

Программное использование

Параметры блоков: OutMax
Тип: Вектор символов
Значения: '[ ]'| скаляр
По умолчанию: '[ ]'

Выберите, чтобы заблокировать настройки типа данных этого блока от изменений с помощью Fixed-Point Tool и Fixed-Point Advisor. Для получения дополнительной информации смотрите Блокировка настройки типа выходных данных (Fixed-Point Designer).

Программное использование

Параметры блоков: LockScale
Значения: 'off' | 'on'
По умолчанию: 'off'

Задайте режим округления для операций с фиксированной точкой. Для получения дополнительной информации см. раздел Округление (Fixed-Point Designer).

Программное использование

Параметры блоков: RndMeth
Тип: Вектор символов
Значения: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
По умолчанию: 'Floor'

Укажите, будут ли переполнения насыщаться или переноситься.

ДействиеОбъяснениеВлияние на переливыПример

Установите этот флажок (on).

Ваша модель имеет возможное переполнение, и вы хотите явную защиту от насыщения в сгенерированном коде.

Переполнения достигает минимального или максимального значения, которое может представлять тип данных.

Максимальное значение, которое int8 (со знаком, 8-битное целое число) может представлять 127. Любая операция блока, результат которой больше этого максимального значения, вызывает переполнение 8-битного целого числа. При установленном флажке выход блока достигает 127. Точно так же выход блока достигает минимального выходного значения -128.

Не устанавливайте этот флажок (off).

Вы хотите оптимизировать эффективность вашего сгенерированного кода.

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

Переполнения переходят к соответствующему значению, которое представимо типом данных.

Максимальное значение, которое int8 (со знаком, 8-битное целое число) может представлять 127. Любая операция блока, результат которой больше этого максимального значения, вызывает переполнение 8-битного целого числа. Если флажок снят, программное обеспечение интерпретирует значение, вызывающее переполнение, следующим int8, что может привести к непреднамеренному результату. Для примера блочный результат 130 (двоичный 1000 0010) выражается как int8, есть -126.

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

Программное использование

Параметры блоков: SaturateOnIntegerOverflow
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

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

Fixed-Point Tool

Fixed-Point Tool

Используйте Инструмент с Фиксированной Точкой (Fixed-Point Tool) с помощью модели fxpdemo_feedback. Инструмент является графическим пользовательским интерфейсом (GUI), который автоматизирует общие задачи сбора данных о минимальной области значений во время симуляций для использования при автоматическом выборе масштабирования с фиксированной точкой для блоков. Чтобы запустить инструмент, на вкладке Приложения Simulink, нажмите Fixed-Point Tool. Можно сконфигурировать любой блок с поддержкой фиксированной точки в Simulink ®, чтобы принять масштабирование, предложенное инструментом. Можно вручную задать масштабирование для ключевых блоков, таких как входные порты, и выборочно отключить автоматическое масштабирование в модели на основе блоков за блоками. Это дает инструменту Fixed-Point Tool больше информации для работы и приводит к автоматическим выбранным масштабированиям с фиксированной точкой, которые совместимы с ключевыми вручную выбранными масштабированиями.

Характеристики блоков

Типы данных

double | fixed point | integer | single

Прямое сквозное соединение

no

Многомерные сигналы

no

Сигналы переменного размера

yes

Обнаружение пересечения нулем

no

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

.

Генерация кода ПЛК
Сгенерируйте структурированный текстовый код с помощью Coder™ Simulink ® PLC

.
Введенный в R2008a