exponenta event banner

Соотношение скорости и площади

Обзор оптимизации скорости или площади

Кодер предоставляет опции, которые расширяют ваш контроль над скоростью и площадями при реализации конструкций фильтров. Для достижения требуемого компромисса можно либо указать полностью параллельную архитектуру для сгенерированного кода фильтра HDL, либо выбрать одну из нескольких последовательных архитектур. Эти архитектуры описаны в параллельных и последовательных архитектурах.

В следующей таблице представлены типы фильтров, доступные для выбора параллельной и последовательной архитектуры.

АрхитектураДоступно для типов фильтров...
Fully parallel (по умолчанию)Типы фильтров, поддерживаемые для генерации кода HDL
Fully serial
  • прямая форма

  • прямая форма симметричная

  • прямая форма асимметричная

  • прямая форма I SOS

  • прямая форма II SOS

Partly serial
  • прямая форма

  • прямая форма симметричная

  • прямая форма асимметричная

  • прямая форма I SOS

  • прямая форма II SOS

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'
Частично серийный

[p1 p2 p3...pN]: вектор Nцелочисленные элементы, где N - количество последовательных разделов. Каждый элемент вектора определяет длину соответствующей секции. Сумма векторных элементов должна быть равна длине фильтра. При определении секционирования для частично последовательной архитектуры необходимо учитывать следующее:

  • Длина фильтра должна быть разделена как можно более равномерно на вектор длины, равный количеству требуемых множителей. Например, если требуется фильтр длиной 9 с 2 умножителями, рекомендуемый раздел: [5 4]. Если в вашей конструкции требуется 3 множителя, рекомендуемый раздел:[3 3 3] вместо некоторого менее равномерного деления, такого как [1 4 4] или [3 4 2].

  • Если конструкция ограничена необходимостью вычисления каждого выходного значения (соответствующего каждому входному значению) в точном количестве N тактовых циклов, использование N наибольший размер раздела и разбиение других элементов как можно более равномерно. Например, если длина фильтра равна 9, а для вычисления выходных данных требуется ровно 4 цикла, определите раздел как [4 3 2]. Этот раздел выполняется за 4 тактовых цикла, за счет 3 умножителей.

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

'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

Определение частично или полностью последовательной архитектуры для структуры фильтра IIR SOS (df1sos или dsp.BiquadFilter), укажите один из следующих параметров:

  • 'FoldingFactor',ff: Укажите требуемый коэффициент складывания оборудования ff, целое число больше 1. Учитывая коэффициент сворачивания, кодер вычисляет количество множителей.

  • 'NumMultipliers',nmultsУказать требуемое количество множителей nmults, целое число больше 1. Учитывая количество множителей, кодер вычисляет коэффициент сворачивания.

Для получения информации о параметрах коэффициента сворачивания и соответствующем количестве множителей для фильтра вызовите hdlfilterserialinfo функция.

Пример см. в разделе Создание последовательных архитектур для фильтра IIR.

Выбор архитектур в диалоговом окне «Создание HDL»

Во всплывающем меню «Архитектура» в диалоговом окне «Создание 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

Чтобы задать частично или полностью последовательную архитектуру для структуры фильтра 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).

Взаимодействие между вариантами архитектуры и другими вариантами HDL

Выбор определенных параметров меню «Архитектура» может изменить или отключить другие параметры.

  • Когда Fully serial при выборе этой опции для следующих опций устанавливаются значения по умолчанию и отключаются:

    • Множители коэффициентов

    • Добавление регистров трубопроводов

    • Стиль сумматора FIR

  • Когда Partly serial выбрана опция:

    • Опция Множители коэффициентов устанавливается в значение по умолчанию и отключается.

    • Если фильтр является многоскоростным, для параметра Clock input устанавливается значение Single и отключены.

  • Когда Cascade serial при выборе этой опции для следующих опций устанавливаются значения по умолчанию и отключаются:

    • Множители коэффициентов

    • Добавление регистров трубопроводов

    • Стиль сумматора FIR