Кодер предоставляет опции, которые расширяют ваш контроль над скоростью и площадями при реализации конструкций фильтров. Для достижения требуемого компромисса можно либо указать полностью параллельную архитектуру для сгенерированного кода фильтра HDL, либо выбрать одну из нескольких последовательных архитектур. Эти архитектуры описаны в параллельных и последовательных архитектурах.
В следующей таблице представлены типы фильтров, доступные для выбора параллельной и последовательной архитектуры.
| Архитектура | Доступно для типов фильтров... |
|---|---|
Fully parallel (по умолчанию) | Типы фильтров, поддерживаемые для генерации кода HDL |
Fully serial |
|
Partly serial |
|
Cascade serial |
|
Кодер поддерживает весь диапазон параметров параллельной и последовательной архитектуры через свойства, передаваемые в generatehdl функция, как описано в разделе Определение скорости по сравнению с компромиссами по площади через свойства generatehdl.
Кроме того, во всплывающем меню «Архитектура» диалогового окна «Генерировать HDL» можно выбрать параметры параллельной и последовательной архитектуры, как описано в разделе «Выбор архитектур» диалогового окна «Генерировать HDL».
Примечание
Кодер также поддерживает распределенную арифметику (DA), другую высокоэффективную архитектуру для реализации фильтров. См. раздел Распределенная арифметика для фильтров FIR.
Этот параметр используется по умолчанию. Полностью параллельная архитектура использует выделенный множитель и сумматор для каждого отвода фильтра; отводы выполняются параллельно. Этот тип архитектуры оптимален для скорости. Однако она требует больше умножителей и сумматоров, чем последовательная архитектура, и, следовательно, потребляет больше площади чипа.
Последовательные архитектуры многократно используют аппаратные ресурсы, экономя площадь чипов. Кодер предоставляет ряд вариантов последовательной архитектуры. Эти архитектуры имеют задержку в один тактовый период (см. Задержка в последовательных архитектурах).
Можно выбрать один из следующих вариантов последовательной архитектуры:
Полностью последовательный: полностью последовательная архитектура сохраняет область, снова используя множитель и ресурсы гадюки последовательно. Например, конструкция фильтра с четырьмя отводами будет использовать один умножитель и сумматор, выполняя операцию умножения/накопления один раз для каждого отвода. Секция умножения/накопления проекта работает с четырехкратной частотой выборки на входе/выходе. Этот тип архитектуры экономит площадь за счет некоторой потери скорости и более высокого энергопотребления.
В полностью последовательной архитектуре тактовый сигнал системы работает с гораздо большей скоростью, чем частота дискретизации фильтра. Таким образом, для данной конструкции фильтра максимальная скорость, достигаемая полностью последовательной архитектурой, меньше максимальной скорости параллельной архитектуры.
Частично последовательный: Частично последовательные архитектуры охватывают весь диапазон скоростей и площадей, которые лежат между полностью параллельными и полностью последовательными архитектурами.
В частично последовательной архитектуре отводы фильтра группируются в последовательные разделы. Отводы в каждом разделе выполняются последовательно, но разделы выполняются вместе параллельно. Выходные сигналы секций суммируются на конечном выходе.
При выборе частично последовательной архитектуры для фильтра можно определить последовательное разбиение следующими способами:
Определите последовательные секции непосредственно, как вектор целых чисел. Каждый элемент вектора определяет длину соответствующей секции.
Укажите требуемый коэффициент складывания оборудования ff, целое число, большее, чем 1. Учитывая коэффициент сворачивания, кодер вычисляет последовательное разбиение и количество умножителей.
Укажите требуемое количество множителей nmults, целое число, большее, чем 1. Учитывая количество множителей, кодер вычисляет последовательное разбиение и коэффициент сворачивания.
Диалоговое окно Генерировать ЛПВП (Generate HDL) позволяет задать частично последовательную архитектуру с точки зрения этих трех параметров. Затем можно просмотреть, как изменение одного параметра взаимодействует с двумя другими параметрами. Кодер также обеспечивает hdlfilterserialinfo, информационная функция, которая помогает определить оптимальный последовательный раздел для фильтра.
Каскадно-последовательная: Каскадно-последовательная архитектура сильно напоминает отчасти последовательную архитектуру. Как и в частично последовательной архитектуре, отводы фильтра группируются в несколько последовательных разделов, которые выполняются вместе параллельно. Однако накопленный выход каждой секции каскадируется к накопителю предыдущей секции. Следовательно, выходной сигнал секций вычисляется в накопителе первой секции. Этот способ называется повторным использованием аккумулятора. Не требуется конечный сумматор, который сохраняет область.
Каскадно-последовательная архитектура требует дополнительного цикла системных часов для завершения окончательного суммирования выходных данных. Поэтому частота системных часов должна быть немного увеличена по сравнению с часами, используемыми в некаскадной частично последовательной архитектуре.
Для создания каскадно-последовательной архитектуры необходимо указать частично последовательную архитектуру с включенным повторным использованием накопителя. Если последовательные разделы не указаны, кодер автоматически выбирает оптимальное разбиение.
Сериализация фильтра увеличивает общую задержку конструкции на один тактовый цикл. Последовательные архитектуры используют накопитель (сумматор с регистром) для добавления последовательных продуктов. Дополнительный конечный регистр используется для хранения суммированного результата каждого из последовательных разделов. Операция требует дополнительного тактового цикла.
Последовательные архитектуры реализуют внутренние тактовые частоты, превышающие входную. В таких реализациях фильтра имеются N циклы (N >= 2) базового тактового сигнала для каждой входной выборки. Можно указать, сколько тактовых циклов тестовый стенд удерживает значения входных данных в допустимом состоянии.
При выборе параметра Hold input data between samples (hold input data between samples - удерживайте входные данные между выборками) тестовый стенд сохраняет значения входных данных в допустимом состоянии для N тактовых циклов.
При снятии флажка «Удерживать входные данные между выборками» испытательный стенд сохраняет значения входных данных в допустимом состоянии только в течение одного тактового цикла. Для следующего N-1 циклы, испытательный стенд переводит данные в неизвестное состояние (выражается как 'X') до тех пор, пока не будет синхронизирована следующая входная выборка. Принудительное приведение входных данных в неизвестное состояние проверяет, что сгенерированный код фильтра регистрирует входные данные только в первом цикле.
На рисунке показана панель Test Stench диалогового окна Generate HDL (генерировать ЛПВП), в которой для параметра Hold input data between samples установлено значение по умолчанию.

