Você está na página 1de 10

EPUSP PCS 2308/2355 Laboratrio Digital

Calculadora Simples em VHDL


Verso 2014

RESUMO
Esta experincia consiste no projeto e implementao de um circuito digital simples com o uso de uma
linguagem de descrio de hardware. So apresentados aspectos bsicos da linguagem VHDL e exemplos
de descrio de circuitos.

OBJETIVOS
Aps a concluso desta experincia, os seguintes tpicos devem ser conhecidos pelos alunos:

Linguagem de descrio de hardware;


VHDL;
Projeto com FPGA.

1. PARTE TERIA
1.1. Linguagens de Descrio de Hardware
Uma alternativa entrada esquemtica de um circuito digital em um sistema de projeto auxiliado por
computador utilizar uma ferramenta de projeto baseado em texto ou linguagem de descrio de
hardware (HDL). Exemplos de HDLs so o AHDL (Altera Hardware Description Language) e os padres
VHDL e Verilog.
O projetista cria um arquivo de texto, seguindo certo conjunto de regras, conhecido como sintaxe da
linguagem, e usa um compilador para criar dados de programao do dispositivo lgico programvel
(PLD). Esta descrio de hardware pode ser usada para gerar projetos hierrquicos, ou seja, um
componente definido em uma descrio pode ser usado para gerar um hardware especfico ou ser usado
como parte de outro projeto.
As HDLs tm uma grande semelhana s linguagens de programao, mas so especificamente
orientadas descrio da estrutura e do comportamento do hardware. Uma grande vantagem das HDLs
em relao entrada esquemtica que elas podem representar diretamente equaes booleanas,
tabelas verdade e operaes complexas (p.ex. operaes aritmticas).
Uma descrio estrutural descreve a interconexo entre os componentes que fazem parte do circuito.
Esta descrio usada como entrada para uma simulao lgica da mesma forma que uma entrada
esquemtica.
Uma descrio comportamental descreve o funcionamento lgico de cada um dos componentes do
circuito. Em relao ao tipo de descrio anterior, a descrio comportamental realizada em um nvel
de abstrao mais alto.
Uma HDL pode ser usada na descrio em vrios nveis do circuito em desenvolvimento. Partindo de uma
descrio de alto nvel, pode ser usada para refinar e particionar esta descrio em outras de nvel mais
baixo durante o processo de desenvolvimento. A descrio final deve conter componentes primitivos e
blocos funcionais.
Uma grande razo para o uso de HDLs a sntese lgica. Uma descrio em HDL em conjunto com uma
biblioteca de componentes usada por uma ferramenta de sntese para a gerao automtica de um
circuito digital. Alm disto, estas ferramentas incluem uma etapa de otimizao da lgica interna do
circuito gerado, antes da gerao das estruturas internas de armazenamento, da lgica combinatria e da
estrutura de conexo dos componentes (netlist). A figura 1.1 abaixo mostra um diagrama mostrando as
etapas principais de sntese lgica.

Calculadora Simples em VHDL (2014)

EPUSP PCS 2308/2355 Laboratrio Digital

Descrio
HDL do
Circuito

Traduo

Representao
Intermediria

Otimizao

Gerao
de netlist

Figura 1.1 - Fluxo das etapas de alto nvel da Sntese Lgica.


Atualmente, as HDLs mais utilizadas so o VHDL e o Verilog. Ambas as linguagens so hoje padres
aprovados e publicados pelo IEEE (Instituto dos Engenheiros Eltricos e Eletrnicos), tendo portanto
vrias ferramentas comerciais disponveis. Esta padronizao leva a uma grande vantagem no
desenvolvimento de circuitos usando HDLs: a portabilidade. Visto que as ferramentas devem
implementar as caractersticas padronizadas, fica muito fcil usar sistemas de desenvolvimento de
fabricantes diferentes.

1.2. A Linguagem VHDL


O nome VHDL um acrnimo de VHSIC Hardware Description Language. J o termo VHSIC o
acrnimo de Very High Speed Integrated Circuit. Assim podemos traduzir, de forma literal, o nome
VHDL como "linguagem de descrio de hardware para circuitos integrados de velocidade muito alta".
A linguagem VHDL foi originalmente desenvolvida por empresas contratadas pelo governo americano e
agora um padro requerido por todos os ASICs (Application Specific Integrated Circuits) projetados
para o exrcito americano. Ele foi padronizado pelo IEEE em 1987 (Padro 1076-1987 ou VHDL 87) e
atualizado posteriormente em 1993, em 2003 e em 2008 (Padro IEEE 1076-2008).
Todo arquivo VHDL requer ao menos duas estruturas: uma declarao de entidade e uma arquitetura.
A declarao de entidade define os aspectos externos da funo VHDL, isto , os nomes e tipos das
entradas e sadas e o nome da funo. A arquitetura define os aspectos internos, isto , como as
entradas e sadas influem no funcionamento e como se relacionam com outros sinais internos.
Um exemplo de uma descrio VHDL mostrado a seguir.

