exponenta event banner

Дискретный фильтр FIR

  • Библиотека:
  • Симулинк/дискретный

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

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

  • Discrete FIR Filter block

Описание

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

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

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

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

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

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

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

Можно изменить структуру фильтра, реализованную с помощью блока Дискретный фильтр FIR (Discreter FIR Filter), выбрав одно из следующих значений в параметре Структура фильтра (Filter structure).

  • Direct form

  • Direct form symmetric

  • Direct form antisymmetric

  • Direct form transposed

  • Lattice MA

Для запуска модели с любой из этих структур фильтров, отличных от Direct form.

Указание начальных состояний

Блок дискретного КИХ-фильтра по умолчанию инициализирует состояние внутреннего фильтра как нулевое, что имеет тот же эффект, что и предположение, что прошлые входы и выходы равны нулю. Можно дополнительно использовать параметр Начальные состояния (Initial states), чтобы задать ненулевые начальные условия для задержек фильтра.

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

Действительные начальные состояния

Исходное условиеОписание

Скаляр

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

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

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

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

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

Порты

Вход

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

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

Зависимости

Если для параметра «Источник коэффициентов» задано значение Dialog parametersпорт для входного сигнала не помечен. Если для параметра «Источник коэффициентов» задано значение Input portпорт для входного сигнала имеет обозначение In.

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

    Примечание

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

    Дополнительные сведения см. в разделе Концепции на основе образцов и кадров (панель системных инструментов DSP).

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

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

Укажите начальные условия состояний фильтра. Сведения о задании начальных состояний см. в разделе Указание начальных состояний.

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

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

Выберите для управления выполнением этого блока с помощью порта enable. Блок считается включенным, когда вход в этот порт ненулевой, и деактивизированным, когда вход 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)

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

Зависимости

Этот параметр отображается только в том случае, если для структуры фильтра задано значение 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)

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

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

Параметр блока: 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)

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

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

Параметр блока: 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)

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

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

Параметр блока: 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)

Зависимости

Чтобы включить этот параметр, установите для структуры фильтра значение 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)

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

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

Параметр блока: 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 использует минимум для выполнения:

Примечание

Минимальный выходной сигнал не насыщает и не отсекает фактический выходной сигнал. Вместо этого используйте блок «Насыщенность».

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

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

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

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

Примечание

Выходной максимум не насыщает и не отсекает фактический выходной сигнал. Вместо этого используйте блок «Насыщенность».

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

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

Выберите этот параметр, чтобы заблокировать параметры типа данных этого блока от изменений с помощью инструмента «Фиксированная точка» и помощника по фиксированным точкам. Дополнительные сведения см. в разделе Блокировка параметров типа выходных данных (конструктор фиксированных точек).

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

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

Укажите режим округления для операций с фиксированной точкой. Дополнительные сведения см. в разделе Округление (конструктор фиксированных точек).

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

Параметр блока: 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) с использованием модели fxpdemo_feedback. Инструмент представляет собой графический интерфейс пользователя (GUI), который автоматизирует общие задачи сбора данных диапазона min-max во время моделирования для использования при автоматическом выборе масштабирования с фиксированной точкой для блоков. Чтобы запустить инструмент, на вкладке Приложения Simulink щелкните Инструмент фиксированной точки (Fixed-Point Tool). Можно настроить любой блок с поддержкой фиксированной точки в Simulink ®, чтобы принять масштаб, предложенный инструментом. Можно вручную задать масштабирование для ключевых блоков, таких как входные порты, и выборочно отключить автоматическое масштабирование в модели на поблочной основе. Это дает инструменту Fixed-Point Tool больше информации для работы и приводит к автоматическому выбору шкал Fixed-Point, совместимых с ключевыми вручную выбранными шкалами.

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

Типы данных

double | fixed point | integer | single

Прямой проход

no

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

no

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

yes

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

no

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

.

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

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