• Nenhum resultado encontrado

universidade do vale do itajaí - Univali

N/A
N/A
Protected

Academic year: 2023

Share "universidade do vale do itajaí - Univali"

Copied!
69
0
0

Texto

Este trabalho teve como objetivo fornecer uma implementação física do µBIP sintetizado em um FPGA com uma interface de comunicação que possibilitasse a configuração de sua memória de programa. O estilo de codificação do modelo VHDL original foi atualizado, foi implementada uma interface de comunicação e um carregador denominado µBIP Hex Loader, que permite a configuração da memória de programa µBIP sintetizada em um FPGA.

Problematização

Formulação do Problema

Este projeto é importante, pois aborda temas de interesse da academia, pois favorece a integração de disciplinas como Circuitos Digitais, Arquitetura e Organização de Computadores, Compiladores, Sistemas Operacionais, Simulação, entre outros. Também é de interesse para desenvolvedores de sistemas embarcados em geral que buscam um modelo de microcontrolador FPGA.

Solução Proposta

Objetivos

Objetivo Geral

Objetivos Específicos

Metodologia

Desenvolvimento: Nesta fase foi realizada a implementação da interface de programação e de uma ferramenta que permite o carregamento do código da aplicação na memória do programa µBIP. Validação: Nesta etapa foram realizados testes de hardware para confirmar o correto funcionamento da funcionalidade de configuração da memória do programa e a execução do código da aplicação no microcontrolador sintetizado em FPGA.

Estrutura do Trabalho

Documentação: Nesta fase foi documentado todo o trabalho, desde a descrição do problema até os resultados finais, incluindo a redação de um artigo científico para publicação.

FPGA

Microcontroladores

Este projeto resultou em uma placa de circuito impresso conforme mostra a Figura 1 ocupando uma placa de circuito impresso com dimensões de 10x16 cm. Na figura 2 você pode ver a diferença de cerca de 5 vezes o tamanho das placas de circuito impresso.

Figura 1.   PCB Controle de Aquecimento utilizando Zilog Z80  Fonte: Gridling (2007).
Figura 1. PCB Controle de Aquecimento utilizando Zilog Z80 Fonte: Gridling (2007).

Bootloader

Segundo Microchip (2012), o bootloader é uma ferramenta que carrega e atualiza o código da aplicação em um microcontrolador sem a necessidade de um programador ou depurador externo. Uma atualização é possível através de um computador, através da porta serial ou USB, ou através de um dispositivo de armazenamento externo.

BIP

Os processadores da família BIP possuem um núcleo de 16 bits e um único formato de instrução, composto por um opcode de 5 bits (os bits mais significativos) e um operando de 11 bits, conforme ilustrado na Figura 5. Como existem 11 bits por operando, permite endereçamento até endereços, este é o tamanho dos espaços de endereçamento do programa e dos dados (PEREIRA, 2008), que estão separados entre si. A arquitetura BIP foi inspirada no microcontrolador comercial PIC (Programmable Interface Controller) da Microchip, portanto utiliza uma arquitetura orientada a acumulador.

Além disso, no desenvolvimento do sistema operacional BIP/OS (GONÇALVES, 2013), foram incluídas instruções para apoiar o armazenamento de contextos de processos. A Tabela 1 mostra a evolução do conjunto de instruções e dos membros da família de processadores BIP.

Organização do µBIP

Inclui memória de instruções separada ou memória de programa e memória de dados, uma CPU composta pela unidade de controle e pelo caminho de dados e periféricos como temporizadores, portas de E/S (PEREIRA, 2008). No µBIP, o controlador recupera a instrução da memória do programa, decodifica-a e envia o sinal para o caminho de dados, que é responsável pelo processamento dos dados. O modelo µBIP original inclui os seguintes periféricos e recursos de hardware: i) duas portas de E/S de 16 bits com controle de direção individual para cada pino; (ii) um temporizador de 16 bits; (iii) um controlador de interrupção; e (iv) suporte de hardware para chamada de procedimentos.

Bipide

O Bipide possui três módulos principais, (i) Programação, que permite ao usuário desenvolver seus próprios programas, (ii) Simulação: que permite ao usuário simular seus programas desenvolvidos, (iii) Ajuda: que apresenta informações sobre funcionalidades do sistema, bem como como informações sobre a arquitetura e organização dos processadores da família BIP (ZEFERINO et al., 2012). No módulo de programação, o Bipide oferece recursos típicos de editores de código-fonte, como identificação de palavras reservadas e símbolos de linguagem. No ambiente de simulação, o usuário pode executar o programa passo a passo e simular sua execução nos processadores BIP.

