exponenta event banner

Свойства блока фильтра HDL

AdderTreePipeline

Это свойство применяется к фильтрам на основе кадров. Он указывает, сколько регистров конвейера включает архитектура между уровнями дерева сумматора. Эти этапы конвейера увеличивают пропускную способность фильтра при добавлении задержки. Значение по умолчанию: 0. Для повышения скорости этой архитектуры рекомендуется использовать следующие параметры: 2.

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

Дополнительные сведения об архитектуре фильтра на основе кадров см. в разделе Архитектура на основе кадров.

AddPipelineRegisters

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

Следующие ограничения применяются к AddPipelineRegisters:

  • Если вы используете AddPipelineRegistersгенератор кода обеспечивает полную точность в ЛПВП и созданной модели фильтра. Эта опция реализует конвейерную структуру дерева сумматора в коде HDL, для которого поддерживается только полная точность. При создании модели проверки необходимо использовать полную точность в исходной модели, чтобы избежать несоответствий проверки.

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

    Примечание

    При использовании этого свойства с блоком CIC Interpolation (DSP System Toolbox) задержки параллельных путей не выравниваются автоматически. При необходимости добавьте задержки вручную.

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

ChannelSharing

Вы можете использовать ChannelSharing параметр реализации с многоканальным фильтром для обеспечения возможности совместного использования одной реализации фильтра между каналами для более зонально эффективного проектирования. Этот параметр либо 'on' или 'off'. Значение по умолчанию: 'off'и для каждого канала будет реализован отдельный фильтр.

См. раздел Многоканальный фильтр FIR для FPGA (панель системных инструментов DSP).

CoeffMultipliers

CoeffMultipliers параметр реализации позволяет указать использование канонической цифры со знаком (CSD) или факторизованных оптимизаций CSD для обработки операций множителя коэффициентов в коде, сформированном для определенных блоков фильтров. Укажите CoeffMultipliers с использованием одной из следующих опций:

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

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

  • 'multipliers' (по умолчанию): Сохранение операций множителя.

Опоры Coder™ HDL CoeffMultipliers для реализации полностью параллельных фильтров. Он не поддерживается для полностью последовательных и частично последовательных архитектур.

DALUTPartition

Размер LUT увеличивается экспоненциально с порядком фильтра. Для фильтра с N коэффициенты, LUT должен иметь 2^N значения. Для фильтров более высокого порядка размер LUT должен быть уменьшен до разумных уровней. Чтобы уменьшить размер, можно разделить LUT на несколько LUT, называемых разделами LUT. Каждый раздел LUT работает с различным набором отводов. Результаты, полученные из разделов, суммируются.

Например, для 160-отводного фильтра размер LUT равен (2^160)*W биты, где W - размер слова данных LUT. При разделении на 16 разделов LUT, каждый из которых принимает 10 входов (отводов), общий размер LUT уменьшается до 16*(2^10)*W биты.

Хотя разбиение LUT уменьшает размер LUT, для суммирования данных LUT требуется больше сумматоров.

Вы можете использовать DALUTPartition для включения генерации кода DA и указания количества и размера разделов LUT.

Укажите секции LUT как вектор целых чисел [p1 p2...pN] где:

  • N - количество разделов.

  • Каждый векторный элемент определяет размер секции. Максимальный размер отдельного раздела - 12.

  • Сумма всех векторных элементов равна длине фильтра FL. FL рассчитывается по-разному в зависимости от типа фильтра. Способ вычисления FL для различных типов фильтров приведен в следующем разделе.

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

Задание DALUTPpartition для односкоростных фильтров

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

Тип фильтраРасчет длины фильтра (FL)
КИХ прямой формыFL = length(find(Hd.numerator ~= 0))
Прямая форма асимметричная FIR, прямая форма симметричная FIRFL = ceil(length(find(Hd.numerator ~= 0))/2)

Можно также задать генерацию кода DA для конструкции фильтра без секционирования LUT. Для этого укажите вектор одного элемента, значение которого равно длине фильтра.

Задание DALUTPpartition для многоскоростных фильтров

Для поддерживаемых многоскоростных фильтров (децимация FIR и интерполяция FIR) можно указать раздел LUT как

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

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

В следующей таблице показаны FL вычисления для каждого типа раздела LUT.

Раздел LUT Расчет длины фильтра (FL)
Вектор: Определить FL как показано в столбце «Расчет длины фильтра» (FL) справа. Укажите раздел LUT как вектор целых чисел, элементы которых суммируются FL.
FL = size(polyphase(Hm), 2)
Матрица: определение длины субфильтра FLi на основе многофазного разложения фильтра, как показано в столбце Расчет длины фильтра (FL) справа. Укажите раздел LUT для каждого субфильтра как вектор строки, элементы которого суммируются FLi.
p = polyphase(Hm);
FLi = length(find(p(i,:)));
 
где i - индекс i-ой строки многофазной матрицы многоскоростного фильтра. I-я строка матрицы p представляет i-й субфильтр.

