Aritmética Binária - HW
- Conteúdo: hald-adder/ full-adder/ somador
Tip
Esse conteúdo está no cap. 2 do livro texto da disciplina The Elements of Computing Systems.
Precisamos lembrar que nosso objetivo principal é a criação de um hardware capaz de operar com números binários. Nessa teoria iremos analisar algumas técnicas de realizar o hardware necessário para realizar operação de soma binária entre dois vetores. Para isso iremos definir dois componentes: Half-Adder e o Full-Adder.
half-adder (HAD)
Half-Adder
(HAD) é um circuito digital capaz de somar dois bits (a
e b
), tem como resultado o valor da soma
e do carry
, como ilustrado a seguir:
------
a -->| |--> Soma
| HA |
b -->| |--> Carry
------
O HAD
possui a seguinte tabela verdade:
a | b | Carry (out) | Soma (out) |
---|---|---|---|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
E é implementado em hardware da seguinte maneira:
full-adder (FAD)
Full-adder é um componente digital capaz de somar três vits (a
, b
e c
) e possui como saída o valor da soma
e do carry
resultante da operação. A seguir um diagrama de blocos de um FAD
:
O FAD possui a seguinte tabela verdade:
a | b | c | Carry (out) | Soma (out) |
---|---|---|---|---|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
E é implementado da seguinte maneira em portas lógicas:
Tip
Você deve ser capaz de encontrar esses circuitos analisando a tabela verdade e simplificando via Mapa de K.
Note que existem duas abordagens para representar o Carry_out: A.B+A.C+B.C
e A.B+C(A xor B)
Fonte: (2011) Fundamentals of Digital and Computer Design with VHDL, pg 199.
Somador
Utilizando o FAD somos capazes de realizar um somador de dois vetores binários. Para isso, teremos que utilizar um full-adder para cada bit desse nosso vetor.
Por exemplo: se formos criar um Somador capaz de somar dois vetores de 4bits
, necessitamos utilizar 4 FAD para isso com a ligação descrita a seguir:
Nesse diagrama, estamos realizando a soma ente os vetores A(3 downto 0)
e B(3 downto 0)
que resulta em um outro vetor S(3 downto 0)
e um carry C4
.