exponenta event banner

Свойства оптимизации HDL

Оптимизация скорости или области генерируемого кода HDL

С помощью свойств оптимизации ЛПВП в сгенерированном коде можно определить соотношение скорости и площади.

Укажите эти свойства в качестве аргументов «имя-значение» для generatehdl функция. Name - имя свойства и Value - соответствующее значение. Можно указать несколько аргументов «имя-значение» в любом порядке как 'Name1',Value1,...,'NameN',ValueN.

Например:

fir = dsp.FIRFilter('Structure','Direct form antisymmetric');
generatehdl(fir,'InputDataType',numerictype(1,16,15),'AddPipelineRegisters','on');

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

развернуть все

Оптимизировать тактовую частоту с помощью регистров трубопроводов, указанных как 'off' или 'on'. Это свойство нельзя использовать с полностью последовательными или каскадными последовательными фильтрами. При установке для этого свойства значения 'on'кодер добавляет регистры конвейера между стадиями вычисления фильтра. Хотя регистры увеличивают общую задержку фильтра, они обеспечивают значительное улучшение тактовой частоты.

Тип фильтраРасположение добавленного регистра трубопровода
FIR транспонированМежду множителями коэффициентов и сумматорами
Прямая форма FIR, антисимметричная FIR и симметричная FIR

Между уровнями конечного сумматора на основе дерева

Альтернативный метод суммирования на основе дерева см. также в свойстве FIRAdderStyle.

IIRМежду секциями
CICМежду секциями гребенки

Дополнительные сведения см. в разделе Оптимизация тактовой частоты с помощью регистров конвейера.

Оптимизация тактовой частоты с помощью метода суммирования, указанного как 'linear', 'tree', или 'pipelined'. Это свойство применяется только к FIR прямой формы, антисимметричным FIR и симметричным фильтрам FIR. Это свойство нельзя использовать с полностью последовательными или каскадными последовательными фильтрами. При установке для этого свойства значения 'tree'кодер создает конечный сумматор, который выполняет парное сложение с последовательными продуктами, которые выполняются параллельно, а не последовательно. При установке для этого свойства значения 'pipelined', кодер создает основанный на дереве конечный сумматор с конвейерными регистрами между уровнями дерева.

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

Зависимости

Это свойство применяется только в том случае, если AddPipelineRegisters свойство имеет значение 'off'.

Дополнительный входной регистр, указанный как 'on' или 'off'. Если для этого свойства установлено значение 'on', кодер генерирует сигнал с именем input_register и включает оператор процесса, который управляет регистром. Если возникшая задержка является проблемой или если фильтр включен в код, имеющий существующий входной регистр, установите для этого свойства значение 'off'. Дополнительные сведения см. в разделе Указание или подавление зарегистрированных входных и выходных данных.

Регистр дополнительного выхода, указанный как 'on' или 'off'. Если для этого свойства установлено значение 'on', кодер генерирует сигнал с именем output_register и включает оператор процесса, который управляет регистром. Если возникшая задержка является проблемой или если фильтр включен в код, имеющий существующий выходной регистр, установите для этого свойства значение 'off'. Дополнительные сведения см. в разделе Указание или подавление зарегистрированных входных и выходных данных.

Количество ступеней трубопровода на входах множителя, указанное как неотрицательное целое число. Это свойство применяется только к фильтрам FIR. Конвейерное умножение может значительно увеличить тактовые частоты. Дополнительные сведения см. в разделе Трубопровод ввода и вывода множителя для фильтров FIR.

Зависимости

Чтобы включить это свойство, установите CoeffMultipliers кому 'multipliers'.

Количество ступеней трубопровода на выходах множителя, указанное как неотрицательное целое число. Это свойство применяется только к фильтрам FIR. Конвейерное умножение может значительно увеличить тактовые частоты. Дополнительные сведения см. в разделе Трубопровод ввода и вывода множителя для фильтров FIR.

Зависимости

Чтобы включить это свойство, установите CoeffMultipliers кому 'multipliers'.

Оптимизация площадей

развернуть все

Оптимизация кода HDL, указанная как 'off' или 'on'. По умолчанию кодер генерирует литеральную реализацию фильтра с числовым поведением, которое точно соответствует объекту фильтра. Эта реализация не обязательно является оптимальной реализацией ЛПВП. Если для этого свойства установлено значение 'on'кодер уменьшает область реализации аппаратных средств и оптимизирует типы данных и эффекты квантования. Дополнительные сведения о базовых компромиссах см. в разделе Оптимизация для HDL.