Os sinais de entrada e sada so do tipo std_logic e std_logic_vector. O tipo std_logic definido no


pacote ieee.std_logic_1164 e pode assumir os valores 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H' ou '-'1. O tipo
std_logic_vector representa um vetor de bits. O somador possui 3 sinais de entrada: A, B e C0, e 2
sinais de sada: S e C4.
So usados dois operadores: + representa uma adio e & representa uma concatenao de bits. Assim,
'0'&A representa um vetor de 5 bits contendo '0' A(3) A(2) A(1) A(0).

Se o objetivo for a sntese do circuito em uma FPGA, somente os valores 0, 1 e Z so relevantes. Os outros valores so interessantes
nas etapas de simulao para verificao da corretude do projeto.

Calculadora Simples em VHDL (2014)

EPUSP PCS 2308/2355 Laboratrio Digital

Aps a realizao de uma operao de adio com os sinais de entrada, a descrio atribui o bit mais
significativo de soma a C4 (vai-um) e os outros bits em S (soma).
A descrio acima um exemplo de uma descrio comportamental. O texto apresenta elementos
lgicos de um somador binrio e a ferramenta de projeto responsvel pela sntese do circuito digital
(figura 1.2).

Figura 1.2 Viso RTL do circuito sintetizado pelo Altera Quartus II.

Uma descrio estrutural do somador binrio de 4 bits equivalente ao exemplo anterior deve levar em
conta os elementos internos do circuito digital. Por exemplo, podemos considerar este somador de 4 bits
contendo 4 somadores completos de 1 bit interligados entre si (figura 1.3).

Figura 1.2 Somador binrio de 4 bits composto por 4 somadores completos de 1 bit.
Inicialmente apresentamos a descrio do somador completo de 1 bit de forma comportamental. Esta
descrio mostrada abaixo (figura 1.3).

Figura 1.3 Descrio comportamental VHDL de um somador completo de 1 bit.


Uma vez disponvel, o circuito do somador completo pode ser reutilizado para a descrio do somador
binrio de 4 bits. Para isto, deve ser definido como um componente e usado como um bloco bsico:
devem ser instanciados 4 elementos e suas entradas e sadas devem ser interligadas atravs de sinais
internos. A seguir apresentamos o cdigo VHDL do somador binrio de 4 bits em descrio estrutural
(figura 1.4).

Calculadora Simples em VHDL (2014)

EPUSP PCS 2308/2355 Laboratrio Digital

Figura 1.4 Descrio VHDL estrutural de um somador binrio de 4 bits composto


por 4 somadores completos de 1 bit.
Para o desenvolvimento de circuitos sequenciais, a linguagem VHDL possui recursos especficos. O trecho
de cdigo abaixo apresenta a descrio de um flip-flop tipo D sensvel borda de subida com entrada de
reset assncrono (figura 1.5).

Figura 1.5 Descrio VHDL de um flip-flop D.


O trecho de cdigo na especificao da arquitetura inclui um processo. Esta construo da linguagem
representa um mdulo de circuito sensvel aos sinais CLK e CLR: quando qualquer um destes sinais for
modificado, o cdigo executado. Inicialmente o sinal CLR verificado e se assumir valor 1, a sada Q
resetada. Em caso contrrio, se houve uma borda de subida de CLK, a entrada D copiada para a
sada2.

Ao se analisar este trecho de cdigo, pode parecer que houve um erro de digitao com a presena dos sinais Q e q.
No o caso, pois o VHDL no faz distino entre maisculas e minsculas. Ento tanto Q como q representam o
mesmo sinal no circuito.

Calculadora Simples em VHDL (2014)

EPUSP PCS 2308/2355 Laboratrio Digital

Em uma descrio VHDL, todos os comandos so concorrentes, ou seja, o processamento deles


simultneo. Dentro de um processo, os comandos so sequenciais, ou seja, seguem a mesma
sequncia de execuo de comandos em uma linguagem de programao tradicional. Assim, na descrio
do flip-flop D acima, a sada Q modificada somente depois do teste do sinal CLR.
Um exemplo mais complexo um registrador deslocador bidirecional com funes de reset assncrono e
carga paralela (figura 1.6).
d[3] d[2] d[1] d[0]

registrador
deslocador
bidirecional

modo
msi

lsi

q[3] q[2] q[1] q[0]

Figura 1.6 Registrador deslocador bidirecional.


