Discrete FIR Filter HDL Optimized

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

  • Библиотека:
  • Поддержка HDL DSP System Toolbox / фильтрация

Описание

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

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

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

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

Для КИХ-фильтра с многоканальными или основанными на системе координат входными параметрами используйте блок Discrete FIR Filter вместо этого блока.

Порты

Входной параметр

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

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

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

Когда valid является true, блок собирает данные от входного порта data.

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

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

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

Зависимости

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

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

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

Зависимости

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

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

Вывод

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

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

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

Блок устанавливает valid на true с каждыми допустимыми данными, возвращенными на выходном порте data.

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

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

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

Зависимости

Tho включают этот порт, устанавливают Filter structure на Partly serial systolic.

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

Параметры

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

Основной

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

Выбор Input port (Parallel interface) включает порт coeff на блоке и параметре Coefficients prototype. Задайте прототип, чтобы позволить блоку оптимизировать реализацию фильтра согласно симметрии ваших коэффициентов. Использовать Input port (Parallel interface), установите параметр Filter structure на Direct form systolic.

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

Пример: firpm(30,[0 0.1 0.2 0.5]*2,[1 1 0 0])

Зависимости

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

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

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

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

Зависимости

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

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

Архитектура фильтра HDL, заданная как одна из этих структур:

  • Direct form systolic — Эта архитектура обеспечивает полностью параллельную реализацию фильтра, которая делает эффективное использование блоков DSP Intel и Xilinx. Для архитектуры и деталей производительности, смотрите Полностью Параллельную Систолическую Архитектуру.

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

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

Все реализации совместно используют множители для симметричных и антисимметричных коэффициентов. Direct form systolic и Direct form transposed структуры также удаляют множители для коэффициентов с нулевым знаком.

Можно задать правило что использование блока, чтобы сериализировать фильтр как также:

  • Minimum number of cycles between valid input samples – Задайте требование для синхронизации входных данных с помощью параметра Number of cycles.

  • Maximum number of multipliers – Задайте требование для использования ресурсов с помощью параметра Number of multipliers.

Для фильтра с коэффициентами L блок реализует последовательный фильтр с не больше, чем множители M и требует входных выборок, которые являются, по крайней мере, циклами N независимо, такой что L = N ×M. Блок применяет содействующую оптимизацию после сериализации, таким образом, M или значение N итоговой реализации фильтра могут быть ниже, чем значение, которое вы задали.

Примечание

Для инструкций по настройке до R2019a смотрите Изменения в Последовательных Параметрах Фильтра.

Зависимости

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

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

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

Примечание

Для инструкций по настройке до R2019a смотрите Изменения в Последовательных Параметрах Фильтра.

Зависимости

Чтобы включить этот параметр, установите Filter structure на Partly serial systolic и набор Specify serialization factor as к Minimum number of cycles between valid input samples.

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

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

Примечание

Для инструкций по настройке до R2019a смотрите Изменения в Последовательных Параметрах Фильтра.

Зависимости

Чтобы включить этот параметр, установите Filter structure на Partly serial systolic, и набор Specify serialization factor as к Maximum number of multipliers.

Типы данных

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

Обработка переполнения для преобразования типа выхода к типу данных задана параметром Output. Когда тип входных данных является плавающей точкой, блок игнорирует параметр Saturate on integer overflow. Для получения дополнительной информации смотрите, что Переполнение Обрабатывает.

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

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

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

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

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

Можно отключить или управлять серьезностью этих сообщений типа данных из модели Configuration Parameters путем изменения Diagnostics> Type Conversion> Detect precision loss.

Зависимости

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

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

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

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

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

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

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

Для более факторов сброса смотрите Советы.

Выберите Use HDL global reset, чтобы соединить сгенерированный глобальный сигнал сброса HDL с регистрами информационного канала. Этот параметр не изменяет внешний вид блока или изменяет поведение симуляции в Simulink®. Когда этот параметр очищен, сгенерированный глобальный сброс HDL очищает только регистры пути к управлению. Сгенерированный глобальный сброс HDL может быть синхронным или асинхронным в зависимости от ваших настроек Configuration Parameters (HDL Code Generation> Global Settings> Reset type).

Для более факторов сброса смотрите Советы.

Советы

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

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

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

  • Параметр Use HDL global reset соединяет сгенерированный глобальный сигнал сброса HDL с регистрами информационного канала. Этот параметр не изменяет внешний вид блока или изменяет поведение симуляции в Simulink. Сгенерированный глобальный сброс HDL может быть синхронным или асинхронным в зависимости от ваших настроек Configuration Parameters (HDL Code Generation> Global Settings> Reset type). В зависимости от вашего устройства, с помощью глобального сброса может переместить регистры из блоков DSP и увеличить использование ресурса.

  • Когда вы выбираете Enable reset input port, и параметры Use HDL global reset, и глобальная переменная и локальные сигналы сброса очищают регистры информационного канала и управление.

Сбросьте факторы для сгенерированных испытательных стендов

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

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

Алгоритмы

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

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

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

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

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

Поведение изменяется в R2019a

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

Введенный в R2017a