Реализация умножения коэффициентов, указанных как 'multiplier', 'csd', или 'factored-csd'. Это свойство нельзя использовать с многоскоростными или последовательными фильтрами.

  • 'multiplier' - Кодер сохраняет логику множителя в сгенерированном коде HDL.

  • 'csd' или 'factored-csd'- Кодер реализует умножение, используя логику канонических цифр со знаком (CSD). Метод CSD заменяет множители логикой сдвига и добавления. Этот метод также минимизирует количество сумматоров, используемых для постоянного умножения, путем представления двоичных чисел с минимальным числом ненулевых цифр. Эта оптимизация уменьшает площадь, используемую фильтром при сохранении или увеличении тактовой частоты.

  • 'factored-csd' - Кодер реализует умножение с использованием факторизованной логики CSD. Факторизованная CSD заменяет операции множителя операциями сдвига и сложения простых коэффициентов коэффициентов. Этот вариант обеспечивает большее сокращение площади, чем CSD, за счет снижения тактовой частоты.

Дополнительные сведения см. в разделе Оптимизация CSD для множителей коэффициентов.

Разделы для архитектур последовательного фильтра, указанные как одна из следующих:

  • -1 - Кодер генерирует полностью параллельную архитектуру. Эта архитектура эквивалентна последовательному разбиению, определенному как вектор размера эффективной длины фильтра.

  • Эффективная длина фильтра - кодер генерирует полностью последовательную архитектуру.

  • [p1 p2 ... pN] - Кодер генерирует частично последовательную архитектуру с N разделы. Целые числа в векторе указывают длину каждого раздела. Сумма векторных элементов должна быть равна эффективной длине фильтра. Для дальнейшего уменьшения площади можно создать каскадно-последовательную архитектуру, включив ReuseAccum собственность. Некоторые примеры см. в разделе Создание последовательных разделов для фильтра FIR.

  • Массив ячеек последовательных разделов - кодер генерирует разделы для каждой ступени фильтра в каскадном фильтре. Укажите секции для каждой ступени фильтра как -1эффективная длина фильтра или вектор целых чисел. Элементы каждого вектора должны суммироваться с эффективной длиной фильтра связанного фильтра в каскаде. Пример см. в разделе Создание последовательных разделов каскадного фильтра.

    Когда последовательное разделение ступени фильтра установлено в -1, можно указать раздел LUT для этого этапа с помощью DALUTPartition и DARadix свойства. Дополнительные сведения см. в разделе Параметры архитектуры каскадных фильтров.

Это свойство нельзя использовать с фильтрами IIR SOS. Чтобы создать последовательные архитектуры для фильтров IIR SOS, используйте FoldingFactor или NumMultipliers вместо этого свойства.

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

Тип фильтраРасчет эффективной длины фильтра
Прямая форма FL = length(find(filt.Numerator~= 0))
Прямая форма симметричнаяFL = ceil(length(find(filt.Numerator~= 0))/2)
Антисимметричная прямая форма

Дополнительные сведения см. в разделе Определение соотношения скорости и площади с помощью свойств generatehdl.

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

Повторное использование аккумулятора для каскадно-последовательной архитектуры, указанное как 'off' или 'on'. Если для этого свойства установлено значение 'on'кодер группирует отводы фильтра в несколько последовательных разделов. Накопленный выходной сигнал каждой секции каскадно поступает в накопитель предыдущей секции. Следовательно, выходной сигнал секций вычисляется в накопителе первой секции. Этот метод, называемый повторным использованием аккумулятора, экономит площадь кристалла. Если свойство SerialPartition не определен, кодер генерирует оптимальный раздел. Дополнительные сведения см. в разделе Определение соотношения скорости и площади с помощью свойств generatehdl.

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

Разделы таблицы подстановки (LUT) для распределенной арифметики (DA), указанные как одно из следующих:

  • -1 - Кодер генерирует полностью параллельную архитектуру.

  • Эффективная длина фильтра - кодер генерирует реализацию DA без разбиения LUT.

  • [p1 p2 ... pN] - Кодер генерирует реализацию DA с помощью N Разделы LUT. Целые числа в векторе указывают размер каждого раздела. Максимальный размер отдельного раздела - 12. Сумма векторных элементов должна быть равна эффективной длине фильтра. Для многоскоростных фильтров каждый многофазный субфильтр использует одни и те же разделы LUT. Пример см. в разделе Распределенная арифметика односкоростных фильтров.

  • {p1 p2 ... pN; q1 q2 ... qN; ... } - Кодер генерирует реализацию DA с помощью N уникальные разделы LUT для каждого многофазного субфильтра многоскоростного фильтра. Каждая строка матрицы определяет секции для одного субфильтра. Элементы в каждой строке должны суммироваться с соответствующей длиной субфильтра, FLi. Пример см. в разделе Распределенная арифметика для многоскоростных фильтров.

  • Массив ячеек разделов DALUT - кодер генерирует реализацию DA с различными разделами LUT для каждой ступени фильтра каскада. Укажите разделы LUT для каждой ступени фильтра как -1эффективная длина фильтра или вектор целых чисел. Элементы каждого вектора должны суммироваться с эффективной длиной фильтра связанного фильтра в каскаде. Пример см. в разделе Распределенная арифметика каскадных фильтров.

    Если для раздела LUT ступени фильтра установлено значение -1, можно указать последовательный раздел для этого этапа с помощью SerialPartition собственность. Дополнительные сведения см. в разделе Параметры архитектуры каскадных фильтров.

