Discrete FIR Filter

Моделирование КИХ-фильтра

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

    HDL Coder / Дискретный

    HDL Coder / Операции Плавающей точки HDL

Описание

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

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

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

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

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

Этот блок поддерживает состояние 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, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.

Зависимости

Этот параметр только отображается, когда вы устанавливаете 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, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.

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

Параметры блоков: 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, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.

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

Параметры блоков: 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, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.

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

Параметры блоков: 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, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.

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

Параметры блоков: 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 Check.

Simulink использует минимум, чтобы выполнить:

Примечание

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

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

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

Верхнее значение выходной области значений это Simulink Check.

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

Примечание

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

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

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

Выберите, чтобы заблокировать настройки типа данных этого блока против изменений Fixed-Point Tool и Советником Фиксированной точки. Для получения дополнительной информации смотрите Блокировку Установка Типа Выходных данных (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 Apps, нажимают Fixed-Point Tool. Можно сконфигурировать любую фиксированную точку способный блок в Simulink®, чтобы принять масштабирование, предложенное инструментом. Можно вручную задать масштабирование для ключевых блоков, таких как входные порты и выборочно отключить автоматизированное масштабирование в модели на основе блока блоком. Это дает Fixed-Point Tool больше информации, чтобы работать с и результаты в автоматически выбранных масштабированиях фиксированной точки, которые совместимы с ключом, вручную выбрал масштабирования.

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

Типы данных

double | fixed point | integer | single

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

no

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

no

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

yes

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

no

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

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

Введенный в R2008a