Использовать эквивалент HoldInputDataBetweenSamples при вызове generatehdl функция.
generatehdl СвойстваПо умолчанию generatehdl генерирует код фильтра с использованием полностью параллельной архитектуры. Если требуется создать код фильтра с полностью параллельной архитектурой, нет необходимости явно указывать эту архитектуру.
Два свойства задают параметры последовательной архитектуры для generatehdl функция:
SerialPartition: Это свойство задает последовательное разбиение фильтра.
ReuseAccum: Это свойство включает или отключает повторное использование накопителя.
В таблице представлено, как задать эти свойства для создания требуемой архитектуры.
| Создание этого Архитектура... | Задайте для параметра SerurePartition значение... | Задайте для параметра ReuseAccum значение... |
|---|---|---|
| Полностью параллельный | Опустить это свойство | Опустить это свойство |
| Полностью серийный | N, где N - длина фильтра | Не указан, или 'off' |
| Частично серийный |
Можно также указать последовательную архитектуру с точки зрения требуемого коэффициента складывания оборудования или с точки зрения оптимального количества множителей. Посмотрите | 'off' |
| Каскадно-последовательный с явно указанным разбиением | [p1 p2 p3...pN]: вектор целых чисел, имеющих N элементы, где N - количество последовательных разделов. Каждый элемент вектора определяет длину соответствующей секции. Сумма векторных элементов должна быть равна длине фильтра. Значения векторных элементов должны отображаться в порядке убывания, за исключением того, что последние два элемента должны быть равны. Например, для фильтра длиной 9 такие разделы, как[5 4] или [4 3 2] было бы законным, но разделы [3 3 3] или [3 2 4] создать ошибку во время генерации кода. | 'on' |
| Каскадный последовательный с автоматически оптимизированным разделением | Опустить это свойство | 'on' |
Можно использовать функцию помощника hdlfilterserialinfo чтобы изучить возможные разделы для фильтра.
Пример см. в разделе Создание последовательных разделов для фильтра FIR.
Определение частично или полностью последовательной архитектуры для структуры фильтра IIR SOS (df1sos или dsp.BiquadFilter), укажите один из следующих параметров:
'FoldingFactor',ff: Укажите требуемый коэффициент складывания оборудования ff, целое число больше 1. Учитывая коэффициент сворачивания, кодер вычисляет количество множителей.
'NumMultipliers',nmultsУказать требуемое количество множителей nmults, целое число больше 1. Учитывая количество множителей, кодер вычисляет коэффициент сворачивания.
Для получения информации о параметрах коэффициента сворачивания и соответствующем количестве множителей для фильтра вызовите hdlfilterserialinfo функция.
Пример см. в разделе Создание последовательных архитектур для фильтра IIR.
Во всплывающем меню «Архитектура» в диалоговом окне «Создание HDL» можно выбрать параллельную и последовательную архитектуру. В следующих разделах описываются параметры пользовательского интерфейса, которые необходимо задать для каждого варианта архитектуры.
По умолчанию используется параметр Architecture Fully parallel, как показано.

