Sie sind auf Seite 1von 5

QUARTO LABORATRIO DE SISTEMAS DIGITAIS

Jos Elwyslan Mauricio de Oliveira, Laianna Lana Virginio da Silva


UFS Universidade Federal de Sergipe
Departamento de Engenharia Eltrica
Av. Marechal Rondom, S/N. Jardim Rosa Elze
CEP 49100-000 So Cristovo SE
elwyslan@gmail.com, laiannalana@gmail.com

Resumo: Este artigo descreve o desenvolvimento da questo


proposta no quarto laboratrio da disciplina de sistemas
digitais, do semestre 2014.2, da Universidade Federal de
Sergipe. Foi desenvolvido um mostrador de um relgio de
pulso que fornece quatro informaes: hora atual, alarme,
cronmetro e data. Todos os componentes foram descritos
usando a linguagem de descrio de hardware Verilog, no nvel
de modelagem comportamental, com a IDE ISE Design Suite e
sendo testados na plataforma de desenvolvimento para FPGA
Nexys2.
Palavras Chaves: maquina de estados, relgio de pulso.
Abstract: This article describes the development of the
question posed in the fourth laboratory discipline of digital
systems, the semester 2014.2, Federal University of Sergipe.
Current time, alarm, stopwatch and date: a dial of a watch that
provides four information was developed. All components
were described using the hardware description language
Verilog, the level of behavioral modeling, with the IDE ISE
Design Suite and being tested in development platform for
FPGA Nexys2.
Keywords: machine states, wristwatch.

INTRODUO

Um FPGA (Field Programmable Gate Array, em portugus


Arranjo de Portas Programvel em Campo) um circuito
integrado projetado para ter suas funes configuradas por um
consumidor ou projetista aps a fabricao.[1] Seu circuito
consiste de um grande arranjo de clulas lgicas ou blocos
lgicos configurveis contidos em que cada clula possui a
capacidade computacional para implementar funes lgicas e
realizarem roteamento e interconexes entre si.[1]
O desenvolvimento de projetos para FPGA geralmente feito
usando alguma linguagem de descrio de hardware (HDL),
que uma limguagem usada para descrever a estrutura e o
comportamento de circuitos eletrnicos, mais comulmente, de
circuitos digitais. As HDLs mais usadas so o Verilog, VHDL
e o System-C.[2]
O Verilog uma das HDL utilizadas para descrever circuitos
digitais. Esta descrio pode ser feita em vrios nveis de
abstrao diferentes, um dos nveis de abstrao suportados
pelo Verilog a modelagem comportamental. Neste nvel de
modelagem o Verilog fornece aos projetistas a habilidade para
descrever a funcionalidade do projeto de uma forma
algortmica.[3]
O Xilinx ISE uma ferramenta de software desenvolvido pela
companhia americana Xilinx para sntese e anlise de projetos

de circuitos digitais utilizando diversas ferramentas, inclusive


HDLs. Est IDE possibilita o desenvolvedor de Intellectual
properties(IP) sintetizar(compilar) seus projetos, realizar
anlises e simulaes e programar seus projetos em chips
FPGA de maneira simples e rpida.[4]
O Nexys2 uma plataforma de desenvolvimento para FPGA
desenvolvida pela Digilent. Na Nexys2 encontram-se diversos
componentes como displays de sete segmentos, chaves, botes,
headers de pinos, mmorias flash, porta serial, sada VGA e
muitos outros componentes, todos eles ligados ao pinos do
FPGA da Xilinx Spartan-3E XC3S500E. Todos esses
componentes
conectados
ao
FPGA
auxiliam
os
desenvolvedores e projetistas em seus projetos.[5]
Uma mquina de estados finitos (FSM) uma modelagem de
um comportamento composto por estados, transies e aes.
Um estado armazena informaes sobre o passado. Uma
transio indica uma mudana de estado e descrita por uma
condio que precisa ser realizada para que a transio ocorra.
Uma ao a descrio de uma atividade que deve ser
realizada em determinado momento[6]. Uma mquina de
estados finitos pode ser vista como um sistema sequencial onde
o nmero de estados so finitos e as entrada e sadas so
consideradas em instantes de tempo discretos que so definidos
por pulsos de um sinal de sincronizao chamado clock. [6]
Neste contexto, este artigo descreve o desenvolvimento de um
mostrador de um relgio de pulso. Todos os modulos foram
feitos usando a modelagem comportamental com mquina de
estados do Verilog. Essa questo visa a aplicao prtica dos
conceitos estudados em sala de aula sobre mquinas de estados
finitos em Verilog.
Alm desta introduo, este artigo est dividido em mais trs
sees. Na seo dois apresentada a experincia
desenvolvida. Na seo trs so descritas as criatividades
feitas. Na seo quatro so discutidas as consideraes finais e
feita a concluso do artigo.

