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

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

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

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

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

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

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

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

  • БИХ SOS Прямая Форма я транспонировал

  • БИХ SOS прямая форма II

  • БИХ SOS Прямая Форма II транспонированный

Ограничения

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

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

  • Когда вы генерируете интерфейс процессора для БИХ-фильтра, OptimizeScaleValues свойство должно быть между 1 и 0. Например:

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

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

Сгенерируйте интерфейс процессора для программируемого БИХ-фильтра

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

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

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

  • Опция Coefficient stimulus на панели Test Bench диалогового окна Generate HDL задает, как испытательный стенд тестирует сгенерированный интерфейс памяти.

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

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

В этом разделе описывается использовать TestBenchCoeffStimulus свойство задать, как испытательный стенд управляет содействующими портами. Можно также использовать опцию Coefficient stimulus с этой целью.

Когда содействующий интерфейс памяти был сгенерирован для фильтра, содействующие порты сопоставили тестовые векторы. 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 порт при загрузке БИХ-коэффициентов в память. Эта схема адресации позволяет различным типам коэффициентов (значения шкалы, коэффициенты числителя и коэффициенты знаменателя) загружаться через один порт (coeffs_in).

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

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

  • Адрес раздела: Шириной является 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В последний раз масштабируйте значение