Кодер предоставляет возможности, которые расширяют ваше управление скоростью по сравнению с компромиссами области в реализации проектов фильтра. Чтобы достигнуть желаемого компромисса, можно или задать полностью параллельную архитектуру для сгенерированного кода фильтра HDL или выбрать одну из нескольких последовательной архитектуры. Эта архитектура описана в параллельной и Последовательной Архитектуре.
Следующая таблица обобщает типы фильтра, которые доступны для параллельных и последовательных возможностей выбора архитектуры.
Архитектура | Доступный для типов фильтра... |
---|---|
Fully parallel (значение по умолчанию) | Отфильтруйте типы, которые поддерживаются для генерации HDL-кода |
Fully serial |
|
Partly serial |
|
Cascade serial |
|
Кодер поддерживает полный спектр параллельных и последовательных опций архитектуры через свойства, переданные в к generatehdl
функция, как описано в Определении Скорости по сравнению с Компромиссами области через generatehdl Свойства.
В качестве альтернативы можно использовать всплывающее меню Architecture на диалоговом окне Generate HDL, чтобы выбрать параллельные и последовательные опции архитектуры, как описано в Выбирают Architectures в Сгенерировать Диалоговом окне HDL.
Кодер также поддерживает распределенную арифметику (DA), другую высокоэффективную архитектуру для понимания фильтров. Смотрите Распределенную Арифметику для КИХ-Фильтров.
Эта опция является выбором по умолчанию. A fully parallel architecture использует специализированный множитель и сумматор для каждого касания фильтра; касания выполняются параллельно. Этот тип архитектуры оптимален для скорости. Однако это требует большего количества множителей и сумматоров, чем последовательная архитектура, и поэтому использует больше области чипа.
Аппаратные ресурсы повторного использования Serial architectures вовремя, сохраняя область чипа. Кодер предоставляет спектр последовательных опций архитектуры. Эта архитектура имеет задержку одного периода часов (см. Задержку в Последовательной Архитектуре).
Можно выбрать из этих последовательных опций архитектуры:
Fully serial: полностью последовательная архитектура сохраняет область путем многократного использования множителя и ресурсов сумматора последовательно. Например, создание фильтра с четырьмя касаниями использовало бы один множитель и сумматор, выполняя умножиться/накопить операцию однажды для каждого касания. Умножиться/накопить раздел проекта достигает четыре раза частоты дискретизации ввода/вывода. Этот тип архитектуры сохраняет область за счет некоторой потери скорости и более высокого потребления энергии.
В полностью последовательной архитектуре системные часы запускаются на намного более высоком уровне, чем частота дискретизации фильтра. Таким образом, для данного создания фильтра, максимальная скорость, достижимая полностью последовательной архитектурой, меньше максимальной скорости параллельной архитектуры.
Partly serial: Частично последовательная архитектура покрывает полный спектр скорости по сравнению с компромиссами области, которые находятся между полностью параллельной и полностью последовательной архитектурой.
В частично последовательной архитектуре касания фильтра сгруппированы в последовательные разделы. Касания в каждом разделе выполняются последовательно, но разделы выполняются вместе параллельно. Выходные параметры разделов суммированы в окончательном результате.
Когда вы выбираете частично последовательную архитектуру для фильтра, можно задать последовательное разделение следующими способами:
Задайте последовательные разделы непосредственно как вектор целых чисел. Каждый элемент вектора задает длину соответствующего раздела.
Задайте желаемое оборудование, сворачивающее факторный ff
, целое число, больше, чем 1
. Учитывая складной фактор, кодер вычисляет последовательный раздел и количество множителей.
Задайте желаемое количество множителей nmults
, целое число, больше, чем 1
. Учитывая количество множителей, кодер вычисляет последовательный раздел и складной фактор.
Диалоговое окно Generate HDL позволяет вам задать частично последовательную архитектуру в терминах этих трех параметров. Можно затем просмотреть, как изменение в одном параметре взаимодействует с другими двумя. Кодер также обеспечивает hdlfilterserialinfo
, информационная функция, которая помогает вам задать оптимальный последовательный раздел для фильтра.
Каскадно-последовательный: каскадно-последовательная архитектура тесно напоминает частично последовательную архитектуру. Как в частично последовательной архитектуре, касания фильтра сгруппированы в несколько последовательных разделов, которые выполняются вместе параллельно. Однако накопленный выход каждого раздела располагается каскадом к аккумулятору предыдущего раздела. Выход разделов поэтому вычисляется в аккумуляторе первого раздела. Этот метод называют повторным использованием аккумулятора. Вы не требуете итогового сумматора, который сохраняет область.
Каскадно-последовательная архитектура требует, чтобы дополнительный цикл системных часов завершил итоговое суммирование к выходу. Поэтому частота системных часов должна быть увеличена немного относительно часов, используемых в некаскаде частично последовательная архитектура.
Чтобы сгенерировать каскадно-последовательную архитектуру, вы задаете частично последовательную архитектуру с включенным повторным использованием аккумулятора. Если вы не задаете последовательные разделы, кодер автоматически выбирает оптимальное разделение.
Сериализация фильтра увеличивает общую задержку проекта одним тактом. Последовательная архитектура использует аккумулятор (сумматор с регистром), чтобы добавить последовательные продукты. Дополнительный итоговый регистр используется, чтобы сохранить суммированный результат каждого из последовательных разделов. Операция требует дополнительного такта.
Последовательная архитектура реализует внутренние тактовые частоты выше, чем входной уровень. В таких реализациях фильтра существует N
циклы (N >= 2
) из основных часов для каждой входной выборки. Можно задать, сколько тактов испытательный стенд содержит значения входных данных в допустимом состоянии.
Когда вы выбираете Hold input data between samples (значение по умолчанию), испытательный стенд содержит значения входных данных в допустимом состоянии для N
такты.
Когда вы очищаете Hold input data between samples, испытательный стенд содержит значения входных данных в допустимом состоянии только для одного такта. Для следующего N-1
циклы, испытательный стенд управляет данными к неизвестному состоянию (выраженный как 'X'
) пока следующая входная выборка не начата работу. Принуждение входных данных к неизвестному состоянию проверяет что сгенерированные кодовые регистры фильтра входные данные только на первом цикле.
Рисунок показывает панель Test Bench диалогового окна Generate HDL с набором Hold input data between samples к его настройке по умолчанию.
Используйте эквивалентный HoldInputDataBetweenSamples
свойство, когда вы вызываете generatehdl
функция.
generatehdl
СвойстваПо умолчанию, generatehdl
генерирует код фильтра с помощью полностью параллельной архитектуры. Если вы хотите сгенерировать код фильтра с полностью параллельной архитектурой, вы не должны задавать эту архитектуру явным образом.
Два свойства задают последовательные опции архитектуры к generatehdl
функция:
SerialPartition
: Это свойство задает последовательное разделение фильтра.
ReuseAccum
: Это свойство включает или отключает повторное использование аккумулятора.
Таблица суммирует, как установить эти свойства сгенерировать желаемую архитектуру.
Сгенерировать это Архитектура... | Установите SerialPartition на... | Установите ReuseAccum на... |
---|---|---|
Полностью параллельный | Не используйте это свойство | Не используйте это свойство |
Полностью последовательный | N , где N длина фильтра | Не заданный, или 'off' |
Частично последовательный |
Можно также задать последовательную архитектуру в терминах желаемого аппаратного фактора сворачивания, или в терминах оптимального количества множителей. Смотрите | 'off' |
Каскадно-последовательный с явным образом заданным разделением | [p1 p2 p3...pN] : вектор целых чисел, имеющих N элементы, где N количество последовательных разделов. Каждый элемент вектора задает длину соответствующего раздела. Сумма векторных элементов должна равняться длине фильтра. Значения векторных элементов должны появиться в порядке убывания, за исключением того, что последние два элемента должны быть равными. Например, для фильтра длины 9, делит такой as[5 4] или [4 3 2] было бы законно, но разделы [3 3 3] или [3 2 4] повысьте ошибку во время генерации кода. | 'on' |
Каскадно-последовательный с автоматически оптимизированным разделением | Не используйте это свойство | 'on' |
Можно использовать функцию помощника hdlfilterserialinfo
исследовать возможные разделы для вашего фильтра.
Для примера смотрите, Генерируют Последовательные Разделы для КИХ-Фильтра.
Чтобы задать частично или полностью последовательная архитектура для БИХ-SOS фильтруют структуру (df1sos
или dsp.BiquadFilter
), задайте любой из следующих параметров:
'FoldingFactor',ff
: Задайте желаемое оборудование, сворачивающее факторный ff
, целое число, больше, чем 1. Учитывая складной фактор, кодер вычисляет количество множителей.
'NumMultipliers',nmults
: Задайте желаемое количество множителей nmults
, целое число, больше, чем 1. Учитывая количество множителей, кодер вычисляет складной фактор.
Чтобы получить информацию о складных факторных опциях и соответствующем количестве множителей для фильтра, вызовите hdlfilterserialinfo
функция.
Для примера смотрите, Генерируют Последовательную Архитектуру для БИХ-Фильтра.
Всплывающее меню Architecture, в диалоговом окне Generate HDL, позволяет вам выбрать параллельную и последовательную архитектуру. Следующие темы описывают опции пользовательского интерфейса, которые необходимо установить для каждого выбора Architecture.
Установкой Architecture по умолчанию является Fully parallel
, как показано.
Когда вы выбираете Fully serial
, опции Architecture, диалоговое окно Generate HDL отображается дополнительную информацию о складном факторе, количестве множителей и последовательном разделении. Поскольку эти параметры зависят от длины фильтра, они отображаются в формате только для чтения как показано в следующем рисунке.
Диалоговое окно Generate HDL также отображается ссылку View details. Когда вы щелкаете по этой ссылке, кодер отображает отчет HTML в отдельном окне. Отчет отображает исчерпывающую таблицу сворачивания фактора, множителя и последовательных настроек раздела для текущего фильтра. Можно использовать таблицу, чтобы помочь вам выбрать оптимальные настройки для своего проекта.
Когда вы выбираете Partly serial
Опция Architecture, диалоговое окно Generate HDL отображается дополнительную информацию и поля ввода данных, связанные с последовательным разделением. (См. следующую фигуру.)
Диалоговое окно Generate HDL также отображается ссылку View details. Когда вы щелкаете по этой ссылке, кодер отображает отчет HTML в отдельном окне. Отчет отображает исчерпывающую таблицу сворачивания фактора, множителя и последовательных настроек раздела для текущего фильтра. Можно использовать таблицу, чтобы помочь вам выбрать оптимальные настройки для своего проекта.
Выпадающее меню Specified by позволяет вам решить, как вы задаете частично последовательную архитектуру. Выберите одну из следующих опций:
Folding factor
: Выпадающее меню справа от Folding factor
содержит исчерпывающий список складных факторов для фильтра. Когда вы выбираете значение, отображение текущего фактора сворачивания, множителя и последовательных обновлений настроек раздела.
Multipliers
: Выпадающее меню справа от Multipliers
содержит исчерпывающий список опций значения для количества множителей для фильтра. Когда вы выбираете значение, отображение текущего фактора сворачивания, множителя и последовательных обновлений настроек раздела.
Serial partition
: Выпадающее меню справа от Serial partition
содержит исчерпывающий список последовательных опций раздела для фильтра. Когда вы выбираете значение, отображение текущего фактора сворачивания, множителя и последовательных обновлений настроек раздела.
Когда вы выбираете Cascade serial
Опция Architecture, диалоговое окно Generate HDL отображается поле Serial partition как показано в следующем рисунке.
Меню Specified by позволяет вам задать номер и размер последовательных разделов согласно различным критериям, как описано в Определении Скорости по сравнению с Компромиссами области через generatehdl Свойства.
Чтобы задать частично или полностью последовательная архитектура для БИХ-SOS фильтруют структуру в пользовательском интерфейсе, вы устанавливаете следующие опции:
Architecture: выберите Fully parallel
(значение по умолчанию), Fully serial
, или Partly serial
. Если вы выбираете Partly serial
, пользовательский интерфейс отображает Specified by выпадающее меню.
Specified by: Выберите одно из следующего:
Folding factor
: Задайте желаемый аппаратный фактор сворачивания, ff
, целое число, больше, чем 1. Учитывая складной фактор, кодер вычисляет количество множителей.
Multipliers
: Задайте желаемое количество множителей, nmults
, целое число, больше, чем 1. Учитывая количество множителей, кодер вычисляет складной фактор.
Пример: Прямая Форма I Фильтров SOS. Следующий пример создает Прямую Форму I SOS (df1sos
) создание фильтра и открывает пользовательский интерфейс. Фигура после примера кода показывает варианты кодера, сконфигурированные для частично последовательной архитектуры, заданной с Folding factor
из 18.
Fs = 48e3 % Sampling frequency Fc = 10.8e3 % Cut-off frequency N = 5 % Filter Order f_lp = fdesign.lowpass('n,f3db',N,Fc,Fs) filt = design(f_lp,'butter','FilterStructure','df1sos','SystemObject',true) fdhdltool(filt,numerictype(1,16,15))
Пример: Прямая Форма II Фильтров SOS. Следующий пример создает Прямую Форму II SOS (df2sos
) создание фильтра с помощью Filter Builder.
Фильтром является df2sos
lowpass отфильтруйте с порядком фильтра 6. Арифметика фильтра установлена в
Fixed-point
.
На вкладке Code Generation кнопка Generate HDL активирует пользовательский интерфейс Filter Design HDL Coder™. Следующая фигура показывает варианты кодера HDL, сконфигурированные для этого фильтра, с помощью частично последовательной архитектуры с Folding factor
из 9.
Всплывающее меню Architecture также включает Distributed arithmetic (DA)
опция. Смотрите Распределенную Арифметику для КИХ-Фильтров) для получения информации об этой архитектуре.
Выбор определенных пунктов меню Architecture может изменить или отключить другие опции.
Когда Fully serial
опция выбрана, следующие опции установлены в свои значения по умолчанию и отключены:
Coefficient multipliers
Add pipeline registers
FIR adder style
Когда Partly serial
опция выбрана:
Опция Coefficient multipliers установлена в свое значение по умолчанию и отключена.
Если фильтр является многоскоростным, опция Clock inputs установлена в Single
и отключенный.
Когда Cascade serial
опция выбрана, следующие опции установлены в свои значения по умолчанию и отключены:
Coefficient multipliers
Add pipeline registers
FIR adder style