Você está na página 1de 4

Contador Sncrono

LD31A Lgica Digital

Contador Sncrono
Eduardo Vinicius Kempf, Juliana Iora
Universidade Tecnolgica Federal do Paran UTFPR COINT Coordenao de Tecnologia em Sistemas para Internet Campo Mouro, Paran, Brasil Campo Mouro, Paran, Brasil
julianaiora@hotmail.com edukempf@hotmail.com

Resumo
O trabalho ir abordar a resoluo de um Contador Sncrono que realize uma determinada seqncia de contagem. A seqncia proposta a ns foi:

Introduo
Foi proposto que desenvolvssemos o projeto de um Contador Sncrono por meio da ferramenta HADES e atravs da linguagem VHDL para a realizao da seqncia de contagem: . Ao longo do projeto para facilitar o entendimento o contedo estar dividido em sees. A seo 2 traz como tema "Linguagem VHDL" descrevendo o motivo da criao da linguagem e seus componentes. A seo 3 traz como tema "Contador sncrono" e descreve e define um Contador sncrono com exemplos prticos do mesmo. Figura 1:Etapas de um projeto utilizando VHDL (fonte:http://www.vhdl.com.br/index.php) Nessa linguagem existem os comentrios para permitir o entendimento do projeto escrito depois de dois traos.

1. Linguagem VHDL
Essa linguagem foi criada, pois havia a necessidade de um padro para a troca de informaes entre fornecedores de equipamentos para o Departamento de Defesa dos Estados Unidos. Ela difere das linguagens de programao de software porque os comandos envolvidos em um mesmo evento acontecem simultaneamente. Figura 2: Trecho de cdigo com exemplo de comentrios. (fonte:http://www.vhdl.com.br/index.php)

Existem as entidades que podem representar uma simples porta lgica ou um sistema completo e composta de duas partes: declarao da entidade e arquitetura, a declarao da entidade define a interface com o ambiente externo como as entradas e sadas. A Figura 3 mostra a declarao dos 4 modos de porta, so eles: In(entrada), Out(sada), Buffer( sada que controla sinal interno) e Inout (porta bidirecional). 1

Contador Sncrono
10 0

LD31A Lgica Digital


1 0 1 0 0 0 0

Como na figura 3:

Por meio da tabela 1, devemos construir um nova tabela para que possamos obter os valores das entradas J e K referentes aos FlipFlops, e para tanto devemos utilizar a tabela abaixo, tabela esta que compreende as relaes entre as entradas e sadas. Tabela 2: Relao entre a sada e a entrada
Qa Qf 0 1 0 1 J 1 0 X X K X X 1 0

Figura 3: Exemplo de cdigo com entradas e sadas (fonte: http://www.vhdl.com.br/index.php) A arquitetura possui a parte lgica da entidade utilizando suas entradas e sadas. Ainda possvel declarar sinais internos dentro da arquitetura, estes sinais so chamados classes como Constant, Variable e Signal.

0 0 1 1

2. 3. Contador Sncrono
Para que um contador seja sncrono, todos os FlipFlop devem ser funcionar ao mesmo tempo (sincronamente) pelo mesmo clock, e para tanto necessrio um circuito que controle as entradas

Com o auxilio da tabela 2, podemos agora obter os valores dos Js e dos Ks, valores estes que esto demonstrados na tabela 3-se relacionar os estados da sada em funo das entradas, e com isso obteve-se a tabela 3.
Tabela 3: Valores dos Js e Ks N 0 16 3 13 4 11 7 10 j4 1 x 0 0 0 0 0 0 k4 x 1 x x x x x x j3 0 0 1 x 1 x 1 x k3 x x x 1 x 1 x 1 j2 0 0 1 x x 1 x 0 k2 x x x 0 1 x 1 x j1 0 1 x 0 1 x x x k1 x x 1 x x 0 0 1 j0 0 1 x x 1 x x 0 k0 x x 0 1 x 0 1 x

Circuito do Contador no HADES


O contador que deve ser implementado por ns esquemtico utilizando a ferramenta Hades, deve ser capaz de realizar a contagem da seguinte seqncia: 0, 16, 3, 13, 4, 11,7 e 10. A quantidade de FlipFlop est relacionada ao maior numero da contagem, que no caso o 16. Para contar at esse numero necessrio 4 FlipFlop, pois a sua contagem vai ser at o 16, ou seja, 24=16. Para que possamos obter xito em nosso contador necessrio construirmos a tabela verdade, e que a partir dela foram inseridas as possveis entradas dos FlipFlop, para que eles gerem as sadas esperadas pelo contador.
Tabela 1: Tabela Verdade Estado Atual N 0 16 3 13 4 11 7 Q3 0 1 0 0 0 0 0 Q2 0 0 0 1 0 1 0 Q1 0 0 0 1 1 0 1 Q0 0 0 1 0 0 1 1 Q3+ 0 0 1 1 0 1 1 Prximo Estado Q2+ 1 0 0 0 0 0 0 Q1+ 0 0 1 0 1 0 1 Q0+ 0 0 1 1 0 1 0

Aps a construo da tabela 3, que representa a tabela verdade da seqncia de nmeros a serem contados, foram feitos mapas de karnaugh para cada varivel de entrada, que no caso o J e o K de cada Q, para encontrar seus valores, os mapas mencionados esto abaixo representados:

Contador Sncrono

LD31A Lgica Digital


Com os valores obtidos, fizemos o circuito no Hades, no qual foi usado um clock que dispara os FlipFlops simultaneamente, e um Reset para ativar as ligaes. Podemos visualizar isso por meio da figura5.

3.

Figura 4: Circuito no Hades

Descrio do Contador no VHDL


Usamos a entidade OR com duas entradas e entidades AND com duas, trs e cinco entradas que j havamos utilizados em trabalhos anteriores, porm mudamos o tipo das variveis para std_logic para se adequarem aos novos tipos de entrada. Tambm usamos o JKFF que estava disponibilizado no moodle para o construo do contador. Para fazer o contador foi utilizado a biblioteca ieee, e os pacotes ieee.std_logic_1164.all , use ieee.std_logic_unsigned.all e use ieee.std_logic_arith.all , pois vrios comados que utilizamos no fazem parte da biblioteca padro. S declaramos duas variveis std_logic de entradas, que no caso foram o clock e o reset, pois ambos so o que comandam o funcionamento do contador. E uma varivel std_logic_vector de cinco posies com o nome de val para armazenar a sada. Tabela 4: Tabela Verdade de Teste Clock 0 1 0 1 0 1 0 1 0 1 Rest 1 0 0 0 0 0 0 0 0 0 Q 00000 00000 10000 10000 00011 00011 01101 01101 00100 00100

Contador Sncrono
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 01011 01011 00111 00111 01010 01010 00000 00000 10000 10000 00000 00000 10000 10000 00011 00011

LD31A Lgica Digital

Figura 5: GTKWave do contador

Concluses
Atravs da execuo do trabalho, apesar de encontrarmos certas dificuldades com erros no decorrer do mesmo, superamos essas limitaes e pudemos aprimorar os nossos conhecimentos na rea de Lgica Digital desenvolvendo o somador sncrono na linguagem VHDL e no HADES e dessa forma colocamos em prtica os conhecimentos obtidos em sala, aprimoramos e aprendemos ainda mais.

A tabela 4 foi usada como a tabela de teste no TESTBENCH do contador , nela o valor do clock alternado de 0 e 1, o reset fica em 0 e os valores de Q ficam variando e em 1 para resetar o contador. Aps feito a descrio estrutural dos componentes(AND2, OR2, AND5, AND3, JKFF) chamando os mesmo de forma estrural no arquivo projetob.vhd e o TESTBENCH do contador, no terminal do Linux foi dado o comando make all, que resultou no diagrama de ondas no GTKWave, que pode ser visto na figura 5.

Referncias
[1] DAMORE, Roberto. VHDL. Disponvel em: <http://www.vhdl.com.br/index.php> Acesso em: 03 dezembro.2011