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

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

Кодер предоставляет возможности, которые расширяют ваше управление скоростью по сравнению с компромиссами области в реализации проектов фильтра. Чтобы достигнуть желаемого компромисса, можно или задать полностью параллельную архитектуру для сгенерированного кода фильтра 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 Properties

По умолчанию 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 в отдельном окне. Отчет отображает исчерпывающую таблицу сворачивания фактора, множителя и последовательных настроек раздела для текущего фильтра. Можно использовать таблицу, чтобы помочь вам выбрать оптимальные настройки для своего проекта.

Задайте разделы для частично последовательной архитектуры

Когда вы выбираете опцию Architecture Partly serial, диалоговое окно Generate HDL отображается дополнительную информацию и поля ввода данных, связанные с последовательным разделением. (См. следующую фигуру.)

Диалоговое окно Generate HDL также отображается ссылку View details. Когда вы щелкаете по этой ссылке, кодер отображает отчет HTML в отдельном окне. Отчет отображает исчерпывающую таблицу сворачивания фактора, множителя и последовательных настроек раздела для текущего фильтра. Можно использовать таблицу, чтобы помочь вам выбрать оптимальные настройки для своего проекта.

Выпадающее меню Specified by позволяет вам решить, как вы задаете частично последовательную архитектуру. Выберите одну из следующих опций:

  • Folding factor: выпадающее меню справа от Folding factor содержит исчерпывающий список складных факторов для фильтра. Когда вы выбираете значение, отображение текущего фактора сворачивания, множителя и последовательных обновлений настроек раздела.

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

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

Определение каскадной последовательной архитектуры

Когда вы выбираете опцию Architecture Cascade serial, диалоговое окно 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.

Фильтр является lowpass фильтром df2sos с порядком фильтра 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