QUESTES

Neste laboratrio foi projetado o mostrador de um relgio de


pulso que fornece quatro informaes: hora atual, alarme,
cronmetro e data.
Cada uma das quatro informaes a ser exibida pelo relgio de
pulso foi tratada como um mdulo: moduloHora,
moduloAlarme, moduloCronometro, moduloData.
O relgio de pulso descrito por uma mquina de estados, que
controla qual o estado atual do sistema e por consequncia qual
a sada do display. A mquina de estados referente ao relgio
de pulso pode ser vista na Figura 01.

dos pontos decimais dos displays de sete segmentos. A


mquina de estados mostrada na Figura 01 gerencia qual dessas
sadas exibida para usurio a depender do estado que o
sistema est. Isso feito utilizando um multiplexador para as
sadas geradas pelo subsistema. A Figura 04 ilustra este
processo.

Figura 01 Mquina de Estados do Relgio em que:


Hor = moduloHora; Ala = moduloAlarme; Cro =
moduloCronometro; Dat = moduloData; B a entrada boto2.

Para tratar a trepidao dos botes e para simplificar a


quantidade de estados das mquinas de estados que sero
abordadas neste relatrio, foi necessrio a utilizao de dois
modulos para as entradas: Debounce e DetectorDeBorda.
O mdulo Debounce tira a trepidao do boto. A mquina de
estados deste pode ser vista na Figura 02. O clock utilizado foi
de 25 Hz, visto que a trepidao tem durao de 20 a 30 ms.

Figura 04 Multiplexador que define qual sada ser exibida para o


usurio.

O mdulo DetectorDeBorda (ED) detecta quando a entrada


passa do nvel lgico 0 ao nvel lgico 1. A mquina de estados
do ED pode ser vista na Figura 03.

Os quatro mdulos do relgio de pulso sero discutidos nas


prximas seces.

2.1

Hora atual

O subsistema instanciado pelo moduloHora o responsvel por


armazenar a hora atual e definir um novo horrio escolha do
usurio. Este subsistema possui quatro estados:

Figura 02 Mquina de Estados do Debounce onde o estado A


representa o estado lgico da entrada em 0 e o estado B representa o
estado lgico da entrada em 1.

FUNCIONAMENTO_NORMAL:
relgio funciona normalmente.

FAST_CLOCK: Neste estado o relgio funciona com


um clock de 1000 Hz.

EDITAR_MINUTO: Neste estado o usurio pode


definir o minuto que o relgio marca.

EDITAR_HORA: Neste estado o usurio pode definir


a hora que o relgio marca.

Neste

estado

Os sinais de entrada que esto disposio do usurio so:

Figura 03 Mquina de Estados do DetectorDeBorda onde o estado


A representa o estado lgico onde a entrada 0; o estado B
representa o estado em que a entrada faz a transio do estado lgico
0 para 1; o estado C representa que a entrada continua no estado
lgico 1.

Cada um dos subsistemas responsveis pelas funes de: hora


