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.