DARadix

По своей сути битовая последовательность DA может ограничивать пропускную способность. Чтобы улучшить пропускную способность, основной алгоритм DA может быть модифицирован для вычисления более чем одной битовой суммы одновременно. Число одновременно вычисленных сумм битов выражается как степень двух, называемая радиусом DA. Например, радиус DA равен 2 (2^1) указывает, что за один раз вычисляется одна битовая сумма. Радиус DA 4 (2^2) указывает, что две битовые суммы вычисляются одновременно, и так далее.

Для вычисления более чем одной суммы битов за один раз LUT реплицируется. Например, для выполнения DA над 2 битами одновременно (по радиусу 4) нечетные биты подаются на один LUT, а четные биты одновременно подаются на идентичный LUT. Результаты LUT, соответствующие нечетным битам, сдвигаются влево перед их добавлением к результатам LUT, соответствующим четным битам. Этот результат затем подается в масштабный накопитель, который сдвигает свое значение обратной связи на 2 места.

Обработка более одного бита за раз вводит в работу степень параллелизма, улучшая скорость за счет площади.

Вы можете использовать DARadix для указания количества битов, обрабатываемых одновременно в DA. Число битов выражается как N, которая должна быть:

  • Ненулевое положительное целое число, которое является степенью двух

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

Значение по умолчанию для N 2, указывая обработку одного бита за раз, или полностью последовательный DA, который является медленным, но низким по площади. Максимальное значение для N является 2^W, где W - размер входного слова фильтра. Этот максимум определяет полностью параллельный DA, который является быстрым, но высоким по площади. Значения N между этими крайними значениями определяют частично последовательный DA.

Примечание

При установке DARadix значения для симметричных и асимметричных фильтров см. в разделе Рекомендации по симметричным и асимметричным фильтрам.

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

FoldingFactor

FoldingFactor определяет общее количество тактовых циклов, принятых для вычисления выходного сигнала фильтра в фильтре IIR SOS с последовательной архитектурой. Он дополняет NumMultipliers. Необходимо выбрать одно или другое свойство; нельзя использовать оба варианта. Если вы не указываете ни FoldingFactor или NumMultipliersКод HDL для фильтра генерируется с полностью параллельной архитектурой.

MultiplierInputPipeline

Этот параметр можно использовать для генерации заданного количества ступеней трубопровода на входах множителя для структур фильтров FIR. Значение по умолчанию - 0.

Следующее ограничение применяется к MultiplierInputPipeline:

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

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

MultiplierOutputPipeline

Этот параметр можно использовать для генерации заданного количества ступеней трубопровода на выходах множителя для структур фильтров FIR. Значение по умолчанию - 0.

Следующее ограничение применяется к MultiplierOutputPipeline:

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

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

NumMultipliers

NumMultipliers определяет общее количество множителей, используемых для реализации фильтра в фильтре IIR SOS с последовательной архитектурой. Он дополняет свойство FoldingFactor. Необходимо выбрать одно или другое свойство; нельзя использовать оба варианта. Если вы не указываете ни FoldingFactor или NumMultipliersКод HDL для фильтра генерируется с полностью параллельной архитектурой.

ReuseAccum

Этот параметр можно использовать для включения или отключения повторного использования накопителя в последовательной архитектуре HDL. По умолчанию используется полностью параллельная архитектура.

Создание этого
Архитектура...
Задайте для параметра ReuseAccum значение...
Полностью параллельныйОпустить это свойство
Полностью серийныйНе указан, или 'off'
Частично серийный'off'
Каскадно-последовательный с явно указанным разбиением'on'
Каскадный последовательный с автоматически оптимизированным разделением'on'

Дополнительные сведения об архитектурах параллельных и последовательных фильтров см. в разделе Архитектуры фильтров HDL

SerialPartition

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

Создание этого
Архитектура...
Задайте для параметра SerurePartition значение...
Полностью параллельныйОпустить это свойство
Полностью серийныйN, где N - длина фильтра
Частично серийный[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 умножителей.

Каскадно-последовательный с явно указанным разбиением[p1 p2 p3...pN]: Вектор N целые числа, где N - количество последовательных разделов. Каждый элемент вектора определяет длину соответствующей секции. Сумма векторных элементов должна быть равна длине фильтра. Значения векторных элементов должны быть в порядке убывания, за исключением последних двух элементов, которые могут быть равны. Например, для длины фильтра 8 разделы [5 3] или [4 2 2] допустимы, но разделы [2 2 2 2] и [3 2 3] создать ошибку во время генерации кода.
Каскадный последовательный с автоматически оптимизированным разделениемОпустить это свойство.

Дополнительные сведения об архитектурах параллельных и последовательных фильтров см. в разделе Архитектуры фильтров HDL.

Это свойство также используется для блоков Min/Max с каскадно-последовательными архитектурами. Сведения о настройке каскадов Min/Max см. в разделе Раздел SerurePartition.

Связанные темы