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.