• Nenhum resultado encontrado

Analisando o estado do LED em cada possível combinação de entrada e comparando os resultados com os da tabela verdade geradas pelo Logisim, foi possível perceber que o simulador de circuitos digitais desenvolvido neste trabalho conseguiu atingir os objetivos, que foram:

• Especificar uma linguagem simples para o usuário descrever os

circuitos digitais;

• Implementar um transpilador da linguagem especificada para um

simulador em linguagem C do circuito descrito;

• Verificar se a placa a Arduino se comporta como o circuito digital descrito.

Foi possível implementar um simulador com base em descrição simples de um circuito e também que esse circuito simulado se comportasse da mesma maneira que o circuito se comportaria realmente.

7 CONSIDERAÇÕES FINAIS

Neste trabalho, foi especificada uma linguagem de descrição de circuitos lógicos e implementados um parser e um transpilador para a linguagem especificada. O transpilador desenvolvido é capaz de gerar código em C de um simulador do circuito descrito; o código gerado pode ser compilado para a sua posterior execução em uma placa Arduino.

Com o objetivo de testar o transpilador desenvolvido, foram realizados testes com descrições de circuito de alguma complexidade incluindo alguns circuitos combinacionais, um codificador binário-Gray e um flip-flop.

Em todos os testes a placa Arduino simulando o circuito descrito apresentou o comportamento esperado. Era esperado que os resultados da tabela verdade do circuito descrito fossem iguais aos resultados das tabelas geradas pelo programa Logisim.

Considerando os testes realizados, principalmente com alguns circuitos vistos e trabalhados durante as aulas, o simulador desenvolvido torna-se uma grande opção de ferramenta para os professores e alunos utilizarem no decorrer das disciplinas. Usando fios, LEDs, protoboards e as diversas funções que a placa Arduino disponibiliza, realizar as simulações dos circuitos garante uma experiência física completa.

Uma ideia para poder melhorar este projeto futuramente seria empregar algumas ferramentas bastante conhecidas e utilizadas nas mais diversas ocasiões para tornar o simulador de circuitos digitais mais robusto, como o Logisim. Poder aproveitar as ferramentas digitais oferecidas pelo Logisim para que as simulações trabalhadas nesta monografia utilizem diretamente as simulações geradas pelo Logisim. Outra ideia é melhorar a linguagem implementada e o transpilador, para que mais possíveis erros possam ser identificados e corrigidos além de proporcionar ainda mais a experiência ao usuário. Também aproveitar a grande variedade de componentes que podem ser equipados nas placas Arduino, por exemplo, botões e sensores, abrangendo as características físicas do simulador de circuitos digitais, tornando-a mais realista.

Futuramente, depois das melhorias desenvolvidas na linguagem e no transpilador, seria uma ótima opção criar uma IDE, para que os usuários do simulador obtenham mais benefícios e melhorias nos gastos e desempenho, também verificação e correção de erros durante a elaboração dos projetos do usuário.

REFERÊNCIAS

ALVES, José Carlos. Sistemas Digitais. Porto: Feup/deec, 2004. 120 p.

ARDUINO. About Us. Disponível em: <https://www.arduino.cc/en/Main/AboutUs>. Acesso em: 26 ago. 2018.

BRANCO, Guido Aparecido Junior; TAMAE, Rodrigo Yoshio. UMA BREVE

INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES. Revista

Científica Eletrônica de Psicologia, Vila Labienópolis, v. 5, n. 8, p.0-6, fev. 2008.

Semestral. Disponível em:

<http://faef.revista.inf.br/imagens_arquivos/arquivos_destaque/RHXqIjJHvJQhhCK_2013-5-28-11-13-48.pdf>. Acesso em: 3 jun. 2018.

BURCH, Carl. Flip-Flops D/T/J-K/S-R. Disponível em:

<http://www.cburch.com/logisim/docs/2.7/pt/html/libs/mem/flipflops.html>. Acesso em: 03 set. 2018.

CABOT, Jordi. La diferencia entre Transpilación y Compilación.2017. Disponível em:

<https://ingenieriadesoftware.es/diferencia-transpilacion-compilacion/>. Acesso em: 26 ago. 2018.

CARVALHO, Ricardo de. Javascript Transpiling. 2017. Disponível em:

<http://www.timeraposa.com.br/2017/12/javascript-transpiling/>. Acesso em: 26 ago. 2018.

CHAKRABARTY, Krishnendu. Logic Simulation. Durham: Duke University, 2016. 14

