Somador Binário

O somador binário pode ser feito de duas formas possíveis: utilizando o cascateamento de somadores completos e utilizando os operadores aritméticos do VHDL.

Projeto Utilizando o Cascateamento de Somadores Completos

A Figura abaixo apresenta o projeto de um somador binário utilizando o cascateamento de somadores completos. No caso, o i-ésimo somador completo, gera o i-ésimo bit de soma e o carry out para o (i+1)-ésimo somador completo.


Inicialmente começamos nossa descrição a partir do somador completo:

--somadorcompleto.vhd
--Somador completo em VHDL
--Autor: Pedro Thiago V. de Souza

--Bibliotecas
LIBRARY ieee;
USE ieee.std_logic_1164.all;

--Entity
ENTITY somadorcompleto IS
    PORT(
        a, b, cin   :   IN STD_LOGIC;
        s, cout     :   OUT STD_LOGIC       --Ultima linha do PORT nao tem ;
    );
END somadorcompleto;

--Architecture
ARCHITECTURE dataflow OF somadorcompleto IS
BEGIN 
    s <= a XOR b XOR cin;
    cout <= (a AND b) OR (a AND cin) OR (b AND cin);
END dataflow;

Após isso, podemos descrever o nosso somador binário. Declaramos a largura do somador como um genérico e utilizamos generate para permitir a reusabilidade do código.