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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кодер поддерживает полную область значений параллельной и последовательной архитектуры опций через свойства, переданные в generatehdl функция, как описано в разделе «Определение скорости по сравнению с площадью компромиссов при помощи generatehdl Properties».

Кроме того, можно использовать всплывающее меню Architecture в диалоговом окне Generate HDL, чтобы выбрать опции параллельной и последовательной архитектуры, как описано в разделе «Выбор архитектуры» Диалогового окна генерации HDL.

Примечание

Кодер также поддерживает распределенную арифметику (DA), другую высокоэффективную архитектуру для реализации фильтров. Смотрите Распределенную арифметику для конечной импульсной характеристики фильтров.

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

Полностью параллельная архитектура

Эта опция является выбором по умолчанию. A fully parallel architecture использует выделенный множитель и сумматор для каждого отвода фильтра; ответвления выполняются параллельно. Этот тип архитектуры оптимален для скорости. Однако он требует больше умножителей и сумматоров, чем последовательная архитектура, и поэтому потребляет больше площади чипа.

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

Serial architectures повторно используете аппаратные ресурсы во времени, сохраняя область микросхем. Кодер обеспечивает область значений опций последовательной архитектуры. Эти архитектуры имеют задержку в один тактовый период (см. Задержка в последовательной архитектуре).

Можно выбрать из следующих опций последовательной архитектуры:

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

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

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

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

    При выборе частично последовательной архитектуры для фильтра можно задать последовательное разделение следующими способами:

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

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

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

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

  • Cascade-serial: Каскадно-серийная архитектура тесно напоминает частично последовательную архитектуру. Как и в частично последовательной архитектуре, ответвления фильтра сгруппированы в несколько последовательных разделов, которые выполняются вместе параллельно. Однако накопленный выход каждой перегородки каскадируется к аккумулятору предыдущей перегородки. Поэтому выходы перегородок вычисляются в аккумуляторе первой перегородки. Этот метод называется повторным использованием аккумулятора. Вам не требуется конечный сумматор, который сохраняет область.

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

    Чтобы сгенерировать каскадно-последовательную архитектуру, вы задаете частично последовательную архитектуру с включенным повторным использованием аккумулятора. Если вы не задаете последовательные разделы, кодер автоматически выбирает оптимальное разбиение.

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

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

Хранение входных данных в допустимом состоянии

В последовательной архитектуре реализована внутренняя тактовая частота, превышающая частоту входа. В таких реализациях фильтра существуют N циклы (N >= 2) базового синхроимпульса для каждой входной выборки. Можно задать, сколько тактовых циклов испытательный стенд содержит значения входных данных в допустимом состоянии.

  • При выборе Hold input data between samples (по умолчанию) испытательный стенд содержит значения входных данных в допустимом состоянии для N тактовые импульсы.

  • Когда вы снимаете Hold input data between samples, испытательный стенд содержит значения в допустимом состоянии только для одного такта. Для следующего N-1 циклы, испытательный стенд приводит данные в неизвестное состояние (выраженное как 'X') пока следующая входная выборка не будет синхронизирована. Принудительное преобразование входных данных в неизвестное состояние проверяет, что сгенерированный код фильтра регистрирует входные данные только в первом цикле.

Рисунок показывает панель Test Bench диалогового окна Генерация 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 умножителей, рекомендуемый раздел [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'

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

Для получения примера смотрите Сгенерировать последовательные разделы для конечной импульсной характеристики фильтра.

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

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

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

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

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

Для получения примера см. раздел «Генерация последовательной архитектуры для БИХ фильтра».

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

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

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

Настройкой Architecture по умолчанию является Fully parallel, как показано.

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

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

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

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

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

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

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

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

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

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

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

Когда вы выбираете Cascade serial Architecture опции диалоговое окно Генерация HDL отображает поле Serial partition, как показано на следующем рисунке.

Меню Specified by позволяет вам задать количество и размер последовательных разделов в соответствии с различными критериями, как описано в разделе «Определение скорости и компромиссов по площади через generatehdl Properties».

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

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

  • Architecture: Выбор Fully parallel (по умолчанию), Fully serial, или Partly serial. Если вы выбираете Partly serialВ пользовательском интерфейсе отображается раскрывающееся меню Specified by.

  • Specified by: Выберите один из следующих вариантов:

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

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

Пример: Фильтр SOS прямой формы I.  В следующем примере создается прямая форма 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) создание фильтра с помощью Filter Builder.

Фильтр является lowpass df2sos фильтр с порядком фильтра 6. Арифметика фильтра установлена в Fixed-point.

На вкладке Code Generation кнопка Generate HDL активирует Filter Design HDL Coder™ UI. Следующий рисунок показывает опции HDL-кодера, настроенные для этого фильтра, используя частично последовательную архитектуру с Folding factor из 9.

Определение распределенной арифметической архитектуры

Всплывающее меню Architecture также включает в себя Distributed arithmetic (DA) опция. Информацию об этой архитектуре см. в разделе Распределенная арифметика для конечной импульсной характеристики Filters).

Взаимодействие между опциями архитектуры и другими опциями 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