По умолчанию кодер получает коэффициенты фильтра из объекта фильтра и твердых кодов их в сгенерированный код. Реализация фильтра 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 ... S | 000 | Разделите значение шкалы |
S S ... S | 001 | Коэффициент числителя: b1 |
S S ... S | 010 | Коэффициент числителя: b2 |
S S ... S | 011 | Коэффициент числителя: b3 |
S S ... S | 100 | Коэффициент знаменателя: a2 |
S S ... S | 101 | Коэффициент знаменателя: a3 (если порядок = 2; в противном случае неиспользованный) |
S S ... S | 110 | Неиспользованный |
0 0 ... 0 | 111 | В последний раз масштабируйте значение |