exponenta event banner

Программируемые коэффициенты фильтра для фильтров БИХ

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

Для фильтров IIR кодер предоставляет параметры пользовательского интерфейса и соответствующие свойства командной строки, которые позволяют:

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

  • Протестируйте интерфейс.

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

Следующие типы фильтров БИХ поддерживают программируемые коэффициенты фильтра:

  • Секция второго порядка (SOS) с бесконечной импульсной характеристикой (IIR) Прямая форма I

  • SOS IIR Прямая форма I транспонирована

  • SOS IIR Прямая форма II

  • SOS IIR Прямая форма II перенесена

Ограничения

  • Программируемые коэффициенты фильтра поддерживаются только для БИХ-фильтров с полностью параллельными архитектурами.

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

  • При создании интерфейса процессора для фильтра IIR OptimizeScaleValues свойство должно быть между 1 и 0. Например:

    filt.OptimizeScaleValues = 0
    Проверьте, что фильтр по-прежнему имеет требуемый отклик, используя fvtool и filter, команды. Выведение из строя filt.OptimizeScaleValues может добавлять квантование на входах и выходах секции.

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

Создание интерфейса процессора для программируемого фильтра IIR

Интерфейс процессора можно указать с помощью меню Coefficient source в диалоговом окне Generate HDL.

  • Список источников коэффициентов в диалоговом окне «Создание HDL» позволяет выбрать, будут ли коэффициенты получены из объекта фильтра и жестко закодированы (Internal) или из памяти (Processor interface). Значение по умолчанию: Internal.

    Соответствующее свойство командной строки: CoefficientSource.

  • Параметр «Коэффициент стимулирования» на панели «Испытательный стенд» диалогового окна «Генерировать ЛПВП» определяет, как испытательный стенд проверяет сгенерированный интерфейс памяти.

    Соответствующее свойство командной строки: TestBenchCoeffStimulus.

Создание тестового стенда для программируемых коэффициентов БИХ

В этом разделе описывается использование TestBenchCoeffStimulus для указания способа управления портами коэффициентов на испытательном стенде. Для этой цели также можно использовать опцию Стимул коэффициентов.

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

TestBenchStimulus свойство определяет входные стимулы фильтра.

TestbenchCoeffStimulus указан источник коэффициентов, используемых для испытательного стенда. Допустимые значения для TestbenchCoeffStimulus являются:

  • []: Пустой вектор. (по умолчанию)

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

  • Массив ячеек, содержащий следующие элементы:

    • New_filt.ScaleValues: вектор столбца значений масштаба для фильтра БИХ

    • New_filt.sosMatrix: матрица секции второго порядка (SOS) для фильтра БИХ

    Элементы массива ячеек можно указать в следующих формах:

    • {New_filt.ScaleValues,New_filt.sosMatrix}

    • {New_filt.ScaleValues;New_filt.sosMatrix}

    • {New_filt.sosMatrix,New_filt.ScaleValues}

    • {New_filt.sosMatrix;New_filt.ScaleValues}

    • {New_filt.ScaleValues}

    • {New_filt.sosMatrix}

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

    Если опустить New_filt.ScaleValues, испытательный стенд использует значения шкалы, загруженные из объекта фильтра дважды. Аналогично, если опустить New_filt.sosMatrixиспытательный стенд использует матрицу SOS, загруженную из объекта фильтра дважды.

Схема адресации для загрузки коэффициентов БИХ

В следующей таблице приведена схема генерации адресов для write_address порт при загрузке коэффициентов IIR в память. Эта схема адресации позволяет загружать различные типы коэффициентов (значения шкалы, числительные коэффициенты и коэффициенты знаменателя) через один порт (coeffs_in).

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

Адрес для каждого коэффициента делится на два поля:

  • Адрес раздела: Width is ceil(log2N) биты, где N - количество разделов.

  • Адрес коэффициента: Ширина - три бита.

Общая ширина write_address поэтому порт является ceil(log2N) + 3биты.

Адрес разделаАдрес коэффициента Описание
S S ... S000Значение масштаба сечения
S S ... S001Числительный коэффициент: b1
S S ... S010Числительный коэффициент: b2
S S ... S011Числительный коэффициент: b3
S S ... S100Коэффициент знаменателя: a2
S S ... S101Коэффициент знаменателя: a3 (если порядок = 2; в противном случае не используется)
S S ... S110Неиспользованный
0 0 ... 0111Последнее значение шкалы