O Bipide apresenta ajuda contextual, acessível através de ícones de ajuda nos principais elementos da interface (OLIVEIRA, 2013). Em sua versão 4.0 o Bipide passou a executar e simular código C, esse novo recurso ampliou o leque de possibilidades em termos de desenvolvimento, simulação e execução de programas, além de tornar a programação para processadores da família BIP um trabalho mais eficiente (OLIVEIRA, 2013) .

Figura 7.   Bipide v4.0  Fonte: Oliveira (2013).
Figura 7. Bipide v4.0 Fonte: Oliveira (2013).

TRABALHOS RELACIONADOS

  • Arduino
  • LaunchPad MSP430
  • STM32F4Discovery
  • Kit Didático FPGA para Todos (Módulo CPLD)
  • Altera DE0 Development and Education Board
  • Comparação entre as soluções

Possui ainda 32KB de memória de programa FLASH (dos quais 0,5KB é utilizado pelo bootloader), 2KB de SRAM (Static Random Access Memory) e opera na frequência de 16MHz (ARDUINO, 2014). Além disso, seu microcontrolador também possui 96 KB de memória SRAM e 512 KB de memória flash. Além disso, o Arduino Yún também possui slot para cartão de memória SD e também é possível conectar periféricos à porta USB do processador AR9331.

O kit LaunchPad MSP-EXP430G2 vem com dois microcontroladores MSP430, com até 16 KB de memória Flash e 512 B de memória RAM, rodando na frequência de 16 MHz. O microcontrolador integra um núcleo ARM de 32 bits, com 1 MB de memória Flash, 192 KB de memória RAM, em um pacote LQFP100 (Low Profile Quad Flat Package).

Figura 8.   Arduino Uno  Fonte: Arduino (2014).
Figura 8. Arduino Uno Fonte: Arduino (2014).

Análise de requisitos

Este trabalho teve como objetivo fornecer um modelo atualizado do microcontrolador µBIP com interface para configuração da memória de programa para sua utilização em cursos de graduação e pós-graduação. Nesse sentido, foi atualizado o código VHDL do microcontrolador e implementada uma solução para carregamento do código da aplicação na memória do programa. Esta solução tentou superar uma limitação do modelo original, que exigia uma síntese do microcontrolador para executar um novo programa ou mesmo uma alteração no programa atual.

Apresenta uma análise dos requisitos, alterações feitas no modelo VHDL, a implementação de uma interface de comunicação serial para configuração de memória de programa e uma ferramenta desenvolvida em Qt chamada µBIP Hex Loader que permite que o programa seja carregado na memória e gerado via serial. porta. RF01: O kit deve ser capaz de carregar um novo programa através de uma interface de comunicação serial;

Alterações no modelo VHDL do µBIP

Além disso, são utilizados prefixos para identificar claramente a direção dos sinais da interface (i_ para entrada e o_ para saída), além de outros elementos de um modelo VHDL que não estão ilustrados na tabela apresentada. O modelo original possuía uma descrição de memória de instruções que só poderia ser atualizada através de uma nova síntese do processador. Isso consome tempo do usuário (aluno ou professor), pois requer a utilização da ferramenta Quartus II para realizar a síntese do modelo e configuração do FPGA a partir de um arquivo de memória gerado pelo ambiente Bipide.

Para superar esta limitação, a memória ROM foi substituída pela memória RAM, implementada na forma de uma megafunção altsyncram, que permite a utilização da memória RAM interna disponível no FPGA. O código VHDL resultante pode ser visto na Tabela 6. O modelo VHDL inclui a implementação de uma interface de programação que permite carregar um programa na memória de instruções, bem como ativar o sinal de reset μBIP via software, o que permite reiniciar o microcontrolador (executando para FPGA) do computador.

Implementação da interface de programação

Através do comando eXecute, a interface de programação desativa o sinal de reset interno e alterna o barramento de endereços da memória do programa para o barramento de endereços µBIP da CPU. Através do comando Stop, a interface de programação ativa o sinal de reset interno e comuta o barramento de memória do programa para o barramento de endereço da interface do programa. A Figura 17 ilustra a visualização RTL (Register-Transfer Level) do bloco de interface de programação criado após a síntese do modelo VHDL.

