Скорость по сравнению с компромиссами области

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

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

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

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

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

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

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

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

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

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

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

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

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

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'
Частично последовательный

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

  • Длина фильтра должна быть разделена так однородно, как вы можете в вектор из длины, равной количеству предназначенных множителей. Например, если ваш проект требует фильтра длины 9 с 2 множителями, рекомендуемым разделом является [5 4]. Если ваш проект требует 3 множителей, рекомендуемый раздел is[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, делит такой as[5 4] или [4 3 2] было бы законно, но разделы [3 3 3] или [3 2 4] повысьте ошибку во время генерации кода. 'on'
Каскадно-последовательный с автоматически оптимизированным разделениемНе используйте это свойство'on'

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

Для примера смотрите, Генерируют Последовательные Разделы для КИХ-Фильтра.

Последовательные архитектуры для БИХ-фильтров SOS

Чтобы задать частично или полностью последовательная архитектура для БИХ-SOS фильтруют структуру (df1sos или dsp.BiquadFilter), задайте любой из следующих параметров:

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

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

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

Для примера смотрите, Генерируют Последовательные Архитектуры для БИХ-Фильтра.

Выберите Architectures в сгенерировать диалоговом окне HDL

Всплывающее меню 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

Чтобы задать частично или полностью последовательная архитектура для БИХ-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) опция. Смотрите Распределенную Арифметику для КИХ-Фильтров) для получения информации об этой архитектуре.

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

Выбор определенных пунктов меню 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