При выборе Fully serial, Параметры архитектуры, диалоговое окно Генерировать ЛПВП (Generate HDL) отображает дополнительную информацию о коэффициенте сворачивания, количестве множителей и последовательном разбиении. Поскольку эти параметры зависят от длины фильтра, они отображаются в формате только для чтения, как показано на следующем рисунке.
В диалоговом окне Создать ЛПВП (Generate HDL) также отображается ссылка Просмотреть сведения (View details). При нажатии на эту ссылку кодер отображает отчет HTML в отдельном окне. В отчете отображается исчерпывающая таблица параметров коэффициента сворачивания, множителя и последовательного секционирования для текущего фильтра. Таблицу можно использовать для выбора оптимальных параметров конструкции.

При выборе Partly serial
Опция Architecture (Архитектура), диалоговое окно Generate HDL (Генерировать HDL) отображает дополнительную информацию и поля ввода данных, связанные с последовательным разбиением. (См. следующий рисунок.)
В диалоговом окне Создать ЛПВП (Generate HDL) также отображается ссылка Просмотреть сведения (View details). При нажатии на эту ссылку кодер отображает отчет HTML в отдельном окне. В отчете отображается исчерпывающая таблица параметров коэффициента сворачивания, множителя и последовательного секционирования для текущего фильтра. Таблицу можно использовать для выбора оптимальных параметров конструкции.

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

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

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

При выборе Cascade serial
Опция Architecture (Архитектура) в диалоговом окне Generate HDL (Генерировать HDL) отображается поле Serial partition (Последовательный раздел), как показано на следующем рисунке.

Меню Specified by позволяет определить количество и размер последовательных разделов в соответствии с различными критериями, как описано в разделе Specifing Speed vs. Area Tradeoff via generatehdl Properties.
Чтобы задать частично или полностью последовательную архитектуру для структуры фильтра IIR SOS в интерфейсе пользователя, необходимо задать следующие опции:
Архитектура: Выбор Fully parallel (по умолчанию), Fully serial, или Partly serial. При выборе Partly serial, пользовательский интерфейс отображает раскрывающееся меню 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))

Пример: Прямой SOS-фильтр формы II. В следующем примере создается прямая форма II SOS (df2sos) проектирование фильтра с помощью построителя фильтров.

Фильтр является низкочастотным df2sos фильтр с порядком фильтра 6. Арифметика фильтра имеет значение Fixed-point.
На вкладке «Создание кода» кнопка «Создать HDL» активирует пользовательский интерфейс HDL Coder™ дизайна фильтра. На следующем рисунке показаны опции кодера HDL, настроенные для этого фильтра, с использованием частично последовательной архитектуры с Folding factor из 9.

Всплывающее меню Architecture также включает Distributed arithmetic (DA) вариант. Для получения информации об этой архитектуре см. раздел Распределенная арифметика для фильтров FIR).
Выбор определенных параметров меню «Архитектура» может изменить или отключить другие параметры.
Когда Fully serial при выборе этой опции для следующих опций устанавливаются значения по умолчанию и отключаются:
Множители коэффициентов
Добавление регистров трубопроводов
Стиль сумматора FIR
Когда Partly serial выбрана опция:
Опция Множители коэффициентов устанавливается в значение по умолчанию и отключается.
Если фильтр является многоскоростным, для параметра Clock input устанавливается значение Single и отключены.
Когда Cascade serial при выборе этой опции для следующих опций устанавливаются значения по умолчанию и отключаются:
Множители коэффициентов
Добавление регистров трубопроводов
Стиль сумматора FIR