Распределенная арифметика (DA) является широко используемым методом для реализации расчетов суммы продуктов без использования множителей. Разработчики часто используют DA, чтобы создать эффективный, Умножаются - Накапливают Схему (MAC) для фильтров и других приложений DSP. Основным преимуществом DA является свой высокий вычислительный КПД. DA распределяет, умножают и накапливают операции через переключатели, интерполяционные таблицы (LUTs) и сумматоры таким способом, которым не требуются обычные множители.
В реализации DA КИХ фильтруют структуру, последовательность слов входных данных ширины W
питается через параллельно-последовательный сдвиговый регистр, производя сериализованный поток битов. Сериализированные данные затем питаются поразрядный сдвиговый регистр. Этот сдвиговый регистр служит линией задержки, храня битные выборки последовательных данных.
Линия задержки касается (на основе входного размера слова W
), чтобы сформировать W
- битный адрес, который индексирует в интерполяционную таблицу (LUT). LUT хранит все возможные суммы частичных продуктов по содействующему пробелу фильтра. LUT сопровождается сдвигом и сумматором (масштабирующий аккумулятор), который добавляет значения, полученные из LUT последовательно.
Поиск по таблице выполняется последовательно для каждого бита (в порядке значения, начинающего с LSB). На каждом такте результат LUT добавляется к накопленному и переключенному результату предыдущего цикла. Для последнего бита (MSB) результат поиска по таблице вычтен, составляя знак операнда.
Эта каноническая форма DA полностью последовательна, работающий с одним битом за один раз. Если последовательностью входных данных является W
широкие биты, затем КИХ-структура берет W
такты, чтобы вычислить выход. Симметричные и асимметричные КИХ-структуры являются исключением, требуя W+1
циклы, потому что один дополнительный такт необходим, чтобы обработать бит переноса предварительных сумматоров.
Можно управлять, как код DA сгенерирован при помощи DALUTPartition
и DARadix
параметры реализации. DALUTPartition
и DARadix
параметры имеют определенные требования и ограничения, которые характерны для различных типов фильтра. Эти требования включены в обсуждения каждого параметра.
Уменьшайте размер LUT: DALUTPartition
Улучшайте производительность с параллелизмом: DARadix
Для получения информации о теоретических основах DA смотрите Дальнейшие Ссылки.
Генерация кода DA поддерживается только для проектов фильтра фиксированной точки.
Информационный канал в HDL-коде, сгенерированном для архитектуры DA, тщательно оптимизирован для расчетов полной точности. Результат фильтра брошен к размеру выходных данных только в заключительном этапе, когда это представлено выходу.
Распределенная арифметика объединяет продукт и работу аккумулятора и делает расчеты в полной точности. Этот подход игнорирует свойства Product output и Accumulator блока Digital Filter и устанавливает эти свойства на полную точность.
DA игнорирует касания, которые имеют коэффициенты с нулевым знаком, и уменьшает размер LUT DA соответственно.
Для симметричных и асимметричных фильтров:
Предварительный сумматор битного уровня или предварительное вычитающее устройство требуются, чтобы добавлять значения данных касания, которые имеют коэффициенты равного значения и/или противоположного знака. Один дополнительный такт требуется, чтобы вычислять результат из-за дополнительного бита переноса.
HDL Coder™ использует в своих интересах симметрию фильтра, если это возможно. Это уменьшает размер LUT DA существенно, потому что эффективная длина фильтра для этих, которые вводит фильтр, разделена на два.
Детальные обсуждения теоретических основ DA появляются в следующих публикациях:
Мейер-Бэезе, U., Цифровая обработка сигналов с Программируемыми пользователем вентильными матрицами, Вторым Выпуском, Спрингером, стр 88–94, 128–143
White, S.A., приложения распределенной арифметики к цифровой обработке сигналов: учебный анализ. IEEE журнал ASSP, издание 6, № 3