Adicionador Binário

  • by

Outro circuito lógico combinado comum e muito útil que pode ser construído usando apenas alguns portões lógicos básicos que lhe permitem adicionar juntos dois ou mais números binários é o Adicionador Binário.

Um circuito Basic Binary Adder pode ser feito a partir de portas padrão AND e Ex-OR, permitindo-nos “adicionar” juntos dois números binários de bit único, A e B.

A adição destes dois dígitos produz uma saída chamada SUM da adição e uma segunda saída chamada CARRY or Carry-out, ( COUT ) bit de acordo com as regras para adição binária. Uma das principais utilizações para a adição binária é em circuitos de aritmética e contagem. Considere a simples adição dos dois números denários (base 10) abaixo.

123 A (Augend)
+ 789 B (Addend)
912 SUM

Das nossas aulas de matemática na escola, aprendemos que cada coluna de números é somada a partir do lado direito e que cada dígito tem um valor ponderado, dependendo da sua posição dentro das colunas.

Quando cada coluna é somada, é gerado um transporte se o resultado for maior ou igual a 10, o número base. Este carry é então adicionado ao resultado da adição da coluna seguinte à esquerda e assim por diante, simples adição de matemática escolar, adição dos números e carry.

A adição de números binários é exactamente a mesma ideia que a da adição de números decimais em conjunto, mas desta vez um carry só é gerado quando o resultado em qualquer coluna é maior ou igual a “2”, o número base do binário. Por outras palavras, 1 + 1 cria um carry.

Adição binária

Adição binária segue estas mesmas regras básicas que para a adição denária acima, excepto em binário, existem apenas dois dígitos com o dígito maior a ser “1”. Assim, ao adicionar números binários, é gerada uma execução quando o “SUM” é igual ou superior a dois (1+1) e este torna-se um bit “CARRY” para qualquer adição posterior sendo passado para a coluna seguinte para adição e assim por diante. Considere a adição de bit único abaixo.

Adição binária de dois bits

0 0 1 1
+ 0 + 1 + 0 + 1
0 1 1 (carry) 1←0

Quando os dois bits individuais, A e B são somados, a adição de “0 + 0”, “0 + 1” e “1 + 0” resulta num “0” ou num “1” até chegar à coluna final de “1 + 1”, depois a soma é igual a “2”. Mas o número dois não existe em binário, no entanto, 2 em binário é igual a 10, por outras palavras, um zero para a soma mais um bit extra de transporte.

Então a operação de uma simples adição requer duas entradas de dados que produzem duas saídas, a Soma (S) da equação e um bit de transporte (C) como mostrado.

Diagrama de blocos de adições binárias

diagrama de blocos de adições binárias

diagrama de blocos de adições binárias

Para o problema de adição simples de 1 bit acima, o pedaço de transporte resultante poderia ser ignorado, mas poderá ter notado algo mais no que diz respeito à adição destes dois pedaços, a soma da sua adição binária assemelha-se à de um Portão Exclusive-OR. Se rotularmos os dois bits como A e B então a tabela da verdade resultante é a soma dos dois bits mas sem o transporte final.

2-input Exclusive-OR Gate

2-entrada exclusiva-ou gate

2-input Ex-OU Gate

0>0>0>0
0

Symbol Tabela de Verdade
B A S
S
1 1
1 0 1
1 1 0

Podemos ver a partir da tabela da verdade acima, que uma porta Exclusive-OR só produz uma saída “1” quando qualquer uma das entradas está na lógica “1”, mas não as duas o mesmo que para a adição binária dos dois bits anteriores. No entanto, para realizar a adição de dois números, os microprocessadores e calculadoras electrónicas requerem o bit de transporte extra para calcular correctamente as equações, pelo que precisamos de reescrever a soma anterior para incluir dois bits de dados de saída, como se mostra abaixo.

00 00 01 01
+ 00 + 01 + 00 + 01
00 01 01 10

Das equações acima mencionadas sabemos agora que um Exclusivo…A porta OU só produzirá uma saída “1” quando a entrada “EITHER” estiver na lógica “1”, por isso precisamos de uma saída adicional para produzir o bit de transporte quando as entradas “BOTH” A e B estão na lógica “1”. Uma porta digital que se ajuste perfeitamente à factura produzindo uma saída “1” quando ambas as suas entradas A e B são “1” (ALTA) é o padrão AND Gate.