O cdigo VHDL composto de um processo apenas e utiliza um sinal interno chamado estado para
armazenar o contedo intermedirio das operaes do deslocador. Para as operaes de deslocamento de
bits, usa-se o operador de concatenao de bits &. A execuo dos deslocamentos para a direita e para a
esquerda concatenam os bits relevantes do deslocador e realizam a atribuio ao sinal estado. A seguir
temos a descrio completa do deslocador bidirecional (figura 1.7).
Mais detalhes sobre a linguagem VHDL podem ser obtidos na referncia [DAmore, 2012].

1.3. Aritmtica Binria


Quando se deseja implementar um circuito digital que realize operaes aritmtica, necessrio fazer
algumas consideraes em como executar estas operaes sobre dados binrios. Normalmente, quando
se considera valores com sinal, adotamos a notao de complemento de dois. Sabe-se que numa
operao aritmtica em complemento de dois, no se corrige o resultado como no caso da notao em
complemento de um. necessrio, porm, somar-se 1 ao complemento bit a bit do nmero:
(Complemento de 2) = (Complemento de 1) + 1.
Numa subtrao, portanto, costuma-se forar um vem-um na coluna de bits menos significativos dos
operandos:
Exemplos:
7 - 3 = 4
0
1
0

1
1
1

1
0
0

1
1
0
0

4 - 6 = -2
vem-um forado
7
-3 (complemento de 1)
4

0
1
1

1
0
1

0
0
1

1
0
1
0

vem-um forado
4
-6 (complemento de 1)
-2 (complemento de 2)

Numa soma de dois nmeros de mesmo sinal (positivos ou negativos), a complementao no


necessria e, portanto, no h vem-um forado.
Exemplo:
-2 + (-3) = -5
1
1
1

1
1
0

1
0
1

Calculadora Simples em VHDL (2014)

0
1
1

-2 (complemento de 2)
-3 (complemento de 2)
-5 (complemento de 2)

EPUSP PCS 2308/2355 Laboratrio Digital

Figura 1.7 Descrio VHDL de um registrador deslocador bidirecional.


A figura 1.8 mostra um circuito de soma/subtrao em complemento de 2.

Y ou Y'
4

SUBTR = 1

S
Figura 1.8 - Circuito de Soma / Subtrao em Complemento de 2.

Calculadora Simples em VHDL (2014)

EPUSP PCS 2308/2355 Laboratrio Digital

As operaes de multiplicao e diviso podem ser implementadas em um circuito digital atravs de um


processo iterativo que envolve diversos passos computacionais [Midorikawa, 2004] [Tocci & Widmer,
2011]. Por exemplo, a figura 1.9 abaixo ilustra um exemplo de multiplicao.

13
11

1101
1011
0000
+
1101
1101
0110
+
1101
1 0011
1001
0100
+

multiplicando
multiplicador
valor inicial do produto parcial
soma multiplicando, bit do multiplicador 1
1
1
11
111

1101

desloca para a direita


soma multiplicando, bit do multiplicador 1
desloca para a direita
s desloca para a direita, bit do multiplicador 0
soma multiplicando, bit do multiplicador 1

1 0001 111
1000 1111

143

10001111

desloca para a direita (fim)

produto final

Figura 1.9 Exemplo de Multiplicao Binria calculada de forma iterativa.

Embora estas operaes sejam complexas, certas situaes podem levar a simplificaes no circuito
digital que as implementa. Uma destas situaes a da diviso por dois, onde, no caso de nmeros
positivos sem sinal, a operao pode ser implementada apenas por um deslocamento de bits de uma
posio direita.
Exemplos:

6 / 2 = 3

5 / 2 = 2

desloca direita de uma posio

5
desloca direita de uma posio

No caso de nmeros com sinal, na diviso, necessria a realizao de um deslocamento aritmtico.


O mesmo pode ser aplicado para a multiplicao de nmeros inteiros positivos por dois, onde esta
operao pode facilmente ser implementada com um deslocamento de bits de uma posio esquerda.

Calculadora Simples em VHDL (2014)

EPUSP PCS 2308/2355 Laboratrio Digital

2. PARTE EXPERIMENTAL
A parte experimental desta experincia diz respeito implementao do circuito de uma calculadora
realizada em VHDL pela composio de componentes bsicos elementares como um somador binrio e
um registrador deslocador. Nesta experincia sobre Dispositivos Programveis ser desenvolvido o
projeto utilizando-se o dispositivo Altera Cyclone II EP2C35F672C6.

2.1. Atividades Pr-Laboratrio


a) Especificao do Projeto: Projetar o circuito da calculadora que segue o diagrama de blocos da
figura 2.1 abaixo. Ele consiste de um registrador A que armazena o valor do ltimo resultado e um
somador binrio. Uma das entradas do somador vem do registrador deslocador A e a outra de chaves
de entrada ENT. Todos os dados tem 4 bits.

Figura 1.3 Diagrama de blocos do circuito da calculadora.


As operaes deste circuito so controladas por sinais de entrada:

reset: zera o valor do registrador deslocador A (ativo em baixo);


clock: sinal de clock do registrador;
modo: sinal de controle do registrador.

O modo de funcionamento do registrador deslocador A segue a tabela abaixo:


Modo

Descrio

00

Carrega valor da entrada

01

Desloca para a esquerda

10

Desloca para a direita

11

Mantm o valor

2.2. Implementao do Projeto Exemplo


b) Usando o software Quartus II, implemente o projeto da calculadora na placa de desenvolvimento DE2
da Altera com a seguinte designao de sinais do projeto:

IN[0..3] : chaves SW0 a SW3


modo : chaves SW16 e SW17
reset : boto KEY2
clock : boto KEY3
saida[0..3] : leds verdes LEDG0 a LEDG3

Calculadora Simples em VHDL (2014)

DICA: lembrem-se que os botes na placa DE2 so ativos


em baixo. O projeto deve levar isto em considerao. Use
a tabela de designao de pinos da placa DE2.

EPUSP PCS 2308/2355 Laboratrio Digital

c)

Realizar a simulao do circuito projetado com vrios conjuntos de entrada. Anexe as formas de onda
no planejamento.

2.3. Operao do Circuito


Agora o grupo deve desenvolver programas (sequncia de sinais) para realizar algumas computaes
descritas abaixo.
d) Considere a seguinte sequncia de instrues:
Reset

-- zera registrador deslocador A

Carrega 5 em A

-- soma 2

Soma 00012

-- soma 1

Multiplica por 2

-- desloca para a esquerda

e) Qual deve ser o resultado final em A (registrador deslocador) aps a execuo desta sequncia?
f)

Execute os comandos no circuito projetado. Anote os resultados obtidos no relatrio.

g) Desenvolver um plano de execuo para os seguintes clculos:


F1 = A + B + C
F2 = ((A * 2) + B) / 4
h) Elaborar uma tabela contendo todos os sinais que devem ser ativados para a execuo de cada
plano.
i)

Executar cada plano para pelo menos um conjunto de valores positivos.

2.4. Modificao do Projeto Base


j)

Uma pequena modificao ou adaptao do projeto base ser solicitada aos alunos. Esta modificao
dever ser implementada no circuito projetado pelo grupo. A descrio e a documentao desta
modificao devem ser includas no relatrio.

2.5. Atividades Ps-Laboratrio


k) Aps a concluso das atividades programadas, responda as perguntas abaixo:

1.

Como possvel acrescentar uma operao de subtrao neste circuito?

2.

Comente sobre a facilidade no uso de uma linguagem de descrio de hardware para modificar o projeto da calculadora
para usar dados de entrada de 32 bits em comparao com a estratgia de projeto com captura esquemtica.

3.

Mostre uma aplicao deste circuito.

4.

Como a sada do circuito poderia ser ligada em um display de sete segmentos? Descreva sua implementao.

3. BIBLIOGRAFIA
1. ALTERA. Quartus II Introduction Using VHDL Designs. University Program. 2010. Disponvel em:
ftp://ftp.altera.com/up/pub/Altera_Material/9.1/Tutorials/VHDL/Quartus_II_Introduction.pdf

2. DAMORE, R. VHDL - Descrio e sntese de circuitos digitais. 2 edio, LTC, 2012.


3. MIDORIKAWA, E. T. Multiplicador binrio. Apostila de Laboratrio Digital, verso 2004.
4. MIDORIKAWA, E.T. Introduo s Linguagens de Descrio de Hardware. Apostila de PCS2304,
2007.
5. PCS-EPUSP. Calculadora Simples. Apostila de Laboratrio Digital, Escola Politcnica da USP, 2008.

Calculadora Simples em VHDL (2014)

EPUSP PCS 2308/2355 Laboratrio Digital

6. RANZINI, E.; HORTA, E. L.; MIDORIKAWA, E. T. Projeto de circuitos com MAX+PLUS II. Apostila
de Laboratrio Digital. Departamento de Engenharia de Computao e Sistemas Digitais, Escola
Politcnica da USP. 2002.
7. RANZINI, E.; HORTA, E. L. Introduo aos Dispositivos Lgicos Programveis. Apostila de
Laboratrio Digital. Escola Politcnica da USP, 2000 (reviso em 2011).
8. TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Digital Systems: principles and applications. 11th ed.,
Prentice-Hall, 2011.

4. EQUIPAMENTOS NECESSRIOS

1 placa de desenvolvimento FPGA DE2 da Altera com o dispositivo Altera Cyclone II EP2C35F672C6.

1 computador PC com programa Altera Quartus II e interface USB.

Histrico de Revises
E.T.M./2012 verso inicial.
E.T.M./2013 reviso.
E.T.M./2014 reviso.

Calculadora Simples em VHDL (2014)

10