atual, alarme, cronmetro e data geram, obrigatoriamente, trs
sadas. Uma sada com largura de 16 bits que ser destinada
aos displays de sete segmentos, uma sada de 6 bits destinada
para 5 LEDS e uma sada de 4 bits destinada para o controle

ClockBotoDB: Boto usado pelo usurio para gerar


pulsos de clock para o relgio nos estados
EDITAR_MINUTO e EDITAR_HORA, nos outros
estados este boto no possui funcionalidade.

BotaoMudaEstadoDB: Boto usado pelo usurio para


mudar o estado do subsistema. A lgica de transio
dos estados pode ser vista na figura 05.

BotaoAMPM: Boto usado para modificar o formato


da hora exibida entre AM/PM ou 24 horas.

Reset: Responsvel por resetar o subsistema.

SW7: Responsvel por levar o subsistema ao estado de


FAST_CLOCK.

A lgica de transio dos estados do subsistema pode ser vista


na Figura 05.

Reset: Responsvel por resetar o subsistema.

btnSET: Responsvel por mudar os estados do


subsistema. A lgica de transio dos estados pode ser
vista na Figura 06.

A lgica de transio dos estados pode ser visto na figura x.

Figura 05. Mquina de Estados do susbsistema moduloHora.

Na Figura 05 o Btn_ME o sinal gerado pelo


BotaoMudaEstado, SW7 o valor lgico da chave SW7 (0 ou
1), o estado FastC o FAST_CLOCK, o estado F_N o
FUNCIONAMENTO_NORMAL, o estado E_M o
EDITAR_MINUTO e o estado E_H o estado EDITAR_HORA.
O
subsistema
comea
no
estado
FUNCIONAMENTO_NORMAL
marcando
00:00.
Ele
permanece neste estado at o usurio pressionar o
BotaoMudaEstado. Quando isto acontece o subsistema pode: ir
para o estado FAST_CLOCK, caso a chave SW7 esteja em nvel
lgico 1, e neste estado o relgio passa a funcionar com um
clock de 1000 Hz, ou ir para o estado EDITAR_MINUTO. No
estado EDITAR_MINUTO o usurio pode editar qual minuto o
relgio marca por meio do ClockBotao. O subsistema
permanece neste estado at que o BotaoMudaEstado seja
pressionado, quando isto acontece o estado passa a ser
EDITAR_HORA. No estado EDITAR_HORA o usurio pode
editar qual hora o relgio marca por meio do ClockBotao. O
subsistema
permanece
neste
estado
at
que
o
BotaoMudaEstado seja pressionado novamente.
Um esquema do circuito criado pode ser visto no apndice A.
Descrito o funcionamento moduloHorario veremos na proxima
seco a descrio do moduloAlarme.

2.2

Alarme

O subsistema instanciado pelo moduloAlarme o responsvel


por armazenar um horrio e, quando o relgio do sistema
marcar o mesmo horrio que foi armazenado, e, o alarme
estiver armado, o subsistema emitir um sinal ao usurio
indicando este evento. Este subsistema possui quatro estados:

SET_ALARME: Neste estado o usurio


armazenar qualquer horrio no alarme.

ALARME_ARMADO: Neste estado o alarme fica


armado, aguardando que o horrio do sistema seja o
mesmo quele armazenado durante o estado de
SET_ALARME.

pode

ESTOURO_ALARME: Neste estado o relgio do


sistema atingiu o horrio armazenado e est emitindo
o sinal de alerta, indicando este evento para o usurio.

Os sinais de entrada que esto a disposio do usurio so:

ClockBotoDB: Boto usado pelo usurio para gerar


pulsos de clock para o alarme no estado
SET_ALARME, nos outros estados este boto no
possui funcionalidade.
BotaoMudaEstadoDB: Boto usado pelo usurio para
mudar o estado do alarme durante o estado
SET_ALARME.
BotaoAMPM: Boto usado para modificar o formato
da hora exibida entre AM/PM ou 24 horas.

Figura 06. Maquina de estados do moduloAlarme.

