负二进制并行前缀加法器单元


14

我正在尝试为基于负数的加法器设计并行前缀加法器。Negabinary是以2为基数2而不是常见的base 2二进制。每个1位加法器产生一个和,并且有两个(而不是二进制中的一个)进位到下一个加法器。

为了使加法器更快,我想使用并行前缀结构,例如下面给出的Ladner-Fischer结构。我熟悉二进制系统中紫色单元格的功能,但不确定如何在负二进制系统中获得相同的功能。

我这样做的原因只是为了好玩,我还没有发现过用于消烟的任何用途。

用于计算总和并携带的公式:

si=aibi(ci++ci)

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

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

Ladner-fischer携带树状结构:

在此处输入图片说明

如果有任何不清楚的地方,请不要犹豫。


尽管这可能是一个有趣的问题,但它似乎不是电气问题,如果您将其带入数学SE可能会更好。
Redja

3
我把它放在这里是因为我认为EE人员在进位逻辑,设计加法器等方面有更多经验
。– gilianzz

这完全是一个EE问题
电压峰值

似乎每个进位需要两个以上的输出。您不需要同时进行借入和借出吗?
形成了鲜明的

我假设您正在谈论Ladner-fischer结构。这只是展示并行前缀树的一个示例。每个1位负加法器输出和,正和负进位。我不确定是否可以使用生成和传播带负向的概念。
gilianzz

Answers:


1

我在这个问题上花费的时间可能比我本来应该花费的时间更多,但这是我的发现。

我找不到负数的“纯”并行前缀加法器的任何示例。我还认为这是一个未解决的问题,因为我还没有任何证据表明这不可能的。

我能得到的最接近的结果是使用两步负负加法(在文献中通常缩写为nnba)。它基于以下属性:

X = X ñ - 1 ‾ X ñ - 2X 1 ‾ X 0。这些基本上是分别与和的XOR运算。然后您可以证明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. f(a)f(b)
  2. +1s1
  3. s1f(g(s1))
  4. 0xAA...AB=f(0)+1s2
  5. g(s2)

我实际上已经尝试找到一个“纯”并行前缀加法器,但是我认为在我愿意花时间的时候它太复杂了。原因如下:

{0,1}n×{0,1}n{0,1}nab=ab¯

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

ci+ci¯cici+¯


我目前的理解是,实际上不可能构造这种“纯”并行前缀加法器。似乎并行前缀加法器可以获得O(log(N))的效率,而负数等效项似乎总是具有复杂度O(2 * log(N))(2x nnba)。
gilianzz

我找不到任何文献证明或说明这是不可能的。无论如何,我很高兴被证明是错误的。但是据我所知,两步法nnba似乎确实是目前进行负加法的标准。
Sven B '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.