Células somadoras de prefixo paralelo em Negabinary


14

Estou tentando criar um somador de prefixo paralelo para um somador baseado em negabinário. Negabinary é base 2 vez do familiar binário base 2 . Cada somador de 1 bit gera uma soma e duas (em vez de uma em binário) carregam que vão para o próximo somador.

Para tornar o somador mais rápido, quero usar uma estrutura de prefixo paralelo, como a estrutura de Ladner-Fischer apresentada abaixo. Estou familiarizado com a funcionalidade da célula roxa no sistema binário, mas não tenho certeza de como poderia obter a mesma funcionalidade no sistema negabinário.

A razão pela qual estou fazendo isso é apenas por diversão, ainda não encontrei nenhum uso para negabinário.

Fórmulas para calcular a soma e os valores:

si=aibi(ci++ci)

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

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

Ladner-fischer carrega a estrutura da árvore:

insira a descrição da imagem aqui

Se algo não estiver claro, não hesite em perguntar.


Embora essa possa ser uma pergunta interessante, ela não parece ser uma questão elétrica, e você pode ter mais sorte em levá-la ao SE de matemática.
Redja 23/05

3
Eu colocá-lo aqui, porque eu acho EE pessoas têm mais experiência com a lógica de transporte, projetando somadores etc.
gilianzz

Isso é totalmente uma questão EE
Tensão de Spike

Parece que você precisa de mais de duas saídas por transporte. Você não precisa gerar e propagar para carregar e emprestar?
stark

Suponho que você esteja falando sobre a estrutura Ladner-fischer. Foi apenas um exemplo para mostrar uma árvore de prefixos paralela. Cada somador negativo de 1 bit gera uma soma, um positivo e um negativo. Não tenho certeza se podemos usar os conceitos de gerar e propagar com negabinário.
Gilianzz # 26/17

Respostas:


1

Provavelmente gastei mais tempo com essa questão do que deveria, mas aqui estão minhas descobertas.

Não consigo encontrar nenhum exemplo de um somador de prefixo paralelo "puro" para números negativos. Eu também acho que é um problema em aberto, pois não vi nenhuma prova de que isso não seja possível.

O mais próximo que posso chegar é de um acréscimo negativo negativo de duas etapas (nnba comumente abreviado na literatura). É baseado na seguinte propriedade:

Seja e g ( x ) = x n - 1 ¯ x n - 2 . . . x 1 ¯ x 0 . Estas são basicamente uma operação XOR com e respectivamente. Você pode provar quef(x)=xn1¯xn2...x1¯x0g(x)=xn1xn2¯...x1x0¯0xAA...AA0x55...55

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

Onde o lado esquerdo é a soma negabinária , enquanto o + no lado direito é uma soma binária normal.+nb+

A soma negativa pode ser simplesmente invertida usando a mesma propriedade, mas com um operando zero:

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

Portanto, para encontrar a soma usando somadores de prefixo paralelos, você pode:

  1. Calcular e f ( b ) , isto é. invertendo todos os bits ímpares dos números negativosf(a)f(b)
  2. Calcule a soma binária regular enquanto define o bit de transporte para o LSB (o ), levando a uma primeira soma intermediária s 1 .+1s1
  3. Inverta todos os bits de (este é f ( g ( s 1 ) ) ). Este é o final da primeira soma, enquanto também inicia a inversão.s1f(g(s1))
  4. 0xAA...AB=f(0)+1s2
  5. g(s2)

Na verdade, tentei encontrar um somador de prefixo paralelo "puro", mas considerei muito complexo o tempo que estava disposto a gastar nele. Aqui está o porquê:

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

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

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.