Na Figura 06, btnSET o sinal gerado pelo btnSET e estouro


o sinal interno, gerado pelo prprio mdulo, quando a hora do
sistema igual a hora armazenada no alarme. O estado S_A
representa o estado SET_ALARME, o estado AA o
ALARME_ARMADO e o estado E_A o ESTOURO_ALARME.
O subsistema inicia no estado SET_ALARME. Durante este
estado o usurio pode utilizar o ClockBotao e o
BotaoMudaEstado para definir o horrio de estouro do alarme.
Quando o alarme estiver setado a flag SETADO sera igual a
1, caso contrario sera igual a 0. O sistema s saira do estado
SET_ALARME se a flag SETADO for igual a 1 e o usurio
pressionar o btnSET, quando isto acontece o sistema passa para
o estado ALARME_ARMADO. Neste estado o usurio no
podera mais modificar o horrio de estouro do alarme a no ser
que seja pressionado o btnSET, caso isto ocorra o sistema volta
para o estado SET_ALARME. Caso btnSET no seja ativado o
sistema ir permanecer no estado ALARME_ARMADO at o
momento que o horrio do sistema seja igual ao horrio
armazenado, quando isto acontece o sistema passa para o
estado ESTOURO_ALARME. Neste estado o subsistema ativa
um buzzer e acende um LED para avisar o usurio que o
alarme estourou. O sistema permanece neste estado enquanto o
horrio do sistema for igual ao horrio armazenado ou at o
usurio pressionar o btnSET, basta um desses eventos ocorrer
para o sistema voltar para o estado SET_ALARME.
Descrito o funcionamento moduloAlarme veremos na prxima
seo a descrio do moduloCronometro.

2.3

Cronmetro

Quando o relogio de pulso est no modo Cronmetro o relgio


ir medir pequenos intervalos de tempo, funcionando da
seguinte maneira:

Ao selecionar o moduloCronmetro a contagem est


inicialmente em zero.

Para que a contagem tenha inicio necessrio que a


chave0 tenha nvel lgico 1.

Aps a contagem ser iniciada ela pode ser pausada


voltando a chave0 para o nvel lgico 0.

Para resetar o valor do cronometro e comear a


contagem do zero o boto0 deve ser pressionado.

O
terceiro
modulo
MaquinaDeEstadosCronometro,
SaidaCronometro.

composto
Figura
07,
e

da
da

CRIATIVIDADES

Nesta seo sero apresentadas as criatividades implementadas.

3.1

Figura 07 Mquina de Estados do Cronmetro, onde o estado


L representa o cronmetro ligado, o estado P representa o
cronmetro pausado e k a entrada chave0.

2.4

Data

No modo Data o relgio de pulso armazena uma data escolhida


pelo usurio. O funcionamento do moduloData descrito
abaixo:

Ao selecionar o moduloData pela primeira vez uma


data pre definida mostrada no display, de forma que
o display fica alternando entre dia/ms/ano a cada
segundo.

Para trocar a data o boto1 deve ser pressionado,


mudando o estado do moduloData para setAno.

No estado setAno o boto0 deve ser pressionado para


escolher o ano desejado.

Quando o boto1
pressionado novamente o
moduloData entra no estado setMes, se este for
pressionado novamente ir entrar no estado setDia.

Primeira Questo

Foram feitas duas criatividades para o relgio de pulso. A


primeira, foi a adio de um buzzer para o alarme. Quando a
hora definida para o alarme igual a hora atual do relgio de
pulso o buzzer emite um aviso sonoro.
A outra criatividade foi adicionar duas chaves, chv_formato e
chv_AMPM, que mudam o formato de sada das horas de:
00:00h as 23:59h para 00:00 as 12:00 AM/PM.
Quando a chave chv_formato no pressionado a sada da hora
no display dada no formato 00:00h as 23:59h, quando este
pressionado a sada dada no formato 00:00 as 12:00.
Caso a chave chv_formato esteja ligada e a chv_AMPM seja
pressionada o display ir exibir a informao de AM/PM.