Nota-se também que o modelo com interface de programação consome menos LUTs que os demais. Por último, importa referir que o custo em bits de memória do modelo com interface de programação é significativamente superior (32 Kbits adicionais), dado que são atribuídos espaços para todo o espaço de endereçamento (2048 posições).

Figura 16.   Forma de onda do byte 0x57 (captura de tela de um osciloscópio)
Figura 16. Forma de onda do byte 0x57 (captura de tela de um osciloscópio)

A Tabela 1 mostra que as diferenças entre o modelo original e o modelo revisado sem interface de programação são pequenas (menos de 4% em LUTs e 4% em FFs) e se devem ao uso de diferentes famílias de FPGA. No modelo de interface de programação, o custo do processador é fixo, pois o código da aplicação é carregado após a síntese do processador. Portanto, a memória de programa consome 32 Kbits (2 Kwords x 16 bits/palavra), enquanto a memória de dados consome 16 Kbits.

Entende-se que o custo adicional decorrente da implementação da interface de programação, principalmente em relação à memória de programa, é aceitável dado o benefício obtido. Ao usar o μBIP Hex Loader, você deve especificar a taxa de transmissão e o endereço da interface de comunicação serial.

Figura 18.   Terminal de porta serial
Figura 18. Terminal de porta serial

Verificação e Prototipação

O código do programa em linguagem assembly µBIP e seu equivalente hexadecimal carregado na Figura 22 são ilustrados na Tabela 10. Com base na validação de desempenho da CPU e interface de programação µBIP, foram escritos dois programas que validam as instruções de envio de operação de memória e execução de µBIP. Os programas de teste ativam um LED conectado a um pino de E/S configurado como saída.

O teste foi concluído com sucesso, conforme pode ser visto na Figura 24, que mostra a forma de onda na saída de um pino de LED. Portanto, o novo modelo µBIP permite que um programa em formato .hex, gerado em Bipide, ou por outro método, seja carregado em hardware sem a necessidade de uma nova síntese do modelo VHDL no FPGA.

Figura 22.   In-Circuit Memory Content Editor
Figura 22. In-Circuit Memory Content Editor

Especificação de placa FPGA didática para o µBIP

Este trabalho foi motivado pelo fato de que o projeto original do µBIP não permite que um programa seja carregado na memória de instruções, o que exige que cada alteração no programa passe por uma nova síntese de FPGA. Os resultados obtidos neste trabalho incluem: (i) atualização do modelo VHDL do microcontrolador µBIP codificado de acordo com o estilo de codificação do Univali Embedded and Distributed Systems Laboratory; (ii) interface de programação da memória de instruções µBIP codificada em VHDL, incluída no novo modelo µBIP; (iii) μBIP Hex Loader, uma ferramenta que permite carregar um programa .hex na memória de instruções μBIP; (iv) um protótipo do µBIP sintetizado em uma placa FPGA disponível no Laboratório de Sistemas Embarcados e Distribuídos; e (v) uma especificação mínima de recursos para um quadro docente do µBIP. Isso possibilita a utilização do µBIP em cursos introdutórios à programação, seja no ensino médio ou superior.

Juntamente com o Bipide, este trabalho contribuirá para expandir a utilização do µBIP em diversas disciplinas. VIEIRA, Paulo Viniccius; À DIREITA, Paulo Roberto Machado; HUMANO, Roney Carlos; RAABE, André Luis Alice; ZEFERINO, César Albenes.

Figura 25.   Sugestão para leiaute de placa de circuito impresso
Figura 25. Sugestão para leiaute de placa de circuito impresso

Imagem

Figura 1.   PCB Controle de Aquecimento utilizando Zilog Z80  Fonte: Gridling (2007).
Figura 2.   PCB Controle de Aquecimento utilizando Zilog Z80  Fonte: Gridling (2007).
Figura 3.   Zilog Z80 vs ATmega16  Fonte: Gridling (2007).
Figura 4.   Fluxo de execução do bootloader do PIC32  Fonte: Microchip (2007).
+7

Referências

Documentos relacionados

Aprovar Declaração do Escopo Este caso de uso tem como cenário principal a Aprovação/Reprovação da Declaração do Escopo do Projeto Requisitos Externos: RF13 – O sistema deve