По умолчанию кодер получает коэффициенты фильтра из объекта фильтра и твердых кодов их в сгенерированный код. Реализация фильтра HDL, сгенерированная таким образом, не может использоваться с различным набором коэффициентов.
Для БИХ-фильтров кодер предоставляет возможности пользовательского интерфейса и соответствующие свойства командной строки, которые позволяют вам:
Сгенерируйте интерфейс для загрузки коэффициентов из памяти. Коэффициенты, сохраненные в памяти, называются programmable coefficients.
Протестируйте интерфейс.
Чтобы использовать программируемые коэффициенты, интерфейс порта (называемый processor interface) сгенерирован для сущности фильтра или модуля. Содействующая загрузка принята, чтобы находиться под контролем микропроцессора, который является внешним к сгенерированному фильтру. Фильтр использует загруженные коэффициенты для обработки входных выборок.
Следующие БИХ-типы фильтра поддерживают программируемые коэффициенты фильтра:
Бесконечная импульсная характеристика (IIR) секции второго порядка (SOS) Прямая Форма I
БИХ SOS Прямая I транспонированная Форма
БИХ SOS прямая форма II
БИХ SOS Прямая II транспонированная Форма
Ограничения
Программируемые коэффициенты фильтра поддерживаются для БИХ-фильтров с полностью параллельными архитектурами только.
Сгенерированный интерфейс принимает, что коэффициенты хранятся в регистровом файле.
Когда вы генерируете интерфейс процессора для БИХ-фильтра, OptimizeScaleValues
свойство должно быть между 1
и 0
. Например:
filt.OptimizeScaleValues = 0
fvtool
и filter
, команды. Отключение filt.OptimizeScaleValues
может добавить квантование при вводах и выводах раздела.Можно также сгенерировать интерфейс процессора для загрузки КИХ-фильтра coefficients.Specifying Память для Программируемых Коэффициентов для получения дополнительной информации.
Можно задать интерфейс процессора с помощью меню 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
| В последний раз масштабируйте значение |