CONCLUSES

A partir do desenvolvimento das questes propostas, foi


possvel praticar os conceitos visto em sala de aula
relacionados a modelagem comportamental com mquina de
estados presente no Verilog.
Com a utilizao desse nvel de abstrao foi adquirido o
conhecimento a cerca da sua utilizao, suas limitaes e
tambm as vantagens desse tipo de abordagem.
Por descrever o algoritmo atravs de um diagrama de estados
bem definido, a utilizao de mquina de estados torna a
descrio em Verilog menos trabalhosa.

Assim como no estado setAno, no estado setMes e


setDia, ao pressionar o boto0 o valor destes podem
ser escolhidos.

Desta forma a experincia foi bastante proveitosa e pudemos


alcanar os objetivos pretendidos.

Pressionando o boto1 outra vez o moduloData volta


ao estado mostrarData, exibindo no display a data
escolhida pelo usurio.

REFERNCIAS BIBLIOGRFICAS

O quarto modulo composto da MaquinaDeEstadosData,


Figura 08, e da SaidaData.
Na MaquinaDeEstadosData feita as trasies de estado do
moduloData. Na SaidaData tratado a sada do moduloData
que ser exibida no display.

[1] Field-programmable gate array. Disponvel em:


<http://pt.wikipedia.org/wiki/Field-programmable_gate_array
>. Acesso em: 07 de Novembro de 2014, 10h07min.
[2] Hardware description language. Disponvel em:
<http://en.wikipedia.org/wiki/Hardware_description_language
>. Acesso em: 07 de Novembro de 2014, 10h25min.
[3] Modelagem Comportamental. HIDALGO, Antonio.
[4]
Xilinx
ISE.
Disponvel
em:
<http://en.wikipedia.org/wiki/Xilinx_ISE>. Acesso em: 07 de
Novembro de 2014, 10h38min.

Figura 08 Mquina de Estados do moduloData, onde: MD =


mostrarData; sA = setAno; sM = setMes; sD = setDia; D a
entrada chave1.

[5]
Nexys2.
Disponvel
em:
<http://www.digilentinc.com/Products/Detail.cfm?NavTop=2&
NavSub=451&Prod=NEXYS2&CFID=6634746&CFTOKEN=
abbdfdcf506fdb5f-6C8DC1D3-5056-0201020BB3F7D31CDDA0>. Acesso em: 07 de Novembro de
2014, 10h50min.
[6] Mquina de Estados. LIMA, Jos. Disponvel em: <
www.di.ufpb.br/jose/aula18.pp>. Acesso em: 19 de Fevereiro
de 2015, 17h44min.

Apndices
Apndice A.

O pulso de RESET o mesmo para cada um dos contadores.

CTRL1:
o
o
o

No estado FUNCIONAMENTO_NORMAL faz com que o clock de 1 Hz entre no contador de segundos;


Nos estados EDITAR_MINUTO e EDITAR_HORA selecionado o canal GND e nenhum clock enviado ao
contador;
No estado FAST_CLOCK faz com que o clock de 1000 Hz entre no contador de segundos.

CTRL2:
o No estado FUNCIONAMENTO_NORMAL e FAST_CLOCK faz com que o clock gerado pelo contador de segundos
passe para entrada do contador de minutos.
o No estado EDITAR_MINUTO faz com que o clock gerado pelo boto entre no contador de minutos;
o No estado EDITAR_HORA selecionado o canal GND e nenhum clock enviado ao contador.

CTRL3:
o No estado FUNCIONAMENTO_NORMAL e FAST_CLOCK faz com que o clock gerado pelo contador de minutos
passe para entrada do contador de horas.
o No estado EDITAR_MINUTO selecionado o canal GND e nenhum clock enviado ao contador;
o No estado EDITAR_HORA faz com que o clock gerado pelo boto entre no contador de horas.

Das könnte Ihnen auch gefallen