Используйте эту таблицу в качестве руководства для расчета эффективной длины фильтра. Кроме того, можно использовать hdlfilterdainfo функция для отображения эффективной длины фильтра, опций разбиения LUT и возможных DARadix значения для фильтра.

Тип фильтраРасчет эффективной длины фильтра
Прямая форма FL = length(find(filt.Numerator~= 0))
Прямая форма симметричнаяFL = ceil(length(find(filt.Numerator~= 0))/2)
Антисимметричная прямая форма
Многоскоростной режим с равномерными разделами LUT для каждого многофазного субфильтраFL = size(polyphase(filt),2)
Многоскоростной режим с уникальными разделами LUT для каждого многофазного субфильтраp = polyphase(filt)
FLi = length(find(p(i,:)))
, где i является индексом для iПервая строка многофазной матрицы фильтра. iтретья строка матрицы p представляет iвторой субфильтр.

Дополнительные сведения см. в разделе Распределенная арифметика для фильтров FIR.

Количество битов, одновременно обрабатываемых в распределенной арифметике (DA), указанное как 2, 2N, или {2N,2M,...} где:

  • N > 0

  • mod(W,N) = 0, где W - размер входного слова фильтра

  • 2N <= 2W

Это свойство определяет степень параллелизма в архитектуре DA, которая может повысить тактовую частоту за счет площади.

  • 21 - Кодер реализует полностью последовательную архитектуру DA, которая обрабатывает 1 бит одновременно.

  • 2N - Кодер генерирует частично последовательную архитектуру DA, когда 1 < N < W.

  • 2W - Кодер генерирует полностью параллельную архитектуру DA.

  • {2N,2M,...} - Кодер генерирует реализацию DA с различными DARadix значения для каждой ступени фильтра в каскадном фильтре. Пример см. в разделе Распределенная арифметика каскадных фильтров.

    Когда DARadix значение каскада фильтра равно 2, можно указать последовательную архитектуру для этого каскада с помощью SerialPartition собственность. Дополнительные сведения см. в разделе Параметры архитектуры каскадных фильтров.

Дополнительные сведения см. в разделе Распределенная арифметика для фильтров FIR.

Коэффициент складывания для фильтра БИХ, указанный как 1 или положительное целое число. Это свойство используется для определения последовательной архитектуры для SOS-фильтров прямой формы I или прямой формы II. Для уменьшения площади в реализации последовательной архитектуры можно совместно использовать множители за счет задержек. Коэффициент сворачивания определяет коэффициент увеличения тактовой частоты в ответ на оптимизацию площади.

Можно указать либо FoldingFactor свойства или NumMultipliers собственность, но не оба. Если ни одно из свойств не указано, кодер создает полностью параллельную архитектуру.

Пример см. в разделе Создание последовательных архитектур для фильтра IIR. Для получения информации о FoldingFactor опции и соответствующие NumMultipliers, вызовите hdlfilterserialinfo функция.

Число общих множителей для фильтра IIR, указанное как положительное целое число. Это свойство используется для определения последовательной архитектуры для SOS-фильтров прямой формы I или прямой формы II. Общие множители сокращают площадь за счет увеличения тактовой частоты.

Можно указать либо NumMultipliers свойство или FoldingFactor собственность, но не оба. Если ни одно из свойств не указано, кодер создает полностью параллельную архитектуру.

Пример см. в разделе Создание последовательных архитектур для фильтра IIR. Для получения информации о NumMultipliers опции и соответствующие FoldingFactor, вызовите hdlfilterserialinfo функция.

Совет

Если вы используете fdhdltool для создания кода HDL можно задать соответствующие свойства в диалоговом окне «Создание HDL».

СобственностьРасположение в диалоговом окне

Добавить входной регистр

Вкладка «Глобальные параметры» > вкладка «Порты»

Добавить выходной регистр

Дополнительные свойства оптимизации

Вкладка «Архитектура фильтра»

См. также: