Распределенная арифметика (DA) является широко используемым методом для реализации расчетов суммы произведения без использования умножителей. Дизайнеры часто используют DA, чтобы создать эффективную Multiply-Accumulate Circuitry (MAC) для фильтров и других приложений DSP. Основным преимуществом DA является его высокая вычислительная эффективность. DA распределяет операции умножения и накопления между сдвигателями, интерполяционными таблицами (LUT) и сумматорами таким образом, что обычные умножители не требуются.
В реализации DA структуры конечной импульсной характеристики фильтра последовательность слов входных данных ширины W
подается через параллельный регистр последовательного сдвига, формируя сериализованный поток бит. Сериализованные данные затем подаются в битовый регистр сдвига. Этот регистр сдвига служит линией задержки, сохраняя бит выборок последовательных данных.
Задержка линии достигнута (на основе входа размера слова W
), для формирования W
- битовый адрес, который индексируется в интерполяционную таблицу (LUT). LUT хранит все возможные суммы частичных продуктов в пространстве коэффициентов фильтра. За LUT следует сдвиг и сумматор (аккумулятор масштабирования), который добавляет значения, полученные из LUT последовательно.
Поиск таблицы выполняется последовательно для каждого бита (в порядке значимости, начиная с LSB). На каждом тактовом цикле результат LUT добавляется к накопленному и сдвинутому результату от предыдущего цикла. Для последнего бита (MSB) вычитается результат поиска таблицы с учетом знака операнда.
Эта базовая форма DA полностью последовательная, работающая на одном бите за раз. Если последовательность входных данных W
bits wide, тогда структура конечной импульсной характеристики принимает W
синхроимпульсы для вычисления выходов. Симметричные и асимметричные структуры конечной импульсной характеристики являются исключением, требующим W+1
циклы, потому что для обработки бита переноса предварительных сумматоров необходим один дополнительный тактовый цикл.
Вы можете контролировать, как код DA генерируется с помощью DALUTPartition
и DARadix
параметры реализации. The DALUTPartition
и DARadix
параметры имеют определенные требования и ограничения, характерные для различных типов фильтров. Эти требования включены в обсуждения каждого параметра.
Уменьшите размер LUT: DALUTPartition
Улучшите эффективность при параллелизме: DARadix
Для получения информации о теоретических основах DA, смотрите Дополнительные ссылки.
Генерация кода DA поддерживается только для созданий фильтра с фиксированной точкой.
Путь к данным в HDL-коде, сгенерированный для архитектуры DA, тщательно оптимизируется для полной точности расчетов. Результат фильтра приведен к размеру выходных данных только на заключительном этапе, когда он представлен на выходе.
Распределенная арифметика объединяет операции продукта и аккумулятора и делает расчеты с полной точностью. Этот подход игнорирует Product output и Accumulator свойства блока Цифровой фильтр и устанавливает эти свойства на полную точность.
DA игнорирует отводы, которые имеют нулевые коэффициенты, и уменьшает размер DA LUT соответственно.
Для симметричных и асимметричных фильтров:
Предварительный сумматор битового уровня или пресубтрактор требуется для добавления значений данных касания, которые имеют коэффициенты равного значения и/или противоположного знака. Для вычисления результата требуется один дополнительный тактовый цикл из-за дополнительного бита переноса.
HDL Coder™ использует симметрию фильтра, где это возможно. Это существенно уменьшает размер DA LUT, поскольку эффективная длина фильтра для этих типов фильтров уменьшается вдвое.
Подробные обсуждения теоретических основ ДА появляются в следующих публикациях:
Meyer-Baese, U., Цифровая обработка сигналов с программируемыми полевыми массивами ворот, Second Edition, Springer, pp 88-94, 128-143
White, S.A., Applications of Distributed Arithmetics to Digital Signal Processing: A Tutorial Review. Журнал IEEE ASSP, том 6, № 3