Параллельные префиксы сумматоров в негабинаре

14

Я пытаюсь разработать параллельный префиксный сумматор для неабинарного сумматора. Negabinary - это база вместо знакомой базы 2 - двоичная. Каждый 1-битный сумматор генерирует сумму и два (вместо одного в двоичном виде) переноса, которые переходят к следующему сумматору.22

Чтобы ускорить сумматор, я хочу использовать параллельную структуру префикса, такую ​​как структура Ладнера-Фишера, приведенная ниже. Я знаком с функциональностью фиолетовой ячейки в двоичной системе, но я не уверен, как я могу получить такую ​​же функциональность в негабинарной системе.

Причина, по которой я это делаю, просто для удовольствия, я еще не нашел применения для negabinary.

Формулы для расчета суммы и переносов:

si=aibi(ci++ci)

ci+1+=ai¯bi¯ci+¯ci

ci+1=aibici¯+aici+ci¯+bici+ci¯

Ладнер-Фишер несут древовидную структуру:

введите описание изображения здесь

Если что-то неясно, пожалуйста, не стесняйтесь спрашивать.

gilianzz
источник
Хотя это может быть интересным вопросом, он не кажется электрическим, и вам, возможно, повезет больше, если вы подойдете к математике SE.
Реджа
3
Я поместил это здесь, потому что я думаю, что у людей EE есть больше опыта с логикой переноса, проектированием сумматоров и т. Д.
gilianzz
Это полностью вопрос EE
Напряжение Spike
Похоже, вам нужно более двух выходов на переноску. Разве вам не нужно генерировать и распространять как для переноса, так и для заимствования?
Суровая
Я предполагаю, что вы говорите о структуре Ладнера-Фишера. Это был просто пример, демонстрирующий параллельное дерево префиксов. Каждый 1-битный неабинарный сумматор выводит сумму, положительный и отрицательный перенос. Я не уверен, сможем ли мы использовать концепции генерации и распространения с негабинарностью.
gilianzz

Ответы:

1

Вероятно, я потратил больше времени на этот вопрос, чем следовало бы, но вот мои выводы.

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

Самое близкое, что я могу вам получить, - это использовать двухступенчатое отрицательное негабинарное сложение (обычно сокращенное название в литературе) Он основан на следующем свойстве:

f(x)=xn1¯xn2...x1¯x0g(x)=xn1xn2¯...x1x0¯0xAA...AA0x55...55

(a+nbb)=g(f(a)+f(b)+1)

+nb+

Отрицательная сумма затем может быть просто инвертирована с использованием того же свойства, но с нулевым операндом:

x=g(f(x)+f(0)+1)

Таким образом, чтобы найти сумму с помощью параллельных префиксных сумматоров, вы можете:

  1. е(a) и е(б)т.е. инвертируя каждый нечетный бит негабинарных чисел
  2. Вычислить обычную двоичную сумму при установке бита переноса для LSB ( +1), что приводит к первой промежуточной сумме s1,
  3. Инвертировать все биты s1 (это е(грамм(s1))). Это конец первой суммы, а также начало инверсии.
  4. Увеличить результат на 0xAA...AB(знак равное(0)+1) используя сумматор с параллельным префиксом, получая вторую промежуточную сумму s2
  5. Compute g(s2) (inverting each even bit) to find the final negabinary sum.

I have actually tried to find a "pure" parallel prefix adder, but I considered it too complex for the time I was willing to spend on it. Here's why:

The whole point of parallel prefix adders is to find some operation of {0,1}n×{0,1}n{0,1}n that allows you to easily calculate the (in this case 2) carries from these bits. As an added constraint, the operation needs to be associative to be computed in parallel. For example, this basically excludes any NOT operator (that is not part of a double negation). For example: ab=ab¯ is not an associative operator, because

(ab)c=ab¯c¯a(bc)=abc¯¯

Note that the boolean operator for the carries in your question includes the mixed terms ci+ci¯ and cici+¯, making it impossible to use it as-is. For a single carry in normal binary addition, it became quite obvious how to construct this operator when thinking about it in terms of generation and propagation, but it seems to be not so obvious for negabinary carries.

Sven B
источник
My current understanding is that it is in fact impossible to construct this "pure" parallel prefix adder. It would seem that a parallel prefix adder can get an efficiency of O(log(N)), whereas a negabinary equivalent seems to always have complexity O(2*log(N)) (2x n.n.b.a).
gilianzz
I didn't find any literature proving or stating that it was impossible. I'd be happy to be proven wrong either way though. But the 2-step n.n.b.a. does seem to be the standard currently for negabinary addition as far as I can tell.
Sven B