<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Ambiente Integrado de Hardware e Software Aplicado ao Ensino de Projeto de Sistemas Computacionais</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Edson Lisboa</string-name>
          <email>edson.lisboa@academico.ifs.edu.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lucas Fontes</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cícero Samuel Mendes</string-name>
          <email>mendes.samuel99@gmail.com</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Guilherme Esmeraldo</string-name>
          <email>guilhermealvaro@ifce.edu.br</email>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Instituto Federal de Educação, Ciência e Tecnologia de Sergipe - Aracaju</institution>
        </aff>
      </contrib-group>
      <fpage>89</fpage>
      <lpage>98</lpage>
      <abstract>
        <p>Computer Organization and Architecture is a complex discipline for dealing with the design of computer systems having to be aligned with new technological trends. The scientific literature has opted for the use of simulation tools in pedagogical practices, due to the high cost for creating and maintaining specialized laboratories. However, due to purely theoretical classes and/or the use of very abstract simulation tools, there are gaps in the teaching-learning process of these concepts. This paper presents a new learning tool that combines simulation to interactions with physical and lowcost devices to establish complete scenarios of hardware projects. Resumo. Organização e Arquitetura de Computadores é uma disciplina complexa por tratar do projeto de sistemas computacionais tendo que estar alinhada às novas tendências tecnológicas. A literatura científica tem optado pelo uso de ferramentas de simulação, nas práticas pedagógicas, em função do alto custo para criação e manutenção de laboratórios especializados. Porém, devido às aulas puramente teóricas e/ou ao uso de ferramentas de simulação muito abstratas, surgem lacunas no processo de ensinoaprendizagem desses conceitos. Este artigo apresenta uma nova ferramenta de aprendizagem que alia simulação a interações com dispositivos físicos e de baixo custo, para estabelecer cenários completos de projetos de hardware.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introdução</title>
      <p>
        O uso de simuladores para apoiar o aprendizado em OAC é uma prática comum
e, na literatura, há variados tipos e com diferentes características funcionais e não
funcionais. Alguns trabalhos, como os apresentados em [
        <xref ref-type="bibr" rid="ref5">Nikolic et al. 2009</xref>
        ] e [
        <xref ref-type="bibr" rid="ref7">Penna,
Freitas 2013</xref>
        ], realizam comparações entre diferentes simuladores, buscando estabelecer
critérios para adoção de algum deles para apoio em cursos de OAC. Entre os critérios de
comparação, destacam-se: granularidade (nível de detalhes, opções de configuração e
variabilidade de componentes de hardware); desempenho e precisão dos resultados da
simulação; suporte à simulação de aplicações de usuário; e interfaces gráficas
interativas.
      </p>
      <p>Contudo, de acordo com o estudo apresentado em [Larraza-Mendiluze,
GarayVitoria 2015], dentre os tópicos abordados em OAC, há lacunas no processo de
ensinoaprendizagem em “subsistemas de entrada/saída”, devido aos métodos de ensino
empregados que limitam-se a aulas puramente teóricas e/ou aos altos níveis de abstração
das ferramentas de simulação utilizadas, não possibilitando a exploração dos detalhes
técnicos que os dispositivos reais apresentam. Esse mesmo trabalho aponta ainda que
existe a necessidade de mais estudos para a educação nessa área e que é um campo
importante não só para OAC, mas também para outras áreas, como, por exemplo,
projeto de sistemas computacionais, sistemas operacionais e interação
homemcomputador.</p>
      <p>
        Outro problema comum é a ausência de exposição dos estudantes ao hardware
físico, onde, o contato com os componentes eletrônicos físicos incentiva o aprendizado
de todas as fases de desenvolvimento de um sistema digital ou periférico [
        <xref ref-type="bibr" rid="ref2">Black 2016</xref>
        ].
Nesse sentido, o desafio maior torna-se a composição de laboratórios especializados,
com suporte de profissionais experientes, e a disponibilidade dos materiais a serem
utilizados nas aulas práticas. Alguns trabalhos, como os apresentados em [
        <xref ref-type="bibr" rid="ref2">Black
2016</xref>
        ][
        <xref ref-type="bibr" rid="ref4">Neto, Borges, Silva 2017</xref>
        ], buscaram contornar esse problema pelo uso do
