Cellules d'addition de préfixe parallèle dans Negabinary

14

J'essaie de concevoir un additionneur de préfixe parallèle pour un additionneur basé sur le négabinaire. Negabinary est base 2 au lieu du binaire familier de base 2 . Chaque additionneur de 1 bit génère une somme et deux (au lieu d'un en binaire) porte qui vont à l'additionneur suivant.

Pour rendre l'additionneur plus rapide, je veux utiliser une structure de préfixe parallèle, comme la structure Ladner-Fischer donnée ci-dessous. Je connais la fonctionnalité de la cellule violette dans le système binaire, mais je ne sais pas comment obtenir la même fonctionnalité dans le système négabinaire.

La raison pour laquelle je fais cela est juste pour le plaisir, je n'ai pas encore trouvé d'utilisation pour le négabinaire.

Formules de calcul de la somme et porte:

si=aibi(ci++ci)

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

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

Structure arborescente de transport Ladner-fischer:

entrez la description de l'image ici

Si quelque chose n'est pas clair, n'hésitez pas à demander.

gilianzz
la source
Bien que cela puisse être une question intéressante, cela ne semble pas être une question électrique, et vous aurez peut-être plus de chance de la prendre en mathématiques SE.
Redja
3
Je le mets ici parce que je pense que les gens d'EE ont plus d'expérience avec la logique de portage, la conception d'additionneurs, etc.
gilianzz
Ceci est totalement une question EE
Voltage Spike
Il semble que vous ayez besoin de plus de deux sorties par report. N'avez-vous pas besoin de générer et de propager à la fois pour le portage et pour l'emprunt?
Stark
Je suppose que vous parlez de la structure Ladner-fischer. C'était juste un exemple pour montrer un arbre de préfixe parallèle. Chaque additionneur négabinaire 1 bit génère une somme, un report positif et négatif. Je ne sais pas si nous pouvons utiliser les concepts de générer et de propager avec négabinary.
gilianzz

Réponses:

1

J'ai probablement consacré plus de temps à cette question que je n'aurais dû, mais voici mes conclusions.

Je ne trouve aucun exemple d'additionneur de préfixe parallèle "pur" pour les nombres négabinaires. Je pense aussi que c'est un problème ouvert, car je n'ai vu aucune preuve que ce n'est pas possible.

Le plus proche que je puisse vous obtenir est d'utiliser une addition négabinaire négative en deux étapes (généralement nnba en abrégé dans la littérature). Il est basé sur la propriété suivante:

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

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

+nb+

La somme négative peut alors simplement être inversée en utilisant la même propriété mais avec un opérande nul:

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

Donc, pour trouver la somme en utilisant des additionneurs de préfixes parallèles, vous pouvez:

  1. f(a)f(b)
  2. +1s1
  3. s1f(g(s1))
  4. 0xAA...AB=f(0)+1s2
  5. g(s2)

J'ai en fait essayé de trouver un additionneur de préfixe parallèle "pur", mais je l'ai trouvé trop complexe pour le temps que j'étais prêt à y consacrer. Voici pourquoi:

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

(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
la source
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