Моделируйте конечная импульсная характеристика
Simulink/Дискретный
HDL-кодер/дискретный
Операции HDL-кодера/HDL с плавающей точкой
Блок 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 может взять одну из форм, описанных в следующей таблице.
Допустимые начальные состояния
Начальное условие | Описание |
---|---|
Скаляр |
Блок инициализирует все элементы задержки в фильтре до скалярного значения. |
Вектор или матрица |
Каждый вектор или элемент матрицы задает уникальное начальное условие для соответствующего элемента задержки в соответствующем канале:
|
In
- Входной сигналВходной сигнал для фильтрации, заданный как скаляр, вектор или матрица.
Когда вы задаете Coefficient source Dialog parameters
порт для входного сигнала не маркирован. Когда вы задаете Coefficient source Input port
порт для входного сигнала помечается In.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Num
- Фильтрация коэффициентовЗадайте коэффициенты фильтра в виде скаляра, вектора или матрицы. Когда вы задаете вектор-строку отводов фильтра, блок применяет один фильтр к входу. Чтобы применить несколько фильтров к одному и тому же входу, задайте матрицу коэффициентов, где каждая строка представляет другой набор отводов фильтра.
Чтобы включить этот порт, установите Coefficient source равным Input port
.
Чтобы реализовать несколько фильтров, Filter structure должны быть Direct form
, и вход должен быть скаляром.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
External reset
- Внешний сигнал сбросаВнешний сигнал сброса, заданный как скаляр. Когда происходит заданное событие триггера, блок сбрасывает состояния до их начальных условий.
Совет
Значок для этого порта меняется на основе значения параметра 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
Port_1
- Отфильтрованный выходной сигналОтфильтрованный выходной сигнал.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Coefficient source
- Источник коэффициентовDialog parameters
(по умолчанию) | Input port
Выберите, чтобы задать коэффициенты фильтра с помощью настраиваемых диалоговых параметров или через порт входа, который полезен для изменяющихся во времени коэффициентов.
Параметры блоков:
CoefSource
|
Тип: Вектор символов |
Значения:
'Dialog parameters' | 'Input port'
|
По умолчанию:
'Dialog parameters'
|
Filter structure
- Структура фильтраDirect form
(по умолчанию) | Direct form symmetric
| Direct form antisymmetric
| Direct form transposed
| Lattice MA
Выберите структуру фильтра, которую требуется реализовать блоку.
У вас должна быть доступная лицензия DSP System Toolbox, чтобы запустить модель с блоком Discrete FIR Filter, который реализует любую структуру фильтра, кроме Direct form
.
Параметры блоков:
FilterStructure |
Тип: Вектор символов |
Значения:
'Direct form' | 'Direct form symmetric' | 'Direct form antisymmetric' | 'Direct form transposed' | 'Lattice MA' |
По умолчанию:
'Direct form'
|
Coefficients
- Фильтрация коэффициентов[0.5 0.5]
(по умолчанию) | вектор | матрицаЗадайте вектор коэффициентов для передаточной функции. Коэффициенты фильтра должны быть заданы как вектор-строка. Когда вы задаете вектор-строку отводов фильтра, блок применяет один фильтр к входу. Чтобы применить несколько фильтров к одному и тому же входу, задайте матрицу коэффициентов, где каждая строка представляет другой набор отводов фильтра.
Чтобы включить этот параметр, установите Coefficient source равным Dialog parameters
.
Чтобы реализовать несколько фильтров, Filter structure должны быть Direct form
, и вход должен быть скаляром.
Параметры блоков:
Coefficients
|
Тип: Вектор символов |
Значения: вектор |
По умолчанию:
'[0.5 0.5]'
|
Input processing
- Обработка на основе выборок или фреймовElements as channels (sample based)
(по умолчанию) | Columns as channels (frame based)
Укажите, выполняет ли блок обработку на основе выборок или фреймов. Можно выбрать один из следующих опций:
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)'
|
Initial states
- Начальные условия состояния фильтра0
(по умолчанию) | скалярный вектор | | матрицаЗадайте начальные условия состояния фильтра. Чтобы узнать, как задать начальные состояния, смотрите Определение начальных состояний.
Параметры блоков:
InitialStates
|
Тип: Вектор символов |
Значения: скаляр | вектор | матрица |
По умолчанию:
'0' |
Show enable port
- Создайте порт включенияoff
(по умолчанию) | on
Выберите для управления выполнением этого блока с портом включения. Блок считается активным, когда вход к этому порту ненулевый, и отключается, когда вход 0
. Значение входа проверяется в том же временном шаге, что и выполнение блока.
Параметры блоков:
ShowEnablePort
|
Тип: Вектор символов |
Значения:
'off' | 'on'
|
По умолчанию:
'off'
|
External reset
- Сброс внешнего состоянияNone
(по умолчанию) | Rising
| Falling
| Either
| Level
| Level hold
Задайте событие триггера, которое будет использоваться для сброса состояний к начальным условиям.
Режим сброса | Поведение |
---|---|
None | Нет сброса |
Rising | Сброс на приподнятом ребре |
Falling | Сброс на падающем ребре |
Either | Сброс на восходящем или падающем ребре |
Level | Сброс в любом из следующих случаев:
|
Level hold | Сброс, когда сигнал сброса ненулевой на текущем временном шаге |
Параметры блоков: ExternalReset |
Тип: Вектор символов |
Значения: 'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold' |
По умолчанию: 'None' |
Sample time (-1 for inherited)
- Временной интервал между выборками-1
(по умолчанию) | скалярный вектор |Задайте временной интервал между выборками. Чтобы наследовать шаг расчета, установите этот параметр равным -1
. Для получения дополнительной информации см. Раздел «Задание шага расчета».
Параметры блоков:
SampleTime |
Тип: Вектор символов |
Значения: скаляр | вектор |
По умолчанию:
'-1' |
Tap sum
- Коснитесь типа данных суммыInherit: Same as input
(по умолчанию) | Inherit: Inherit via internal rule
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| <data type expression>
Задайте тип данных суммы отвода симметричного или антисимметричного фильтра прямой формы, который является типом данных, используемым фильтром, когда он суммирует входы перед умножением на коэффициенты. Вы можете установить его на:
Правило, которое наследует тип данных, например 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' |
Coefficients
- Тип данных коэффициентаInherit: Same wordlength as input
(по умолчанию) | int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| <data type expression>
Задайте тип данных коэффициента. Вы можете установить его на:
Правило, которое наследует тип данных, например 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' |
Coefficients minimum
- Минимальное значение коэффициентов[]
(по умолчанию) | скаляромЗадайте минимальное значение, которое должен иметь коэффициент фильтра. Значение по умолчанию []
(не определено). Программное обеспечение Simulink использует это значение для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков»)
Автоматическое масштабирование типов данных с фиксированной точкой
Параметры блоков:
CoeffMin |
Тип: Вектор символов |
Значения: скаляр |
По умолчанию:
'[]' |
Coefficients maximum
- Максимальное значение коэффициентов[]
(по умолчанию) | скаляромЗадайте максимальное значение, которое должен иметь коэффициент фильтра. Значение по умолчанию []
(не определено). Программное обеспечение Simulink использует это значение для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков»)
Автоматическое масштабирование типов данных с фиксированной точкой
Параметры блоков:
CoeffMax |
Тип: Вектор символов |
Значения: скаляр |
По умолчанию:
'[]' |
Product output
- Тип выходных данных продукта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
Встроенный тип данных, например 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' |
Accumulator
- Тип данных аккумулятора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
Встроенный тип данных, например 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' |
State
- Тип данных о состоянии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
Встроенное целое число, например 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' |
Output
- Тип выходных данных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
Встроенный тип данных, например 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' |
Output minimum
- Минимальное выходное значение для проверки области значений[]
(по умолчанию) | скаляромБолее низкое значение выходной области значений, который Simulink проверяет.
Simulink использует минимум для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков») для некоторых блоков.
Проверка области значений симуляции (см. «Задание диапазонов сигнала» и «Включение проверки области значений симуляции»).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов симуляции, таких как SIL или режим external mode. Для получения дополнительной информации смотрите Оптимизировать используя указанные минимальное и максимальное значения (Embedded Coder).
Примечание
Output minimum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.
Параметры блоков: OutMin |
Тип: Вектор символов |
Значения: '[ ]' | скаляр |
По умолчанию: '[ ]' |
Output maximum
- Максимальное выходное значение для проверки области значений[]
(по умолчанию) | скаляромВерхнее значение выходной области значений, который Simulink проверяет.
Simulink использует максимальное значение для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков») для некоторых блоков.
Проверка области значений симуляции (см. «Задание диапазонов сигнала» и «Включение проверки области значений симуляции»).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов симуляции, таких как SIL или режим external mode. Для получения дополнительной информации смотрите Оптимизировать используя указанные минимальное и максимальное значения (Embedded Coder).
Примечание
Output maximum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.
Параметры блоков: OutMax |
Тип: Вектор символов |
Значения: '[ ]' | скаляр |
По умолчанию: '[ ]' |
Lock data type settings against changes by the fixed-point tools
- Предотвратить переопределение типов данных инструментами с фиксированной точкойoff
(по умолчанию) | on
Выберите, чтобы заблокировать настройки типа данных этого блока от изменений с помощью Fixed-Point Tool и Fixed-Point Advisor. Для получения дополнительной информации смотрите Блокировка настройки типа выходных данных (Fixed-Point Designer).
Параметры блоков:
LockScale
|
Значения:
'off' | 'on'
|
По умолчанию:
'off'
|
Integer rounding mode
- Режим округления для операций с фиксированной точкойFloor
(по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Задайте режим округления для операций с фиксированной точкой. Для получения дополнительной информации см. раздел Округление (Fixed-Point Designer).
Параметры блоков:
RndMeth
|
Тип: Вектор символов |
Значения:
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
По умолчанию:
'Floor'
|
Saturate on integer overflow
- Метод действия переполненияoff
(по умолчанию) | on
Укажите, будут ли переполнения насыщаться или переноситься.
Действие | Объяснение | Влияние на переливы | Пример |
---|---|---|---|
Установите этот флажок ( |
Ваша модель имеет возможное переполнение, и вы хотите явную защиту от насыщения в сгенерированном коде. |
Переполнения достигает минимального или максимального значения, которое может представлять тип данных. |
Максимальное значение, которое |
Не устанавливайте этот флажок ( |
Вы хотите оптимизировать эффективность вашего сгенерированного кода. Вы хотите избежать переопределения того, как блок обрабатывает сигналы вне области допустимого. Для получения дополнительной информации смотрите Поиск и устранение ошибок диапазона сигнала. |
Переполнения переходят к соответствующему значению, которое представимо типом данных. |
Максимальное значение, которое |
Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, а не только к выходу или результату. Обычно процесс генерации кода может обнаружить, когда переполнение невозможно. В этом случае генератор кода не производит код насыщения.
Параметры блоков: SaturateOnIntegerOverflow |
Тип: Вектор символов |
Значения:
'off' | 'on'
|
По умолчанию: 'off' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
Этот блок поддерживает пользовательские атрибуты состояния, чтобы настроить и сгенерировать код более эффективно. Чтобы получить доступ или задать эти атрибуты, откройте Model Data Editor. На вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor). Для получения примера смотрите Пользовательские атрибуты состояния в блоке Discrete конечной импульсной характеристики Filter.
Блок Discrete FIR Filter поддерживает генерацию кода SIMD с помощью технологии Intel AVX2 в следующих условиях:
Filter structure установлено на Direct form
или Direct form transposed
.
Input processing установлено на Columns as channels (frame based)
.
Входной сигнал имеет действительное значение с вещественными коэффициентами фильтра.
Входной сигнал является комплексным с действительными или комплексными коэффициентами фильтра.
Входной сигнал имеет тип данных single
или double
.
Технология SIMD значительно повышает эффективность сгенерированного кода.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Для аппаратных допустимых и сбросных управляющих сигналов и для моделирования точного оборудования поведения с задержкой в Simulink используйте блок Discrete FIR Filter HDL Optimized (DSP System Toolbox).
Чтобы уменьшить площадь или увеличить скорость, блок Discrete FIR Filter поддерживает оптимизацию уровня блоков или оптимизацию уровня подсистемы. Для получения дополнительной информации о доступных параметрах оптимизации уровня блоков, см. «Оптимизация блоков». Когда вы включаете оптимизацию блоков, блок не может участвовать в оптимизации подсистемы. Используйте оптимизацию блоков, когда ваш проект является одним одноканальным фильтром. Используйте оптимизацию подсистем для совместного использования ресурсов в нескольких каналах или нескольких фильтрах. Чтобы блок участвовал в оптимизации уровня подсистемы, установите Architecture на Fully parallel
. См. Раздел «Оптимизация подсистем для фильтров» (HDL Coder).
HDL Coder поддерживает использование векторных входов для Discrete FIR Filter блоков, где каждый элемент вектора представляет собой независимый канал.
Подключите сигнал вектора к порту Discrete FIR Filter блока входа.
Задайте Input processing следующим Elements as channels (sample based)
.
Чтобы уменьшить площадь путем совместного использования ядра фильтра между каналами, установите свойство ChannelSharing на количество каналов.
HDL Coder поддерживает программируемые фильтры для блоков Discrete FIR Filter.
На маске блока фильтра установите Coefficient source равным Input port.
Подключите сигнал вектора к Num
порт коэффициента.
Программируемые фильтры не поддерживаются для:
распределенная арифметика (DA)
CoeffMultipliers установлено на csd
или factored-csd
HDL Coder поддерживает использование векторных входов для Discrete FIR Filter блоков, где каждый элемент вектора представляет выборку во времени. Можно использовать вектор входа до 512 выборок. Реализация на основе фрейма поддерживает типы входных и выходных данных с фиксированной точкой и использует полностью точные внутренние типы данных. Можно использовать вещественные входные сигналы с вещественными коэффициентами, комплексные входные сигналы с действительными коэффициентами или действительные входные сигналы с комплексными коэффициентами. Можно также использовать основанный на кадрах вход с программируемыми коэффициентами.
Подключите сигнал вектора к порту Discrete FIR Filter блока входа.
Задайте Input processing следующим Columns as channels (frame based)
, и установите Filter structure равным Direct form
.
Щелкните правой кнопкой мыши блок и откройте HDL Code > HDL Block Properties. Установите Architecture равным Frame Based
. Блок реализует прямую форму параллельной архитектуры HDL. Другие архитектуры, включая полно- или частичную последовательность, не поддерживаются. См. «Архитектура на основе фреймов» (HDL Coder).
Основанные на кадрах входные фильтры не поддерживаются для:
Опционально сбрасывайте и активируйте сигналы управления на уровне блоков
Сбрасываемые и активированные подсистемы
Комплексные входные сигналы с комплексными коэффициентами. Можно использовать либо комплексные входные сигналы и вещественные коэффициенты, либо комплексные коэффициенты и действительные входные сигналы.
Многоканальный вход
Оптимизация совместного использования и потоковой передачи
распределенная арифметика (DA)
Можно сгенерировать HDL-код для фильтров с опциональным портом включения или без него, а также с опциональным портом сброса или без него.
Можно использовать любую комбинацию комплексных входных и комплексных коэффициентов с полностью параллельными структурами фильтра, когда вы используете не основанные на кадрах входные данные.
Комплексные коэффициенты не поддерживаются архитектурами последовательных фильтров.
Когда вы используете основанные на кадрах входные данные, вы можете использовать либо комплексные входные сигналы и вещественные коэффициенты, либо комплексные коэффициенты и действительные входные сигналы.
Вы не можете использовать распределенную арифметику (DA) или CoeffMultipliers значение csd
или factored-csd
с комплексными коэффициентами.
Оптимизация площади и скорости | |
---|---|
Последовательная архитектура | Чтобы использовать оптимизацию уровня блоков для сокращения аппаратных ресурсов, установите Architecture на одну из последовательных опций. См. раздел Архитектуры HDL-фильтров (HDL Coder). Когда вы задаете SerialPartition и ReuseAccum для блока Discrete FIR Filter, задайте Filter structure |
Распределенная арифметика | Чтобы минимизировать множители путем замены их LUT и сдвига регистрами, используйте реализацию фильтра с распределённой арифметикой (DA). См. раздел Распределенная арифметика для HDL-фильтров (HDL Coder). Когда вы выбираете |
Многоканальное сокращение площади | Чтобы поделиться логикой фильтра между каналами, установите свойство ChannelSharing на количество каналов. Использование ChannelSharing исключает фильтр из других оптимизаций. Вы можете добиться того же логического совместного использования во всех подходящих логиках в подсистеме с помощью свойства StreamingFactor. Эта опция также позволяет фильтру участвовать в оптимизации других подсистем. Смотрите раздел Потоковая оптимизация подсистем для фильтров (HDL Coder). |
Конвейеризация | Чтобы улучшить тактовую частоту, используйте AddPipelineRegisters, чтобы использовать конвейерное дерево сумматора, а не линейное сумматор по умолчанию. Можно также задать количество этапов трубопровода до и после умножителей. См. раздел Архитектуры HDL-фильтров (HDL Coder). |
Свойства HDL-фильтра | |
---|---|
AddPipelineRegisters | Вставьте регистр трубопровода между этапами расчета в фильтр. См. также AddPipelineRegisters (HDL Coder). |
ChannelSharing | Для многоканального фильтра сгенерируйте одну реализацию фильтра, которая будет совместно использоваться между каналами. См. также ChannelSharing (HDL Coder). |
CoeffMultipliers | Задайте использование оптимизации canonical signed digit (CSD), чтобы уменьшить площадь фильтра путем замены множителей коэффициентов логикой shift-and-add. Когда вы выбираете полностью параллельную реализацию фильтра, можно задать CoeffMultipliers равным |
DALUTPartition | Задайте распределенные арифметические разбиения LUT с частичным произведением как вектор размеров каждого разбиения. Сумма всех векторных элементов должна быть равна длине фильтра. Максимальный размер раздела - 12 отводов. Установите DALUTPartition скалярное значение, равное длине фильтра, чтобы сгенерировать код DA без разделов LUT. См. также DALUTPartition (HDL Coder). |
DARadix | Задайте, сколько распределенных сумм бита вычисляется параллельно. A radix DA из 8 ( |
MultiplierInputPipeline | Укажите количество ступеней трубопровода для добавления на входах множителя фильтра. См. также MultiplierInputPipeline (HDL Coder). |
MultiplierOutputPipeline | Укажите количество ступеней трубопровода для добавления на выходах множителя фильтра. См. также MultiplierOutputPipeline (HDL Coder). |
ReuseAccum | Включите или отключите повторное использование аккумулятора в реализации последовательного фильтра. Установите ReuseAccum значение |
SerialPartition | Задайте разделы для частично последовательных или каскадно-последовательных реализаций фильтра как вектор длин каждого раздела. Для полностью последовательной реализации установите этот параметр в длину фильтра. См. также раздел SerialPartition (HDL Coder). |
Свойства блоков | |
---|---|
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
Генерация HDL-кода не поддерживается для:
Неподписанные входные данные.
Ненулевые начальные состояния. Вы должны задать Initial states значение 0
.
Filter Structure: Lattice MA
.
CoeffMultipliers опции поддерживаются только при использовании полностью параллельной архитектуры. При выборе последовательной архитектуры CoeffMultipliers скрывается в диалоговом окне Свойств блоков».
Блок Discrete FIR Filter принимает и выводит реальные и сложные сигналы любого типа числовых данных, поддерживаемого Simulink. Блок поддерживает те же типы для коэффициентов.
Следующие схемы показывают структуру фильтра и типы данных, используемые в блоке Discrete FIR Filter для сигналов с фиксированной точкой.
Прямая форма
Вы не можете задать тип данных состояния в маске блока для этой структуры, потому что входные состояния имеют совпадающие типы данных, что и входные.
Симметричная прямая форма
Вы не можете задать тип данных состояния в маске блока для этой структуры, потому что входные состояния имеют совпадающие типы данных, что и входные.
Принято, что коэффициенты фильтра симметричны. Блок использует только первую половину коэффициентов для фильтрации.
Прямая форма антисимметричная
Вы не можете задать тип данных состояния в маске блока для этой структуры, потому что входные состояния имеют совпадающие типы данных, что и входные.
Принято, что коэффициенты фильтра являются антисимметричными. Блок использует только первую половину коэффициентов для фильтрации.
Прямая транспонированная форма
Состояния комплексны, когда входы или коэффициенты комплексны.
Решетка MA
Discrete Filter | Digital Filter Design (DSP System Toolbox)
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.