Plataforma WEB de Lógica Programável

Transcrição

Plataforma WEB de Lógica Programável
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
CURSO DE ENGENHARIA DA COMPUTAÇÃO
GILBERTO CARLOS BARBOSA
JOÃO AUGUSTO VAZ
Plataforma WEB de Lógica Programável
Trabalho de Conclusão de Curso.
Prof. Valfredo Pilla Jr
Orientador
Curitiba, novembro de 2009.
UNIVERSIDADE POSITIVO
Reitor: Prof. Oriovisto Guimarães
Vice-Reitor: Prof. José Pio Martins
Pró-Reitor de Graduação: Prof. Renato Casagrande
Diretor do Núcleo de Ciências Exatas e Tecnológicas: Prof. Marcos José Tozzi
Coordenador do Curso de Engenharia da Computação: Prof. Edson Pedro Ferlin
TERMO DE APROVAÇÃO
Gilberto Carlos Barbosa
João Augusto Vaz
Plataforma WEB de Lógica Programável
Monografia aprovada como requisito parcial à conclusão do curso de
Engenharia da Computação da Universidade Positivo, pela seguinte banca
examinadora:
Prof. Valfredo Pilla Junior (Orientador)
Profª. Maristela Regina Weinfurter
Prof. Edson Pedro Ferlin
Curitiba, 09 novembro de 2009.
AGRADECIMENTOS
Ao nosso Orientador Prof. Valfredo Pilla Junior pelo incentivo e presteza no
auxílio às atividades e discussões sobre o andamento e normatização deste
Projeto de Conclusão de Curso.
A todos os professores pela dedicação e entusiasmo demonstrado ao longo do
curso.
Particularmente ao amigo Anderson Augustinho pela valiosa ajuda que nos deu
durante a execução do projeto.
Às nossas famílias e amigos pela paciência em tolerar a nossa ausência.
E, finalmente, a DEUS pela oportunidade e pelo privilégio que nos foram dados
em compartilhar tamanha experiência.
SUMÁRIO
1
INTRODUÇÃO .................................................................................. 12
2
FUNDAMENTAÇÃO TEÓRICA ........................................................ 13
2.1
FPGA ..................................................................................................................................... 13
2.2
2.2.1
2.2.2
Comunicação serial ............................................................................................................... 13
Interface RS232 (EIA232) ...................................................................................................... 14
Interface USB ......................................................................................................................... 14
2.3
Sistemas Embarcados ........................................................................................................... 16
2.4
Tecnologia web ...................................................................................................................... 16
2.5
TCP/IP ................................................................................................................................... 16
3
ESPECIFICAÇÃO ............................................................................. 18
3.1
Módulo Reconfigurável ........................................................................................................ 18
3.2
Servidor embarcado ............................................................................................................. 19
3.3
Cronograma .......................................................................................................................... 22
3.4
Recursos necessários ............................................................................................................. 22
4
PROJETO ......................................................................................... 24
4.1
4.1.1
4.1.2
4.1.3
4.1.4
4.1.5
Servidor Embarcado ............................................................................................................ 24
Hardware ................................................................................................................................ 25
Especificações da Mainboard Pico-ITX VIA EPIA PX ......................................................... 25
Software e ferramentas instaladas no servidor ........................................................................ 28
Jam Player ............................................................................................................................... 28
Sistema Web desenvolvido em Java ....................................................................................... 29
4.2
4.2.1
4.2.2
Módulo Reconfigurável FPGA ............................................................................................ 31
Hardware ................................................................................................................................ 31
Software .................................................................................................................................. 34
4.3
4.3.1
4.3.2
4.3.3
Cliente .................................................................................................................................... 39
Recursos necessários: ............................................................................................................. 39
Metodologia de Implementação prevendo lógica de simulação ............................................. 40
Acesso ao Sistema Web .......................................................................................................... 41
5
RESULTADOS .................................................................................. 44
6
CONCLUSÃO ................................................................................... 49
7
REFERÊNCIAS ................................................................................. 50
LISTA DE ABREVIATURAS E SIGLAS
AHDL
Altera Hardware Description Language - Linguagem de Descrição de
Hardware da Altera.
API
Application Program Interface - conjunto de funções e bibliotecas
utilizadas para a construção de programas aplicativos.
ATX
Advanced Technology Extended - Tecnologia Avançada Estendida
BD
Banco de Dados
CI
Circuito Integrado.
CPLDs
Complex Programmable Logic Devices - Dispositivos de Lógicas
Programáveis Complexas
E/S
Entrada/Saída
FPGA
Field Programmable Gate Arrays - Arranjos de Portas Programáveis
em Campo.
HDL
Hardware Description Language - Linguagem de Descrição de Hardware.
Hz
Hertz
IP
Internet Protocol - Protocolo Internet.
ISO
International Organization for Standardization - Organização
Internacional para Padronização.
JVM
Java Virtual Machine – Máquina Virtual Java
NCET
Núcleo de Ciências Exatas e Tecnológicas
OSI
Open Systems Interconnection - Interconexão de Sistemas Abertos.
PCI
Placa de Circuito Impresso
PLD
Programmable Logic Device - Dispositivo de Lógica Programável.
SSDs
Solid State Disks - Discos de Estado Sólido
TCP
Transfer Control Protocol - Protocolo de Controle de Transporte.
UML
Unified Modeling Language - Linguagem de Modelagem Unificada
USB
Universal Serial Bus - Barramento Serial Universal
UP
Universidade Positivo
VHDL
VHSIC (Very High Speed Integrated Circuits) Hardware Description
Language - Linguagem de Descrição de Hardware
LISTA DE FIGURAS
Figura 2.1: Exemplo de comunicação RS232 (CANZIAN, 2009) ............................................................. 14
Figura 3.1: Diagrama em blocos do projeto ............................................................................................... 18
Figura 3.2: Diagrama de caso de uso .......................................................................................................... 20
Figura 3.3: Diagrama de sequência do projeto ........................................................................................... 21
Figura 4.1: Diagrama em blocos do sistema ............................................................................................... 24
Figura 4.2: Layout da Mainboard VIA EPIA PX-Series (manual do fabricante, 2009) ............................ 25
Figura 4.3: Adaptador compact flash para IDE macho 44 pinos (www.dealextreme.com, 2009) ............. 27
Figura 4.4: Basic Jam STAPL Flow (www.altera.com, 2009) .................................................................. 29
Figura 4.5: Diagrama de classes do sistema web ........................................................................................ 30
Figura 4.6: Placa com identificação de componentes do kit Altera DE2 (manual do fabricante, 2009) .... 31
Figura 4.7: Conexão USB blaster servidor embarcado - módulo reconfigurável ....................................... 32
Figura 4.8: MAX 232 (RS 232 Chip Schematic) ........................................................................................ 33
Figura 4.9: RS 232 pins assignments.......................................................................................................... 33
Figura 4.10: Conexão Serial RS232 Servidor Embarcado - Módulo Reconfigurável ................................ 33
Figura 4.11: Diagrama esquemático dos circuitos de clock ........................................................................ 34
Figura 4.12: Interface de comunicação serial async_transmitter ............................................................... 35
Figura 4.13: Interface de comunicação serial async_receiver .................................................................... 35
Figura 4.14: Interface de memória e buffer de entrada lpm_rom ............................................................... 36
Figura 4.15: Interface de memória e buffer de saída lpm_ram_dq ............................................................. 36
Figura 4.16: Interface mux de entrada switch_f .......................................................................................... 36
Figura 4.17: Interface mux de saída switch_r ............................................................................................. 37
Figura 4.18: Bloco contador count ............................................................................................................. 37
Figura 4.19: Arranjo final de blocos no Quartus II..................................................................................... 37
Figura 4.20: Bloco final simplificado no Quartus II ................................................................................... 38
Figura 4.21: Configuração de memória .mif no Quartus II ........................................................................ 39
Figura 4.22: Lógica paralela ....................................................................................................................... 40
Figura 4.23: Incrementador de endereço .................................................................................................... 41
Figura 4.24: Tela inicial do aplicativo ........................................................................................................ 42
Figura 4.25: Tela de login .......................................................................................................................... 42
Figura 4.26: Tela para configuração e simulação de projeto no FPGA ...................................................... 43
Figura 5.1: Foto do projeto funcionando .................................................................................................... 44
Figura 5.2: Foto do módulo servidor em funcionamento ........................................................................... 45
Figura 5.3: Foto do módulo reconfigurável em funcionamento ................................................................. 45
Figura 5.4: Bloco da biblioteca implementada ........................................................................................... 46
Figura 5.5: Configuração da memória mif de entrada ................................................................................ 46
Figura 5.6: Dados do projeto simulado ...................................................................................................... 47
Figura 5.7: Display de sete segmentos ....................................................................................................... 47
Figura 5.8: Simulação de cálculo ............................................................................................................... 47
Figura 5.9: Resultado da simulação ............................................................................................................ 48
LISTA DE TABELAS
Tabela 3.1: Cronograma de atividades ....................................................................................................... 22
Tabela 3.2: Resumo de custos .................................................................................................................... 23
Tabela 4.1: Especificações da Mainboard Pico-ITX VIA EPIA PX (manual do fabricante, 2009) .......... 25
RESUMO
Um dos maiores avanços tecnológicos das últimas décadas – a internet – mudou
completamente a disponibilidade e a rapidez de obtenção de informação e
conhecimento.
O projeto pretendido tem como objetivo unir a praticidade da navegação web com
uma inovadora tecnologia de projetos de circuitos digitais as arquiteturas de hardware
configuráveis. Nelas, as FPGAs, antes tecnologia que permitia que sistemas somente
fossem possíveis via projeto e manufatura de CI´s e PCI´s, agora sejam passíveis de ser
configurados via software em um encapsulamento flexível.
Este projeto consiste em uma ferramenta de configuração remota de FPGAs. Um
servidor conectado à internet permite acesso ao módulo reconfigurável. O servidor,
compacto com sistema operacional customizado disponibiliza para clientes as funções
de configuração e testes em hardware do dispositivo, desta forma é possível o projeto
tanto da lógica do sistema quanto do seu teste remotamente. Esta funcionalidade é
importante, pois mesmo sem acesso físico ao sistema é possível projetar e testar novas
funcionalidades ou mesmo corrigir configurações pré-existentes.
Palavras-Chave: FPGA, VHDL, Computação Reconfigurável, Lógica Programável,
Reconfiguração Remota, Servidor Web.
ABSTRACT
One of the biggest technological advances for recent decades - the Internet completely changed the availability and speed if obtaining information and knowledge.
The project is intended to unite the convenience of Web browsing with an
innovative design of digital circuits: the configurable hardware architectures. The
FPGAs, before technology that allowed systems were only possible through design and
manufacture of Integrated circuits PCI's, are now likely to be configured via software in
a flexible package.
This project consists of a remote configuration tool for FPGAs. A server connected
to the Internet allows access to the reconfigurable module. The server, compact
operating system provides customized functions for customers configuration and testing
of hardware device, thus it is possible to design both the logic of the system and its test
remotely. This feature is important, because even without physical access to the system
you can design and test new features or correct pre-existing settings.
Keywords: FPGA, VHDL, Reconfigurable Computing, Programmable Logic,
Rewriting Remote, Web Server
12
1 INTRODUÇÃO
De maneira geral com o avanço da tecnologia da eletrônica digital, cada vez mais as
aplicações nas mais diversas áreas vêm necessitando que suas funcionalidades sejam
flexíveis. Tal flexibilidade vem se mostrando fundamental, uma vez que as exigências
impostas pelos sistemas, com relação a características, padrões e protocolos tendem a
mudar durante a vida útil do mesmo. Tal maleabilidade também pode levar a novas
abordagens de desenvolvimento de sistemas voltados para ganhos de desempenho,
redução de custos nas fases de implementação e testes iniciais, bem como no projeto e
manutenibilidade do sistema como um todo.
A flexibilidade funcional é comumente obtida por meio de alterações do software,
limitando-se somente à parte programável dos sistemas. Desenvolvimentos mais
recentes utilizam tecnologia de matrizes de elementos lógicos programáveis no campo
(FPGAs - Field-Programable Gate Arrays) os quais permitem que modificações sejam
efetuadas em hardware de forma rápida e em tempo de execução.
Essas modificações referem-se a mudanças em circuitos digitais via reconfiguração
com ou sem a interrupção da operação do circuito. A implementação de sistemas que
exigem flexibilidade, alto desempenho e alta taxa de transferência de dados são
possíveis com a utilização desta tecnologia.
A possibilidade de reconfiguração em hardware também contribui para a economia
de recursos: quando uma determinada tarefa pode ser efetuada em fases, uma
configuração diferente pode ser carregada a cada fase sequencialmente. Tal fato também
possibilita que as fases de desenvolvimento e testes de hardware tornem-se tarefas mais
rápidas e baratas. Pode ainda ser usado como uma tecnologia de construção de sistemas
tolerantes a falhas. Tais sistemas podem realizar auto verificação e auto reconfiguração,
substituindo elementos defeituosos por elementos reservas disponíveis.
O avanço e a flexibilidade adquirida pela internet como meio de comunicação e
acesso a informação, bem como a popularidade e segurança para a realização de tarefas
online (remotos) como serviços de banco, compras, emails etc., tornou esta uma
ferramenta indispensável nos dias atuais.
Sendo assim, este projeto de plataforma web de lógica programável propõe a união
destas duas tecnologias, reconfiguração de elementos de hardware via software, com a
praticidade de se efetuar esta reconfiguração remotamente via web sem a necessidade de
acesso físico ao hardware que se pretende reconfigurar.
13
2 FUNDAMENTAÇÃO TEÓRICA
2.1 FPGA
O FPGA – Field Programmable Gate Array é um circuito integrado passível de ser
configurado por software e serve para implementar circuitos digitais, e serve para
implementar circuitos digitais, como processadores, interfaces, controladores e
decodificadores. É composto basicamente por três tipos de componentes: blocos de
entrada e saída (IOB), blocos lógicos configuráveis (CLB) e chaves de interconexão
(Switch Matrix). Os blocos lógicos são dispostos de forma bidimensional, as chaves de
interconexão são dispostas em formas de trilhas verticais e horizontais entre as linhas e
as colunas dos blocos lógicos. [MENDONÇA A, 2001]
Apesar de não ser uma tecnologia recente (o primeiro FPGA foi criado pela Xilinx
Inc em 1985) ainda vislumbra e retém interesse de inúmeros idealizadores da
comunidade científica. Tal fato se deve a sua alta flexibilidade e ao fato de permitir se
efetuar testes de protótipos de circuitos antes de se optar na construção de CI, que
poderá ser efetuada somente após os testes já em escala comercial.
2.2 Comunicação serial
“A maioria das mensagens digitais é mais longa que alguns poucos bits. Por não
ser prático nem econômico transferir todos os bits de uma mensagem simultaneamente,
a mensagem é quebrada em partes menores e transmitida sequencialmente. A
transmissão bit-serial converte a mensagem em um bit por vez por meio de um canal.
Cada bit representa uma parte da mensagem. Os bits individuais são então
rearranjados no destino para compor a mensagem original. Em geral, um canal passa
apenas um bit por vez. A transmissão bit-serial é normalmente chamada de transmissão
serial, e é o método de comunicação escolhido por diversos periféricos de
computadores.” [PIC, 2009]
“A transmissão byte-serial converte 8 bits por vez por meio de 8 canais paralelos.
Embora a taxa de transferência seja 8 vezes mais rápida que na transmissão bit-serial,
são necessários 8 canais, e o custo poderá ser maior do que 8 vezes para transmitir a
mensagem. Quando as distâncias são curtas, é factível e econômico usar canais
paralelos como justificativa para as altas taxas de transmissão. A interface Centronics
de impressoras é um caso típico de transmissão byte-serial.” [CANZIAN, 2009]
14
2.2.1 Interface RS232 (EIA232)
O termo RS é uma abreviação de Recommended Standard e relata uma padronização
de uma interface comum para comunicação de dados entre equipamentos, criada no
início dos anos 60, por um comitê conhecido atualmente como Electronic Industries
Association (EIA).
Embora tenha sofrido poucas alterações, muitos fabricantes adotaram diversas
soluções mais simplificadas que tornaram impossível a simplificação da padronização
proposta. As maiores dificuldades encontradas pelos usuários na utilização da interface
RS232 incluem pelo menos um dos seguintes fatores:
- A ausência ou conexão errada de sinais de controle, resultam em estouro do buffer
(overflow) ou travamento da comunicação.
- Função incorreta de comunicação para o cabo em uso, resulta em inversão das
linhas de Transmissão e Recepção, bem como a inversão de uma ou mais linhas de
controle (handshaking).
O padrão RS232 especifica as tensões, temporizações e funções dos sinais, um
protocolo para troca de informações, e as conexões mecânicas.
Foi desenvolvido tendo em vista a comunicação entre dois dispositivos seriais
denominados Data Terminal Equipament (DTE), geralmente um terminal, e Data
Circuit-Terminating Equipament (DCE), geralmente um computador.
Figura 2.1: Exemplo de comunicação RS232 (CANZIAN, 2009)
2.2.2 Interface USB
O termo USB é abreviatura de Universal Serial Bus ou Barramento Serial Universal.
Trata-se de uma tecnologia que tornou mais simples, fácil e rápida a conexão de
diversos tipos de aparelhos ao computador, evitando assim o uso de um tipo específico
de conector para cada dispositivo.
Surgiu para uso em 1995, diante da necessidade da indústria em estabelecer um
padrão que facilitasse a conexão de dispositivos ao computador.
Um dos principais motivos que levou à criação da tecnologia USB é a necessidade
de facilitar a conexão de variados dispositivos ao computador. Sendo assim, o USB
oferece uma série de vantagens:
15
• Padrão de conexão - qualquer dispositivo compatível como USB usa padrões
definidos de conexão, assim não é necessário ter um tipo de conector específico para
cada aparelho;
• Plug and Play - quase todos os dispositivos USB são concebidos para serem
conectados ao computador e utilizados logo em seguida. Apenas alguns exigem a
instalação de drivers ou softwares específicos. No entanto, mesmo nesses casos, o
sistema operacional reconhecerá a conexão do dispositivo imediatamente;
• Alimentação elétrica - a maioria dos dispositivos que usam USB não precisa ser
ligada a uma fonte de energia, já que a própria conexão USB é capaz de fornecer
eletricidade;
• Conexão de vários aparelhos ao mesmo tempo - é possível conectar até 127
dispositivos ao mesmo tempo em uma única porta USB;
• Ampla compatibilidade - o padrão USB é compatível com diversas plataformas e
sistemas operacionais. O Windows, por exemplo, o suporta desde a versão 98. Sistemas
operacionais Linux e Mac também são compatíveis.
• Hot-swappable - dispositivos USB podem ser conectados e desconectados a
qualquer momento. Em um computador, por exemplo, não é necessário reiniciá-lo ou
desligá-lo para conectar ou desconectar o dispositivo;
• Cabos de até 5 metros: os cabos USB podem ter até 5 metros de tamanho, e esse
limite pode ser aumentado com uso de hubs ou de equipamentos capazes de repetir os
sinais da comunicação.
2.2.2.1 USB 3.0 (SuperSpeed)
Apesar de já existir definições para USB 3.0 desde final de 2008, ainda são poucos
os dispositivos disponíveis que sejam compatíveis com o novo padrão.
As principais características do USB 3.0 (Super Speed) são:
• Transmissão bidirecional de dados - até a versão 2.0, o padrão USB permite que os
dados trafeguem do dispositivo A para o B e do dispositivo B para o A, mas cada um
em sua vez. No padrão 3.0, o envio e a recepção de dados entre dois dispositivos podem
acontecer ao mesmo tempo;
• Maior velocidade - a velocidade de transmissão de dados será de até 4,8 Gbps,
equivalente a cerca de 600 MBytes por segundo, um valor absurdamente mais alto que
os 480 Mbps do padrão USB 2.0;
• Alimentação elétrica mais potente - o padrão USB 3.0 pode oferecer maior
quantidade de energia: 900 miliampéres contra 100 miliampéres do USB 2.0;
• Compatibilidade - conexões USB 3.0 podem suportar dispositivos USB 1.1 e USB
2.0;
• Conectividade - o USB 3.0 pode fazer uso de novos tipos de conectores.
[Tecnologia USB, 2009]
16
2.3 Sistemas Embarcados
Um sistema embarcado pode ser definido como um sistema de software e hardware
integrado a outro sistema dedicado a uma tarefa específica, que não tem a computação
como fim. Podemos encontrar sistemas embarcados em diversos utensílios domésticos
tais como vídeo cassete, TV, microondas etc. Também encontrados em automóveis,
quiosques de informação caixas eletrônicos, faxes, maquinas fotográficas etc.
[MENDONÇA I, 2009]
2.4 Tecnologia web
“O servidor web é a ferramenta responsável pela distribuição de documentos
HTML através do protocolo HTTP, este é essencial e pode determinar o sucesso de uma
empresa na Internet. Um Servidor Web é um software, geralmente implementado na
forma de daemon, que controla a recuperação e disponibilização de arquivos no
formato de hipertexto em um sistema de arquivos.”
O Apache Web Server é um Servidor Web, open source, multiplataforma (BSD,
GNU/Linux, UNIX systems, Microsoft Windows e outras plataformas) mais utilizado
em todo mundo. As principais características do Apache são flexibilidade, altamente
configurável, robustez, escalabilidade, pode ser configurado para diferentes funções e é
composto de módulos separados em que cada um implementa uma característica
diferente. [SOUZA M, 2004]
2.5 TCP/IP
O protocolo TCP/IP foi criado visando atender a necessidades de endereçamentos e
interconexão de redes. Podemos considerar o TCP/IP como uma arquitetura formada
por um conjunto de protocolos de comunicação utilizados em redes locais (Lans) ou em
redes externas (Wans). Atua entre diferentes sistemas operacionais e aplicativos,
permitindo a comunicação entre eles e de maneira transparente ao usuário. [SOUZA L,
2001]
O TCP e o IP são os dois protocolos base para o funcionamento da Internet. Além
destes dois, vários outros protocolos constituem o que chamamos de “conjunto de
protocolos TCP/IP”, somente “TCP/IP” ou ainda por motivo de como são
implementados “pilha TCP/IP”, usado pela maioria dos autores para se referir ao
modelo.
Para reduzir a complexidade, a maior parte das redes é dividida em camadas ou
níveis. O objetivo de cada camada é oferecer serviços à camada acima, ocultando os
detalhes de implementação destes serviços. Entre máquinas a comunicação se dá no
mesmo nível de camada. Esta comunicação se baseia em regras e convenções prédefinidas, as quais são chamadas de protocolos. O conjunto de protocolos de um sistema
é chamado de pilha de protocolos. Entre as camadas da mesma máquina existem as
interfaces. A interface define quais serviços a camada oferece para a camada superior.
Para sistemas embarcados levam-se em consideração as limitações de memória e
processamento da arquitetura alvo. Muitas vezes não se tem o suporte de um sistema
17
operacional e suas funcionalidades como gerenciamento de memória, processos, sistema
de arquivos etc. A implementação rígida na separação em camadas pode comprometer o
desempenho na troca de informações entre elas. Uma abordagem de compartilhamento
de algumas variáveis pode relaxar essa separação de camadas. Na maioria de
implementações TCP/IP mantém uma separação bem definida entre a camada de
aplicação e as camadas mais baixas, onde, as camadas mais baixas são implementadas
diretamente no kernel, enquanto que as de aplicação, como processos de usuários.
[MENDONÇA, 2009]
18
3 ESPECIFICAÇÃO
Neste tópico é apresentada uma visão geral do projeto, com uma breve descrição dos
componentes do mesmo bem como suas respectivas funcionalidades no projeto como
um todo.
Figura 3.1: Diagrama em blocos do projeto
3.1 Módulo Reconfigurável
O projeto é constituído de dois módulos principais. O primeiro trata-se do servidor
embarcado que tem como requisitos básicos possuir as interfaces para comunicação
USB, Serial RS232 e Ethernet; o segundo módulo será o módulo reconfigurável. Um
terceiro elemento secundário deverá ser utilizado de maneira a intermediar a troca de
informações entre o módulo FPGA e o servidor embarcado, tal comunicação se dará via
protocolo de comunicação Serial RS232. Outros dispositivos auxiliares compõem a
especificação do sistema, como uma fonte de alimentação chaveada tipo ATX (Similar
19
a utilizada nos computadores comerciais com conector ATX12V de 20 pinos) que
utiliza de tecnologia de chaveamento para converter tensão alternada em tensão
contínua, com tensões de saída típicas de 3,3 volts, 5 volts e 12 Volts.
Serão utilizados três protocolos de comunicação. Primeiramente o protocolo USB
para carregamento da configuração do FPGA via conexão JTAG USB Blaster. O
protocolo RS232 será utilizado para troca de status entre o módulo FPGA e o servidor
embarcado para tal utilizará a programação Verilog para implementação dos blocos
padrões de maneira a intermediar a comunicação serial entre o servidor embarcado e o
módulo FPGA. O terceiro protocolo será o TCP/IP utilizado para estabelecimento de
comunicação com a rede externa de computadores, os quais terão acesso a uma
implementação WEB que estará rodando no servidor e através deste poderão configurar
e simular interações ao módulo FPGA.
O Padrão de comunicação para monitoração e troca de status entre o servidor
embarcado e a FPGA, terá como padrão as seguintes definições:
• Durante o desenvolvimento da funcionalidade do sistema a ser implementado no
módulo FPGA (aplicação lógica desenvolvida pelo usuário), em paralelo com a lógica
pretendida, será necessário às inserções de blocos previamente definidos neste, dentre
os quais podemos destacar que irá tratar da comunicação e supervisão da comunicação
serial. Após o carregamento da configuração, a comunicação serial já estará ativa
permitindo que seja possível o envio de status de comunicação ativa para o servidor
como forma de supervisão de conexão estabelecida.
• O sistema propõe que dados de status e simulação sejam possibilitados. Para tal, é
necessário o desenvolvimento de uma biblioteca contendo os blocos padrões, que
deverão ser utilizados pelos usuários da ferramenta, e que a lógica que se pretende
desenvolver seja composta desta lógica de programação. Tais blocos serão
implementados utilizando-se das linguagens de programação de algoritmos para
hardware reconfigurável VHDL ou Verilog.
• Inicialmente, cinco blocos básicos estarão disponíveis para a utilização durante a
programação da FPGA, que são: interface e comunicação serial, memória e buffer de
entrada para simulação, memória e buffer de saída para simulação, habilitação de
simulação Mux de entrada e bloco de habilitação de simulação Mux de saída.
• Como a porta serial ficará o tempo todo ativa e o sistema monitorando tudo o que
passa por ela, deve-se ter um controle para saber quando se inicia realmente uma
configuração da FPGA, para isso deverá ser implementado um “protocolo” de controle
conhecido tanto pelo servidor quanto pelo módulo FPGA.
3.2 Servidor embarcado
O servidor embarcado possibilita que os elementos pertencentes à rede ao qual ele
está inserido tenham acesso por meio de um navegador web a uma interface gráfica
cujas funcionalidades compreenderão: uma tela para validação de acesso do cliente
através de confirmação de usuário e senha; seleção de arquivo de configuração do
FPGA; carregamento do arquivo para FPGA e simulação da lógica pretendida via
template de entradas e saídas.
20
O servidor é constituído de uma plataforma compacta x86 VIA EPIA PX-Series
Pico-ITX Mainboard, cuja função é suportar um Sistema Operacional Compacto, em
princípio sendo uma versão customizada do Windows XP. Este sistema Operacional
deve ter ferramentas para prover um endereço de acesso ao cliente (ex.
www.configuracacaoremota.edu.br) por meio da rede.
Apesar de implementado sobre o sistema operacional XP, sistema que apresentou
melhores requisitos e termos de disponibilidade de drivers e material de suporte para a
plataforma compacta x86 VIA EPIA PX-Series Pico-ITX Mainboard, nada impede que
outra plataforma seja utilizada, ou que mesmo se utilizando da mesma plataforma outro
sistema operacional seja utilizado, sendo esta uma atitude considerada ousada, tendo em
vista a pouca disponibilidade de tempo para desenvolvimento deste projeto.
Na figura 3.2 – diagrama de caso de uso – está representado de maneira mais
genérica os principais atores (cliente, servidor e FPGA) bem como as ações entre um
ator e outro.
Figura 3.2: Diagrama de caso de uso
Uma visão do fluxo de dados que ocorre no Sistema Web que roda neste servidor
pode ser visto na figura 3.3 – diagrama de sequência do projeto – onde:
• O cliente abre navegador internet e acessa o link fornecido previamente (ex.
www.configuracaoremotafpga.edu.br);
• Após isso, efetua seu login utilizando de usuário e senha para ter acesso aos níveis
de seleção de arquivo e configuração de FPGA;
• O servidor verifica a existência do usuário e valida login caso os dados confiram;
• Para o usuário válido a tela de configuração é exibida, para usuário não válido é
exibido tela de erro;
• Na tela de configuração o cliente selecionará o arquivo que contém o projeto que
ele deseja enviar para configurar o FPGA (arquivo .JAM);
• O conteúdo do arquivo é mostrado na tela antes do envio para que o cliente possa
verificar se o arquivo é o esperado. Um botão de envio é habilitado;
21
• Quando o botão de envio é acionado, o arquivo é enviado para o servidor em
seguida retorna uma mensagem de sucesso ou erro;
• Se houve sucesso no envio, é habilitado o botão de configuração da FPGA;
• Se o botão de configuração for acionado, então o servidor enviará, por meio do
Jam Player, o arquivo recebido para a FPGA.
• Em seguida o Jam Player indica finalização da configuração do FPGA;
• O resultado do status de configuração finalizada é enviado ao cliente e em seguida
é mostrado o resultado da configuração em sua tela.
Figura 3.3: Diagrama de sequência do projeto
Por se tratar de uma aplicação web, vários clientes podem estar conectados ao
sistema ao mesmo tempo, porém, a partir do momento que o primeiro iniciar a
configuração da FPGA este terá acesso exclusivo a ela, liberando apenas quando
concluir a configuração. Os outros clientes que também queiram fazer uso da FPGA
recebem aviso de que ela está em uso no momento e devem aguardar a liberação.
22
3.3 Cronograma
Procurou-se criar o cronograma adequando-o à disponibilidade de tempo dos
membros da equipe para o projeto, com o calendário letivo da Universidade Positivo,
bem como datas de entregas em cada fase do projeto definidas pela instituição.
O tempo de trabalho no desenvolvimento do projeto foi considerado desde a fase de
pesquisa até a documentação final.
Tabela 3.1: Cronograma de atividades
ATIVIDADES
Pesquisa das tecnologias envolvidas no projeto e
definições de arquitetura
Estudo dos kits DE2 e EPIA-PX series, aquisição
de componentes e instalação do SO
Desenvolvimento e implementação
de Sistema Web
Desenvolvimento do protocolo de comunicação
entre os módulos
Implementação e testes do FPGA
Teste integrado do protocolo de comunicação entre
FPGA e Servidor Web
Elaboração de documentação do sistema
FEV MAR ABR
MAI
JUN
JUL
AGO
SET
OUT NOV
X X
X X X X
X X X X
X X X X X
X X X X X X X
X X X X X X X
X X X
3.4 Recursos necessários
Para o desenvolvimento deste projeto, os principais recursos foram disponibilizados
pela Universidade Positivo, mais especificamente pelo curso de Engenharia da
Computação. Porém, visando estimar o custo total do projeto, estes foram listados na
tabela 3.2 (resumo de custos). Nesta estimativa não estão considerados valores de
impostos nem valor do espaço físico.
Os custos mais relevantes na parte de hardware refere-se ao kit DE2 Cyclone II
2C35 Altera (módulo configurável) e ao kit x86 VIA EPIA PX-Series Pico-ITX
(módulo servidor), ambos fornecidos pela universidade. Cabe salientar que para
possibilitar a utilização no nosso projeto, foi necessário adquirir alguns componentes a
mais para compor o kit da Via.
As licenças de softwares necessárias também foram fornecidas pela universidade.
23
Tabela 3.2: Resumo de custos
DESCRIÇÃO
CUSTO
Software
Windows XP
R$
1.000,00
Quartus II
R$
1.500,00
Microsoft Office (Word, Excel)
R$
900,00
Project
R$
2.000,00
Total do custo de softwares
R$
5.400,00
x86 VIA EPIA PX-Series Pico-ITX Mainboard
R$
1.150,00
Kit DE2 Cyclone II 2C35 Altera
R$
1.150,00
Notebook (dois)
R$
5.000,00
Fonte de alimentação ATX
R$
50,00
Cartão de memória Compact Flash 8Gb
R$
60,00
Adaptador IDE Compact Flash 44 pinos
R$
25,00
Memória RAM 1Gb DDR2 667MHz
R$
50,00
Multímetro Digital
R$
150,00
Total do custo de software
R$
7.635,00
Direta (R$ 30,00 x 360h)
R$
20.278,08
Do Professor Orientador (R$ 63,5 x 160h)
R$
19.076,42
Do Coordenador do Curso (R$ 109,00 x 80h)
R$
16.372,67
Total do custo de mão-de-obra
R$
55.727,17
CUSTO TOTAL DO PROJETO
R$
68.762,17
Hardware
Mão-de-obra
24
4 PROJETO
Neste capítulo serão abordados detalhes de construção e funcionamento do projeto,
que consiste na implementação de um sistema embarcado capaz de suportar um serviço
web, bem como possibilitar a comunicação com módulo FPGA genérico, de maneira a
possibilitar sua configuração completa ou parcial e troca de informações referentes ao
seu status atual de funcionamento, tendo em vista que toda funcionalidade estará
disponível a qualquer cliente conectado à rede em que o servidor esteja inserido.
DIAGRAMA EM BLOCOS DO SISTEMA
Figura 4.1: Diagrama em blocos do sistema
4.1 Servidor Embarcado
O hardware compacto acoplado ao módulo FPGA que tem como objetivo
possibilitar a comunicação entre um computador qualquer (Cliente) que esteja inserido à
rede Ethernet possa configurar e monitorar o módulo FPGA. Dentre seus principais
25
requisitos, além de dimensões reduzidas, este deve possuir conexões para interfaces de
comunicação USB e Serial RS232 (utilizados na configuração e monitoração do módulo
FPGA) e uma interface para comunicação Ethernet TCP/IP de modo a possibilitar a este
a inserção do mesmo à rede.
4.1.1 Hardware
Utilizado como unidade de hardware a plataforma compacta X86 VIA EPIA PX
SERIES PICO ITX MAINBOARD.
Figura 4.2: Layout da Mainboard VIA EPIA PX-Series
(manual do fabricante, 2009)
Características Técnicas da Plataforma
4.1.2 Especificações da Mainboard Pico-ITX VIA EPIA PX
Tabela 4.1: Especificações da Mainboard Pico-ITX VIA EPIA PX
(manual do fabricante, 2009)
Modelo
• EPIA PX
Processador
• VIA C7 1GHz NanoBGA2
26
Chipset
• Chipset IGP unificado de mídia digital VIA VX700
Memória do Sistema
• 1 soquete SODIMM DDR2 533
• Até 1GB
VGA
• Placa gráfica AGP 3D/2D VIA UniChromeTM Pro II
integrada com aceleração de decodificação de vídeo MPEG2/4 e WMV9
IDE na Placa
• 1 conector UltraDMA 133/100/66 (secundário de 2mm com
44 pinos)
ATA Serial na Placa
• 1 conector SATA
LAN na Placa
• 1 controladora Ethernet 10/100Mbps VIA VT6106S com
funções de gerenciamento de energia
Áudio na Placa
• Codec de áudio de alta definição VIA VT1708A
Conectores Onboard
E/S
• 4 headers USB para 4 portas USB 2.0
• 1 conector de porta COM
• 1 header PS2 para mouse/teclado
• 1 conector LVDS/DVI
• 1 conector multimídia para suporte a interface externa de
saída de TV, porta de captura de vídeo e interface com
poucos pinos (necessária placa extra)
• 1 header de áudio para line-out, line-in, mic-in, S/PDIF in e
saída de áudio 7.1
• 1 header de ventilador para ventilador da CPU
• 1 conector de energia Pico-iTX
Painel traseiro E/S
• 1 porta LAN RJ-45
• 1 porta VGA
BIOS
• Award BIOS
• Memória flash 4/8Mbit
Sistema de
monitoramento e
gerenciamento
• Leitura da temperatura da CPU (opção de fábrica)
• Watch Dog Timer (opção de fábrica)
• Keyboard-Power-on, Timer-Power-on
• Wake-on-LAN
• Gerenciamento da energia do sistema
• Recuperação de falta de energia AC
Sistema Operacional
Windows XP, Linux, Win CE, XPe
Temperatura
• 0°C ~ 50°C
27
Operacional
Umidade em operação
• 0% ~ 95% (umidade relativa; sem condensação)
Padrão de formato e
peso (Form Factor)
• Pico-ITX (10 camadas)
• 10 cm x 7,2 cm
A plataforma compacta X86 PICO ITX VIA EPIA PX em sua configuração básica
não possui cartão de memória de trabalho e também não possui unidade de
armazenamento em disco.
Primeiro Teste – Mesmo sem memória de trabalho e unidade de armazenamento de
maneira similar aos demais microcomputadores de mercado, a MAINBOARD possibilita
o acesso às suas configurações SETUP POST e BIOS, permitindo assim que, utilizando
de uma fonte ATX, monitor, teclado e mouse efetuássemos tal acesso garantindo assim
a sua funcionalidade técnica.
De maneira a complementar especificação de hardware que constitui inicialmente o
servidor embarcado, foram necessárias aquisições um cartão de memória de 1GHz DIM
DDR 667MHz para a função de memória de trabalho e um cartão de memória tipo
Compact Flash de 8 GBytes, o qual necessitou também da aquisição de um adaptador
Compact Flash para IDE 44 pinos, a fim de suprir a função de unidade de
armazenamento.
Figura 4.3: Adaptador compact flash para IDE macho 44 pinos
(www.dealextreme.com, 2009)
Segundo Teste - verificação da compatibilidade dos dispositivos adicionados e
instalação básica do sistema operacional, finalizando assim os testes básicos da
plataforma de hardware. Demais testes envolvendo as interfaces de comunicação USB
RS232 e TCP/IP Ethernet só foram possíveis após a instalação do sistema operacional
otimizado e estão mencionados na seção de software do servidor embarcado.
28
4.1.3 Software e ferramentas instaladas no servidor
Os softwares cuja instalação está detalhada abaixo são requisitos para
funcionamento do projeto.
4.1.3.1 Sistema Operacional
Foi feita uma instalação do sistema operacional Windows XP customizado, sendo
eliminados alguns componentes que são marcados por padrão na instalação, bem como
adicionados outros componentes que seriam úteis para finalidade desse projeto.
Por questão de segurança, algumas atualizações foram efetuadas como service packs
e outras atualizações também importantes.
4.1.3.2 Quartus II
Em seguida foi instalado o Quartus II versão 7.2, também com o mínimo de
componentes necessários, basicamente alguns componentes para execução via linha de
comando (quartus_jli e jtagserver) necessários à comunicação entre o módulo servidor
embarcado e módulo reconfigurável.
4.1.3.3 Servidor Web
No servidor embarcado, o sistema operacional está instalado num cartão de memória
do tipo Compact Flash de 8Gb. Tem ainda outras ferramentas necessárias para o
funcionamento dos serviços Web utilizados nesse projeto, como uma Máquina Virtual
Java (JVM) utilizada para rodar a aplicação do servidor desenvolvido em Java, o
Apache Tomcat que é um servidor de aplicações Java para Web que implementa as
tecnologias JavaServlets e JavaServer Pages, este comporta-se como um servidor web
(HTTP) ou funciona integrado a um servidor Web dedicado (como o Apache ou o IIS).
Há ainda um gerenciador de banco de dados MySQL que utiliza Linguagem de
Consulta Estruturada (SQL - Structured Query Language) como interface e tem
característica de dados rápido, com multi-processamento e multi-usuários em SQL
(Structured Query Language) utilizado neste projeto para armazenamento de login de
usuário e assim permitir multisessões.
4.1.4 Jam Player
O Jam STAPL - Jam Standard Test and Programming Language, Linguagem
Padrão para Teste e Programação - foi criado pela Altera e é utilizado por um grupo de
fabricantes de Dispositivos Lógicos Programáveis (PLD), construtores de equipamentos
de configuração, e fabricantes de equipamentos de testes. Jam STAPL foi adotado como
norma JEDEC JESD-71 em agosto de 1999.
Jam STAPL estabelece as regras que os desenvolvedores devem seguir quando
programando sistemas PLD’s. Estas regras incluem formato de arquivos proprietários,
algoritmos específicos de programação, tamanho de arquivos. Jam STAPL é um
importante passo no fornecimento de software padronizado para In System Program
(ISP).
4.1.4.1 Como funciona o Jam STAPL
O Jam STAPL consiste de dois componentes: O Jam Composer e o Jam Player.
29
O Jam Composer é um software de programação, geralmente desenvolvido pelo
fabricante da lógica programável, e é quem gera o arquivo Jam (.JAM) que contém os
dados do usuário e o algoritmo de programação requerido para carregar a aplicação no
dispositivo.
O Jam Player é o software que lê o arquivo Jam e aplica os vetores de programação
e dispositivos de testes no protocolo JTAG. Desenvolvedores de sistemas embarcados
podem também usar o Jam Player para programar dispositivos em seus sistemas. Muitos
dos códigos-fonte necessários para o Jam Player estão presentes no Jam STAPL
Developers Kit disponíveis no Jam STAPL web site. Somente a rotina de software
requerida para uma aplicação Jam Player completa são necessárias para acessar a JTAG
Chain.
Figura 4.4: Basic Jam STAPL Flow
(www.altera.com, 2009)
4.1.5 Sistema Web desenvolvido em Java
Para o desenvolvimento do Sistema Web foi utilizado a linguagem Java, escolhida
principalmente pela compatibilidade multiplataforma, é possível usar em outros
sistemas operacionais com o mínimo de ajustes, é uma linguagem amplamente
difundida, o que facilita suporte para melhorias no projeto inclusive.
O ambiente de desenvolvimento é o Eclipse, que é um IDE livre e o mais utilizado
entre os melhores profissionais de Java e também de maior familiaridade pelos
integrantes da equipe.
Os detalhes do sistema bem como as classes que o compõe estão explicados a seguir
e a interconexão das classes podem ser melhor visualizadas no diagrama de classes na
figura 4.5.
LoginBean – recebe o login e senha informados na página e a sua função é validar o
usuário. Para isto cria uma instância da classe BD para se comunicar com o Banco de
Dados e também uma da classe Usuario (criando um objeto com os dados recuperados
do banco). Se os dados do banco coincidirem com os recebidos por meio da página, ele
redireciona para a página inicial do sistema senão informa mensagem de erro.
30
ComandoBean – responsável pela execução do comando do Quartus (comando
recuperado pela classe Propriedades).
BaixarArquivoBean – monta a resposta vinda da porta serial (pela da classe
ConexaoSerial) para ser exibida na página. Também utiliza a classe Data para a
formatação dos tempos das execuções.
ConexaoSerial – responsável pela comunicação entre o servidor de aplicação com a
porta serial (FPGA). Para se conectar esta lê dados da classe Propriedades para saber o
nome da porta e envia os dados recebidos para a classe BaixarArquivoBean. Também
utiliza a classe Data para a formatação dos tempos das execuções.
BD – responsável pela comunicação com o Banco de Dados. Para se conectar ela
utiliza a classe Propriedades e recupera informações para realizar a conexão.
Propriedades – classe que fornece informações para as demais classes do sistema.
Data - formata a data para exibição na tela (utilizada pelas demais classes do
sistema).
Usuário – classe modelo de acordo com a tabela do banco de dados (tabela usuario).
Figura 4.5: Diagrama de classes do sistema web
31
4.2 Módulo Reconfigurável FPGA
Dispositivo de lógica programável o qual será acoplado ao servidor embarcado.
4.2.1 Hardware
Utilizado como dispositivo de lógica programável o KIT ALTERA DE2.
Figura 4.6: Placa com identificação de componentes do kit Altera DE2
(manual do fabricante, 2009)
O seguinte hardware está disponível no kit DE2:
4.2.1.1
Especificações da Mainboard Pico-ITX VIA EPIA PX
• Dispositivo Altera Cyclone® II 2C35 FPGA
• Dispositivo de Configuração Serial Altera – EPCS16
• USB Blaster (on board) para programação e controle da API; Ambos os modos de
programação JTAG e Active Serial (AS) são suportados
• 512-Kbyte SRAM
• 8-Mbyte SDRAM
• 4-Mbyte Flash Memory (1 Mbyte em algumas versões)
• SD Card Socket
• 4 Chaves do tipo pushbutton
32
• 18 Chaves do tipo retentivo
• 18 Leds de cor vermelha
• 9 Leds de cor verde
• Osciladores de 50-MHz e 27-MHz para funções de Clock
• Codec 24-bit CD-quality audio com conectores para line-in, line-out e microfone
• VGA DAC (10-bit high-speed triple DACs) com conector VGA-out
• 10/100 Controlador Ethernet com um conector
• Controlador USB Host/Slave com conectores tipo A e tipo B
• Transcodificador RS-232 e conector 9 pinos
• Conector PS/2 mouse/ Conector de Teclado
• Transceptor IrDA
• Dois conectores de expansão de 40 pinos com proteção à diodo.
Dentre as suas principais características se destacam as que são primordiais para a
execução deste projeto:
4.2.1.2 Porta USB Blaster
Utilizada como meio para carregamento da configuração ao módulo FPGA por meio
do servidor embarcado.
Figura 4.7: Conexão USB blaster servidor embarcado - módulo reconfigurável
4.2.1.3 Porta Serial RS232
Outro dispositivo essencial presente no KIT DE2 é o driver para comunicação Serial
RS232 que se utiliza de um arranjo contendo o chip MAX 232 como elemento
transcodificador integrado à placa, não necessitando assim o desenvolvimento de um
33
driver externo (especificação inicial utilizaria do microcontrolador 8051 para esta
finalidade).
Figura 4.8: MAX 232 (RS 232 Chip Schematic)
Figura 4.9: RS 232 pins assignments
Figura 4.10: Conexão Serial RS232 Servidor Embarcado - Módulo Reconfigurável
34
4.2.1.4 Osciladores de Clock
Osciladores de Clock interno são utilizados como clock base da comunicação Serial
RS232.
Figura 4.11: Diagrama esquemático dos circuitos de clock
Outros elementos do kit que também foram bastante utilizados durante os testes e
também durante a simulação funcional da ferramenta implementada foram: Display
LCD, toggle switches, LEDs, PushButtom Switches.
4.2.2 Software
O Módulo Reconfigurável, de modo geral, não necessitaria de nenhum
desenvolvimento de software adicional para ser configurado, tendo em vista que está
sendo utilizada a comunicação JTAG, padrão para configuração da FPGA. Porém, para
ser possível a troca de status e a simulação da aplicação do cliente, fez-se necessário a
criação de uma biblioteca padrão, que deverá ser utilizada por este durante
desenvolvimento da lógica que se pretende enviar para o módulo. Tal lógica deve ser
implementada de maneira paralela à aplicação do cliente e será detalhada de forma mais
abrangente nos tópicos a seguir. Tal lógica deve ser implementada de maneira paralela à
aplicação do cliente.
Esta biblioteca foi implementada utilizando as três linguagens de programação mais
difundidas na programação de hardware reconfigurável, a linguagem VHDL, a Verilog
e a linguagem de representação por lógica de diagramas em blocos e esquemáticos
Block Diagram / Schematic File.
De maneira inicial foram implementados sete blocos e a partir destes se originou ao
bloco de biblioteca padrão que deve ser usados na implementação de um projeto a ser
carregado ao módulo reconfigurável. Os blocos base para a criação da biblioteca padrão
são os seguintes: interface de comunicação serial bloco transmissor Async_Transmitter,
interface de comunicação serial bloco receptor Async Receiver, memória e buffer de
35
entrada Lpm_Rom memória e buffer de saída Lpm_Ram DQ, Mux de entrada Switch_F,
Mux de Saída Switch_R e bloco contador de endereços count.
4.2.2.1 Interface de comunicação Serial Async_Transmitter
Figura 4.12: Interface de comunicação serial async_transmitter
O bloco de interface de transmissão serial com baud rate configurado para 115200.
Possui como principais atributos de entrada o sinal binário de clock ,“clk” configurado
para uma frequência de 27MHz (utilizado clock interno do KIT DE2), sinal binário de
inicialização de transmissão TxD_start e vetor binário de 8 bits TxD_data[7..0] que irá
receber o caráter ASCII a ser transmitido. Tem como atributos de saída o sinal binário
TxD, dado enviado de maneira serial, e o sinal binário TxD_busy indicando se o bloco
está ocupado (em processo de envio) ou está apto a enviar.
O bloco gerado via comando generate block do Quartus II do código Verilog do site
http://www.fpga4fun.com/SerialInterface.html.
4.2.2.2 Interface de comunicação Serial Async_Receiver
Figura 4.13: Interface de comunicação serial async_receiver
O bloco de interface de recepção serial com baud rate de 115200. Possui como
principais atributos de entrada o sinal binário de clock, “clk” configurado para uma
freqüência de 27MHz (utilizado clock interno do KIT DE2) e RxD sinal binário para
recepção de informação de modo serial. Tem como atributos de saída o sinal binário
RxD_data_ready que indica o fim da transmissão de um caracter, RxD_data[7..0]
contém o dado recebido na forma de vetor de 8 bits.
O bloco gerado via comando generate block do Quartus II do código Verilog do site
http://www.fpga4fun.com/SerialInterface.html.
36
4.2.2.3 Interface de memória e buffer de entrada lpm_rom
Figura 4.14: Interface de memória e buffer de entrada lpm_rom
O bloco de memória lpm_rom com 32 endereços de 1 byte cada. Esta memória
conterá as informações de entrada para o modo simulação. Este deve ser configurado
pelo usuário do sistema de maneira a simular os sinais de entrada de hardware.
4.2.2.4 Interface de memória e buffer de saída lpm_ram_dq
Figura 4.15: Interface de memória e buffer de saída lpm_ram_dq
O bloco de memória lpm_ram_dq de 32 endereços de 1 byte cada. Este bloco de
memória receberá os bits de resultados da simulação do projeto do cliente, e é ele
também que será enviado para o servidor embarcado a partir do momento que a
simulação de todas as iterações definidas pelo cliente tenha findado.
4.2.2.5 Interface Mux de entrada switch_f
Figura 4.16: Interface mux de entrada switch_f
O bloco de seleção utilizado quando selecionado o modo simulação pelo servidor
embarcado, chaveará o barramento contendo os bits de entrada de hardware para os bits
vindos da memória e buffer de entrada lpm_rom.
37
4.2.2.6 Interface Mux de saída switch_r
Figura 4.17: Interface mux de saída switch_r
O bloco de seleção utilizado quando selecionado o modo simulação pelo servidor
embarcado, chaveará o barramento contendo os bits de saída de hardware para os bits
vindos da memória e buffer de saída lpm_ram_dq.
4.2.2.7 Bloco contador count
Figura 4.18: Bloco contador count
O bloco contador que incrementará o endereço de memória de entrada e de saída,
quando executado comando de simulação por parte do servidor embarcado.
Figura 4.19: Arranjo final de blocos no Quartus II
38
A figura 4.19 apresenta o diagrama esquemático da lógica de simulação e envio de
resultados ao servidor embarcado. Neste foi implementado um bloco de transmissão
serial e um bloco de recepção serial, o bloco de recepção serial está sempre ativo e sua
saída de dados esta sendo monitorada por blocos comparadores. Os blocos
comparadores determinam quando será habilitado o modo de simulação e também
determinam quanto a inicialização e término do envio do resultados obtidos pela
simulação. Um bloco chaveador está inserido de maneira a substituir os valores
provenientes das entradas de hardware pelos valores previamente inseridos na memória
de entrada e um bloco contador com clock de 100KHz atualiza os endereços de acesso a
memória de maneira que durante a ativação do modo simulação, todos os conteúdos dos
endereços da memória de entrada sejam enviados a lógica do usuário. De maneira
similar existe também um bloco chaveador de saída, que quando em modo simulação
direciona as saídas da lógica do usuário para um bloco de memória de saída e não para
as saídas de hardware sendo que o mesmo contador que efetua a atualização de
endereços da memória de entrada atualiza os endereços da memória de saída. Após
efetuada toda a varredura dos blocos de memórias, a memória de saída já esta
preenchida com valores provenientes do realização do modo de simulação. O modo de
envio de resultados e habilitado pelo servidor embarcado, que envia a posição de
memória que ele deseja receber, e o conteúdo da posição de memória por ele requisitado
e enviado para a entrada do bloco de transmissão serial ao mesmo tempo em que é
gerado um bit de inicialização de transmissão. Ao fim da transmissão de todos os
endereços de memória o servidor embarcado envia o status de resultados finalizados.
Como resultado do diagrama esquemático ilustrado na figura 4.19 foi gerado o bloco
de interface (figura 4.20) que deve ser utilizado pelo usuário, sendo que este terá acesso
ao esquemático que deu origem ao mesmo, o bloco de interface sugerido apenas tem a
intenção de facilitar a utilização do mesmo por parte do usuário desenvolvedor.
Figura 4.20: Bloco final simplificado no Quartus II
39
O bloco ilustrado na figura 4.20 é o bloco que deve ser utilizado pelo usuário,
quando este optar pela utilização do modo simulação no desenvolvimento de seu
projeto. O bloco tem como sua principal funcionalidade estabelecer um link de
comunicação bidirecional via protocolo de comunicação serial, e a partir desta permitir
que comandos enviados pelo servidor embarcado sejam executados pelo módulo
reconfigurável.
Figura 4.21: Configuração de memória .mif no Quartus II
4.3 Cliente
4.3.1 Recursos necessários:
Um PC (Personal Computer) Pentium III ou similar com no mínimo 256KBytes de
memória RAM, interface RJ45, interface RS232 e interface USB. Programa Altera
Quartus II Web Edition instalado;
Conexão com a Internet, bem como navegador compatível com tecnologia utilizada
no desenvolvimento da página internet.
Arquivo binário com extensão .JAM que é gerado para a configuração da FPGA a
partir de ferramentas seguindo um determinado fluxo de projeto. Esse arquivo contém
as informações necessárias para especificar a função de cada unidade lógica e para,
seletivamente, fechar os switches da matriz de interconexão.
Este arquivo pode ser originado da compilação de um projeto desenvolvido no
ambiente de desenvolvimento de PLDs no Altera Quartus II que é um software
destinado a desenho e programação de dispositivos lógicos programáveis, que conta
com uma implementação das linguagens VHDL, AHDL e Verilog para descrição de
40
hardware, bem como uma representação simbólica (diagrama esquemático)
relativamente de fácil uso, permitindo a edição visual de circuitos lógicos.
4.3.2 Metodologia de Implementação prevendo lógica de simulação
Refere-se a um projeto que possibilite a configuração remota de um módulo FPGA,
logo se faz necessário o desenvolvimento de um método, que permita que testes
funcionais da lógica sejam efetuados, sem que necessariamente comandos relacionados
às interfaces, de entrada e saídas (E/S) necessitem ser realizados.
Para tal, previamente o desenvolvedor da implementação a ser configurada no
FPGA, deve desenvolver adicionalmente à lógica pretendida, uma lógica paralela, a
qual possibilite que, quando assim for desejado, o sistema execute a lógica utilizando ao
invés das interfaces de entrada e saída padrão, o endereçamento de memória. E também
que permita por meio de sua manipulação, a possibilidade de avaliação da
funcionalidade da lógica pretendida.
Devem existir infinitas possibilidades de se implementar a lógica paralela, e cada
programador utilizará a que lhe parecer mais usual e adequada. De qualquer forma,
alguns sinais básicos deverão ser de conhecimento do programador, pois se tratam dos
sinais de hardware que permitirão a inicialização do processo de simulação ou a sua
desabilitação e retorno do funcionamento da lógica se utilizando das interfaces E/S.
A figura 4.22 ilustra uma lógica paralela bem como os meios para que esta seja
ativada e desativada.
Figura 4.22: Lógica paralela
41
A metodologia seguida neste exemplo, é que para cada interface de E/S utilizada, ou
sinal de entrada ou saída de uma unidade lógica em particular, sejam inseridos
chaveadores comandados por um sinal externo à lógica. Este sinal estaria incumbido de
efetuar a seleção entre a utilização da interface de E/S, representada no exemplo pelas
letras A, B, C, D e LED, ou utilizar o endereçamento direto à memória representado
pelas siglas D0, D1, D2, D3.
Quando selecionado para utilização de interface E/S, a lógica funcionaria
normalmente, sendo disparada pela alteração do nível lógico relacionados a estas. Em
modo de simulação os sinais de entrada estão associados a determinados endereços de
memória, igualmente aos sinais de saída, permitindo que seja possível a manipulação
dos sinais de entrada e posterior avaliação dos valores encontrados na saída e que
verificações sejam realizadas de maneira a certificar que a lógica implementada atenda
às suas respectivas imposições, não necessitando de um teste local para comprovação
destas.
De maneira a permitir que inúmeras combinações sejam feitas é possível utilizar
uma lógica complementar, que efetue a alteração do endereçamento monitorado pela
lógica de simulação, fazendo com que a cada ciclo de clock seja endereçado uma nova
posição de memória. Esta deve ser editada previamente e possuir um conjunto de dados
diferente, fazendo com que a cada atualização de memória um valor diferente seja
atribuído a cada entrada, e que uma nova posição de memória seja reservada para
receber o resultado de saída, tendo assim para cada combinação possível de entrada um
respectivo valor de saída.
Figura 4.23: Incrementador de endereço
4.3.3 Acesso ao Sistema Web
Para acesso ao sistema o cliente deve abrir um navegador digitar o endereço de
acesso ao sistema http://endereçoservidor:8080/fpga ou outro endereço
(ex.:www.configuracaofpga.edu.br). Vai aparecer a tela inicial do sistema (figura 4.24)
e clicando no botão Configuração da FPGA virá a tela de login (figura 4.25) a partir daí
o cliente já pode fazer uso do sistema.
Nota: a utilização do sistema está melhor detalhada no manual do usuário.
42
Figura 4.24: Tela inicial do aplicativo
Figura 4.25: Tela de login
43
Figura 4.26: Tela para configuração e simulação de projeto no FPGA
44
5 RESULTADOS
Na figura 5.1 é possível ver uma foto do projeto funcionando com os módulos
interconectados pelas portas seriais RS232 e USB. O módulo Reconfigurável também
ligado e funcionando. O módulo do Servidor Embarcado rodando o sistema operacional
com todos os serviços necessários iniciados. Está acessando o sistema Web localmente.
Energizado com uma fonte padrão ATX e conectado a um monitor VGA padrão CRT.
Figura 5.1: Foto do projeto funcionando
45
A figura 5.2 apresenta o módulo do Servidor em funcionamento em que pode ser
verificado suas conexões mais detalhadamente.
Figura 5.2: Foto do módulo servidor em funcionamento
O módulo Reconfigurável em funcionamento já com um projeto executado via
sistema Web, também é possível ser observado na figura 5.3.
Figura 5.3: Foto do módulo reconfigurável em funcionamento
46
Foi implementado uma calculadora_RPN utilizando-se da biblioteca implementada
(figura 5.4) de modo a validar o funcionalidade da lógica de simulação e apresentação
dos resultados.
Figura 5.4: Bloco da biblioteca implementada
A figura 5.5 apresenta a configuração efetuada na memória mif de entrada.
Figura 5.5: Configuração da memória mif de entrada
47
Os valores da primeira e da terceira linha devem simplesmente retornar os valores
dos números que estão sendo inseridos na calculadora: números sequenciais de 0 a 7
conforme mostrados na figura 5.6.
Figura 5.6: Dados do projeto simulado
E devem retornar os valores contidos na coluna MEMORIA OUT, que seriam os
bits que iriam representar os algarismos no display de sete segmentos.
Figura 5.7: Display de sete segmentos
Na segunda linha foi inserido valores de maneira a simular um cálculo de uma soma
e uma subtração, primeiro efetuando a soma do número 3 com o número 2 e na
sequência a subtração do numero 3 com o numero 2 e completado com 0 as demais
posições da memória, assim como na quarta linha da memória.
Figura 5.8: Simulação de cálculo
Após geração do arquivo .jam este foi projeto carregado na FPGA por meio do
sistema Web, e o resultado da simulação obtido pode ser observado na figura 5.9.
48
Figura 5.9: Resultado da simulação
Os valores apresentados conferem com os valores esperados, validando
funcionamento do sistema.
49
6 CONCLUSÃO
No contexto geral, todos os itens mencionados na especificação inicial do projeto
foram atingidos:
Carregamento remoto da configuração do módulo reconfigurável;
Simulação da lógica via emulação de sinais de entrada e saída através dos blocos
de memória da biblioteca padrão implementada em VHDL;
Envio dos resultados da simulação via arquitetura de comunicação serial;
Visualização dos resultados simulados pelo cliente remotamente através da
plataforma Web;
Implementação de segurança de login com banco de dados.
Durante o desenvolvimento do protocolo de comunicação entre o servidor
embarcado e a FPGA para efeito de recebimento do template de simulação,
encontramos certa dificuldade no envio do pacote de dados, o qual contornamos
fazendo com que o servidor, ao invés de requisitar todo o template (bloco de memória
de simulação inteira), requisitasse uma posição de memória por vez, o que fez com que
o tempo total de simulação tivesse uma demora maior. Tal fato se deve à não
otimização dos tempos de leitura em memória no módulo FPGA com relação ao clock
da comunicação serial via RS232.
Apesar do desempenho para o projeto em questão, ser satisfatório utilizando-se do
armazenamento em compact flash, poderia haver uma melhoria significativa de
desempenho se utilizado SSDs ou Solid State Disks que utilizam chips de memória
Flash no lugar de discos magnéticos. São projetados para substituírem diretamente o
HD, sendo conectados a uma porta SATA ou IDE.
Embora as taxas de transferência (na maioria dos modelos) sejam comparáveis à de
um HD modesto, os SSDs oferecem tempos de acesso extremamente baixos, o que
melhora o desempenho consideravelmente em uma grande gama de aplicativos e reduz
bastante o tempo de boot. Os SSDs oferecem também a vantagem de consumirem pouca
eletricidade, serem mais resistentes mecanicamente (por não possuírem partes móveis),
além de serem completamente silenciosos. Em compensação, eles possuem uma grande
desvantagem, que é a questão do alto custo. (SSD, 2009)
50
7 REFERÊNCIAS
Manual do kit VIA EPIA PX-Series Pico-ITX Mainboard.
Manual do kit FPGA DE2 Cyclone II 2C35 Altera I.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L.Sistemas Digitais (10 ed): Princípios e
Aplicações. 10 ed. São Paulo: Prentice Hall, 2007.
AMORE, R. D.VHDL: Descrição e Síntese de Circuitos Digitais. Rio de Janeiro:
LTC, 2005.
REVISTA SABER ELETRÔNICA. São Paulo: Ano 44, n°426, julho de 2008.
CARNEIRO, C. S. Sistema de configuração e monitoração remota de lógica
programável através de protocolo internet. Curitiba, 2005.
ISP
&
the
Jam
STAPL.
Basic
Jam STAPL
Flow.
Disponível
em:
<http://www.altera.com/support/devices/tools/jam/tls-jam.html>. Acesso em: abril de
2009.
Mainboard Pico-ITX VIA EPIA PX. A menor mainboard x86 do mundo com
apenas 10 x 7,2cm para PC’s, dispositivos e sistemas embarcados ultracompactos.
Disponível
em:
<http://br.viatech.com/br/products/mainboards/motherboards.jsp?motherboard_id=472>
. Acesso em: abril de 2009.
MENDONÇA, A.; ZELENOVSKY, R. Monte seu protótipo ISA controlado por
FPGA. Rio de Janeiro: MZ, 2001.
PIC.
Comunicação
Serial
<http://www.dee.ufcg.edu.br/~aco/Lab_Arquitetura/MODULO10.doc>.
Assíncrona.
Acesso
em
dezembro de 2009.
CANZIAN, Edmur Minicurso Comunicação Serial - RS232, CNZ Engenharia e
Informática Ltda.
51
USB.
Tecnologia
USB
(Universal
Serial
Bus).
Disponível
em:
<http://www.infowester.com/usb.php>. Acesso em novembro de 2009.
MENDONÇA, Igor Thiago Marques Controle de Dispositivos Via Web, UFSC,
Florianópolis – SC, 2009
SOUZA, Marcelo Soares, Análise do Servidor Web Apache em Clusters OpenMosix
com Memória Compartilhada Distribuída. CEBACAD, Salvador, Bahia, 2004.
SOUZA, Lindenberg Barros de Redes de Computadores Dados, Voz e Imagens,
5ª Ed – Editora Érica, 2001.
SSD.
Termos
técnicos
GdH.
Disponível
<http://www.guiadohardware.net/termos/ssd> Acesso em: agosto, 2009.
em:
52
GLOSSÁRIO
Barramento – Conexão usada para transferência de dados entre os sistemas de um
computador, como placas ou dispositivos de rede.
Baud-Rate – Mede o número de sinais elétricos por unidade de tempo.
Bps (bits por segundo) – Unidade de medida de velocidade de transmissão de
informações.
Daemon - Programa que é executado num computador e está pronto a receber
instruções/pedidos de outros programas para a execução de determinada ação.
Driver (controlador) – Software responsável pelo gerenciamento específico de
alguns periféricos do computador.
Driver Dual-State – Software controlador simultâneo de uma conexão entre dois
dispositivos, conexão ponto-a-ponto.
Driver Tri-State – Software controlador de vários dispositivos interconectados,
conexão multiponto.
HUB (concentrador) – Dispositivo que conecta dois ou mais equipamentos de rede,
une grupos de computadores. É um dos principais componentes em rede com cabos.
Interface Balanceada – Interface dotada de dispositivo para compatibilização de
impedância, a fim de evitar perdas de potência do sinal. A interface desbalanceada não
possui esse tipo de dispositivo.

Documentos relacionados