2-input AND Gate

Symbol Tabela de Verdade
2-entrada E porta

2-input AND Gate

B A C
0 0 0 0
0 1 0
1 0 0
1 1

Combinando o Exclusivo-OU portão com a porta AND resulta num circuito digital simples de adição binária conhecido comummente como o circuito “Half Adder”.

A Half Adder Circuit

A Half Adder é um circuito lógico que realiza uma operação de adição em dois dígitos binários. A meia-víbora produz uma soma e um valor de transporte que são ambos dígitos binários.

Metade Adder Truth Table with Carry-Out

metade adder

1

0

Symbol Tabela de Verdade
B A SUM CARRY
0 0 0 0
0 1 1 0
1 0 0
1 1 0 1

Da tabela da verdade da meia víbora podemos ver que a saída do SUM (S) é o resultado do Exclusive-O portão OU e o portão de saída (Cout) é o resultado do portão AND. Então a expressão booleana para um meio adder é a seguinte.

Para o SUM bit:

SUM = A XOR B = A ⊕ B

Para o CARRY bit:

CARRY = A AND B = A.B

Uma grande desvantagem do circuito Half Adder quando usado como um adder binário, é que não há provisão para um “Carry-in” do circuito anterior quando se adicionam múltiplos bits de dados.

Por exemplo, suponha que queremos adicionar juntos dois bytes de 8 bits de dados, qualquer bit de transporte resultante teria de ser capaz de “ondular” ou mover-se através dos padrões de bit começando pelo bit menos significativo (LSB). A operação mais complicada que a meia-víbora pode fazer é “1 + 1”, mas como a meia-víbora não tem entrada de transporte, o valor acrescentado resultante seria incorrecto. Uma forma simples de ultrapassar este problema é utilizar um circuito de adição de tipo viciante binário completo.

Um circuito de adição completo

A principal diferença entre a viciante completa e a meia viciante anterior é que uma viciante completa tem três entradas. As mesmas duas entradas de dados de bit único A e B como antes, mais uma entrada adicional de Carry-in (C-in) para receber a carga de uma fase anterior, como se mostra abaixo.

Diagrama de Bloco de Adição Cheio

diagrama de Bloco de Adição Cheio

diagrama de Bloco de Adição Cheio

Então a adenda completa é um circuito lógico que realiza uma operação de adição em três dígitos binários e, tal como a meia adenda, também gera uma execução para a coluna de adição seguinte. Depois, uma Carry-in é uma possível execução a partir de um dígito menos significativo, enquanto uma Carry-out representa uma execução para um dígito mais significativo.

Em muitos aspectos, a víbora completa pode ser pensada como duas meias víboras ligadas entre si, com a primeira víbora a passar a sua execução para a segunda víbora, como se mostra.

Diagrama lógico de víbora completo

diagrama lógico de víbora completo

Como o circuito de víbora completo acima é basicamente duas meias víboras ligadas entre si, a tabela da verdade para a adição completa inclui uma coluna adicional para ter em conta a entrada de Carry-in, CIN, bem como a saída somada, S e a saída de Carry-out, COUT bit.

Tabela de Verdade da Adição Completa com Carry

>0>0>0

>

0

10

0

0

Symbol Tabela de Verdade
full adder C-in B A Sum C-out
0 0 0
0 0 1 1 0
0 1 0 1
1 1 0 1
1 0 0 1 0
1 0 1 0 1 1
1 1 0 0 1
1 1 1 1 1

Então a expressão booleana para um viciante completo é a seguinte.

Para o SUM (S) bit:

p>SUM = (A XOR B) XOR Cin = (A ⊕ B) ⊕ Cin

Para o CARRY-OUT (Cout) bit:

CARRY-OUT = A AND B OR Cin(A XOR B) = A.B + Cin(A ⊕ B)

Um Adder Binário de n-bit

Vimos acima que simples adders binários de 1-bit podem ser construídos a partir de portões lógicos básicos. Mas e se quiséssemos adicionar juntos dois números de n-bit, então n número de vendedores de 1-bit completos precisam de ser ligados ou “em cascata” juntos para produzir o que é conhecido como vendedores de transporte de Ondas.

