HDL Optimization Properties

Оптимизируйте скорость или область сгенерированного HDL-кода

Со свойствами оптимизации HDL можно задать скорость по сравнению с компромиссами области в сгенерированном коде.

Задайте эти свойства как аргументы name-value к generatehdl functionName имя свойства и Value соответствующее значение. Можно задать несколько аргументов 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', кодер добавляет регистры трубопровода между этапами расчета фильтра. Несмотря на то, что регистры добавляют к полной задержке фильтра, они предоставляют существенные улучшения тактовой частоте.

Отфильтруйте типМестоположение добавленного регистра трубопровода
КИХ транспонированМежду содействующими множителями и сумматорами
Прямой КИХ формы, антисимметричный КИХ и симметричный КИХ

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

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

БИХМежду разделами
CICМежду разделами расчески

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

Оптимизируйте тактовую частоту с методом суммирования в виде 'linear', 'tree', или 'pipelined'. Это свойство применяется только к прямому КИХ формы, антисимметричному КИХ и симметричным КИХ-фильтрам. Вы не можете использовать это свойство с полностью последовательным или расположить каскадом последовательные фильтры. Когда вы устанавливаете это свойство на 'tree', кодер создает итоговый сумматор, который выполняет попарное сложение на последовательных продуктах, которые выполняются параллельно, а не последовательно. Когда вы устанавливаете это свойство на 'pipelined', кодер создает основанный на дереве итоговый сумматор с регистрами трубопровода между уровнями дерева.

Для получения дополнительной информации смотрите Оптимизирующее Итоговое Суммирование для КИХ-Фильтров.

Зависимости

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

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

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

Количество настроек канала связи на множителе вводит в виде неотрицательного целого числа. Это свойство применяется только к КИХ-фильтрам. Конвейеризация множителя может значительно увеличить тактовые частоты. Для получения дополнительной информации смотрите, что Ввод и вывод Множителя Конвейерно обрабатывает для КИХ-Фильтров.

Зависимости

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

Количество настроек канала связи на множителе выходные параметры в виде неотрицательного целого числа. Это свойство применяется только к КИХ-фильтрам. Конвейеризация множителя может значительно увеличить тактовые частоты. Для получения дополнительной информации смотрите, что Ввод и вывод Множителя Конвейерно обрабатывает для КИХ-Фильтров.

Зависимости

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

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

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

Оптимизация HDL-кода в виде 'off' или 'on'. По умолчанию кодер генерирует литеральную реализацию фильтра с числовым поведением, которое совпадает с объектом фильтра точно. Эта реализация является не обязательно оптимальной реализацией HDL. Когда это свойство установлено в '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 свойство. Для некоторых примеров смотрите, Генерируют Последовательные Разделы для КИХ-Фильтра.

  • Массив ячеек последовательных разделов — кодер генерирует разделы для каждого этапа фильтра в каскадном фильтре. Задайте разделы для каждого этапа фильтра как -1, эффективная длина фильтра или вектор из целых чисел. Элементы каждого вектора должны суммировать к эффективной длине фильтра связанного, просачиваются каскад. Для примера смотрите, Генерируют Последовательные Разделы Каскадного Фильтра.

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

Вы не можете использовать это свойство с БИХ-фильтрами SOS. Чтобы сгенерировать последовательные архитектуры для БИХ-фильтров SOS, используйте FoldingFactor или NumMultipliers свойства вместо этого.

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

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

Для получения дополнительной информации смотрите Скорость Определения по сравнению с Компромиссами области через generatehdl Свойства.

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

Повторное использование аккумулятора для каскадно-последовательной архитектуры в виде 'off' или 'on'. Когда это свойство установлено в 'on', фильтр групп кодера наслаждается несколькими последовательными разделами. Накопленный выход каждого раздела располагается каскадом к аккумулятору предыдущего раздела. Выход разделов поэтому вычисляется в аккумуляторе первого раздела. Этот метод, названный accumulator reuse, сохраняет область чипа. Если свойство 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 = многофазный (filt)
FLi = длина (находят (p (i, :)))
, где i индекс к iстрока th многофазной матрицы фильтра. iстрока th матричного p представляет iподфильтр th.

Для получения дополнительной информации смотрите Распределенную Арифметику для КИХ-Фильтров.

Количество битов, обработанных одновременно в распределенной арифметике (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 свойство. Для получения дополнительной информации см. Опции Архитектуры для Каскадных Фильтров.

Для получения дополнительной информации смотрите Распределенную Арифметику для КИХ-Фильтров.

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

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

Для примера смотрите, Генерируют Последовательные Архитектуры для БИХ-Фильтра. Получить информацию о FoldingFactor опции и соответствующий NumMultipliers, вызовите hdlfilterserialinfo функция.

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

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

Для примера смотрите, Генерируют Последовательные Архитектуры для БИХ-Фильтра. Получить информацию о NumMultipliers опции и соответствующий FoldingFactor, вызовите hdlfilterserialinfo функция.

Советы

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

СвойствоМестоположение в диалоговом окне

Add input register

Вкладка Global Settings> вкладка Ports

Add output register

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

Вкладка Filter Architecture

Смотрите также:

Для просмотра документации необходимо авторизоваться на сайте