Somador Carry-Lookahead de 4 Bits em VHDL

Carry-Lookahead

Esse somador utiliza uma técnica para aceleração do cálculo do carry. Em cada estágio ele calcula seu próprio bitcarry de entrada a partir das entradas do primeiro estágio, ou seja, ele não espera a propagação das informações dos estágios anteriores.

Por contra, ele também possui desvantagens, como, por exemplo, o crescimento quase exponencial do número de portas utilizadas a cada estágio, encarecendo e tornando o transporte do carry mais lento para um projeto de mais de quatros estágios.

Devido a essas circunstâncias esse somador é geralmente projetado para somar palavras de 4 bits. Dessa forma, podemos reutilizar o circuito para somar palavras binárias de 8, 12, 16, 32, etc.

Neste artigo vamos estudar esse tipo de somador rápido, projeta-lo para somar palavras de 4 bits e descrevê-lo em VHDL.

Somador Carry-Lookahead

Existem três casos de propagação do carry: Kill, Generate e Propagate.

O caso Kill significa que quando as entradas Ai e Bi do somador são iguais a zero, independente do seu carry-in, a propagação do carry-out não existe (“matado”). Isso quer dizer também que o carry-in do próximo estágio vale zero.

O caso Generate significa que quando as entradas Ai e Bi do somador são iguais a um, independente do seu carry-in, a propagação do carry-out existe (“gerado”). Isso quer dizer também que o carry-in do próximo estágio vale um.

O caso Propagate significa que quando as entradas Ai e Bi do somador são iguais a um e zero ou a zero e um respectivamente. Dessa forma o seu carry-in será propagado para o carry-out.

Com essas informações é possível montar uma tabela verdade e assim encontrar uma expressão booleana para o carry-out, ou seja, Ci+1.

*i é um número natural.

Tabela 1: Tabela verdade para o carry-out. 

 

Ai

Bi

Ci+1

Ki

0

0

0

Pi

0

1

Ci

Pi

1

0

Ci

Gi

1

1

1

carry-lookahead

Para obter a expressão da saída podemos fazer o mesmo procedimento precedente considerando as entradas Ai, Bi e Ci.

Tabela 2: Tabela verdade para a saída.

Ci

Bi

Ci

Si

0

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

0

0

1

1

0

1

0

1

1

0

0

1

1

1

1

carry-lookahead-2

Tendo em vista que os sinais Genarate e Propagate são sempre em função das entradas Ai e Bi, e se comportam como Meio-Somadores (Half-Adders), modelaremos o projeto utilizando-os. 

carry-lookahead-3.PNG
Figura 1: Esquema do Meio-Somador com as saídas Propagate e Generate.

Como nosso objetivo é projetar este somador para palavras de 4 bits, acharemos as equações para cada estágio.

Para o estágio zero, nós temos que o carry-in é uma entrada do circuito, portanto obtemos:

carry-lookahead-4.PNG

Para o estágio um, temos que o carry calculado no estágio zero será o carry-in desse estágio, isto é:

carry-lookahead-5
carry-lookahead-6

Seguindo a lógica temos:

carry-lookahead-7

Se olharmos para a próxima equação podemos observar que para o próximo estágio (quinto) o número de portas é muito grande, tornando inviável o custo do projeto, além de não se tornar mais rápido em relação a um somador Ripple-Carry por exemplo.

carry-lookahead-8

Desempenho do Carry-Lookahead 4 bits em relação ao Ripple-Carry

Comparando a propagação dos carrys-out dos circuitos Ripple-Carry e Carry-Lookahead podemos observar o percusso do carry-out do primeiro somador bem mais longo.

carry lookahead: Somador Ripple-Carry 4 bits (Fonte: Eletrônica Digital por F.C.C de Castro PUCRS)
Figura 2: Somador Ripple-Carry 4 bits (Fonte: Eletrônica Digital por F.C.C de Castro PUCRS)
carry lookahead: Somador Carry-Lookahed 4 bits (Fonte: Digital Eletronics Pedroni)
Figura 3: Somador Carry-Lookahed 4 bits (Fonte: Digital Eletronics Pedroni)

Como no Ripple-Carry é utilizado blocos de somadores completos, temos que cada estágio tem um tempo crítico agregado a 3 portas lógicas. Ou seja, para o circuito completo 12 portas lógicas até o carry-out está bem definido. Diferente do nosso somador estudado que tem tempo crítico agregado a 4 portas lógicas.

Implementação VHDL

Utilizando o software Altera Quartus II 13.0 Web Edition, criou-se o componente HALF_ADDER para ser utilizado no módulo-topo do nosso circuito principal. Esse componente foi descrito como segue: 

Para o modulo-topo utilizamos o componente HALF_ADDER e escrevemos as equações necessárias para a implementação do somador Carry-Lookahead 4 bits. Onde a descrição utilizada foi:

Para verificação do funcionamento foi feito o testbench, abaixo o código e as formas de onda do nosso circuito!

Veja a forma de onda resultante dos testes.

Forma de onda resultante dos testes

Para fazer o download de todos os arquivos do projeto para o Quartus, clique no botão abaixo.

Projeto Somador Carry Lookahead
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

[wpseo_breadcrumb]
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Rodrigo Costa
20/10/2018 11:55

Cadastrei para fazer download dos arquivos e mostra que não tenho permissão para visualizar o conteudo. Alguma dica?

Arthur Fernando
Arthur Fernando
29/06/2016 10:33

excelente conteúdo! Me ajudou bastante na prova de eletrônica Digital.. Obrigado por compartilhar tais conhecimentos.

Talvez você goste:

Séries

Menu
Privacy Settings saved!
Configurações de Privacidade

Entenda quais dados e informações usamos para ter melhor entrega de conteúdo personalizado para você.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Para usar este site, usamos os seguintes cookies tecnicamente exigidos

  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Accept all Services