Buscar

Relatório Técnico - Sistemas Lógicos - ENGC26 - UFBA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal da Bahia
Escola Polite´cnica
Relato´rio das atividades
Erick Suzart
Felipe Duarte
Gustavo Felipe
Laurinne Oliveira
Rodrigo Peixoto
ENGC26 - Sistemas Lo´gicos
Prof: Wagner L. A. Oliveira
Salvador
2019
Introduc¸a˜o:
O trabalho consta em implementar 4 questo˜es, dentre as questo˜es 1 a` 10, da segunda
lista de exerc´ıcios na placa DE2-115, atrave´s do software Intel Quartus Prime e simular o
comportamento do circuito atrave´s do ModelSim.
Cada questa˜o escolhida prestara´ o seu enunciado, a resoluc¸a˜o feita, o modelo do circuito
montado e casos de testes para verificac¸a˜o.
Questa˜o 1 da lista:
Enunciado:
Deseja-se construir o controlador de um roboˆ capaz de acompanhar um muro. As figuras
1 e 2 ilustram o problema.
Figura 1: Campo de testes do roboˆ.
Figura 2: Comportamento exigido: dobrar o muro.
Na figura 1 o mundo do roboˆ e´ uma matriz de ce´lulas, na qual cada componente e´ livre
(ce´lulas brancas) ou ocupado por um muro (ce´lulas escuras). O roboˆ, mostrado como um
triaˆngulo, e´ colocado em qualquer ce´lula livre, respeitando uma das direc¸o˜es paralelas ao
gradeado da matriz (horizontal ou vertical), com sua frente voltada para qualquer um dos
4 sentidos poss´ıveis (Norte, Sul, Leste ou Oeste). O roboˆ possui 2 sensores bina´rios: head
(sensor situado na frente do roboˆ, que retorna 1 quando a ce´lula situada a` frente do roboˆ esta´
ocupada por um muro – caso contra´rio, retorna 0) e left (sensor situado na lateral esquerda
do roboˆ, que retorna 1 quando a ce´lula do lado esquerdo do roboˆ e´ ocupada por um muro -
caso contra´rio, retorna 0).
Em relac¸a˜o a` movimentac¸a˜o, o roboˆ e´ capaz de fazer apenas 2 tipos de movimento:
avanc¸ar para uma ce´lula livre a` sua frente ou rotacionar 90º para a esquerda, mantendo-se
1
na mesma ce´lula em que se encontra. Cada movimento consome 1 pulso de clock. Ao ligar
o roboˆ, 4 casos sa˜o poss´ıveis, os quais devera˜o ser tratados como segue:
CASO.1 roboˆ em uma a´rea livre (ambos sensores retornando 0). Neste caso, o roboˆ devera´
avanc¸ar ate´ o encontro de um muro e acompanha´-lo, dando-lhe o lado esquerdo;
CASO.2 roboˆ com muro a` frente e do lado esquerdo (ambos sensores retornando 1). Neste
caso, o roboˆ devera´ rotacionar ate´ encontrar um muro a` sua esquerda que possa
ser acompanhado;
CASO.3 roboˆ com muro somente a` frente (head = 1, left = 0). Mesmo comportamento
do caso 2;
CASO.4 roboˆ com muro somente a` esquerda (head = 0, left = 1). Neste caso, roboˆ
acompanhara´ o muro.
Em qualquer dos casos citados, o roboˆ devera´ acompanhar o muro ate´ que um novo muro
seja encontrado ou ate´ que o muro dobre a` esquerda, como na figura 2, fazendo com que
o roboˆ tambe´m dobre a` esquerda e prossiga. Como regra priorita´ria, apo´s cada rotac¸a˜o, se
houver um muro a` esquerda do roboˆ, este devera´ ser acompanhado.
a) Fac¸a o diagram de estados que representa o comportamento esperado do roboˆ;
b) Obtenha a tabela de estados correspondente ao item a), explicitando os co´digos asso-
ciados a cada estado.
c) Considerando a tabela do item b) e todas as especificac¸o˜es do problema, construa o
circuito correspondente, fazendo as otimizac¸o˜es por Mapa de Karnaugh.
2
Resoluc¸a˜o:
Ma´quina de Estados Finitos (FSM):
Tipo de FSM: neste exerc´ıcio foi adotada a ma´quina de estados de Mealy.
O exerc´ıcio foi resolvido utilizando-se treˆs estados, onde head = H e left = L. As sa´ıdas
da FSM foram definidas como A = andar e G = girar 90º. Como utilizamos apenas 3
estados, e´ necessa´rio 2 varia´veis de estado (1) que foram definidas como B e C codificadas
em bina´rio.
Nestados ≥ log2 4 ≥ 2 (1)
Figura 3: Diagrama da ma´quina de estados adotada.
Na resoluc¸a˜o deste exerc´ıcio notou-se uma inconsisteˆncia na elaborac¸a˜o do texto do
CASO.3 pois o texto sugere que a situac¸a˜o seja abordada tal como no CASO.2 (figura
4).
3
(a) Roboˆ seguindo
o muro e encontra
parede a sua frente
e ao lado.
(H = 1, L = 1)
(b) Roboˆ girou e
encontra uma
parede a sua frente.
(H = 1, L = 0)
(c) Roboˆ girou e
na˜o encontra
nenhuma parede.
(H = 0, L = 0)
(d) Roboˆ girou e
finalmente
encontra parede a
sua esquerda,
devendo segui-la.
(H = 0, L = 1)
Figura 4: Situac¸a˜o problema de girar quando encontrar paredes a
frente e aos lados. Nesse exemplo o roboˆ esta´ vindo do quadrado
G2 da esquerda para direita.
Pore´m, caso abordado como sugerido o comportamento do roboˆ sera´ como exemplificado
na figura 5 e ele fara´ uma volta, e na˜o uma curva como desejado.
(a) Roboˆ seguindo muro e
encontra uma parede a sua
frente.
(H = 1, L = 0)
(b) Roboˆ girou e na˜o
encontra nenhuma parede a
sua frente.
(H = 0, L = 0)
(c) Roboˆ girou e finalmente
encontra parede a sua
esquerda, devendo segui-la.
(H = 0, L = 1)
Figura 5: Abordagem sugerida, pore´m equivocada e levara´ o roboˆ
a na˜o seguir de forma correta os muros. Nesse exemplo o roboˆ
esta´ vindo do quadrado H3 de baixo para cima.
O problema acontece na situac¸a˜o exemplificada nas figuras 4c e 5b pois no estado Girar
(B = 0 | C = 1) – ver figura 3 – e´ lo´gico pensar que quando as entradas sa˜o H = 1 | L
= 0 o roboˆ deve permanecer nesse mesmo estado e continuar girando ate´ que as entradas
sejam H = 0 | L = 1 como na figura 4 e caso estive´ssemos no estado Acompanhar muro
(B = 1 | C = 0) – ver figura 3 – , seguindo a lo´gica sugerida, quando tive´ssemos a entrada
H = 1 e L = 0 iriamos para o estado Girar (B = 0 | C = 1) (figura 4) e devido a isso o
roboˆ iria ter um comportamento errado (figura 5).
A abordagem correta e´ que quando no estado Acompanhar muro (B = 1 | C = 0)
– ver figura 3 – e tivermos como entradas H = 1 e L = 0 o roboˆ tem de dobrar a sua
esquerda, pois ela esta´ livre, tal como exemplificado na figura 6, enta˜o ele devera´ ir para o
estado Procurar muro (B = 0 | C = 0) tendo como sa´ıda A = 0 e G = 1 de forma que
o roboˆ gire entre a troca de estados (figura 6a e 6b) e enta˜o nesse ultimo estado quando as
entradas forem H = 0 e L = 1 ele entra no CASO.4 , como mostra o diagrama de estados
(DE)(figura 3).
4
(a) Roboˆ seguindo muro e
encontra uma parede a sua
frente.
(H = 1, L = 0)
(b) Roboˆ girou e deve seguir
reto ate´ encontrar um muro.
(H = 0, L = 0)
(c) Roboˆ andou e encontra
uma parede a sua esquerda,
devendo seguir o muro.
(H = 0, L = 1)
Figura 6: Situac¸a˜o problema de fazer a curva enquanto acompa-
nha um muro.
Decodificador de Pro´ximo estado (DPE):
Do diagrama de estados – ver figura 3 – extraiu-se as informac¸o˜es referentes a tabela
verdade para o DPE, figura 7.
Figura 7: Tabela verdade para o DPE, dados extra´ıdos do DE
(figura 3).
Foi decidido colocar don’t care (X) como sa´ıdas para o estado B = 1 | C = 1 na tabela
verdade, pois jugou-se que todas as possibilidades foram abarcadas com os estados anteriores.
A partir da tabela verdade (figura 7) montou-se os mapas de Karnaugh para as sa´ıdas do
DPE.
5
(a) MK para Bf (B futuro). (b) MK para Cf (C futuro).
Figura 8: Mapas de Karnaugh das sa´ıdas do DPE. Onde Bf =
H¯L e Cf = B¯H +HL+ CL¯.
Finalmente, poˆde-se montar o circuito no Quartus a partir das equac¸o˜es obtidas dos
mapas de Karnaugh (figuras 8a e 8b).
Figura 9: Circuito combinacional feito para o DPE no Quartus.
Feito o circuito (figura 9), gerou-se o s´ımbolo para o mesmo a ser inserido no top layer
do circuito geral.
6
Decodificador de Sa´ıdas (DS):
Do diagrama de estados – ver figura 3 – extraiu-se as informac¸o˜es referentes a tabela
verdade para o DPE, figura 10.
Figura 10: Tabela verdade para o DS, dados extra´ıdos do DE
(figura 3).
Foi decidido colocar don’t care (X) como sa´ıdas para o estado B = 1 | C = 1 na tabela
verdade, pois jugou-se que todas as possibilidades foram abarcadas com os estados anteriores.
A partir da tabela verdade (figura 10)montou-se os mapas de Karnaugh para as sa´ıdas do
DS.
(a) MK para A (andar). (b) MK para G (Girar).
Figura 11: Mapas de Karnaugh das sa´ıdas do DS. Onde A =
B¯C¯H¯L¯ e G = C¯L+ CH +BL¯.
Finalmente, poˆde-se montar o circuito no Quartus a partir das equac¸o˜es obtidas dos
mapas de Karnaugh (figuras 11a e 11b).
7
Figura 12: Circuito combinacional feito para o DS no Quartus.
Feito o circuito(figura 12), gerou-se o s´ımbolo para o mesmo a ser inserido no top layer
do circuito geral.
8
Registrador:
Como o estado inicial ja´ estava definido no DE (a seta “inicio” indica o estado inicial) –
ver figura 3 – o registrador precisa apenas iniciar como o estado de in´ıcio. A entrada reset
devera´, assim, fazer com que os dois Flip Flops (FF) que representam as varia´veis de estado
B e C iniciem como 0 em B e 0 em C.
O registrador deve receber o Bf e o Cf e ter como sa´ıdas B e C. Optou-se, por simpli-
cidade, em utilizar FF do tipo D.
Figura 13: Circuito combinacional feito para o registrador no
Quartus.
Feito o circuito (figura 13), gerou-se o s´ımbolo para o mesmo a ser inserido no top layer
do circuito geral.
High level:
Com todos os arquivos prontos, aqui so´ se fez inserir os simbolos gerados, ligar todas as
entradas/sa´ıdas de cada bloco, compilar e mapear os pinos de cada entrada/sa´ıda.
Figura 14: Circuito combinacional que inclui todos os blocos
constru´ıdos anteriormente e representa a totalidade do circuito
ilustrado no DE (figura 3) feito no Quartus.
Feito o circuito geral (figura 14), e´ necessa´rio fazer a simulac¸a˜o do mesmo para verificar
se ele resolve o problema proposto.
9
Simulac¸a˜o no ModelSim:
Para fazer a simulac¸a˜o adotou-se escala de nanosegundos (ns) no ModelSim, por pratici-
dade. Adotou-se que o roboˆ demorara´ 1ns para realizar cada ac¸a˜o (andar ou girar), assim
sendo, ele devera´ ter 2ns de tempo de reac¸a˜o para que seja poss´ıvel, por meio do clock de
per´ıodo de 2ns, trocar entre os estados e realizar a ac¸a˜o.
Enta˜o gerou-se as entradas/sa´ıdas do roboˆ andando no mapa 1 para testar se o roboˆ
estaria agindo de acordo com o previsto. Com o mapa gerou-se um script da forma de onda
para cada uma das entradas no ModelSim e fez-se a simulac¸a˜o.
Figura 15: Captura de tela da simulac¸a˜o no ModelSim. Em verde
as entradas (H e L) e o clock, em branco a sa´ıda A, em amarelo
a sa´ıda G e em vermelho o RESET.
Na figura 15 podemos ter uma ideia do comportamento do circuito mas na˜o conseguimos
enxergar direito cada transic¸a˜o.
Figura 16: Captura de tela da simulac¸a˜o no ModelSim com
eˆnfase no nos primeiros 25ns.
Na figura 16 podemos perceber o comportamento do circuito com mais clareza nas en-
10
tradas H = 0 e L = 0 nos frames 0ns → 3ns, 4ns → 8ns, 12ns → 16ns e 20ns → 24ns. Ha´
como verificar as entradas H = 1 e L = 1 nos frames 2ns → 4ns, 8ns → 12ns e 16ns →
20ns. Podemos ainda verificar o comportamento do circuito ao apertarmos o RESET nos
frames 13ns → 22ns.
Figura 17: Captura de tela da simulac¸a˜o no ModelSim com
eˆnfase no nos frames 22ns → 46ns.
Na figura 17 podemos perceber o comportamento do circuito com mais clareza nas en-
tradas H = 0 e L = 1 nos frames 24ns → 26ns, 31ns → 34ns e 44ns → 46n, e´ tambe´m
nota´vel a transic¸a˜o desse estado para o estado H = 0 e L = 0 (indicac¸a˜o de curva) nos
frames 33ns → 36ns.
Figura 18: Captura de tela da simulac¸a˜o no ModelSim com
eˆnfase no nos frames 76ns → 108ns.
Finalmente, na figura 18 podemos perceber o comportamento do circuito ao fazer curva
no estado B = 1 e C = 0 – ver figura 3 – com as entradas H = 1 e L = 0 nos frames 94ns
→ 99ns onde aqui concluiu-se que o circuito esta´ funcionando de acordo com o esperado.
11
Todo o co´digo da questa˜o esta´ na pasta questa˜o 1, dentro desta tem uma pasta denominada
look me que inclui as imagens e materiais extras utilizados neste relato´rio, como a lista de
comandos (arquivo comandos.do) do transcript para o ModelSim.
Comandos:
Os comandos utilizados para simulac¸a˜o com as respectivas entradas utilizadas foram os
seguintes:
1 vsim − i − l ms im transcr ipt work . h i g h l e v e l −t ns
2 f o r c e − f r e e z e sim : / h i g h l e v e l /H 1 0 −cance l 2ns
3 wave c r e a t e −d r i v e r f r e e z e −pattern r epea t e r − i n i t i a l v a l u e 0 −per iod 2ns −
sequence { 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0
0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 } −repeat f o r e v e r −s t a r t t ime 2
ns −endtime 1000 ns sim : / h i g h l e v e l /H
4 wave c r e a t e −d r i v e r f r e e z e −pattern r epea t e r − i n i t i a l v a l u e 0 −per iod 2ns −
sequence { 1 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 0
1 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 } −repeat f o r e v e r −s t a r t t ime 2
ns −endtime 1000 ns sim : / h i g h l e v e l /L
5 add wave −po s i t i o n end sim : / h i g h l e v e l /Andar
6 add wave −po s i t i o n end sim : / h i g h l e v e l /Girar
7 no fo r c e sim : / h i g h l e v e l /Andar
8 no fo r c e sim : / h i g h l e v e l /Girar
9 add wave −po s i t i o n end sim : / h i g h l e v e l /CLOCK
10 f o r c e − f r e e z e sim : / h i g h l e v e l /CLOCK 0 0 , 1 {1 ns} −r 2
11 wave c r e a t e −d r i v e r f r e e z e −pattern r epea t e r − i n i t i a l v a l u e U −per iod 11ns −
sequence { 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} −repeat
f o r e v e r −s t a r t t ime 0ns −endtime 1000 ns sim : / h i g h l e v e l /RESET
12 run
13 run
12
Questa˜o 4 da lista:
Enunciado:
A cidade de Curitiba possui um sistema de oˆnibus urbano bem constru´ıdo. Em avenidas
amplas, ha´ corredores de oˆnibus que usam estac¸o˜es-tubo. O usua´rio entra na estac¸a˜o e
aguarda o oˆnibus, em frente a portas de acesso. Ao estacionar, o motorista aciona um
comando que executa duas etapas, em ordem: 1) bloqueia a ac¸a˜o do acelerador e desce as
rampas de acesso, as quais se encaixam nos va˜os da estac¸a˜o-tubo; e 2) abre as portas do
oˆnibus. Por questo˜es de seguranc¸a, tal comando somente e´ aceito quando o oˆnibus esta´
totalmente parado. Ao sair, o motorista desativa o comando, o que executa as seguintes
etapas, em ordem: 1) fechas as portas; 2) recolhe as rampas; e 3) desabilita o bloqueio da
ac¸a˜o do acelerador. O diagrama abaixo representa a FSM desse circuito. Obtenha o circuito
correspondente.
13
Resoluc¸a˜o:
Ma´quina de Estados Finitos (FSM):
Tipo de FSM: neste exerc´ıcio foi adotada a ma´quina de estados de Mealy.
Como mostrado na imagem o sistema possui duas entradas, Comando (referenciado como
“D” na tabela verdade) e Acelerador (referenciado como “E” na tabela verdade), e treˆs sa´ıdas,
Plataformas, Portas e Bloqueios. Os estados foram enumerados atrave´s de bina´rio sequencial,
totalizando 32 linhas para a tabela, das quais 8 equivaleriam a dois estados adicionais que na˜o
foram utilizadas no desenvolvimento da ma´quina e, portanto, tiveram suas sa´ıdas zeradas e
seus estados futuros todos voltados para o estado inicial para evitar poss´ıveis conflitos.
Criac¸a˜o da tabela:
Devido a utilizac¸a˜o de bina´rio sequencial para enumerac¸a˜o dos estados utilizamos 3 flip
flops para gerar os estados futuros Af, Bf e Cf. A tabela enta˜o foi gerada baseando-se nas
entradas D e E e na enumerac¸a˜o de estados, dando origem assim aos estados futuros e as
sa´ıdas referenciadas na tabela de acordo com a figura 19:
Figura 19: Tabela Verdade.
14
Mapas de Karnaugh:
Baseando-se na tabela verdade a equipe montou os mapas de karnaugh das expresso˜es
Af, Bf, Cf, Plataformas, Portas e Bloqueios para que fossem usados posteriormente na es-
truturac¸a˜o dos circuitos no Quartus:
(a) MK de AF (b) MK de BF
(c) MK de CF (d)MK de Plataforma
(e) MK de Portas (f) MK de Bloqueios
Figura 20: Mapas de Karnaugh para o DPE e o DS.
15
Decodificador de Pro´ximo estado (DPE):
Utilizando a simplificac¸a˜o das expresso˜es atrave´s dos mapas de karnaguh mostrados acima
foram montados os circuitos para o DPE que recebeu as duas entradas Comando (D) e
Acelerador (E) juntamente com as entradas A, B e C definindo o estado atual da ma´quina.
Como sa´ıdas o DPE apresentou os estados futuros Af, Bf, e Cf que se ligariam ao registrador.
Figura 21: Circuito combinacional feito para o DPE no Quartus.
16
Decodificador de Sa´ıdas (DS):
Para a montagem do Decodificador de Sa´ıda, por ser uma maquina de mealy, foram
utilizadas as entradas Comando (D) e Acelerador (E) e os estados futuros Af, Bf e Cf. E a
partir desses resultados o circuito teve como sa´ıdas Plataformas, Portas e Bloqueios.
Figura 22: Circuito combinacional feito para o DS no Quartus.
17
Registrador:
Por possuir um u´nico estado inicial ja´ definido para a confecc¸a˜o do registrador, utilizou-
se o reset para fazer com que os Flip Flops iniciem-se como 0 quando acionado o reset. A
equipe utilizou por praticidade flip flops do tipo D. O registrador possuiu como entradas
as varia´veis Af, Bf, e Cf ligadas a seus respectivos flip flops e que possu´ıram como sa´ıdas
respectivamente A, B e C.
Figura 23: Circuito combinacional feito para o registrador no
Quartus.
High level:
O circuito High Level foi formado a partir da conexa˜o entre DPE, Registrador e o DS,
tendo como entradas Comando (D) e Acelerador (E) e como sa´ıdas Plataformas, Portas e
Bloqueios, ale´m do Clock e do Reset. Todos esses pinos foram por sua vez ligados a` placa
atrave´s do Pin Planner.
Figura 24: Circuito combinacional que inclui todos os blocos
constru´ıdos anteriormente e representa a totalidade do circuito
ilustrado no DE feito no Quartus.
Feito o circuito geral (figura 24), e´ necessa´rio fazer a simulac¸a˜o do mesmo para verificar
se ele resolve o problema proposto.
18
Simulac¸a˜o no ModelSim:
Figura 25: Captura de tela da simulac¸a˜o no ModelSim.
Apo´s a simulac¸a˜o, pode-se constatar que o circuito funciona de acordo com a FSM apli-
cada, pois quando ha´ a inserc¸a˜o da entrada do acelerador simultaneamente com a entrada
do comando, o circuito na˜o executa, e, somente apo´s a entrada de comando ser feita sem a
entrada de acelerador, o circuito e´ executado. Apo´s todo o circuito ser executado, a sa´ıda
de bloqueio e´ desacionada no pulso de clock seguinte.
19
Comandos:
Os comandos utilizados para simulac¸a˜o com as respectivas entradas utilizadas foram os
seguintes:
1 vsim −gui − l ms im transcr ipt work . t o p l e v e l −t ns
2 wave c r e a t e −d r i v e r f r e e z e −pattern constant −value 0 −s t a r t t ime 0ns −endtime
1000 ns sim : / t o p l e v e l /Reset
3 wave c r e a t e −d r i v e r f r e e z e −pattern clock − i n i t i a l v a l u e 0 −per iod 4ns −
dutycyc l e 50 −s t a r t t ime 0ns −endtime 1000 ns sim : / t o p l e v e l /Clock
4 wave c r e a t e −d r i v e r f r e e z e −pattern r epea t e r − i n i t i a l v a l u e 0 −per iod 4ns −
sequence { 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 } −repeat f o r e v e r −s t a r t t ime
0ns −endtime 1000 ns sim : / t o p l e v e l /Ace lerador
5 wave c r e a t e −d r i v e r f r e e z e −pattern r epea t e r − i n i t i a l v a l u e 0 −per iod 4ns −
sequence { 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 } −repeat f o r e v e r −s t a r t t ime
0ns −endtime 1000 ns sim : / t o p l e v e l /Comando
6 add wave −po s i t i o n end sim : / t o p l e v e l /Pa
7 add wave −po s i t i o n end sim : / t o p l e v e l /Po
8 add wave −po s i t i o n end sim : / t o p l e v e l /Bl
9 run
20
Questa˜o 5 da lista:
Enunciado:
Fac¸a um decodificador de d´ıgitos em Braille para display de 7-segmentos. Em caso de a
entrada na˜o ser um d´ıgito, estabelec¸a um co´digo de erro.
Resoluc¸a˜o:
Circuito Combinacional:
Os nu´meros em braille, compartilham os mesmos s´ımbolos que as 10 primeiras letras
do alfabeto e vai de 1 a 0, para poder diferenciar um nu´mero de uma letra, utiliza-se um
caractere especial antes do simbolo. Utilizou-se a contagem padra˜o do braille, em que os
s´ımbolos sa˜o contados de cima para baixo da esquerda para direita. A¯B¯CDEF Constitui
o caractere especial em braille que define que o pro´ximo s´ımbolo e´ um nu´mero. I¯L¯ sa˜o os 2
pontos inferiores do s´ımbolo em braille que sa˜o fixos para nu´meros GHJK sa˜o as entradas
que ira˜o variar. Como mostra na figura 26
Figura 26: Leds
As sa´ıdas sera˜o as entradas do display de 7 segmentos, sendo:
Figura 27:
O- Topo P - Topo esquerda Q - Topo direita
R - Meio S - Baixo esquerda T - Baixo direita U - Baixo
21
Mapa de Karnaugh:
Com as sa´ıdas OPQRSTU se baseando nas entradas GHJK, fizemos os seguintes ma-
pas:
(a) MK para “O”. (b) MK para “P”. (c) MK para “Q”.
(d) MK para “R”. (e) MK para “S”. (f) MK para “T”.
(g) MK para “U”.
Figura 28: Mapas de Karnaugh para as sa´ıdas do circuito.
22
Assim podemos mostrar a tabela verdade finalizada:
Figura 29: Tabela Verdade.
23
Em seguida montamos o circuito no Quartus a partir das equac¸o˜es obtidas dos mapas de
Karnaugh, na figura 30 e fecha-se o circuito para visualizac¸a˜o do sistema na figura 31.
Figura 30: Circuito combinacional feito no Quartus.
24
Figura 31: Circuito combinacional feito no Quartus.
Simulac¸a˜o no ModelSim:
Com o mapa gerou-se um script da forma de onda para cada uma das entradas e fez-se
a simulac¸a˜o no ModelSim.
Figura 32: Captura de tela da simulac¸a˜o no ModelSim.
25
Figura 33: Captura de tela da simulac¸a˜o no ModelSim apenas as
Waves.
O circuito esta´ funcionando de acordo com o esperado. Utilizamos algumas entradas que
provocam o co´digo de erro, apo´s isso, fizemos a contagem de 1 a 0 e depois voltamos a inserir
uma entrada que na˜o sa˜o nu´meros em Braille para teste.
26
Comandos:
Os comandos utilizados para simulac¸a˜o com as respectivas entradas utilizadas foram os
seguintes:
1 vsim −gui − l ms im transcr ipt work . d e c b r a i l l e −t ns
2 add wave −po s i t i o n end sim : / d e c b r a i l l e /A
3 add wave −po s i t i o n end sim : / d e c b r a i l l e /B
4 add wave −po s i t i o n end sim : / d e c b r a i l l e /C
5 add wave −po s i t i o n end sim : / d e c b r a i l l e /D
6 add wave −po s i t i o n end sim : / d e c b r a i l l e /E
7 add wave −po s i t i o n end sim : / d e c b r a i l l e /F
8 add wave −po s i t i o n end sim : / d e c b r a i l l e /G
9 add wave −po s i t i o n end sim : / d e c b r a i l l e /H
10 add wave −po s i t i o n end sim : / d e c b r a i l l e / I
11 add wave −po s i t i o n end sim : / d e c b r a i l l e /J
12 add wave −po s i t i o n end sim : / d e c b r a i l l e /K
13 add wave −po s i t i o n end sim : / d e c b r a i l l e /L
14 add wave −po s i t i o n end sim : / d e c b r a i l l e /O
15 add wave −po s i t i o n end sim : / d e c b r a i l l e /P
16 add wave −po s i t i o n end sim : / d e c b r a i l l e /Q
17 add wave −po s i t i o n end sim : / d e c b r a i l l e /R
18 add wave −po s i t i o n end sim : / d e c b r a i l l e /S
19 add wave −po s i t i o n end sim : / d e c b r a i l l e /T
20 add wave −po s i t i o n end sim : / d e c b r a i l l e /U
21 f o r c e −depos i t sim : / d e c b r a i l l e /A 0 0
22 f o r c e −depos i t sim : / d e c b r a i l l e /B 0 0
23 f o r c e −depos i t sim : / d e c b r a i l l e /C 0 0
24 f o r c e −depos i t sim : / d e c b r a i l l e /D 0 0
25 f o r c e −depos i t sim : / d e c b r a i l l e /E 0 0
26 f o r c e −depos i t sim : / d e c b r a i l l e /F 0 0
27 f o r c e −depos i t sim : / d e c b r a i l l e /G 0 0
28 f o r c e −depos i t sim : / d e c b r a i l l e /H 0 0
29 f o r c e −depos i t sim : / d e c b r a i l l e / I 0 030 f o r c e −depos i t sim : / d e c b r a i l l e /J 0 0
31 f o r c e −depos i t sim : / d e c b r a i l l e /K 0 0
32 f o r c e −depos i t sim : / d e c b r a i l l e /L 0 0
33 run
34 f o r c e −depos i t sim : / d e c b r a i l l e /A 0 0
35 f o r c e −depos i t sim : / d e c b r a i l l e /B 0 0
36 f o r c e −depos i t sim : / d e c b r a i l l e /C 1 0
37 f o r c e −depos i t sim : / d e c b r a i l l e /D 1 0
38 f o r c e −depos i t sim : / d e c b r a i l l e /E 1 0
39 f o r c e −depos i t sim : / d e c b r a i l l e /F 1 0
40 f o r c e −depos i t sim : / d e c b r a i l l e /G 1 0
41 f o r c e −depos i t sim : / d e c b r a i l l e /H 0 0
42 f o r c e −depos i t sim : / d e c b r a i l l e / I 0 0
43 f o r c e −depos i t sim : / d e c b r a i l l e /J 0 0
44 f o r c e −depos i t sim : / d e c b r a i l l e /K 0 0
45 f o r c e −depos i t sim : / d e c b r a i l l e /L 0 0
46 run
27
Questa˜o 10 da lista:
Enunciado:
Dado o diagrama de estados seguinte, referente a uma ma´quina de refrigerantes que libera
a latinha apo´s a inserc¸a˜o de treˆs moedas de R$ 1,00 (com possibilidade de desisteˆncia),
adapte-o para cinco moedas e obtenha o circuito correspondente.
28
Resoluc¸a˜o:
Ma´quina de Estados Finitos (FSM):
Tipo de FSM: neste exerc´ıcio foi adotada a ma´quina de estados de Mealy.
O exerc´ıcio foi resolvido utilizando 6 estados, cujas entradas foram M = moeda e D =
desiste. As sa´ıdas da FSM foram definidas como Troco e Refri. Utilizamos 6 estados: inicio
= 000; 1 = 001; 2 = 010; 3 = 011; 4 = 100; 5 = 101. Utilizamos 3 varia´veis de estado,
definidas A, B e C, codificadas em bina´rio sequencial.
Figura 34: Diagrama da ma´quina de estados adotada.
Este circuito considera que em qualquer momento que a entrada de desistir e´ dada, o
troco sera´ creitado ao usua´rio, mesmo que a entrada de desisteˆncia seja simultaˆnea a` adic¸a˜o
de uma moeda. Esta mesma moeda seria contabilizada e o usua´rio receberia seu dinheiro de
volta. O usua´rio so conseguiria o refrigerante com a adic¸a˜o de 5 moedas sem desisteˆncia em
momento algum. Durante a resoluc¸a˜o da questa˜o, houveram alguns problemas na etapa de
simulac¸a˜o, devido a relac¸a˜o entre as frequeˆncias de clock e a durac¸a˜o dos estados de entrada,
logo, na˜o utilizamos somente 4 estados de moedas inseridas, para que, com a aplicac¸a˜o de
um 5º estado, garantirmos a seguranc¸a da execuc¸a˜o do circuito para quaisquer entradas
ass´ıncronas.
29
Decodificador de Pro´ximo estado (DPE):
Do diagrama de estados – ver figura 34 – extraiu-se as informac¸o˜es referentes a tabela
verdade para o DPE, figura 35.
Figura 35: Tabela verdade para o DPE, dados extra´ıdos do DE
(figura 34).
Como so´ ha´ 6 estados definidos para nosso circuito, a partir do estado 5, independente de
30
quais entradas forem dados, o estado futuro sera´ sempre 000, o estado inicial. Estes estados
na˜o utilizados sa˜o mapeados para seguranc¸a, pois caso haja algum erro na ma´quina e algum
estado na˜o definido se instale, ha´ uma sa´ıda para o estado inicial.
Mapas de Karnaugh:
Com isso, utilizamos 3 Flip-Flops e utilizamos mapas de Karnaugh para definir os cir-
cuitos de estado futuro.
(a) MK de AF
(b) MK de BF
(c) MK de CF
Figura 36: Mapas de Karnaugh para as sa´ıdas do DPE.
A partir destes mapas (figuras 36a, 36b e 36c), constru´ımos o circuito correspondente no
Quartus.
31
Figura 37: Circuito combinacional feito para o DPE no Quartus.
Feito o circuito (figura 37), gerou-se o s´ımbolo para o mesmo a ser inserido no top layer
do circuito geral.
32
Decodificador de Sa´ıdas (DS):
Apo´s a criac¸a˜o dos circuitos de estado futuro, utilizamos a tabela verdade apresentada
para criac¸a˜o das sa´ıdas tambe´m, atrave´s dos mapas de Karnaugh.
(a) MK de Troco
(b) MK de Refri
Figura 38: Mapas de Karnaugh para as sa´ıdas do DS.
Apo´s os mapas (figuras 38a e 38b). serem feitos e as expresso˜es reduzidas serem retiradas,
foi feito o circuito combinacional no Quartus.
Figura 39: Circuito combinacional feito para o DS no Quartus.
Feito o circuito(figura 39), gerou-se o s´ımbolo para o mesmo a ser inserido no top layer
do circuito geral.
33
Registrador:
Apo´s a criac¸a˜o dos circuitos de decodificac¸a˜o de sa´ıda (figura 39) e do estado futuro
(figura 37), utilizamos 3 Flip-Flops e criamos o registrador, que salva o estado atual e gera
as entradas A, B e C, que sa˜o parte do decodificador de pro´ximo estado (DPE).
Figura 40: Circuito combinacional feito para o registrador no
Quartus.
Feito o circuito (figura 40), gerou-se o s´ımbolo para o mesmo a ser inserido no top layer
do circuito geral.
34
High level:
Apo´s a criac¸a˜o destes circuitos combinacionais, e´ gerado um bloco com cada um destes
circuitos, que sa˜o utilizados na camada superior do circuito, com os pinos de entrada e sa´ıda.
Figura 41: Circuito combinacional que inclui todos os blocos
constru´ıdos anteriormente e representa a totalidade do circuito
ilustrado no DE (figura 34) feito no Quartus.
Estes pinos sa˜o alocados a` pinos correspondentes na FPGA e posteriormente, este cir-
cuito geral foi compilado para que a simulac¸a˜o pudesse ser realizada. Feito o circuito geral
(figura 41), e´ necessa´rio fazer a simulac¸a˜o do mesmo para verificar se ele resolve o problema
proposto.
35
Simulac¸a˜o no ModelSim:
Atrave´s do software ModelSim, foi feita a simulac¸a˜o do circuito feito para diversas en-
tradas, a fim de se comprovar diferentes comportamentos do circuito em tempo real e com
entradas definidas.
Para a realizac¸a˜o da simulac¸a˜o, utilizamos a medida de tempo de nanosegundos (ns) e
definimos arbitrariamente as entradas e atribu´ımos um pulso de clock, para que diferentes
condic¸o˜es fossem testadas e se comprovasse a execuc¸a˜o do circuito.
Figura 42: Captura de tela da simulac¸a˜o no ModelSim.
Finalmente, na figura 42 E´ poss´ıvel observar o comportamento do circuito, dadas as
entradas e os pulsos de clock como refereˆncia. Observa-se que o circuito executa uma leitura
da entrada moeda e a contabiliza, pore´m, se ha´ uma entrada desiste, o circuito executa a
sa´ıda troco, e retorna ao estado inicial, pois apo´s a inserc¸a˜o de 3 moedas, e ha´ a entrada
desiste, o troco e´ acionado. Apo´s isto, ha´ a inserc¸a˜o de 5 moedas em sequeˆncia, pois em
cada pulso de clock a entrada moeda esta´ ativa, e na inserc¸a˜o da quinta moeda, a sa´ıda refri
e´ acionada. O estado de 5 moedas teˆm uma durac¸a˜o curta, pois quando ha´ a inserc¸a˜o da
quinta moeda, o estado se modifica brevemente, como quaisquer entradas que forem definidas
resultando na saida refri ativa, o estado e´ breve, mas ocorre.
Apo´s isto, ha´ a inserc¸a˜o de uma entrada de moeda e uma entrada de desiste simultanea-
mente, logo, a sa´ıda de troco e´ acionada.
36
Comandos:
Os comandos utilizados para simulac¸a˜o com as respectivas entradas utilizadas foram os
seguintes:
1 vsim −gui − l ms im transcr ipt work . questao10 −t ns
2 wave c r e a t e −d r i v e r f r e e z e −pattern constant −value 0 −s t a r t t ime 0ns −endtime
1000 ns sim : / questao10 / reset
3 wave c r e a t e −d r i v e r f r e e z e −pattern clock − i n i t i a l v a l u e 0 −per iod 4ns −
dutycyc l e 50 −s t a r t t ime 0ns −endtime 1000 ns sim : / questao10 / c l k
4 wave c r e a t e −d r i v e r f r e e z e −pattern r epea t e r − i n i t i a l v a l u e 0 −per iod 4ns −
sequence { 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 } −repeat f o r e v e r −s t a r t t ime 0
ns −endtime 1000 ns sim : / questao10 /moeda
5 wave c r e a t e −d r i v e r f r e e z e −pattern r epea t e r − i n i t i a l v a l u e 0 −per iod 4ns −
sequence { 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } −repeat f o r e v e r −s t a r t t ime 0
ns −endtime 1000 ns sim : / questao10 / d e s i s t e
6 add wave −po s i t i o n end sim : / questao10 / t roco
7 add wave −pos i t i o n end sim : / questao10 / r e f r i
8 run
37

Continue navegando