Это свойство применяется к основанным на системе координат фильтрам. Это задает, сколько конвейерных регистров архитектура включает между уровнями дерева сумматора. Эти настройки канала связи увеличивают пропускную способность фильтра при добавлении задержки. Значение по умолчанию 0
. Чтобы улучшить скорость этой архитектуры, рекомендуемой установкой является 2
.
Настройки канала связи вводят задержки вдоль пути в модели, которая содержит затронутый фильтр. Когда вы включаете эту конвейерную опцию, кодер автоматически добавляет балансирующиеся задержки на параллельных информационных каналах.
Для получения дополнительной информации об основанной на системе координат архитектуре фильтра смотрите Основанную на системе координат Архитектуру.
Это свойство применяется к скалярным входным фильтрам. Когда вы включаете это свойство, линейный сумматор по умолчанию фильтра реализован как конвейерный древовидный сумматор вместо этого. Эта архитектура увеличивает пропускную способность фильтра при добавлении задержки. Значением по умолчанию является off
.
Нижеследующие ограничения применяются к AddPipelineRegisters
:
Если вы используете AddPipelineRegisters
, генератор кода обеспечивает полную точность в HDL и сгенерированной модели фильтра. Эта опция реализует конвейерную древовидную структуру сумматора в HDL-коде, для которого только поддерживается полная точность. Если вы генерируете модель валидации, необходимо использовать полную точность в исходной модели, чтобы избежать несоответствий валидации.
Настройки канала связи вводят задержки вдоль пути в модели, которая содержит затронутый фильтр. Когда вы включаете эту конвейерную опцию, кодер автоматически добавляет балансирующиеся задержки на параллельных информационных каналах.
Когда вы используете это свойство с блоком CIC Interpolation, задержки параллельных путей автоматически не сбалансированы. Вручную добавьте задержки при необходимости вашим проектом.
Для схем архитектуры фильтра, которые указывают, где настройки канала связи добавляются, смотрите Архитектуры Фильтра HDL.
Можно использовать ChannelSharing
параметр реализации с многоканальным фильтром, чтобы позволить совместно использовать одну реализацию фильтра среди каналов для более эффективного областью проекта. Этим параметром является любой 'on'
или 'off'
. Значением по умолчанию является 'off'
, и отдельный фильтр будет реализован для каждого канала.
Смотрите многоканальный КИХ-фильтр для FPGA (DSP System Toolbox).
CoeffMultipliers
параметр реализации позволяет вам задать использование канонической цифры со знаком (CSD) или учтенную оптимизацию CSD для обработки содействующих операций множителя в коде, сгенерированном для определенных блоков фильтра. Задайте CoeffMultipliers
параметр с помощью одной из следующих опций:
'csd'
: Используйте методы CSD, чтобы заменить операции множителя на операции shift-and-add. Методы CSD минимизируют количество операций сложения, требуемых для постоянного умножения путем представления двоичных чисел с минимальным количеством ненулевых цифр. Это представление уменьшает область, используемую фильтром при поддержании или увеличении тактовой частоты.
'factored-csd'
: Используйте учтенные методы CSD, которые заменяют операции множителя на операции shift-and-add на простых множителях коэффициентов. Эта опция позволяет вам достигнуть большего сокращения области фильтра, чем CSD, за счет уменьшения тактовой частоты.
'multipliers'
(значение по умолчанию): Сохраните операции множителя.
HDL Coder™ поддерживает CoeffMultipliers
для полностью параллельных реализаций фильтра. Это не поддержано для полностью последовательных и частично последовательных архитектур.
Размер LUT растет экспоненциально с порядком фильтра. Для фильтра с N
коэффициенты, LUT должен иметь 2^N
значения. Для фильтров высшего порядка размер LUT должен уменьшаться до разумных уровней. Чтобы уменьшать размер, можно подразделить LUT на многие LUTs, названные LUT partitions. Каждый раздел 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.
Чтобы определить раздел LUT для одного из поддерживаемых типов односкоростного фильтра, вычислите FL
как показано в следующей таблице. Затем задайте раздел как вектор, элементы которого суммируют к FL
.
Отфильтруйте тип | Расчет Длины фильтра (FL) |
---|---|
КИХ прямой формы | FL = length(find(Hd.numerator ~= 0)) |
Прямая форма асимметричный КИХ, прямая форма симметричный КИХ | FL = ceil(length(find(Hd.numerator ~= 0))/2) |
Можно также задать генерацию кода DA для создания фильтра без разделения LUT. Для этого задайте вектор одного элемента, значение которого равно длине фильтра.
Для поддерживаемых многоскоростных фильтров (FIR Decimation и FIR Interpolation), можно задать раздел LUT как
Вектор, задающий раздел для LUTs для всех многофазных подфильтров.
Матрица A разделов LUT, где каждый вектор-строка задает раздел LUT для соответствующего многофазного подфильтра. В этом случае, FL
универсально для всех подфильтров. Этот подход обеспечивает точную регулировку для разделения каждого подфильтра.
Следующая таблица показывает FL
вычисления для каждого типа раздела LUT.
Раздел LUT | Расчет Длины фильтра (FL) |
---|---|
Вектор: определите FL как показано в столбце Расчета Длины фильтра (FL) направо. Задайте раздел LUT как вектор целых чисел, элементы которых суммируют к FL . | FL = size(polyphase(Hm), 2) |
Матрица: Определите длину подфильтра FL i на основе многофазного разложения фильтра, как показано в столбце Расчета Длины фильтра (FL) направо. Задайте раздел LUT для каждого подфильтра как вектор-строка, элементы которого суммируют к FL i. | p = polyphase(Hm); FLi = length(find(p(i,:))); p представляет подфильтр ith. |
По сути поразрядная природа DA может ограничить пропускную способность. Чтобы улучшить пропускную способность, основной алгоритм DA может быть изменен, чтобы вычислить сумму на больше чем один бит за один раз. Количество одновременно вычисленных битных сумм выражается, как степень двойки вызвала DA radix. Например, основание DA 2 (2^1
) указывает, что сумма на один бит вычисляется за один раз. Основание DA 4 (2^2
) указывает, что двухбитовые суммы вычисляются за один раз и так далее.
Чтобы вычислить сумму на больше чем один бит за один раз, LUT реплицирован. Например, чтобы выполнить DA на 2 битах за один раз (основание 4), нечетные биты питаются один LUT, и ровные биты одновременно питаются идентичный LUT. Результаты LUT, соответствующие нечетным битам, лево-переключены, прежде чем они будут добавлены к результатам LUT, соответствующим даже битам. Этот результат затем подан в масштабирующийся аккумулятор, который переключает его значение обратной связи 2 местами.
Обработка больше чем одного бита за один раз вводит степень параллелизма в операцию, улучшая скорость за счет области.
Можно использовать DARadix
задавать количество битов, обработанных одновременно в. Количество битов выражается как N
, который должен быть:
Ненулевое положительное целое число, которое является степенью двойки
Таким образом, что mod(W, log2(N)) = 0
, где W
входной размер слова фильтра
Значение по умолчанию для N
2, задавая обработку одного бита за один раз или полностью последовательный DA, который является медленным, но низким в области. Максимальное значение для N
2^W
, где W
входной размер слова фильтра. Этот максимум задает полностью параллельный DA, который быстр, но высок в области. Значения N
между ними экстремальное значение задают частично последовательный DA.
При установке DARadix
значение для симметричных и асимметричных фильтров, смотрите Факторы для Симметричных и Асимметричных Фильтров.
FoldingFactor
задает общее количество тактов, взятых для расчета фильтра выход в БИХ-фильтре SOS с последовательной архитектурой. Это дополнительно с NumMultipliers. Необходимо выбрать одно свойство или другой; вы не можете использовать обоих. Если вы не задаете ни один FoldingFactor
или NumMultipliers
, HDL-код для фильтра сгенерирован с полностью параллельной архитектурой.
Можно использовать этот параметр, чтобы сгенерировать конкретное количество настроек канала связи во входных параметрах множителя для КИХ-структур фильтра. Значение по умолчанию 0.
Следующее ограничение применяется к MultiplierInputPipeline
:
Настройки канала связи вводят задержки вдоль пути в модели, которая содержит затронутый фильтр. Когда вы включаете эту конвейерную опцию, кодер автоматически добавляет балансирующиеся задержки на параллельных информационных каналах.
Для схем того, где эти настройки канала связи происходят в архитектуре фильтра, смотрите Архитектуры Фильтра HDL.
Можно использовать этот параметр, чтобы сгенерировать конкретное количество настроек канала связи во множителе выходные параметры для КИХ-структур фильтра. Значение по умолчанию 0.
Следующее ограничение применяется к MultiplierOutputPipeline
:
Настройки канала связи вводят задержки вдоль пути в модели, которая содержит затронутый фильтр. Когда вы включаете эту конвейерную опцию, кодер автоматически добавляет балансирующиеся задержки на параллельных информационных каналах.
Для схем того, где эти настройки канала связи происходят в архитектуре фильтра, смотрите Архитектуры Фильтра HDL.
NumMultipliers
задает общее количество множителей, используемых в реализации фильтра в БИХ-фильтре SOS с последовательной архитектурой. Это дополнительно со свойством FoldingFactor. Необходимо выбрать одно свойство или другой; вы не можете использовать обоих. Если вы не задаете ни один FoldingFactor
или NumMultipliers
, HDL-код для фильтра сгенерирован с полностью параллельной архитектурой.
Можно использовать этот параметр, чтобы включить или отключить повторное использование аккумулятора в последовательной архитектуре HDL. Значением по умолчанию является полностью параллельная архитектура.
Сгенерировать это Архитектура... | Установите ReuseAccum на... |
---|---|
Полностью параллельный | Не используйте это свойство |
Полностью последовательный | Не заданный, или 'off' |
Частично последовательный | 'off' |
Каскадно-последовательный с явным образом заданным разделением | 'on' |
Каскадно-последовательный с автоматически оптимизированным разделением | 'on' |
Для получения дополнительной информации о параллельных и последовательных архитектурах фильтра смотрите Архитектуры Фильтра HDL
Используйте этот параметр, чтобы задать разделы для последовательной архитектуры фильтра. Значением по умолчанию является полностью параллельная архитектура.
Сгенерировать это Архитектура... | Установите SerialPartition на... |
---|---|
Полностью параллельный | Не используйте это свойство |
Полностью последовательный | N , где N длина фильтра |
Частично последовательный | [p1 p2 p3...pN] : Вектор целых чисел, имеющих N элементы, где N количество последовательных разделов. Каждый элемент вектора задает длину соответствующего раздела. Сумма векторных элементов должна быть равна длине фильтра. Когда вы задаете разделение для частично последовательной архитектуры, рассматриваете следующее:
|
Каскадно-последовательный с явным образом заданным разделением | [p1 p2 p3...pN] : Вектор N целые числа, где N количество последовательных разделов. Каждый элемент вектора задает длину соответствующего раздела. Сумма векторных элементов должна быть равна длине фильтра. Значения векторных элементов должны быть в порядке убывания, кроме последних двух элементов, которые могут быть равными. Например, для длины фильтра 8, разделы [5 3] или [4 2 2] допустимы, но разделы [2 2 2 2] и [3 2 3] повысьте ошибку во время генерации кода. |
Каскадно-последовательный с автоматически оптимизированным разделением | Не используйте это свойство. |
Для получения дополнительной информации о параллельных и последовательных архитектурах фильтра смотрите Архитектуры Фильтра HDL.
Это свойство также используется в блоках Min/Max с каскадно-последовательными архитектурами. Поскольку, как сконфигурировать каскады Min/Max, смотрите SerialPartition.