slides, color. Disponível em:

<http://people.ee.duke.edu/~krish/teaching/ECE538/Logic_simulation.pdf>. Acesso em: 12 jun. 2018.

CHEN, Hue-hua Ann. Event-Driven Logic Simulator. 1992. 63 f. Tese (Doutorado) - Curso de Ciência da Computação, Lehigh University, Bethlehem, 1993. Disponível em:

<https://preserve.lehigh.edu/cgi/viewcontent.cgi?article=1134&context=etd>. Acesso em: 12 jun. 2018.

COMUNICAÇÕES, Museu das (Org.). Portas Lógicas II. Disponível em:

<http://macao.communications.museum/por/Exhibition/secondfloor/moreinfo/LogicGates2.ht ml>. Acesso em: 03 set. 2018.

DAMAS, Luís. Linguagem C. 10. ed. Rio de Janeiro: LTC, 2007. 410p.

DEITEL, Paul J.; DEITEL, Harvey M. Como programar Em C. 6. ed. São Paulo: Pearson,

2011. 690 p.

GAVIRA, Muriel de Oliveira. Simulação Computacional como uma Ferramenta de

Aquisição de Conhecimento. 2003. 162 f. Dissertação (Mestrado) - Curso de Engenharia de

Produção, Escola de Engenharia de São Carlos, São Carlos, 2003.

IDOETA, Ivan Valeije; CAPUANO, Francisco Gabriel. Elementos de Eletrônica Digital.

KÜLZER, Ricardo Luís. Simulador de Redes Orientado a Eventos para o Sistema

Operacional Linux. 2003. 148 f. Dissertação (Mestrado) - Curso de Engenharia Elétrica,

Universidade Estadual de Campinas, Campinas, 2003.

LAPIN, Alexander; BULAKH, Dmitry; VAGAPOV, Yuriy. Event-driven Simulation of

Digital Circuits using Modified Petri Nets Algorithm. 2017. Disponível em:

<https://www.researchgate.net/publication/320273461_Event-driven_Simulation_of_Digital_Circuits_using_Modified_Petri_Nets_Algorithm>. Acesso em: 09 jun. 2018.

MARANGON, Johni Douglas. Compiladores para Humanos. 2017. Disponível em:

<https://johnidm.gitbooks.io/compiladores-para-humanos/content/>. Acesso em: 25 ago. 2018.

MIYAGI, Paulo E. Introdução a Simulação Discreta, São Paulo, 2006. 52p. (Apostila).

PALMEIRA, Thiago Vinícius Varallo. Introdução às linguagens de programação. 2012.

Disponível em: <https://www.devmedia.com.br/introducao-as-linguagens-de-programacao/25111>. Acesso em: 18 ago. 2018.

POZZEBOM, Rafaela. O que são sistemas embarcados? 2014. Disponível em:

<https://www.oficinadanet.com.br/post/13538-o-que-sao-sistemas-embarcados>. Acesso em: 04 jul. 2018.

REIS, Fábio dos. Circuitos Digitais: Sistemas Analógicos x Sistemas Digitais. 2016.

Disponível em: <http://www.bosontreinamentos.com.br/eletronica/eletronica-digital/curso-de-eletronica-digital-sistemas-analogicos-x-sistemas-digitais/>. Acesso em: 04 jul. 2018.

REIS, Vinicius. Ecossistema JavaScript — Parte 04: Transpilers. 2016. Disponível em: <https://blog.codecasts.com.br/ecossistema-javascript-parte-04-transpilers-734f77422316>. Acesso em: 26 ago. 2018.

SOUZA, Anderson R. de et al. A Placa Arduino: uma opção de baixo custo para experiências de física. Revista Brasileira de Ensino de Física, Rio de Janeiro, v. 33, n. 1, p.0-5, 21 mar. 2011.

TANENBAUM, Andrew S. Organização Estruturada de Computadores. 5. ed. São Paulo:

Pearson Prentice Hall, 2007.

TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L. Sistemas Digitais: princípios e aplicações. 11. ed. São Paulo: Pearson Prentice Hall, 2011.

TRINDADE JUNIOR, Rosumiro; JULIÃO, Jodelson Moreira. Circuitos Digitais. Manaus:

E-tec Brasil, 2012. 120 p.

URICER. Apostila de COMPILADORES, Erechim, 2001. 61p. (Apostila).

WIKIWAND (Org.). Logic gate. Disponível em:

Documentos relacionados