Arduino em práticas laboratoriais. Arduino é uma plataforma eletrônica baseada em
microcontrolador, com especificação aberta e tem sido largamente utilizada em projetos
de sistemas eletrônicos por estudantes, hobistas e profissionais [
        <xref ref-type="bibr" rid="ref1">Arduino 2018</xref>
        ]. Seu
grande sucesso vem sendo atribuído à sua simplicidade, facilidade de uso, o baixo custo
e à diversidade de produtos e complementos criados pela indústria [
        <xref ref-type="bibr" rid="ref6">Kushner 2011</xref>
        ].
      </p>
      <p>Diante do exposto, torna-se importante buscar soluções que reúnam a dinâmica e
versatilidade dos processos baseados em simulação, acompanhada da importância e dos
desafios da exposição ao hardware real. Com esse intuito, este trabalho apresenta o
CompSim, uma ferramenta de apoio ao aprendizado em projeto de sistemas
computacionais, abrangendo hardware e software de baixo nível, com funcionalidades
de simulação e interação com dispositivos de hardware real. O simulador proposto
inclui componentes virtuais de hardware, como processador, memórias, barramentos e
periféricos, bem como permite a integração ao Arduino, onde este passa a se comportar
como um periférico do sistema computacional simulado. Com esse suporte de
integração, espera-se tornar o aprendizado em subsistemas de entrada/saída mais
atrativo e dinâmico, além de fornecer subsídios para o desenvolvimento de projetos de
sistemas digitais físicos, estes com complexidades escaláveis de acordo com as
necessidades do processo de ensino-aprendizagem e da metodologia adotada.</p>
      <p>Este artigo está estruturado da seguinte maneira: Na seção a seguir, apresenta-se
o simulador CompSim; Na Seção 3, é tratado o modelo de interface de entrada/saída do
Arduino; A Seção 4 apresenta o modelo de integração CompSim-Arduino; A Seção 5
discute os potenciais dessa integração e, por fim, a Seção 6 apresenta as conclusões e
demarca os trabalhos futuros.</p>
    </sec>
    <sec id="sec-2">
      <title>O Simulador CompSim</title>
      <p>CompSim1 inclui uma plataforma de hardware simulável, chamada de “Mandacaru”, a
qual inclui um processador conceitual, memórias cache e RAM, barramentos de sistema
e de periféricos, e dispositivos de entrada (Teclado) e de saída (Vídeo). Esses
componentes virtuais foram concebidos para suportar o estudo de diferentes conceitos
de OAC, como, por exemplo, fases do ciclo de instrução, representação em memória de
dados numéricos, não-numéricos e de estruturas de dados, conjunto de instruções da
arquitetura (tipos, tamanhos e formatos de instruções), modos de endereçamento,
programação em nível de máquina, representação de construções de linguagens de alto
nível, cálculo dos tempos de acesso aos dados, entre outros.</p>
      <p>O CompSim possui uma interface gráfica que permite configurar os
componentes da plataforma Mandacaru, programar uma aplicação para execução no
processador conceitual, chamado de “Cariri”, configurar, executar e visualizar a
simulação, bem como analisar o desempenho do sistema após uma simulação. A Figura
1 mostra a interface gráfica do simulador CompSim.</p>
      <p>Figura 1 - Interface gráfica do simulador CompSim.</p>
      <p>Na Figura 1, pode-se observar os seguintes componentes gráficos: (a) Editor de
código: inclui recursos para simplificar a codificação de uma aplicação, como número
de linhas, teclas de atalho, um assistente de codificação, entre outros. Este componente
está integrado a um montador (Assembler) que realiza análises léxica, sintática e
semântica no código-fonte da aplicação, tradução deste para bytecodes, com cópia para
memória RAM; (b) CPU: durante uma simulação, exibe os registradores do processador
Cariri e respectivos valores assumidos. Os registradores de endereçamento possuem
cores diferenciadas, onde as respectivas cores são utilizadas para referenciar diferentes
posições da memória RAM.; (c) Memória cache: exibe as linhas da cache e respectivos
1</p>
      <p>CompSim. Apresentação. Disponível em: &lt;https://www.youtube.com/watch?v=eQTsdwTi5ts&gt;.
Acesso em: 06 abr. 2018.
valores. Este componente gráfico destaca a linha e a palavra endereçada pelo
processador durante uma simulação; (d) Memória RAM: exibe os conteúdos (instruções
e dados) de todos os endereços da componente virtual memória RAM. Os componentes
gráficos Memória RAM e CPU estão integrados, de forma que, durante uma simulação,
as posições de memória são coloridas de acordo com as respectivas cores dos
registradores de endereçamento; (e) Vídeo: exibe os caracteres enviados para o
componente virtual de vídeo; (f) Teclado: disponibiliza uma linha de comandos que
permite ao usuário interagir com uma aplicação através do componente virtual teclado;
e (g) Controles de simulação: inclui controles que permitem configurar o tempo de
simulação e frequência de relógio de sistema (clock), iniciar, executar passo-a-passo,
parar e reiniciar uma simulação.</p>
      <p>Na Figura 1, está ilustrada a execução da aplicação “Hello, World!”, a qual
levou 3 segundos - um total de 300 ciclos de relógio, a uma frequência de 100 Hz de
relógio de sistema - para impressão da string no componente virtual de Vídeo (e).</p>
      <p>Analisando este cenário, percebe-se que o aprendizado em “subsistemas de
entrada/saída” estaria bastante limitado à interações com os programas de usuário,
utilizando apenas os componentes gráficos de Vídeo e Teclado. Sendo assim, é
fundamental acrescentar recursos que possibilitem a integração de diferentes
dispositivos de entrada e saída, tornando-os mais próximos ao que se aplica no
desenvolvimento de projetos de sistemas eletrônicos reais. As seções a seguir detalham
a integração do simulador CompSim com o Arduino, e discutem as potencialidades
resultantes dessa conjunção no aprendizado em entrada/saída e projetos de sistemas
digitais.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Interface de Entrada/Saída do Arduino UNO</title>
      <p>Os microcontroladores Atmega8, Atmega168 e Atmega328p, presentes nas
diferentes plataformas Arduino, incluem as portas2 B, C e D, que são utilizadas em
operações de entrada/saída digitais e analógicas. As operações em cada uma dessas
portas podem ser realizadas a partir da manipulação de 3 registradores dos controladores
Atmega, que são: 1) DDRx: determina se os bits da porta x serão utilizados para
operação de entrada de dados (INPUT ou leitura) ou de saída (OUTPUT ou escrita); 2)
PORTx: controla a tensão dos bits relacionados à porta x, onde poderão estar com
voltagem alta (HIGH, nível lógico “1”) ou baixa (LOW, nível lógico “0”); e 3) PINx:
realiza a leitura do estado dos bits da porta x, quando configurados como entrada
(INPUT). Cabe ressaltar que os registradores DDRx e PORTx são de leitura/escrita de
dados, enquanto que PIN é apenas de leitura.</p>
      <p>Cada bit desses registradores corresponde a um único pino em uma placa de
circuito impresso (PCI) do Arduino. Por exemplo, na PCI do Arduino UNO, a qual é
ilustrada na Figura 2, o bit 0, dos registradores DDRB, PORTB e PINB, refere-se ao
pino PB0 (Port B pin 0), que corresponde ao pino digital 8 da interface de entrada/saída
na sua PCI.
2</p>
      <p>Porta é um espaço de endereçamento que é frequentemente utilizado em operações de entrada/saída.</p>
      <p>Figura 2 – Interface de entrada/saída do Arduino UNO.</p>
      <p>As portas B e D são utilizadas em operações de entrada/saída digitais, enquanto
que a porta C utiliza-se apenas em operações de entrada analógica. Os pinos 3, 5, 6 (bits
4, 6 e 7 da porta D) e 9, 10, 11 (bits 1, 2 e 3 da Porta B) podem ainda ser utilizados para
saída analógica via PWM (Pulse With Modulation3) (a Figura 2 mostra a posição das
portas e respectivos pinos em uma PCI Arduino UNO).</p>
    </sec>
    <sec id="sec-4">
      <title>4. Interface de Integração CompSim-Arduino UNO</title>
      <p>O processador Cariri, presente na plataforma Mandacaru, em seu conjunto de instruções
da arquitetura, possui a instrução INT para operações de entrada/saída, com o código de
operação 20 para leitura de um caractere a partir de um determinado periférico e código
21 para escrita de um caractere em um determinado periférico.</p>
      <p>Essas operações de entrada/saída devem atender às seguintes condições: 1) Em
operações de leitura/escrita, os 8 bits mais significativos do Acumulador serão
utilizados para endereçamento de periféricos. Com isso, podem ser endereçados até 256
periféricos diferentes (8 bits → 28 = 256 periféricos); 2) Em operações de escrita, os 8
bits menos significativos do Acumulador serão utilizados para guardar o dado que será
escrito em algum periférico; e 3) Em operações de entrada, após a leitura de periférico,
o dado lido estará disponível no Acumulador. Desta forma, nas operações de
entrada/saída, o registrador Acumulador do processador Cariri passa a incluir os campos
AC High e AC Low, que podem ser vistos na Figura 3.</p>
      <p>Figura 3 - Campos do registrador Acumulador em operações de Entrada/Saída.</p>
      <p>Uma vez que se conecta uma PCI Arduino UNO ao computador onde está sendo
executado o CompSim, automaticamente, as instruções “INT 20” e “INT 21” passam a
suportar operações de entrada/saída em suas portas. A Figura 4 ilustra a organização da
plataforma Mandacaru conectada ao Arduino UNO, onde pode-se observar a existência
3</p>
      <p>PWM é uma técnica que utiliza diferentes amplitudes de sinais digitais para representar um sinal
analógico.
de controladores entre o barramento de periféricos e os dispositivos Vídeo, Teclado e
Arduino UNO. Os controladores são importantes pois traduzem o formato das
requisições do processador Cariri para o formato específico de cada periférico.</p>
      <p>Figura 4 - Plataforma Mandacaru conectada ao Arduino UNO.</p>
      <p>Já a Figura 5 detalha a interface do controlador virtual que realiza a integração
do barramento de periféricos da plataforma Mandacaru à PCI Arduino UNO. Ao
receber uma requisição de entrada/saída proveniente do processador, via barramento de
periféricos, e dependendo do tipo de operação e da porta especificada, o controlador
realizará uma escrita ou leitura na respectiva interface de pinos da PCI Arduino UNO
conectada a ele.</p>
      <p>Figura 5 - Detalhe da interface de conexão do Arduino UNO à plataforma
Mandacaru via controlador.</p>
      <p>Com a integração de uma PCI Arduino UNO ao barramento de periféricos, a
plataforma Mandacaru passa a contar com uma gama maior de periféricos de
entrada/saída. A Tabela 1 sumariza todos os periféricos, respectivos tipos, modos de
operação e número portas.</p>
    </sec>
    <sec id="sec-5">
      <title>Tabela 1 - Periféricos do CompSim.</title>
      <p>Periférico
Vídeo
Teclado
Arduino - Porta B
Arduino - Porta C
Arduino - Porta D
Arduino - Porta PWM (Pino 3)
Arduino - Porta PWM (Pino 5)
Arduino - Porta PWM (Pino 6)
Arduino - Porta PWM (Pino 7)
Arduino - Porta PWM (Pino 10)
Arduino - Porta PWM (Pino 11)</p>
      <p>Tipo
Virtual
Virtual
Físico
Físico
Físico
Físico
Físico
Físico
Físico
Físico
Físico</p>
      <p>Modo de Operação</p>
      <p>Saída Digital</p>
      <p>Entrada Digital
Entrada/Saída Digital</p>
      <p>Entrada Analógica
Entrada/Saída Digital</p>
      <p>Saída Analógica
Saída Analógica
Saída Analógica
Saída Analógica
Saída Analógica
Saída Analógica</p>
      <p>Porta
0
1
2
3
4
5
6
7
8
9
10</p>
      <p>Na tabela, pode-se observar que os periféricos Vídeo e Teclado são do tipo
virtual, enquanto que os demais são físicos, por estarem relacionados às portas do
Arduino UNO. Outro detalhe importante está relacionado à porta PWM, a qual inclui 6
pinos independentes, e, por causa disso, cada um deles recebeu um endereço de porta
específico, podendo comportar até 6 periféricos.</p>
    </sec>
    <sec id="sec-6">
      <title>Discussão de Resultados</title>
      <p>Uma vez que a plataforma Arduino passa a integrar o simulador CompSim, o estudo de
OAC sofre em incremento no potencial de ensino-aprendizagem em subsistemas de
entrada/saída. Agora, os estudantes podem agregar, às experiências práticas em
laboratório, projetos de periféricos e de sistemas eletrônicos com Arduino.</p>
      <p>Um exemplo básico de periférico físico do CompSim utilizando Arduino UNO
pode ser visto na Figura 6. Nesse exemplo, o periférico consiste em um LED ligado a
um resistor de 220 Ohms e conectado ao pino 8 da PCI, que pode ser ligado/desligado a
partir de operações de entrada/saída pelo processador Cariri.
Figura 6 – Diagrama de um periférico com LED conectado ao pino 8 da PCI
Arduino UNO.</p>
      <p>Os códigos-fonte, ilustrados na Figura 7, mostram como ligar o LED conectado
ao pino 8 da PCI Arduino UNO, sendo que em (a) o código é descrito C/C++ nativo da
IDE Arduino, e em (b), é descrito em Assembly do processador Cariri.</p>
      <p>Observando os dois códigos, nas Figuras 7 (a) e (b), percebe-se que o código
Assembly inclui maior número de linhas, porém ao considerarmos apenas as instruções
que operam o periférico, percebe-se que: na Linha 5, carrega-se no Acumulador o dado
que será escrito na porta B (porta na qual está conectado o LED); na Linha 7, o
endereço da porta B é adicionado ao Acumulador; e na Linha 11, realiza-se a operação
de saída (nela, o comando de escrita é enviado ao controlador do Arduino UNO, para
que ele ative o LED).
1. //LED conectado ao pino 8 ; Codigo do programa
2. int led = 8; .code
3.
4. void setup() { ;Carrega dado no AC para escrita
5. //Seta pino 8 como saida LDA high
6. pinMode(led, OUTPUT);
7. } ;Add endereço da porta B ao AC
8. ADD arduino_portB
9. //rotina para ligar o LED
10. void loop() { ;Realiza operacao de escrita
11. INT output
12. //Realiza escrita digital
13. digitalWrite(led, HIGH); ;encerra a aplicacao
14. } INT exit
Figura 7 – Comparativo entre código Arduino e CompSim para periférico da
Figura 6.</p>
      <p>A aplicação ilustrada nas Figuras 6 e 7 consiste de um exemplo básico de
construção de periféricos. Com o mesmo conceito proposto para as operações de
entrada/saída digital e analógicas no CompSim, os estudantes poderão criar periféricos
mais complexos, como, por exemplo, impressoras 3D, estações meteorológicas,
veículos programáveis, robôs, etc. Naturalmente que, para construção de dispositivos
eletrônicos mais elaborados, os estudantes necessitarão ser introduzidos à eletrônica
analógica/digital básica ou fazer uso de subsistemas eletrônicos complementares pré
fabricados, também conhecidos por shields. A indústria atualmente oferece variados
tipos de shields, como displays gráficos, motores, sensores, interfaces de comunicação
com/sem fio, conversores, acionadores elétricos, subsistemas de armazenamentos de
dados, entre outros.</p>
      <p>Além disso, há potencial para a criação de sistemas eletrônicos completos, como
sistemas para automação em geral, como horta inteligente ou automação residencial;
sistemas de segurança com controle de acesso via digitação de senha, RFID, Biometria
ou reconhecimento facial; jogos eletrônicos, com interfaces de joysticks especializados
ou sensores de movimento; entre outros.</p>
      <p>Atualmente, o simulador CompSim vem sendo utilizado, em práticas
laboratoriais, como apoio pedagógico à disciplina de OAC de um curso de Bacharelado
em Sistemas de Informação, como pode ser visto na Figura 8. Com a recente integração
CompSim-Arduino UNO, propôs-se aos estudantes de uma nova turma, como projeto
de disciplina, a criação de um novo periférico físico para a plataforma Mandacaru.
Serão disponibilizados 10 kits “Arduino Iniciante” e espera-se que, com esse
experimento, até o final do semestre letivo, os estudantes tenham compreendido com
maior profundidade os conceitos de subsistemas de entrada/saída e tenham sido
introduzidos ao projeto de sistemas digitais, empregando-os na criação e aplicação de
novos periféricos.</p>
      <p>Figura 8 – Aula de AOC em laboratório com suporte do CompSim.</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusões</title>
      <p>Este artigo apresentou uma proposta de integração CompSim-Arduino, na qual uma PCI
Arduino UNO torna-se um periférico físico da plataforma virtual Mandacaru para
compor um ambiente completo de simulação de sistemas computacionais com hardware
e software integrados. Essa proposta busca agregar novos perfis de formação na
disciplina de Organização e Arquitetura de Computadores, onde os estudantes podem
empregar os conceitos aprendidos em subsistemas de entrada/saída e fundamentos de
eletrônica básica para projetar dispositivos físicos reais.</p>
      <p>Os trabalhos futuros incluem a adição de novos componentes à plataforma
Mandacaru, visando disponibilizar cenários reais e fluxo completo de projetos de
sistemas computacionais, a composição de projetos diversificados para o
desenvolvimento de novos sistemas eletrônicos reais e integração com novas
tecnologias em dispositivos eletrônicos, como por exemplo, hardware reconfigurável
FPGA (Field Programming Gate Array).</p>
    </sec>
    <sec id="sec-8">
      <title>Agradecimentos</title>
      <p>Agradecemos a IFS/PROPEX/Petrobrás e IFCE/FUNCAP por fomentarem esta
pesquisa através da concessão de bolsas e apoio financeiro.
em:</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Arduino.</surname>
          </string-name>
          (
          <year>2018</year>
          ) ”Arduino - Introduction”. Disponível &lt;https://www.arduino.cc/en/Guide/Introduction&gt;.
          <source>Acesso em: 26 mar</source>
          .
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Black</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          (
          <year>2016</year>
          ) “
          <article-title>Export to arduino: a tool to teach processor design on real hardware”</article-title>
          .
          <source>Journal of Computing Sciences in Colleges</source>
          ,
          <volume>31</volume>
          (
          <issue>6</issue>
          ), pp.
          <fpage>21</fpage>
          -
          <lpage>26</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Ghaffarian</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2016</year>
          ) “
          <article-title>Microelectronics packaging technology roadmaps, assembly reliability, and prognostics”</article-title>
          .
          <source>Facta universitatis-series: Electronics and Energetics</source>
          ,
          <volume>29</volume>
          (
          <issue>4</issue>
          ), pp.
          <fpage>543</fpage>
          -
          <lpage>611</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Neto</surname>
            ,
            <given-names>A. M. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Borges</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>A. dos S. and</article-title>
          <string-name>
            <surname>Silva</surname>
            ,
            <given-names>G. P.</given-names>
          </string-name>
          (
          <year>2017</year>
          ) “
          <article-title>Extensão do Simulador SimuS com uso do Protocolo Firmata”</article-title>
          . XVIII Workshop de
          <article-title>Iniciação Científica do XVII Simpósio em Sistemas Computacionais de Alto Desempenho (WIC-WSCAD)</article-title>
          , pp.
          <fpage>123</fpage>
          -
          <lpage>128</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Nikolic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Radivojevic</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Djordjevic</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Milutinovic</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          (
          <year>2009</year>
          )
          <article-title>A Survey and Evaluation of Simulators Suitable for Teaching Courses in Computer Architecture and Organization</article-title>
          .
          <source>IEEE Transactions on Education</source>
          , Vol.
          <volume>52</volume>
          , No.
          <volume>4</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Kushner</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2011</year>
          ) “
          <article-title>The making of arduino”</article-title>
          .
          <source>IEEE Spectrum</source>
          ,
          <volume>26</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>Penna</surname>
            ,
            <given-names>P. H. M. M.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Freitas</surname>
            ,
            <given-names>H. C.</given-names>
          </string-name>
          (
          <year>2013</year>
          ) Análise e Avaliação de Simuladores de Sistemas Completos para o Ensino de Arquitetura de Computadores.
          <source>International Journal of Computer Architecture Education (IJCAE)</source>
          ,
          <year>v</year>
          .
          <volume>2</volume>
          , no.
          <issue>1</issue>
          , pp
          <fpage>13</fpage>
          -
          <lpage>16</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Zorzo</surname>
            ,
            <given-names>A. F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nunes</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Matos</surname>
            ,
            <given-names>E. S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Steinmacher</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leite</surname>
            ,
            <given-names>J. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Araujo</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Correia</surname>
            ,
            <given-names>R. C. M.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Martins</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>2017</year>
          ) “Referenciais de Formação para os Cursos de Graduação em Computação”. Sociedade Brasileira de Computação (SBC).
          <year>153p</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>