Baixe o app para aproveitar ainda mais
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
Compartilhar