Processador Java Aplicado a Controle

Propaganda
Processador Java Aplicado a Controle
Samuel L. Maia¹, Marcos A. Medeiros Silva², Elias T. da Silva Jr.³
Resumo— Atualmente, a maioria dos microprocessadores
existentes tem sua forma de programação pouco intuitiva e
difícil para muitos estudantes e programadores. O
processador utilizado neste trabalho mostra seu grande
diferencial no tangente a sua forma de programação. Tratase de um microprocessador programável em Java,
linguagem de programação de alto grau de portabilidade.
Sendo assim mais acessível, este microprocessador é uma
alternativa em aplicações para diversos ambientes de
trabalho. Testes preliminares mostram o potencial da
proposta e uma aplicação de monitoramento de temperatura
encontra-se em desenvolvimento.
Palavras-chave:
Microcontroladores,
embarcados, Java, FPGA, telemetria.
Sistemas
I. INTRODUÇÃO
Este artigo apresenta um microprocessador para a
implementação de programas em alto nível,
utilizando a linguagem de programação Java, para
sistemas embarcados.
Esse microprocessador,
chamado de FemtoJava, executa os programas
compilados do código-fonte em Java e é
implementado em VHDL, com aplicação em placas
FPGA, que nos permite reprogramar o
microprocessador utilizando a mesma placa FPGA.
Para a comunicação do programador e o
microprocessador, existe uma API em Java, que
proporciona ao programador um ambiente destinado
à síntese de aplicações em Java para o FemtoJava,
chamado de SASHIMI.
No decorrer do artigo é mostrada a estrutura do
microprocessador e testes realizados com o mesmo.
Samuel Leitão Maia é estudante de Engenharia de
Computação no Instituto Federal de Educação, Ciência e
Tecnologia
do
Ceará
–
IFCE.
E-mail:
[email protected].
2
Marcos Aurélio Medeiros Silva é estudante de Engenharia
de Telecomunicações no Instituto Federal de Educação,
Ciência e Tecnologia do Ceará – IFCE. E-mail:
[email protected].
³ Elias Teodoro da Silva Júnior é professor do IFCE,
Departamento de Telemática. E-mail: [email protected].
1
II. O PROCESSADOR FEMTOJAVA
Através da implementação de máquinas virtuais,
em geral interpretadores para diversas plataformas
de hardware e software, a linguagem Java adquire
como característica a portabilidade. Entretanto o uso
de máquinas virtuais implica em programas mais
lentos e com maior exigência de memória. Estas
características tornam a linguagem Java proibitiva
para muitos sistemas embarcados, especialmente os
de tempo-real.
Visando tornar a linguagem Java aplicável a
sistemas embarcados foi desenvolvido um modelo
de microcontrolador Java, o processador FemtoJava
[1], que utiliza a codificação de instruções da JVM
(Java Virtual Machine) diretamente, inibindo a
necessidade da implementação de máquinas
virtuais, tornando a execução mais rápida. Isto
significa dizer que as instruções do processador são
os próprios bytecodes Java.
O microcontrolador implementado não apresenta
registradores de propósitos gerais acessíveis ao
programador. Os componentes principais do
FemtoJava são as memórias RAM para pilha de
dados e ROM para o programa, unidade operativa e
unidade de controle. A arquitetura utilizada é do
tipo Harvard[7], que se caracteriza por possuir
barramentos distintos para dados e instruções,
permitindo fazer acessos a operandos na pilha e
busca de imediatos de forma simultânea,
aumentando o desempenho do processador.
A memória de programa do processador
FemtoJava contém as instruções do programa
compilado do código-fonte em Java, que são
extraídas e alocadas por uma ferramenta de ligação
e montagem de código, chamada SASHIMI [1], que
será explicada adiante.
O
processador
FemtoJava
foi
descrito
integralmente utilizando-se da linguagem de
descrição de hardware VHDL (VHSIC Hardware
Description Language), o que nos permite
facilmente alterar suas funcionalidades, tornando o
processador bastante flexível. Por ser um
processador soft-core, o FemtoJava é implementado
em placas FPGA (Field Programmable Gate
Arrays). Isso permite redefinir parâmetros referentes
ao seu funcionamento, como o tamanho da
memória, e facilmente reprogramá-lo, utilizando as
ferramentas de síntese e programação do fabricante
da placa FPGA. Devido à facilidade de alterar a
descrição em VHDL do processador, existem várias
versões do FemtoJava, que podem variar em
organização, como multiciclo ou pipeline, ou em
arquitetura, como barramentos da memória RAM de
8 bits, 16 bits e 32 bits.
comunicação com os periféricos oferecidos junto
com o processador.
O SASHIMI é um ambiente destinado à síntese de
sistemas microcontrolados, especificados em
linguagem Java. Este ambiente utiliza as vantagens
da tecnologia Java e fornece ao projetista um
método simples, rápido e eficiente para obter
soluções baseadas em hardware e software para
microcontroladores. O conjunto de ferramentas
disponível no SASHIMI também foi desenvolvido
inteiramente em Java, tornando-o altamente
portável para diversas plataformas.
As ferramentas do ambiente SASHIMI suportam
a extração automática do subconjunto de instruções
Java necessário para implementar o software da
aplicação. Para cada aplicação pode ser gerado um
microcontrolador específico (com o conjunto de
instruções adaptado). O resultado é o melhor
aproveitamento dos recursos de hardware e a
obtenção de um software otimizado para cada
aplicação.
As ferramentas do ambiente SASHIMI
conseguem carregar arquivos executáveis Java
(.class), interpretar suas estruturas internas e,
portanto, extrair o código e outras informações
necessárias
à
execução
da
aplicação.
Adicionalmente, é possível efetuar modificações no
software e no microcontrolador (sem alterar a
funcionalidade) para um ajuste fino dos resultados
de síntese.
III. HARDWARE DE ENTRADA E SAÍDA
Para obter comunicação com o meio externo, o
processador FemtoJava possui portas de
comunicação, entrada e saída, e unidades de
controle, timer e interrupção, para uma
implementação ampla de tarefas.
Figura 1 – Microarquitetura do FemtoJava
Multiciclo [1]
Para desenvolver uma aplicação para o
processador FemtoJava, o programador descreve
seu código em Java, usando APIs específicas para a
A. Entrada/Saída de propósito Geral
O processador FemtoJava possui 4 portas de
entrada e saída mapeadas na memória RAM, com
32bits cada. Essas portas podem ser acessadas
através de uma API Java que implementa as funções
de leitura e escrita.
B. Timers
São oferecidos dois timers que podem funcionar
de duas maneiras: Como contador de pulsos de
clock de 1MHz ou como contadores de eventos. Os
timers podem ser acessados por funções da API
Java permitindo programar tarefas de tempo-real.
que desejar diretamente da linguagem de alto nível.
F. Outros dispositivos de E/S
Completando os recursos para controle e
monitoramento do ambiente externo, são
especificadas duas interfaces, gerador de PWM e
SPI. Estas duas interfaces estão em processo de
implementação e testes.
C. Interrupção
O PWM (Pulse-Width Modulation), ou
As interrupções possuem dois níveis de
prioridade. Existem interrupções associadas aos modulação, por largura de pulso permite controlar
dispositivos: porta serial, timers e dois hardwares dispositivos como motores de corrente contínua e
externos. Os registradores que programam a LEDs (Light-Emitting Diode).
O SPI (Serial Peripheral Interface Bus) é um
interrupção são mapeados na memória RAM.
A figura abaixo esquematiza o controlador de protocolo largamente utilizado pela indústria, que
permite a comunicação do microprocessador com
interrupção.
diversos outros componentes. Dispositivos de maior
complexidade (como rádio e câmara) podem ser
acoplados através desta interface.
III. ESTUDO DE CASO
Para a implementação do processador Femtojava,
foi utilizado o software de design Quartus II versão
9.0 (Copyright © 1991-2009 Altera Corporation),
que permite a compilação do código em VHDL, e a
síntese na placa FPGA, uma Cyclone II de modelo
Figura 2 – Controlador de Interrupção
EP2C8Q208C8N.
Para
monitoramento
do
funcionamento do processador e depuração do
D. Conversor A/D
sistema foi utilizada a ferramenta SignalTapII Logic
A fim de permitir monitorar grandezas Analyzer, também da ALTERA.
analógicas, como temperatura e luminosidade
O processador Femtojava, ocupa na placa FPGA,
ambiente, um conversor Analógico-Digital (ADC) cerca de 4177 elementos lógicos, aproximadamente
foi acrescentado à versão original do FemtoJava, 50% do total disponível, e cerca de 99328 bits de
proposta por Ito [1]. O ADC utilizado nos testes é o memória, aproximadamente 60% do limite máximo.
ADC0801, que faz uso da estrutura de
aproximações sucessivas [2] e tem resolução de 8 A. Testes iniciais
bits. Um método Java permite fazer leituras dos
Através do processador FemtoJava, implementado
valores analógicos, que podem variar de 0 a 5 Volts. em uma placa FPGA, foram executadas aplicações
E. Conversor D/A
Para que o processador possa atuar sobre sistemas
analógicos, um conversor Digital-Analógico (DAC)
foi introduzido na sua estrutura de E/S. Neste caso
foi usado o DAC0808, que tem uma resolução de 8
bits, e produz uma saída que varia de 0 a 5V de
acordo com a entrada. Um método Java permite que
o programador possa fornecer os valores analógicos
Java para testes de tempo-real, utilizando os timers
no acionamento de cargas luminosas.
Utilizando o hardware externo do conversor D/A,
que se comunica com o processador através das
portas de entrada e saída, foram feitos testes de
geração de algumas funções clássicas, como
senóides.
Os conversores Digital-Analógico e Analógico-
Digital foram montados em placas de circuito
impresso e conectados ao FPGA, onde o
processador FemtoJava foi sintetizado.
Um teste simples para o ADC foi capturar o valor
analógico de entrada e aplicá-lo na saída do DAC.
Desta forma, uma senóide que entrava pelo ADC
era vista na saída do DAC idêntica à entrada, com
ajuda de osciloscópio.
B. Em andamento: Leitura de sensor analógico
Estudos
estão
sendo
finalizados
para
implementação um sistema de monitoramento
remoto de temperatura. Para isso a interface SPI
será utilizada para comunicação com o rádio
MRF24J40MX [5], que implementa o protocolo
ZigBee. Este rádio é um transceptor que
disponibiliza a camada física, e a camada de acesso
ao meio referente à pilha de comunicação do
protocolo IEEE 802.15.4 [6].
IV. CONCLUSÕES
Este trabalho apresenta uma proposta de
utilização da linguagem Java em aplicações de
controle de monitoramento. Como ponto de partida,
utilizou-se um microprocessador soft-core que
implementa bytecodes Java nativamente. Alguns
dispositivos foram acrescentados ao processador
bem como os métodos Java que permitem a sua
utilização.
Como continuação do trabalho estão sendo feitos
estudos para implementação de uma placa
específica contendo o FPGA e os periféricos
desenvolvidos.
AGRADECIMENTOS
Os autores agradecem o apoio financeiro dado a
este projeto pela FUNCAP e pelo CNPq.
REFERÊNCIAS
[1] S.A. Ito, L. Carro, R.P. Jacobi. “Making Java Work for
Microcontroller Applications”. IEEE Design & Test of
Computers, Sept/Oct. 2001, vol. 18, n. 5, pp. 100-110.
[2] R. J. Tocci, N. S. Widmer, G. L. Moss, Sistemas
Digitais – Princípios e Aplicações, 10. ed., Pearson –
Prentice Hill, 2008.
[3] Universidade Federal do Rio Grande do Sul – Instituto de
Informática, “Sashimi – Manual do Usuário”, UFRGS –
Embedded Systems Lab, Versão 0.9, 2006.
[4] C. Luigi, Projeto e prototipação de sistemas digitais,1.
Ed., Editora da UFRGS, Porto Alegre, 2001.
[5] MICROCHIP. MRF24J40MB Data Sheet. 2009.
Disponível
em:
<http://www.microchip.com/wwwproducts/Devices.aspx?
dDocName=en542228>. Acesso em: 31 de março, 2010.
[6] IEEE Standard 802.15.4: Part 15.4: Wireless medium
access control (MAC) and physical layer (PHY)
specifications for low-rate Wireless Personal Area
Networks (WPANs). IEEE Computer Society. Ano 2007.
Disponível
em:
<http://standards.ieee.org/getieee802/download/802.15.4
a-2007.pdf>. Acessado em 23 de dezembro de 2009.
[7] D. A. Patterson, J. L Hennessy. Organização e Projeto
de Computadores, 3. ed., Elsevier, Rio de Janeiro, 2005.
Download