A “vendedores de transporte de Ondas” é simplesmente “n”, vendedores de 1-bit completos em cascata com cada vendedora completa representando uma única coluna ponderada numa longa adição binária. Chama-se “ondulador de víbora de transporte” porque os sinais de transporte produzem um efeito de “ondulação” através da víbora binária da direita para a esquerda, (LSB para MSB).

Por exemplo, suponhamos que queremos “adicionar” juntos dois números de 4 bits, as duas saídas da primeira víbora completa fornecerão a soma do dígito do primeiro lugar (S) da adição mais um bit de transporte que actua como o dígito de transporte da víbora binária seguinte.

A segunda víbora binária da cadeia também produz uma saída somada (o 2º bit) mais outro bit de execução e podemos continuar a adicionar mais víboras completas à combinação para adicionar números maiores, ligando a saída do bit de execução da primeira víbora binária completa à víbora completa seguinte, e assim por diante. Um exemplo de uma víbora de 4 bits é dado abaixo.

A 4-bit Ripple Carry Adder

4 bit adder binário

4 bit adder binário

Uma desvantagem principal de “em cascata” juntos adders binários de 1 bit para adicionar grandes números binários é que se as entradas A e B mudarem, a soma na sua saída não será válida até que qualquer entrada de transporte tenha “ondulado” através de cada víbora completa na cadeia porque a MSB (bit mais significativo) da soma tem de esperar por quaisquer alterações da entrada de transporte da LSB (bit menos significativo). Consequentemente, haverá um atraso finito antes da saída da víbora responder a qualquer alteração nas suas entradas, resultando num atraso acumulado.

Quando o tamanho dos bits adicionados não é demasiado grande, por exemplo, 4 ou 8 bits, ou a velocidade da soma da víbora não é importante, este atraso pode não ser importante. No entanto, quando o tamanho dos bits é maior, por exemplo, 32 ou 64 bits utilizados em vendedores de multi-bits, ou quando a soma é necessária a uma velocidade de relógio muito alta, este atraso pode tornar-se proibitivamente grande com os processos de adição não sendo completados correctamente dentro de um ciclo de relógio.

Este tempo de atraso indesejado chama-se Atraso de Propagação. Também outro problema chamado “overflow” ocorre quando um n-bit adder adiciona dois números paralelos cuja soma é maior ou igual a 2n

Uma solução é gerar os sinais de carry-input directamente das entradas A e B em vez de usar a disposição de ondulação acima. Isto produz então outro tipo de circuito de adição binária chamado Carry Look Ahead Binary Adder onde a velocidade da adição paralela pode ser grandemente melhorada utilizando a lógica carry-look ahead.

A vantagem de carry look ahead adders é que o período de tempo que uma adição de carry look forward precisa para produzir o SUM correcto é independente do número de bits de dados utilizados na operação, ao contrário do tempo de ciclo que uma adição de ondulação paralela precisa para completar o SUM que é uma função do número total de bits no addend.

circuitos de adição de 4 bits completos com características de carry look ahead estão disponíveis como pacotes IC padrão sob a forma do TTL 4-bit binary adder 74LS83 ou o 74LS283 e o CMOS 4008 que podem adicionar em conjunto dois números binários de 4 bits e gerar uma SUM e uma saída CARRY como mostrado.

74LS83 Símbolo lógico

74ls83 símbolo lógico

74ls83 símbolo lógico

Símbolo lógico de Adders Binários

Vimos neste tutorial sobre Adders Binários que circuitos de adição podem ser usados para “adicionar” juntos dois números binários produzindo um “carry-fora”. Na sua forma mais básica, as víboras podem ser feitas a partir da ligação de um portão Exclusive-OR com um portão AND para produzir um circuito Half Adder. Duas meias víboras podem ser combinadas para produzir uma víbora completa.

Existem vários ICs de 4 bits completos disponíveis, tais como os 74LS283 e CD4008. que adicionarão dois números binários de 4 bits e fornecerão um bit de transporte de entrada adicional, bem como um bit de transporte de saída, de modo a que se possa juntá-los em cascata para produzir vectores de 8 bits, 12 bits, 16 bits, mas o atraso de propagação de transporte pode ser um grande problema em vectores de grandes n-bits.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *