universidade federal do cearÁ centro de … luiz wattes oliveira junior... · para solicitar a...

63
UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE TECNOLOGIA DEPARTAMENTO DE ENGENHARIA ELÉTRICA CURSO DE ENGENHARIA ELÉTRICA JORGE LUIZ WATTES OLIVEIRA JUNIOR APLICAÇÃO DE REGISTRO DE DADOS DE UM ACELEROMETRO DIGITAL DE 3 EIXOS BASEADO EM FPGA FORTALEZA 2013

Upload: docong

Post on 16-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

UNIVERSIDADE FEDERAL DO CEARÁ

CENTRO DE TECNOLOGIA

DEPARTAMENTO DE ENGENHARIA ELÉTRICA

CURSO DE ENGENHARIA ELÉTRICA

JORGE LUIZ WATTES OLIVEIRA JUNIOR

APLICAÇÃO DE REGISTRO DE DADOS DE UM ACELEROMETRO DIGITAL DE

3 EIXOS BASEADO EM FPGA

FORTALEZA

2013

Page 2: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

JORGE LUIZ WATTES OLIVEIRA JUNIOR

APLICAÇÃO DE REGISTRO DE DADOS DE UM ACELEROMETRO DIGITAL DE

3 EIXOS BASEADO EM FPGA

Monografia apresentada ao Curso de

Engenharia Elétrica do Departamento de

Engenharia Elétrica da Universidade Federal do

Ceará, como parte dos requisito para obtenção

do título de Engenheiro Eletricista. Área de

concentração: Controle e dispositivos digitais.

Orientador: Prof. Dr. Paulo Peixoto Praça

FORTALEZA

2013

Page 3: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

___________________________________________________________________________

Página reservada para ficha catalográfica que deve ser confeccionada após apresentação e

alterações sugeridas pela banca examinadora.

Para solicitar a ficha catalográfica de seu trabalho, acesse o site: www.biblioteca.ufc.br, clique

no banner Catalogação na Publicação (Solicitação de ficha catalográfica)

___________________________________________________________________________

Page 4: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

JORGE LUIZ WATTES OLIVEIRA JUNIOR

APLICAÇÃO DE REGISTRO DE DADOS DE UM ACELEROMETRO DIGITAL DE

3 EIXOS BASEADO EM FPGA

Monografia apresentada ao Curso de

Engenharia Elétrica do Departamento de

Engenharia Elétrica da Universidade Federal do

Ceará, como parte dos requisito para obtenção

do título de Engenheiro Eletricista. Área de

concentração: Controle e dispositivos digitais.

Aprovada em: ___/___/______.

BANCA EXAMINADORA

________________________________________

Prof. Dr. Paulo Peixoto Praça (Orientador)

Universidade Federal do Ceará (UFC)

_________________________________________

Prof. Dr. Arthur Plinio De Souza Braga

Universidade Federal do Ceará (UFC)

_________________________________________

Ms. Samuel Jó Mesquita

Universidade Federal do Ceará (UFC)

Page 5: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

A Deus.

Aos meus pais, Jorge e Ruth.

A minha namorada, Lais

Aos meus amigos

Page 6: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

AGRADECIMENTO

Primeiramente a Deus, pela grande dadiva da vida e por me dar saúde e forças para

alcançar meus objetivos.

À minha mãe, Ruth Cavalcanti Nunes, que sempre acreditou que um dia eu seria

um “grande homem”, por todo o carinho e dedicação que me trouxeram até aqui.

Ao meu pai, Jorge Luiz Wattes Oliveira, pela amizade e suporte, especialmente em

momentos difíceis, e por ser um motivador para minhas superações.

À minha namorada, Lais Policarpo Bomfim, pelo amor, carinho e apoio, sem os

quais a vida perderia o brilho.

Aos meus familiares, Tia Mazé, Tio Frota, Tia Mariazinha, Tia Auristecília e meus

primos, Lucianinho, Betinha, Camila, Alex e João Victor.

Aos meus amigos, em especial os Engenheiros Aloísio Fernandes e Diego Aguiar

e os companheiros de classe, Antônio Dias Junior, Elcid Filho, Marcus Anderson e Thais

Fernanda, por todas as horas infindáveis de estudos e aprendizados.

Ao professor Paulo Peixoto Praça pela grande disponibilidade e ótima orientação

realizada.

Ao professor Alexandre Rocha Filgueiras, pelas várias noites de trabalho passadas

no escritório, e por todo apoio e amizade durante minha graduação.

Às professoras Heloísa Helena e Noêmia Guimarães, da escola Waldorf Micael,

pelas chuveiradas e broncas, e por terem sido parte fundamental na formação do meu caráter.

Ao professor David Herman, do colégio Master, por ter conseguido me ensinar a

amar a física.

Aos professores, Fernando Antunes, Laurinda Lúcia, Sergio Daher, Luiz Henrique,

Arthur Plinio, José Almeida, aos servidores José Mário, Seu Jorge, Vasco e a todos os demais

professores, servidores e estudantes da engenharia elétrica da Universidade Federal do Ceará,

que de uma forma ou de outra, marcaram minha graduação.

Page 7: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

“Valeu a pena? Tudo vale a pena

Se a alma não é pequena.

Quem quer passar além do Bojador

Tem que passar além da dor.”

Fernando Pessoa

Page 8: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

RESUMO

Este trabalho visa apresentar um sistema de aquisição de dados de sensor acelerômetro do

modelo ADXL345, através de comunicação do tipo Serial Protocol Interface (SPI) de três

pinos. Os dados são tratados e posteriormente armazenados em uma memória Electrically

Erasable Programmable Read Only Memory (EEPROM) tipo Flash, interna a um cartão SD. A

metodologia de acesso aos endereços físicos do cartão SD é feita através do software HxD, e a

análise dos dados através do software MATLAB. O sistema é baseado em Field Programmable

Gate Array (FPGA), família Cyclone IV, da empresa Altera. São utilizados o kit de

desenvolvimento DE0-nano e um módulo de cartão SD. A programação é feita por meio de um

único código em linguagem VHDL. A partir de ensaios de rotação do acelerômetro, obtiveram-

se resultados experimentais que demonstram o correto funcionamento da aplicação, bem como

a melhora de dados coletados a partir de algoritmos de tratamento de dados. Parte da aplicação

proposta foi utilizada como projeto de monitoria da disciplina de Técnicas Avançadas em

Eletrônica Digital, da Engenharia Elétrica da Universidade Federal do Ceará, relativo ao

aprimoramento do roteiro de práticas, onde foi desenvolvido uma prática de comunicação com

o referido acelerômetro.

Palavras-chave: FPGA. Acelerômetro de 3 eixos. Cartão SD.

Page 9: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

ABSTRACT

This work aims to present clearly, a system of data acquisition of an accelerometer sensor model

ADXL345, through three-pin Serial Protocol Interface (SPI) communication. The data is treated

and then, stored in a Flash Electrically Erasable Programmable Read Only Memory (EEPROM)

memory, inside a SD card. The methodology to access the physical addresses of the SD card is

done through the software HxD, and the data analysis is done by MATLAB software. The

system is based on the Altera’s Cyclone IV FPGA family. The DE0-nano development kit and

a module SD card for the purpose of practical implementation of design are used. All

programming is done through a unique code in VHDL language. By means of experiments of

rotation of the accelerometer, the results obtained shown the correct functioning of the

application, as well as the improvement of the collected data through the treatment algorithm.

Part of the proposed application was also utilized as project of the tutorial program of the course

of Tecnicas Avanças em Eletrônica Digital, of the Electric Engineering of the Universidade

Federal do Ceará, conserning to the improvement of the practical script, by the addition of a

practical class of communication to the referred accelerometer.

Keywords: FPGA. 3-axes Accelerometer. SD Card.

Page 10: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

LISTA DE ILUSTRAÇÕES

Figura 1 - Diagrama de blocos da aplicação proposta. ............................................................. 15

Figura 2 - Diagrama lógico dos dispositivos PAL, a esquerda, e PLA, a direita. .................... 18

Figura 3 - Diagrama lógico dos dispositivos macro célula, a esquerda, e LE, a direita. .......... 19

Figura 4 - Estrutura interna básica do CLPD, a esquerda, e dos FPGA, a direita. ................... 20

Figura 5 - Percentuais de mercado dominado pelos maiores fabricantes de FPGA em 2010 .. 21

Figura 6 - Fotografia do dispositivo PAL EP300 da Altera Corporation ................................. 22

Figura 7 - kit de desenvolvimento e estudo DE0-nano da Terasic Technologies. ................... 24

Figura 8 - Esquemático de um acelerômetro ............................................................................ 28

Figura 9 – Diagrama dos blocos internos do acelerômetro ADXL345 .................................... 29

Figura 10 - Diagrama de comunicações SPI de 3 e 4 pinos do ADXL345 .............................. 31

Figura 11 - Diagrama de tempo do protocolo de comunicação SPI de 3 pinos do ADXL345 31

Figura 12 - Estrutura da palavra de comando de 6 bytes.......................................................... 34

Figura 13 - Diagrama de tempo de comando simples ao SDMC. ............................................ 35

Figura 14 - Diagrama de tempo de comando de leitura ao SDMC .......................................... 36

Figura 15 - Diagrama de tempo de comando de escrita ao SDMC .......................................... 36

Figura 16 - Módulo adaptativo de cartão SD ........................................................................... 36

Figura 17 - Interface do software HxD para leitura de endereços físicos de discos................. 37

Figura 18 - Código em MATLAB para leitura e plotagem de dados ....................................... 38

Figura 19 - Estrutura do comando Process ............................................................................... 41

Figura 20 - Estrutura do comando Case ................................................................................... 41

Figura 21 - Estrutura do código em blocos de Process ............................................................ 42

Figura 22 - Fluxograma do protocolo de comunicação SPI do acelerômetro ADXL345 ........ 43

Figura 23 - Fluxograma do código de escrita do SDMC .......................................................... 45

Figura 24 - Algoritmo em linguagem VHDL para tratamento por média ................................ 47

Figura 25 - Gráfico 3D do posicionamento do ADXL345 durante ensaios ............................. 49

Figura 25 - Gráfico dos dados de aceleração sem tratamento .................................................. 50

Figura 26 - Gráfico de dados de aceleração com tratamento por média .................................. 50

Page 11: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

LISTA DE TABELAS

Tabela 1 - Dispositivos CPLD da Xilinx .................................................................................. 22

Tabela 2 - Dispositivos CPLD da Altera .................................................................................. 23

Tabela 3 - Características dos FPGAs de última geração das fabricantes Altera e Xilinx ....... 23

Tabela 4 - Tipos de acelerômetros ............................................................................................ 27

Tabela 5 - Tabela de registradores do ADXL345..................................................................... 30

Tabela 6 - Descrição dos pinos de SDMCs .............................................................................. 34

Tabela 7 - Conjunto de comandos de protocolo SPI de SDMCs.............................................. 35

Page 12: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

LISTA DE ABREVIATURAS E SIGLAS

EDA Eletronic Design Automation

PLD Programmable Logic Device

ASIC Application Specific Integrated Circuit.

FPGA Field Programable Gate Array

SDRAM Syncronous Dinamic Random Access Memory

SPLD Simple Programable Logic Devic

PAL Programmable Array Logic

PLA Programmable Logic Array

GAL Generic Array Logic

FET Feild-Effect Transistors

CI Circuitos Integrados

CPLD Complex Programmable Logic Device

LAB Logic Array Block

PIA Programmable Interconectect Array

LE Logic Element

LUT Look-Up Table

ALM Adaptative Logic Modules

XDE Xilinx Device Editor

SRAM Synchronous Random Acess Memory

DSP Digital Signal Processor

PLL Phased- Lock Loop

DLL Delay-Locked Loop

SPI Serial Interface Protocol

SDMC Secure Digital Memory Card

ROM Read-Only Memory

EPROM Electrically Programmable Read-Only Memory

EEPROM Electrically Erasable Programmable Read-Only Memory

SRAMs Static Randon Access Memory

DRAM Dynamic Random Access Memory

SDRAMs Synchronous Dynamic Randon Access Memory

CAM Content-Addressable Memory

Page 13: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

SUMÁRIO

1 INTRODUÇÃO ............................................................................................................. 13

1.1 Objetivo .......................................................................................................................... 14

1.2 Motivação ....................................................................................................................... 14

1.3 Proposta de aplicação ................................................................................................... 14

1.4 Estruturação do trabalho ............................................................................................. 15

2 REFERÊNCIAS HISTÓRICAS E O DISPOSITIVO ESCOLHIDO .................... 17

2.1 Dispositivos Lógicos Programáveis ............................................................................. 18

2.2 Maiores fabricantes de CPLD e FPGA da atualidade ............................................... 21

2.3 Kit de desenvolvimento DE0-nano da TERASIC ...................................................... 24

3 PERIFÉRICOS, PROTOCOLOS E SOFTWARES ................................................. 26

3.1 Acelerômetro digital (ADXL345)................................................................................. 26

3.2 Cartão de Memória SD (SDMC) ................................................................................. 32

3.3 Softwares utilizados ...................................................................................................... 37

4 APLICAÇÃO PRÁTICA ............................................................................................. 40

4.1 Algoritmo geral.............................................................................................................. 40

4.2 Algoritmo Acelerômetro ............................................................................................... 42

4.3 Algoritmo do cartão SD ................................................................................................ 44

4.4 Algoritmo de tratamento e amostragem ..................................................................... 45

4.5 Análise dos resultados ................................................................................................... 48

5 CONCLUSÃO ............................................................................................................... 51

Page 14: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

13

1 INTRODUÇÃO

A evolução da sociedade é diretamente vinculada à evolução da tecnologia, do

conhecimento que a mesma desenvolve para melhorar as relações entre as pessoas e o meio em

que vivem. Sistemas de controle de tráfego urbano, computadores portáteis, veículos

automatizados, além de uma infinidade de aplicações podem ser desenvolvidas a partir das

plataformas que a cada dia se apresentam mais robustas e velozes, fazendo com que o pleno

desenvolvimento da tecnologia dependa quase que exclusivamente da criatividade daqueles que

a implementam.

Dentro do desenvolvimento da tecnologia, há um destaque significativo para os

projetos que utilizam princípios de lógica digital. Para se ter uma ideia, no início da década de

80 a indústria eletrônica começou a utilizar dispositivos programáveis que possuíam cerca de

alguns milhares de transistores na implementação de circuitos lógicos discretos, já nos dias

atuais, os novos Programmable Logic Devices (PLD) do tipo Field Programmable Gate Array

(FPGA) podem integrar em um único chip mais de 5 bilhões de transistores, formando uma

grande quantidade de blocos lógicos com diversas funções especificas.

Avaliando a tecnologia no que tange os dispositivos de maneira geral, a utilização

de ferramentas de sínteses denominadas Eletronic Design Automation (EDA) e o

aperfeiçoamento dos dispositivos de lógica programável Programmable Logic Device (PLD)

tem simplificado e acelerado todo o ciclo de projeto.

Os PLDs são dispositivos comercializados na forma de circuitos integrados, e que

permitem ao usuário definir, através da programação, a forma de conexão entre sua estrutura

física interna, dessa forma, montando o circuito previamente sintetizado pelo software dedicado

de programação. Tais dispositivos possuem como principal característica a capacidade de

reprogramação das funções lógicas pelo usuário, facilitando assim, a implementação das

mudanças que surgem no decorrer do projeto. Em comparação com outras tecnologias de

circuitos integrados digitais os PLDs apresentam um ciclo de projeto curto e custos

competitivos, sendo a escolha entre uma ou outra tecnologia, em função da aplicação desejada.

Esse mercado encontra-se em expansão, existindo diversos fabricantes de

equipamentos de comunicação de dados, filtros eletrônicos, placas de vídeo, entre outros,

optando pelos PLDs, em vez dos tradicionais chips customizados Application-specific

Integrated Circuits (ASIC). A crescente demanda de mercado pelos PLDs tem reduzido seu

Page 15: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

14

custo por unidade de produzida. Um fator que tem contribuído com sua acessibilidade, é o uso

de novas tecnologias no seu processo de fabricação.

Partindo deste contexto, este trabalho visa demonstrar através de fluxogramas,

diagramas de tempo e trechos de códigos comentados, uma aplicação baseada em FPGA,

referente ao registro de dados obtidos de um acelerômetro digital de 3 eixos, a serem salvas em

um Secure Digital Memory Card (SDMC), comumente conhecido como cartão SD, do qual

serão extraídos os dados, via software, para tratamento e aferição dos resultados.

1.1 Objetivo

O objetivo deste trabalho é implementar um sistema de aquisição de dados,

realizando comunicação com um acelerômetro para o tratamento dos dados e posterior

armazenamento em memória não volátil. Todo o controle será feito em dispositivo do tipo

FPGA, utilizando como linguagem de programação de hardware o VHDL (D’AMORE, 2012).

Entretanto, busca-se não somente a implementação da aplicação em questão, mas também, o

desenvolvimento dos conhecimentos referentes aos métodos de comunicações utilizados entre

os dispositivos, que podem ser aplicados em diversos outros projetos.

1.2 Motivação

A tecnologia de dispositivos programados em hardware como FPGAs, apresenta-

se promissora, na relação custo benefício, uma vez que embora apresente preços superiores,

possui uma superioridade intrínseca em sua capacidade de processamento. A partir disso, nota-

se que é fundamental o desenvolvimentos de estudos voltados para esta área, visando adquirir

subsídios para o desenvolvimento de projetos mais complexos.

1.3 Proposta de aplicação

Para demonstrar uma aplicação prática que utilizasse acelerômetro com registro,

propõe-se o sistema apresentado na Figura 1, onde é explicitado o diagrama de blocos do

mesmo. Na Figura 1 o bloco ADXL345, é referente ao dispositivo medidor de aceleração, o

bloco MÓDULO SD representa um módulo externo ao kit didático que possui um soquete para

cartão SD, bem como um cartão SD de 2 GB da SanDisk. O bloco FPGA, por sua vez, indica

o dispositivo de FPGA da família Cyclone IV, presente no kit didático DE0-nano. São

Page 16: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

15

representados também os três processos internos a este, referentes a recepção dos dados do

ADXL345, amostragem desses dados, e envio do comando de escrita desses dados ao

MÓDULO SD.

Figura 1 - Diagrama de blocos da aplicação proposta.

Controlador de

comunicação do

acelerômetro

Aceleração

dinâmica e estática

Bloco de comunicação

serial SPI de 3 pinos

Bloco Administrador

de amostras do

sistema

Bloco de

comunicação

com o Cartão

SD

ADXL345 FPGA

Cartão SD SanDisk

2 Gb

(Modo SPI)

MODULO SD

Dados Analógicos

(3 Sinais)

SPI

(3 bits)

Ace

lera

ção

X (

13

bit

s)

Ace

lera

ção

Y (1

3 b

its)

Ace

lera

ção

Z (1

3 b

its)

SPI

(4 bits)

Amostra

(512 bytes)

Fonte: Elaborado pelo autor.

A aplicação prática proposta consiste no registro dos valores de aceleração lidas

pelo três eixos do sensor, durante um tempo fixo. A partir dos valores lidos, é realizado um

tratamento de dados, e então, os valores de aceleração de cada eixo são registrados a uma taxa

de 0,1 segundos, e em pacotes de 512 bytes em um cartão SD de 2 GB.

1.4 Estruturação do trabalho

A temática do trabalho e a estruturação do mesmo são apresentadas no capítulo 1.

No capítulo 2 é apresentado o contexto histórico dos dispositivos eletrônicos

digitais, bem como um breve resumo da trajetória dos fabricantes de FPGA que atualmente se

destacam no mercado. Além disso, é apresentado o kit de desenvolvimento utilizado na

aplicação prática, e a motivação para a escolha de tal dispositivo.

No capítulo 3 serão abordados os dispositivos periféricos e os protocolos,

destacando a importância destes protocolos de interfaceamento e informações importantes ao

se utilizar dispositivos do tipo FPGA. Será também descrito o princípio de funcionamento do

acelerômetro, bem como o seu comportamento via protocolo de comunicação SPI, o protocolo

SPI do cartão SD, e seu funcionamento básico. Ainda no capítulo 3 é implementada, uma

interface feita em ambiente MATLAB, para a visualização dos dados.

Page 17: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

16

No capítulo 4 será apresentada a implementação da aplicação proposta,

descrevendo como foram feitas as aquisições da massa de dados a ser observada no computador.

Serão apresentadas as plotagens e a interpretação dos dados de velocidade, aceleração e

distância percorrida. É realizada uma comparação entre os dados sem e com tratamento, obtidos

experimentalmente.

No capítulo 5 são apresentadas conclusões a respeito do projeto proposto, visando

avaliar de forma objetiva o funcionamento e a aplicabilidade do FPGA como sistema de registro

dos valores de aceleração.

Page 18: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

17

2 REFERÊNCIAS HISTÓRICAS E O DISPOSITIVO ESCOLHIDO

Inicialmente, a pouca transmissão de informações feita por meio de sinais elétricos

se dava por meio de sinais analógicos. Tal método, embora eficaz, apresentava grande

sensibilidade a interferências externas. Em 1947, a empresa Bell Laboratories, desenvolvia uma

pesquisa chefiada pelo físico americano William Bradford Shockley Junior. O objetivo de tal

pesquisa era desenvolver um dispositivo com características similares aos Field-Effect

Transistors (FET), entretanto, o que ocorreu foi a criação acidental do transistor, que foi o

grande responsável pelo salto na evolução eletrônica após essa data. Com o desenvolvimento

de diversos tipos de circuitos baseados em transistores, foi possível a criação da teoria de

eletrônica digital, sendo esta, baseada na lógica booleana. Com a grande capacidade de

miniaturização dos transistores, facilmente desenvolveram-se as pastilhas de circuitos

integrados (CI) digitais, que foram progressivamente contando com quantidades maiores de

transistores, permitindo uma maior complexidade dos CIs. (COSTA, 2011).

Sendo assim, é possível afirmar que com a invenção do transistor os projetistas

puderam produzir equipamentos eletrônicos menores, mais versáteis e de maior confiabilidade.

Porém o transistor foi apenas o primeiro passo para um avanço tecnológico ainda maior, a

implementação do circuito integrado monolítico. Os circuitos integrados, com as funções

próprias de um circuito completo, em um espaço comparável ao que antes era ocupado por um

único transistor, estavam convertendo-se nos componentes básicos dos equipamentos

eletrônicos.

Em 1969 outra descoberta importante foi feita, quando a recém criada Intel

Corporation foi chamada para desenvolver um chip dedicado para calculadoras, para a empresa

Busicon. Em resposta, a Intel Corporation desenvolveu um CI genérico, que a partir de uma

sequência de códigos a serem programados, poderia funcionar como uma calculadora, tal

dispositivo ficou conhecido como 4004, e foi o precursor dos microprocessadores atuais. O

4004, embora com um baixo processamento quando comparado com os atuais dispositivos, já

superava o computador eletrônico da época o ENIAC, tendo a grande vantagem de possuir

características ínfimas quando comparado aos aproximadamente 85.000 metros cúbicos de

espaço e as 3 toneladas do ENIAC (ZELENOVSKY, 2006). Mas a versatilidade sofreu um

significativo desenvolvimento com a evolução dos dispositivos lógicos programáveis.

Page 19: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

18

Este capitulo segue a seguinte ordem: o tópico 2.1 apresenta o desenvolvimento

tecnológico dos dispositivos lógicos programáveis, o tópico 2.2 faz referência aos fabricantes

de FPGAs e suas histórias e o tópico 2.3 apresenta o kit de desenvolvimento utilizado.

2.1 Dispositivos Lógicos Programáveis

Pouco depois da criação do microprocessador, outra vertente de pesquisa iniciou-

se, a dos Programable Logic Devices (PLD). Diferente dos processadores, que eram

programados com códigos, e realizavam a leitura deles através de um hardware fixo, o PLD se

propunha a realizar uma reconfiguração do hardware.

Os primeiros modelos desses dispositivos são classificados hoje, como Simple

Programable Logic Devices (SPLD). Dentro dessa categoria, se encaixam a Programmable

Array Logic (PAL), a Programmable Logic Array (PLA) e a Generic Array Logic (GAL). Os

dois primeiros dispositivos são os mais simples, constando apenas de matrizes de

interconexões, referente às entradas de portas “E” (AND), conectadas a portas “OU” (OR)

(PEDRONI, 2010).

Figura 2 - Diagrama lógico dos dispositivos PAL, a esquerda, e PLA, a direita.

Fonte: Livro Eletrônica Digital Moderna e VHDL (PEDRONI, 2010)

A diferença básica entre os dois modelos são as interconexões entre a saídas das

portas AND com as entradas das portas OR, que nos PAL são fixas e nos PLA podem ser

Page 20: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

19

programadas, como é mostrado na Figura 2. Como é possível constatar, tais dispositivos não

apresentam elementos de lógica sequencial como Flip-Flops (PEDRONI, 2010).

Já os dispositivos GALs, apresentaram uma grande inovação em relação aos seus

antecessores, eles se baseiam na a utilização de macro células, que são blocos formados pela

combinação de outros componentes, como portas “E” (AND), “OU Exclusiva” (XOR),

multiplexadores e Flip-Flops. A Figura 3 expõe o diagrama de blocos das macro células

utilizadas nos dispositivos tipo GAL.

Figura 3 - Diagrama lógico dos dispositivos macro célula, a esquerda, e LE, a direita.

Fonte: Livro Eletrônica Digital Moderna e VHDL (PEDRONI, 2010)

A fim de aumentar o número de macro células dos dispositivos, começou-se a juntar

dispositivos SPLD, através de barramentos que os conectavam a drivers de entrada e saída mais

robustos. Tais dispositivos ficaram conhecidos como Complex Programmable Logic Device

(CPLD). Em alguns fabricantes, diferentes nomenclaturas são dadas aos componentes internos

dos seus dispositivos, como por exemplo na empresa Altera Corporation que nomeia os blocos

de SPLD internos de blocos de matrizes lógicas, do inglês Logic Array Block (LAB), e o arranjo

de interconexões dos LAB de Programmable Interconected Array (PIA). Com o

desenvolvimento dessa tecnologia, passou-se a substituir os LAB constituídos de SPLD do tipo

GAL por um novo componente chamado de elemento lógico, do inglês Logic Element (LE). A

maior diferença entre o LE e seu antecessor é a utilização de uma Look-Up Table (LUT),

diferente do padrão de interconexões utilizado desde as PAL. A LUT padrão utilizava 4

entradas, o que permitia qualquer combinação lógica baseada em 4 sinais, para cada um dos

Page 21: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

20

LE, além de possuir alguns elementos básicos como Flip-Flop, portas “OU Exclusivo” (XOR)

e entrada de “vai um” (carry in) utilizadas em operações de soma e subtração. A Figura 3

apresenta um diagrama dos blocos lógicos internos as LEs. Já a Figura 4 apresenta o digrama

da dos dispositivos CPLD que usam tecnologia de LABs baseadas em LEs (PEDRONI, 2010).

Figura 4 - Estrutura interna básica do CLPD, a esquerda, e dos FPGA, a direita.

Fonte: Livro Eletrônica Digital Moderna e VHDL (PEDRONI, 2010)

Com a continua pesquisa nessa área, a empresa Xilinx Incorporated surge com a

tecnologia da Field Programmable Gate Array (FPGA), diferente dos CPLDs desde a sua

estrutura, que se assemelha mais com uma matriz do que o padrão de pilhas utilizados nos

CPLD, como mostrado na Figura 4. Além disso, os blocos são menores, embora mais

sofisticados, e se encontram em maior quantidade. Outra diferença marcante, é a eficiência

relativa dos materiais utilizados na fabricação dos FPGAs, que permitiu uma grande elevação

na frequência de operação destes, sem que houvesse redução na eficiência quando comparado

com o CPLD.

Os componentes da LAB dos FPGAs deixam de ser os LE comuns, observados nos

CPLDs, e passam a ser os módulos lógicos adaptativos, do ingles Adaptative Logic Modules

(ALM), que possuem uma maior quantidade de elementos internos do que as LE. Além disso,

outros blocos são adicionados à arquitetura de FPGA, como o de memória acessada

randomicamente de forma síncrona, do inglês Synchronous Random Acess Memory (SRAM),

para alocação de variáveis; blocos de processadores digitais de sinais, do inglês Digital Signal

Processor (DSP), para a realização de funções de multiplicação referente ao tratamento de

sinais; e os circuitos de controle de clock, o Phased-Lock Loop (PLL) utilizados no

Page 22: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

21

gerenciamento do sinal de clock, podendo aumentar ou diminuir sua frequência (PEDRONI,

2010).

2.2 Maiores fabricantes de CPLD e FPGA da atualidade

A empresa Altera Corporation foi fundada na primeira metade da década de 1980,

juntamente com a empresa Xilinx Incorporated. Segundo Pedroni, atualmente, ambas são

responsáveis pela maior parte do mercado de FPGA, mantendo juntas, cerca de 90% do

mercado, embora algumas empresas como a Actel, a Vantils e Lattice, também produzam

dispositivos desse tipo. A Figura 5 apresenta o gráfico dos percentuais de mercado dominado

pelos maiores fabricantes de FPGA em 2010 (JOHNSON, 2011).

Figura 5 - Percentuais de mercado dominado pelos maiores fabricantes de

FPGA em 2010

Fonte: site http://www.fpgadeveloper.com/2011/07/list-and-comparison-of-

fpga-companies.html, acessado em 05 de nov. de2013

Embora tenha sido criada em 1980, apenas em 1984 foi que a empresa Altera

Corporation lançou seu primeiro dispositivo, o EP300, uma PAL simples, mas que oferecia a

característica de reprogramação, o que se mostrou uma vantagem grande para o mercado

(ALTERA, 2011). Uma foto deste dispositivo é apresentada na Figura 6.

Page 23: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

22

Figura 6 - Fotografia do dispositivo PAL EP300

da Altera Corporation

Fonte: site da Altera Corporation

Na mesma época em que a Altera Corporation desenvolveu o EP300, a Xilinx

Incorporated lançava, junto com o dispositivo XC2000, uma matriz de elementos lógicos

programáveis, uma ferramenta física de programação inovadora, que permitia ao usuário uma

programação mais simplificada, esta ferramenta ficou conhecida como Xilinx Device Editor

(XDE). Ambas as empresas ainda desenvolveram diversos dispositivos do tipo CPLD. A Tabela

1 e a Tabela 2 apresenta os CPLD da Xilinx e da Altera.

Tabela 1 - Dispositivos CPLD da Xilinx

Características XC9500 CoolRunner XPLA3 CoolRunner II

Nº de pinos de I/O 36 – 192 36 – 260 33 – 270

Bloco básico GAL PLA PLA

Nº de macro células 36 – 288 32 – 512 32 – 512

Nº de Flip-Flops 1 p/ macro célula 1 p/ macro célula 1 p/ macro célula

Frequência de operação 56MHz – 222MHz 135MHz – 213MHz 179MHz – 323MHz

Fonte: Livro Eletrônica Digital Moderna e VHDL (PEDRONI, 2010)

Page 24: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

23

Tabela 2 - Dispositivos CPLD da Altera

Características MAX 7000 MAX 3000 MAX II

Nº de pinos de I/O 36 – 212 34 – 208 80 - 272

Bloco básico GAL GAL LAB (10 LE)

Nº de Macro células 32 – 256 32 – 512 192 - 1700

Nº de LE --- --- 240 - 2210

Nº de Flip-Flops 1 p/ macro célula 1 p/ macro célula 1 p/ LE

Frequência de operação 91MHz – 175MHz 116MHz – 227MHz 304MHz

Fonte: Livro Eletrônica Digital Moderna e VHDL (PEDRONI, 2010)

Após a criação do FPGA pela empresa Xilinx Incorporated, a tecnologia de tais

dispositivos se desenvolveu bastante, parte desse desenvolvimento se deu pela grande

concorrência entre as empresas Altera e Xilinx. Atualmente ambas possuem dispositivos de

diversos níveis, desde os CPLD, até FPGA de última geração, como o Virtex 7 da Xilinx e o

Stratix V. A Tabela 3 apresenta a última geração de FPGA produzidos por ambas as empresas,

de acordo com o mercado a que eles são voltados.

Tabela 3 - Características dos FPGAs de última geração das fabricantes Altera e Xilinx

Características Altera Corporation Xilinx Incorporated

Modelo Cyclone V Arria V Stratix V Artix 7 Kintex 7 Virtex 7

Porte das aplicações Pequeno Médio Grande Pequeno Médio Grande

Células lógicas 301.000 504.000 952.000 215.000 480.000 2.000.000

Blocos de memória 12Mb 24Mb 52Mb 13Mb 34Mb 68Mb

Nº de pinos de I/O 480 704 840 500 500 1,200

(1): blocos lógicos configuráveis (Configurable Logic Block – CLB)

Fonte: Catálogos digitais das empresas Altera Corporation e Xilinx Incorporated.

Percebe-se pela Tabela 3 que ambas as empresas apresentam dispositivos para

aplicações de pequeno e médio porte competitivos, havendo diferenciação sensível apenas nos

dispositivos mais avançados, onde percebe-se grande desenvolvimento por parte da empresa

Xilinx.

Page 25: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

24

2.3 Kit de desenvolvimento DE0-nano da TERASIC

Dada a forma de encapsulamento comum dos FPGAs, o desenvolvimento de

circuitos embarcados utilizando apenas a pastilha do FPGA, torna-se complexo no que diz

respeito à fabricação da placa de circuito impressa. Por esse motivo, é comum a fabricação de

kits de desenvolvimento baseados em FPGA, que além de conjuntos de pinos, apresentam

diversos periféricos uteis para diversos circuitos. Neste projeto, utilizou-se o kit de

desenvolvimento e educacional DE0-nano fabricado pela empresa Terasic Technologies

Incorporated. A escolha deste modelo de kit foi feita primeiramente por se tratar do mesmo

fabricante de FPGAs adotados pelo departamento de engenharia elétrica da Universidade

Federal do Ceará, além de possui um baixo custo quando comparado com os demais kits de

desenvolvimentos com FPGA da empresa Altera. Além disso, o kit apresenta um CI de

acelerômetro embutido, parte essencial no desenvolvimento do projeto. Uma foto do kit DE0-

nano é mostrada na Figura 7.

Figura 7 - kit de desenvolvimento e estudo DE0-nano da Terasic

Technologies.

Fonte: Site da Terasic Technologies Incorporated (www.terasic.com)

Este kit apresenta características, que permitem sua utilização tanto no

desenvolvimento de protótipos de projetos comerciais baseados em FPGA, quanto para servir

de instrumento de prática em cursos voltados ao ensino das técnicas de utilização de FPGA. Os

componentes deste kit são:

Page 26: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

25

Uma FPGA da família Cyclone IV, modelo EP4CE22F17C6N, com 76032 bytes de RAM

interna, 1395 CLBs, 22320 LE e um total de 153 pinos de entrada/saída.

Uma memória do tipo para gravação de códigos permanentes (EPCS64), bem como o chip

USB-Blaster para programação dos componentes da Altera.

Memória SDRAM de 32 MB (IS42S16160D)

Memória EEPROM de 2 KB com comunicação I2C (24LC02B)

Dois conjuntos de 40 pinos, um para cada lado do kit, contendo 2 pinos conectados ao GND,

um à tensão de 3,3 V e um de 5 V.

Acelerômetro de 3 (três) eixos com precisão de 13 bits (ADXL345)

Conversor analógicos digital com 8 (oito) canais de entrada e 12 bits de precisão, com

frequência de conversão entre 50 Ksps e 200 Ksps (ADC128S022)

Um oscilador embutido na placa com frequência de 50 MHz

Sistema de alimentação via USB do tipo mini-AB (5V) e através de 2 pinos de alimentação

externa com nível de tensão entre 3,6 V a 5,7 V.

A escolha pelo fabricante Altera Corporation deve-se ao fato de que as pesquisas

desenvolvidas na Universidade Federal do Ceará, Departamento de Engenharia Elétrica, serem

feitas em FPGAs deste fabricante, o que facilita sua utilização. Já a escolha do kit DE0-nano

não se restringiu apenas por possuir os componentes buscados no projeto, mas pela sua vasta

aplicação em circuitos embarcados. Embora aplicações em FPGA tornarem a fabricação de

placas de circuito impresso mais complexas, elas possuem grande potencial de aplicação dada

a grande variedade e quantidade de componentes internos disponíveis.

Page 27: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

26

3 PERIFÉRICOS, PROTOCOLOS E SOFTWARES

Apesar da grande versatilidade dos FPGAs, em quase todos eles a estrutura interna

possui apenas dispositivos digitais. Isto é, todos os blocos passíveis de interconexões que estão

presentes dentro do circuito integrado de um FPGA operam no mesmo nível de tensão lógica,

que podem assumir valores discretos entre 0,9 V e 3,3 V (ALTERA, 2008).

Esta característica dos FPGAs gera uma problemática: quando o circuito baseado

em FPGA tem que interagir com outros sistemas digitais ou mesmo sistemas analógicos, há a

necessidade de utilização de circuitos integrados, que realizem uma interface entre eles.

Existem diversos circuitos integrados para tais finalidades: circuito de ajuste de tensões de

níveis lógicos para interação entre dois dispositivos de tensões diferentes; conversores

analógicos digitais, que realizam a conversão de um sinal de tensão no domínio continuo, para

um conjunto de sinais (bits) em níveis de tensão discreta; dispositivos que fazem a conversão

de variáveis não elétricas (pressão, temperatura, humidade, velocidade de vento, aceleração

estática e dinâmica, dentre outros) em sinais eletrônicos, digitais ou analógicos (barômetro,

termômetro, anemômetro, acelerômetro).

É necessário que sistemas de sensoriamento e controle de processos acessem e

interpretem as variáveis que os cercam. Assim, será apresentado no tópico 3.1 deste capítulo a

forma de implementação, via FPGA, de utilização de um acelerômetro do tipo ADXL345, cujo

protocolo de comunicação é o Serial Interface Protocol (SPI). Já no tópico 3.2 é apresentada a

forma de utilização de Secure Digital Memory Card (SDMC) para o armazenamento dos dados,

sem formatação, via comunicação SPI, e no tópico 3.3 os softwares a serem utilizados na

observação e análise dos dados gravado.

3.1 Acelerômetro digital (ADXL345)

Os dispositivos de medição de aceleração, comumente referenciados como

acelerômetros, podem trabalhar com dois tipos de aceleração: a aceleração estática é referente

à aceleração imposta pela força gravitacional da terra, já a aceleração dinâmica corresponde a

aceleração imposta ao sensor, quando sua estrutura é posta em movimento ou haja um choque

mecânico.

Page 28: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

27

Existem vários modelos de acelerômetros, sendo a diferença básica entre estes

dispositivos a forma de operação e o elemento de sensoriamento. A Tabela 4apresenta alguns

modelos de acelerômetros e sua forma de operação.

Tabela 4 - Tipos de acelerômetros

Tipo de

acelerômetro Característica

Capacitivo Possui um sensor capacitivo, que apresentam um valor de tensão

que varia de acordo com a aceleração a ele imposta.

Piezo elétrico Baseado em cristal, e o efeito Piezo elétrico, que consiste na

variação de sua tensão de acordo com a aceleração a que é

submetido

Piezo resistivo Realiza a medição de tensão um material, quando submetido a uma

aceleração.

Efeito Hall A medição da aceleração é baseada na mudança do campo

magnético ao redor do acelerômetro.

Magneto resistivo Mensura variações resistivas devido a variações do campo

magnético ao redor do acelerômetro.

Transferência de

Calor

Baseia-se no gradiente de transferência de calor, e requer

calibragem para o local específico onde será utilizado.

Fonte: Guia prático de acelerômetro (SENSR, 2013).

O modelo de acelerômetro utilizado é do tipo Capacitivo, e sua estrutura básica e

seu princípio de funcionamento são explicados por Sree (2013). O conceito utilizado neste

acelerômetro é baseado em uma massa de prova (m), confinada de forma a possuir liberdade

em apenas um eixo, fisicamente conectada a uma espira com função de amortecimento (k), para

equilibrar parcialmente forças externas, e um sensor capacitivo (c), que registra o deslocamento

da massa de prova em forma de sinal eletrônico. A Figura 8 apresenta um modelo conceitual

da estrutura de um acelerômetro.

Page 29: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

28

Figura 8 - Esquemático de um acelerômetro

M

CK

Fonte: Fonte: Elaborado pelo autor.

Quando a força gravitacional, ou uma variação de movimento possuem sentido

paralelo ao eixo livre da massa de prova, haverá um deslocamento, que implicará na variação

do valor da tensão do capacitor piezo cerâmico. Tendo conhecimento do valor de tensão do

capacitor, do peso da massa de prova, da constante de elasticidade da espira, e de atritos

mecânicos, é possível calcular-se os valores da aceleração imposta à massa de prova através

dos demais valores medidos, ao que é dado o nome de acelerômetro.

O acelerômetro a ser utilizado no projeto apresentado neste documento é do

fabricante Analog Devices, modelo ADXL345 (ANALOG, 2010). O encapsulamento deste

dispositivo é do tipo Terminal LGA com 14 pinos, ele é estruturado em 8 bits, mas possui

precisão máxima de 13 bits, com escala de leituras que podem ser de 2, 4, 8, ou 16 vezes o valor

da aceleração da gravidade na terra (g). A estrutura deles é composta por: sensor físico de

aceleração; sensores eletrônicos; conversor analógico digital; filtro digital; sistema de

alimentação, sistema de controle, sistema de armazenagem, sistema de comunicação. A

Page 30: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

29

Figura 9 apresenta um diagrama simplificado demonstrando as interconexões

internas do dispositivo (ANALOG, 2010).

Page 31: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

30

Figura 9 – Diagrama dos blocos internos do acelerômetro ADXL345

Fonte: Folha de dados do ADXL345

Este acelerômetro, assim como outros sensores no mercado, apresenta uma

estrutura voltada a dispositivos microprocessados, já que utiliza as estruturas de interrupção e

um sistema de armazenamento de dados, elementos característicos de microprocessadores, que

realizam acesso ao dispositivo intercalando-o com outras operações. O ADXL345 é estruturado

por meio de 58 registradores, dos quais 28 são reservados, 6 para a leitura dos dados de

aceleração, os demais servem para o acionamento do dispositivo, configuração do formato de

dados, e ajuste das interrupções configuráveis. A Tabela 5 apresenta os principais registradores

desse dispositivo.

Embora os dados da aceleração de cada um dos três eixos sejam obtidos pela leitura

de dois bytes, apenas parte desses bytes contém dados válidos. A forma como os dados serão

posicionados nesses registradores, bem como a quantidade de bits validos, é definida pelo

registrador DATA_FORMAT.

Page 32: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

31

Tabela 5 - Tabela de registradores do ADXL345

Nome Endereço

Tipo Descrição Decimal Hexadecimal

POWER_CTL 45 0x2D Leitura/Escrita Controle de energia

DATA_FORMAT 49 0x31 Leitura/Escrita Formato de dados

DATAX0 50 0x32 Leitura LSB do eixo X

DATAX1 51 0x33 Leitura MSB do eixo X

DATAY0 52 0x34 Leitura LSB do eixo Y

DATAY1 53 0x35 Leitura MSB do eixo Y

DATAZ0 54 0x36 Leitura LSB do eixo Z

DATAZ1 55 0x37 Leitura MSB do eixo Z

LSB: Lower Significative Byte – Byte menos significativo

MSB: Most Significative Byte – Byte mais significativo

Fonte: Folha de dados do ADXL345

Os dispositivos do tipo FPGA possuem uma quantidade bastante elevada de pinos,

o que permitiria facilmente uma comunicação com grande nível de paralelismo com o

acelerômetro. Todavia, como já foi dito, este dispositivo é projetado para interagir com

microprocessadores, de tal forma que a quantidade de pinos necessárias a esta comunicação é

reduzida, a fim de poupar os pinos do microprocessador, que são comumente em menor número

que os pinos dos FPGAs. Desta forma, o ADXL345 apresenta duas classes de comunicações: a

comunicação do tipo Inter-Integrated Circuit (I2C), que possui barramento com apenas dois

pinos, que podem ser conectados a diversos dispositivos, e a comunicação do tipo Serial

Protocol Interface (SPI), este tipo de comunicação possui necessariamente um pino de seleção

do dispositivos, um pino para o clock de referência, e um ou dois pinos para dados. É possível

que apenas um único pino realize a função de transmissão de dados, de tal forma que ele realize

tanto a recepção quanto o envio de dados. Quando os dados de entrada e saída são transmitidos

por pinos diferentes, são necessários 4 pinos para a transmissão. A Figura 10 apresenta um

diagrama simples, indicando o sentido dos dados, das comunicações SPI de 3 e 4 pinos.

(ANALOG, 2010).

Page 33: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

32

Figura 10 - Diagrama de comunicações SPI de 3 e

4 pinos do ADXL345

Fonte: Folha de dados do ADXL345

No kit didático utilizado neste trabalho, o DE0-nano produzido pela Terasic, as

conexões fisicas na placa permitem apenas a comunicação do tipo SPI de 3 pinos, uma vez que

apenas os sinais de seleção, clock e entrada de dados são conectados. O protocolo de

comunicação SPI do acelerometro em questão é de 16 bits, e segue o padrão apresentado pelo

diagrama de tempo mostrado na Figura 11 (ANALOG, 2010).

Figura 11 - Diagrama de tempo do protocolo de comunicação SPI de 3 pinos do ADXL345

Fonte: Folha de dados do ADXL345

Neste diagrama o bit R/W refere-se à ação de leitura (W/R=1) ou escrita (W/R=0).

Já os bits A5 à A0 referem-se ao endereço do registrador a ser lido ou escrito, os valores

utilizados para esta variavel são mostrados na Tabela 4. Os bits D7 à D0, são referêntes ao dado,

seja aquele lido do registrador, ou aquele a ser escrito nele. O bit MB indica o acesso de

Page 34: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

33

multiplos registradores consecutivos (MB=1), ou não (MB=0). Observando a Figura 11, nota-

se que a comunicação é feita no momento em que há borda de subida no sinal SCLK.

Ao utilizar a função de acesso de multiplos endereços (MB=1), enquanto o sinal

seletor de chip (CS) estiver em nivel lógico zero, serão lidos consecutivamente os 8 bits de cada

registrador, partindo do registrador definido pelos dados de endereço (A5-A0) (ANALOG,

2010).

O acesso implementado ao acelerômetro ADXL345 utiliza a comunicação SPI de

3 pinos com um clock de 5 MHz, a frequência máxima suportada, não utilizando a função

disponibilizada pelo bit MB, sem perda significativa da frequência de aquisição de dados. Mais

a frente, no item 4.23.1, é apresentado mais detalhadamente a forma de utilização do ADXL345.

3.2 Cartão de Memória SD (SDMC)

Outra grande vantagem dos sistemas digitais são os circuitos de armazenamento de

informação, normalmente conhecidas como memória. Em elementos puramente analógicos,

como indutores a capacitores, a energia armazenada tem grande tendência a se dissipar. Já em

elementos digitais, a forma de armazenagem, é feita de forma a reduzir, através de elementos

discretos como chaves, as perdas dos dados de memória. A taxa de dissipação da energia de

memória armazenada é tão pequena, que para a grande maioria das aplicações ela é

desconsiderada (ZELENOVSKY, 2006).

Dentro do universo das memórias digitais, existem duas subdivisões: as memórias

voláteis e as não voláteis. As memórias voláteis são normalmente de maior velocidade, e maior

custo, tais memórias perdem os valores registrados toda vez que são desligadas e, por isso, são

utilizadas apenas para armazenagem de grandes quantidade de dados a serem imediatamente

processados. Exemplos de memórias voláteis são as Static Randon Access Memory (SRAM),

Dynamic Random Access Memory (DRAM), Synchronous Dynamic Randon Access Memory

(SDRAM) e Content-Addressable Memory (CAM) (PEDRONI, 2010).

Já as memórias não voláteis, embora mais lentas, são mais baratas e possuem a

características de manter os dados registrados, mesmo na falta de alimentação. Desta forma,

são comumente utilizadas para aquisição de dados importantes que não podem ser perdidos em

caso de interrupção de energia. Os modelos mais comuns são as Read-Only Memory (ROM),

Electrically Programmable Read-Only Memory (EPROM) e Electrically Erasable

Programmable Read-Only Memory (EEPROM) (PEDRONI, 2010).

Page 35: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

34

O número de dispositivos portáteis para armazenamento de dados digitais aumentou

bastante nos últimos anos. Exemplos desses dispositivos são os pendrives e os cartões de

memória. No primeiro caso, há uma maior utilização no transporte de dados entre dispositivos.

Já os cartões de memória são muito utilizados em dispositivos portáteis, como uma fonte extra

de memória. Tais dispositivos são baseados em memória flash, um tipo específico de memória

EEPROM que possui estrutura de acesso em blocos, o que aumenta sua velocidade em

comparação às demais EEPROMs.

Uma vez que tem-se neste trabalho o objetivo de aquisição e registro dos dados

advindos de um acelerômetro digital de 3 eixos, optou-se pela utilização de um cartão de

memória do tipo SDMC (Security Digital Memory Card). O modelo utilizado é da SanDisk e

possui 2GB.

O SDMC da SanDisk apresenta dois protocolos básicos de comunicação. Um

próprio de cartões SD, com um pino de comando (CMD), um de clock (CLK) e quatro de entrada

e saída de dados (DAT0-3). Já o protocolo utilizado neste projeto é um tipo SPI com 3 pinos,

sendo um de seleção de chip (CS), um de clock (CLK), um de entrada de dados (MOSI) e um

de saída de dados (MISO). A Tabela 6 apresenta os pinos do SDMC e suas funções em ambos

os protocolos de comunicação (SANDISK, 2004).

Ao ser energizado, o SDMC opera através do protocolo SD. Portanto, para que ele

opere através do protocolo SPI é necessário configurá-lo, fazendo o sinal CS igual a zero no

momento de envio do primeiro comando (SANDISK, 2004).

O protocolo SPI é mais lento que o protocolo SD, uma vez que este último tem a

capacidade de envio de 4 bits por ciclo de clock, enquanto o SPI só enviará um único sinal de

dados por ciclo. Todavia, a velocidade de comunicação SPI é suficientemente rápida para a

grande maioria das aplicações de registro de dados.

Em ambos os protocolos existem conjuntos de comandos genéricos e específicos

para o interfaceamento com a memória EEPROM. No protocolo SD, a comunicação é feita

através de comandos de início de comunicação e fim de comunicação. Já no SPI, a estrutura de

comunicação se dá da seguinte forma: os comandos são organizadas na forma de 6 bytes que

são enviados ao SDMC, que retorna um toquem de resposta com informações do SDMC e, em

caso de leitura ou escrita de dados, um terceiro conjunto, que pode ter de 4 a 515 bytes, é

transmitido.

Page 36: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

35

Tabela 6 - Descrição dos pinos de SDMCs

Pino Protocolo SD Protocolo SPI

Função Tipo Função Tipo

1 DAT3 Entrada/Saída CS Entrada

2 CMD Entrada/Saída MOSI* Entrada

3 GND Alimentação GND Alimentação

4 VCC Alimentação VCC Alimentação

5 CLK Entrada CLK Entrada

6 GND Alimentação GND Alimentação

7 DAT0 Entrada/Saída MISO* Saída

8 DAT1 Entrada/Saída Reservado Entrada

9 DAT2 Entrada/Saída Reservado Entrada

MOSI: Master Output Slave Input – Saída do mestre, entrada do escravo

MISO: Master Input Slave Output – Entrada do mestre, saída do escravo

Fonte: Folha de dados da SanDisk (SANDISK, 2004).

Figura 12 - Estrutura da palavra de comando de 6 bytes

1º Byte 2º ao 5º Byte 6º byte

7 6 5 0 31 0 7 0

L H Comando Argumento do comando Byte de CRC H

CRC: Checagem de Redundância Cíclica

Fonte: Adaptado da folha de dados da SanDisk (SANDISK, 2004).

Seguindo o padrão dos cartões de memória SD, a lista de comandos permitidos ao

protocolo SPI do SDMC de 2GB da SanDisk tem 29 elementos, sendo 23 destes comandos

simples, e 6 de aplicações específicas, os quais devem sempre ser precedidos do comando

CMD55 (SANDISK, 2004). Destes comandos, apenas cinco são minimamente necessários ao

acesso à memória. A Tabela 7 apresenta estes cinco comandos.

Page 37: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

36

Tabela 7 - Conjunto de comandos de protocolo SPI de SDMCs

Comand

o

Código Argument

o Abreviação Descrição

CMD0 000000 Nenhum GO_IDLE_

STATE Reinicia o SDMC

CMD17 010001

Endereço

do dado

(32)

READ_SINGLE

_BLOCK

Realiza a leitura de um bloco de

dados*

CMD24 011000

Endereço

do dado

(32)

WRITE_

BLOCK

Realiza a escrita de um bloco de

dados*

CMD55 110111 Nenhum APP_CMD Aviso de comando de aplicação

específica

ACMD41 101001 Nenhum SEND_OP_

COND

Aciona o processo de

inicialização do cartão SD

(*): é possível alterar o tamanho do bloco entre valores que vão de 1 a 512 bytes, todavia,

apenas o comando de leitura interpreta corretamente essa modificação, que ao ser utilizada

para escrita de dados, acarretará em erro de escrita.

Fonte: Adaptado da folha de dados da SanDisk (SANDISK, 2004).

A Figura 13 apresenta um diagrama de tempo do envio de comando simples, e a

respectiva resposta obtida.

Figura 13 - Diagrama de tempo de comando simples ao SDMC.

Fonte: Folha de dados da SanDisk (SANDISK, 2004).

A Figura 14 apresenta o diagrama de tempo do envio de comando de leitura, a

resposta correspondente e o bloco de dados obtidos na leitura. Já a Figura 15 mostra o diagrama

de tempo do comando de escrita, respostas correspondente e envio dos dados a serem escritos.

Page 38: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

37

Figura 14 - Diagrama de tempo de comando de leitura ao SDMC

Fonte: Folha de dados da SanDisk (SANDISK, 2004).

Figura 15 - Diagrama de tempo de comando de escrita ao SDMC

Fonte: Folha de dados do SanDisk (SANDISK, 2004).

Através do protocolo de comunicação SPI o acesso ao SDMC torna-se uma parte

simples do projeto, e por isso é comum a sua utilização, mesmo em sistemas cuja a velocidade

de aquisição não é requer um acesso tão rápido à memória.

Uma vez que o kit DE0-nano não apresenta soquete para SDMC, foi necessária a

utilização de um módulo de cartão SD, para realizar os contatos entre os terminais do SDMC e

os pinos do kit de FPGA. A Figura 16 apresenta o módulo utilizado.

Figura 16 - Módulo adaptativo de cartão SD

Fonte: Site do vendedor: http://www.msseletronica.com/.

Acessado em 12/10/2013

Page 39: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

38

3.3 Softwares utilizados

Em alguns sistemas o processamento de dados ocorre diretamente no dispositivo

embarcado, todavia em muitos a complexidade, ou mesmo a finalidade proposta do sistema,

requer uma análise em outros dispositivos, exemplo: computadores. Desta forma, além da

aquisição dos dados do sensor no cartão de memória SD, são necessárias ferramentas que

permitam tal análise.

A grande maioria dos dispositivos portáteis que usam cartões de memória SD utiliza

formato FAT32, isto permite que os arquivos gravados pelos dispositivos no cartão, sejam

reconhecidos por outros, em especial micro computadores, onde esses arquivos podem ser

melhor observados. Todavia, dado que a forma de programação proposta neste documento

baseia-se exclusivamente em programação de hardware, utilizar tal formatação na escrita de

dados no SDMC tornar-se-ia mais complexo. Desta forma, opta-se pela gravação direta, isto é,

os dados são armazenados nos endereços físicos da memória, o que não permite uma correta

interpretação desses dados por um micro computador.

Figura 17 - Interface do software HxD para leitura de endereços físicos de discos

Fonte: Capturado pelo autor

Page 40: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

39

Buscando contornar esta problemática, opta-se pela utilização do Software livre

HxD – Freeware Hex Editor and Disk Editor. Este software de fácil utilização, permite ao

usuário acessar os endereços físicos de dispositivos de memórias de um computador, como

discos rígidos e pendrives. A Figura 17 apresenta a janela do software HxD, onde estão

apresentados os valores de endereços físicos de um disco removível formato FAT32

Figura 18 - Código em MATLAB para leitura e plotagem de dados

clear all; close all; clc;

% ETAPA 01 - LEITURA DO ARQUIVO .txt.

celula = importdata('09-11-2013-003 - com media.txt');

texto = char(celula);

tamanho = length(texto);

n = tamanho/(5*4)

% ETAPA 02 - DEFINIÇÃO DE VARIAVEIS

g=9.80665; t=0:0.1:n/10;

acc_x=zeros(n,1); acc_y=zeros(n,1); acc_z=zeros(n,1); sum=zeros(n,1);

word = 1; data = 1; index=1;

% ETAPA 03 - CONVERSÃO, ORGANIZAÇÃO E ESCALONAGEM DE DADOS

while word <= tamanho;

valor = texto(word:word+3);

valor = hex2dec(valor);

if valor>=2^15

valor=valor-2^16;

end

if data==1

acc_x(index) = valor*(g/(2^8));

elseif data==2

acc_y(index) = valor*(g/(2^8));

elseif data==3

acc_z(index) = valor*(g/(2^8));

elseif data==4

sum(index) = 100*((acc_x(index)^2 + acc_y(index)^2 + acc_z(index,1)^2)^(1/2))/g;

data=0;

index=index+1;

end

data=data+1;

word = word + 5;

end

% ETAPA 04 - PLOTAGEM DOS GRÁFICOS DOS DADOS DE ACELERAÇÃO

figure(1)

subplot(2,1,1) plot(t,acc_x,'red')title('Aceleração nos eixos X, Y e Z')

hold onsubplot(2,1,1) plot(t,acc_y,'blue')

hold on subplot(2,1,1) plot(t,acc_z,'green')

xlabel('tempo (s)') ylabel('aceleração(m/s²)')

legend('Eixo X','Eixo Y','Eixo Z')

subplot(2,1,2) plot(t,sum,'black')xlabel('tempo(s)')ylabel('%')

title('Soma das acelerações em X, Y e Z')

Fonte: Elaborado pelo autor

Page 41: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

40

Através deste software é possível obter os bytes de cada endereço de memória física

e a partir deles, formar um arquivo de texto no formato .txt. A partir destes arquivos é possível

realizar a análise dos dados. Para isso, propõe-se o desenvolvimento de uma aplicação em

software MATLAB, que permita uma fácil compreensão dos resultados. O código apresentado

na Figura 18 realiza a leitura do arquivo de texto com extensão do tipo .txt, dividindo-o em 3

variáveis: acc_x, acc_y e acc_x, referentes à aceleração de cada um dos três eixos. O 4º par de

byte lido no txt é sempre descartado, devido ao protocolo de gravação do SDMC, onde é

acrescido um par de byte, para que o conjunto de dados gravados seja divisor dos 512 bytes,

referentes ao número de pares de byte dos blocos de escrita do SDMC.

A partir da utilização dos protocolos de comunicação do acelerômetro e do cartão

SD, e do código em MATLAB apresentados neste Capitulo é realizada a implementação da

aplicação proposta, que é apresentada a seguir no Capitulo 4.

Page 42: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

41

4 APLICAÇÃO PRÁTICA

Para demonstrar, um modelo para futuras reproduções, este trabalho apresenta um

código em linguagem VHDL cuja a finalidade é realizar a aquisição de dados de um sensor

acelerômetro e em seguida registrar os valores lidos, a uma taxa de amostragem genérica, em

uma memória flash, não volátil.

A transcrição direta do código, fornecido no Apêndice, já torna possível a

reprodução da aplicação, todavia, vislumbrando um melhor entendimento, são apresentados

nesta seção, breves explicações do código, através de trechos de códigos e fluxogramas.

O Capitulo 4 é estruturado da seguinte maneira: no tópico 4.1 é apresentado o

algoritmo geral, referente à junção dos algoritmos de comunicação com o cartão SD e com o

acelerômetro e o tratamento dos dados. O tópico 4.2 apresenta o algoritmo implementado para

a comunicação com o acelerômetro. O tópico 4.3 o algoritmo de comunicação com o cartão

SD, e o 4.4 o algoritmo para amostragem de dados. Por fim, no tópico 4.5 são apresentados os

resultados obtidos.

4.1 Algoritmo geral

Uma vez que a linguagem VHDL define programação de hardware, sua estrutura é

concorrente, isto é, cada linha de instrução é “executada” ao mesmo tempo, já que na prática o

que cada linha de código representa, são as conexões físicas entre os dispositivos, e não uma

linha de código a ser executado. Devido a peculiaridade desta linguagem, faz-se necessário a

utilização do comando Process para permitir a implementação de protocolos de comunicação

serial.

O comando Process é um comando paralelo que cria uma área de código sequencial.

Este comando utiliza dispositivos do tipo Flip-Flop, para sintetizar circuitos lógicos

sequenciais, isto é, que possuem memória. Através de um circuito sequencial é possível

implementar circuitos que realizem envios de dados de acordo com os protocolos a serem

utilizados. A Figura 19 apresenta a estrutura do comando Process, na qual as variáveis da lista

de sensibilidade são as responsáveis pela execução do comando Process e seus sub comandos,

similar à finalidade de um sinal de clock em um dispositivo Flip-Flop (D’AMORE, 2012).

Page 43: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

42

Figura 19 - Estrutura do comando Process

Abc: PROCESS (lista de sensibilidade)

-- parte_de_declaração_do_process

-- declaração_de_tipo_e_subtipo;

-- declaração_de_constante;

-- declaração_de_variável;

-- declaração_de_pseudônimo;

-- não é permitido: declaração_de_sinal e declaração_de_variável_compartilhada

BEGIN

--parte_de_comandos_sequenciais

-- comando_sequencial;

-- comando_sequencial;

. .

-- comando_sequencial;

END PROCESS abc;

Fonte: Reprodução do livro VHDL – Descrição e síntese de circuitos digitais d’Amore (2012)

Outro comando básico recorrente no código de aplicação proposto é o Case. Este

tipo de comando é exclusivo de regiões de código sequencial, ou seja, interno a comandos do

tipo Process. Ele se assemelha bastante com o comando If, que já é utilizado em várias

linguagens de programações, diferenciando-se no uso obrigatório da declaração de ação para

cada um dos possíveis casos da variável de controle. O comando Case é a forma mais utilizada

para circuitos baseadas em maquinas de estados. A Figura 20 apresenta a estrutura geral do

comando Case. (D’AMORE, 2012).

Figura 20 - Estrutura do comando Case

CASE expressão_de_escolha IS -- expressão_de_escolha

WHEN condição_1 => comando_a -- condição_1

WHEN condição_2 => comando_b;comando_c; -- condição_2

WHEN condição_3 | condição_4 => comando_d -- condição_3 ou condição_4

WHEN condição_5 TO condição_9 => comando_d; -- condição_5 até condição_9

WHEN OTHERS => comando_e; comando _f; -- condições restantes

END CASE;

Fonte: Reprodução do livro VHDL – Descrição e síntese de circuitos digitais d’Amore (2012)

Tendo sido feita estas considerações, parte-se para a estrutura geral do código. O

código é estruturado através de três comandos Process, um para cada núcleo de processamento.

O primeiro é referente à comunicação SPI com o cartão SD, já o segundo realiza a comunicação

SPI com o sensor acelerômetro, e o último tem o objetivo de amostrar e tratar o sinal lido. A

Figura 21 apresenta um diagrama de blocos genérico, que representa a estrutura do código

VHDL proposto.

Page 44: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

43

Figura 21 - Estrutura do código em blocos de Process

Case de variação do

clock (35 estados)

{

Na primeira

condição:

Case de seleção de

comando (8

estados)

(defineção de rw,

mb, addr e reg)

---------------------------

Na ultima condição:

Case de recepção

de dados (8

estados)

(defineção datax,

datay e dataz)

}

Case de comandos (15

estados)

{

Primeiras

condições:

Inicializam o cartão

SD e entram em

estado IDLE

---------------------------

Condição de IDLE:

Espera a leitura do

sinal wr=1, para

realizar a escrita

dos 512 bytes de

dados.

---------------------------

Demais condições:

Após a escrita de

dados, retorna à

condição IDLE

}

Case de amostragem

(100 estados)

{

Do 1º ao 99º estado:

Somatório das

amostras, para o

calculo da média

---------------------------

Ultimo estado:

Calculo da média;

Case de registro

dos 512 bytes (64

estados)

{

Registro dos 512

bytes;

No ultimo estado,

envio do sinal de

escrita (wr=1)

}

}

Acelerometro:process Amostra:ProcessCartao_sd:process

Fonte: Elaborado pelo autor.

Partindo desta estrutura geral é possível realizar uma especificação de cada um dos

três Process, visando esclarecer melhor o funcionamento deles.

4.2 Algoritmo Acelerômetro

O dispositivo acelerômetro utilizado foi o ADLX345, uma vez que este já se

encontrava disponível no kit didático adotado reduzindo a complexidade da implementação do

projeto proposto. Dentre as aplicações possíveis para este dispositivo destaca-se o controle de

equilíbrio. Neste tipo de aplicação apenas a aceleração estática, referente a gravidade, é

relevante, sendo a aceleração dinâmica, advinda de forças mecânicas, desconsiderada. Em

determinados sistemas sua própria estrutura impede que acelerações dinâmicas sejam lidas pelo

acelerômetro, todavia, em sistemas onde a movimentação do dispositivo é livre, faz-se

necessário o tratamento dos dados para que seja retirada, ou reduzida a um nível aceitável, a

componente da aceleração dinâmica.

Page 45: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

44

Na aplicação proposta, a leitura do acelerômetro ADXL345 é feita através do

protocolo SPI de três pinos. O código que realiza a comunicação é estruturado todo interno a

um Process, dentro do qual se localiza um comando Case, com mais dois Cases internos uns

aos outros. O Process possui em sua lista de sensibilidade um sinal de clock, com frequência

igual a 2x a frequência máxima do clock do ADXL345, já que cada estado do case indica uma

borda de subida, ou descida do clock. O Case principal realiza o protocolo propriamente dito,

já os dois Cases internos realizam a comutação entre os comandos de escrita e leitura, e

recepção de dados lidos, respectivamente. A Figura 22 apresenta um fluxograma para explicar

de forma simplificada o funcionamento do código de comunicação com o acelerômetro.

Figura 22 - Fluxograma do protocolo de comunicação SPI do acelerômetro ADXL345

Inicio

CASE K IS:

define os sinais

ADDRESS,

RW, MB e REG

Sinal de dados

recebe RW [1]Se K=3:

Sinal de dados

recebe MB [1]

DATAx

LSB

recebe

DATA

Sinal de dados

recebe

ADDRESS [6]

DATA[8]

recebe sinal de

dados

Se RW=1:

K=K+1

Não

Sim

Sinal de dados

recebe REG [8]

Não

Se K=4:

Não

Se K=5:

Não

Se K=6:

Não

Se K=7:

Não

Se K=8:

Sim

Sim

DATAx

MSB

recebe

DATA

Sim

DATAy

LSB

recebe

DATA

Sim

DATAy

MSB

recebe

DATA

Sim

DATAz

LSB

recebe

DATA

Sim

DATAz

MSB

recebe

DATA

K=K+1

K=3

Fonte: Elaborado pelo autor.

Page 46: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

45

O fluxograma da Figura 22 mostra que o procedimento de comunicação do

acelerômetro se dá da seguinte forma: um Case define os valores de endereço a ser acessado,

se o comando será de escrita ou leitura e o que será gravado caso seja escrita. Em seguida inicia-

se o processo de comunicação, enviando-se o sinal de escrita/leitura (RW), multi byte acesso

(MB) e endereço são enviadas bit a bit ao acelerômetro. Caso o comando seja de escrita,

enviam-se os dados a serem registrados (REG), caso contrário, os dados lidos são gravados na

variável de dados (DATA), e então registrada em um dos 6 registradores de aceleração dos 3

eixos, de acordo com o valores definidos no Case inicial, a partir deste ponto, repete-se as

leituras dos 6 registradores, para atualização dos mesmos.

4.3 Algoritmo do cartão SD

O algoritmo de gravação do SDMC é uma modificação, que simplifica, o código

genérico de comunicação com o SDMC, desenvolvido pelo engenheiro Steven J. Merrifield e

divulgado em seu site pessoal (MERRIFIELD, 2008). Partindo de tal código, realizaram-se

mudanças de tal forma que o mesmo operasse apenas para a escrita de dados, e de forma a

enviar comandos de escrita de um único bloco de 512 bytes, por sinal de escrita.

O fluxograma apresentado na Figura 23, descreve de forma gráfica e simplificada, o

procedimento realizado pelo código de escrita do SDMC. Inicialmente o cartão SD é

inicializado em comunicação SPI através do envio de 80 pulsos de clock com o sinal CS em

nível lógico zero. Em seguida, já em protocolo SPI, é enviado o comando 0, que faz com que o

cartão SD entre em espera. Após, são enviados os comandos 55, para indicar o comando

especial que virá em seguida, daí envia-se o comando especial 41, que realiza a inicialização

do cartão SD, caso a resposta indique um correto funcionamento, o cartão SD volta ao estado

de espera, e se mantem até que um comando de escrita seja enviado (wr=1). No momento em

que o comando de escrita é enviado, o protocolo de registro é seguido, enviando os 512 bytes a

serem registrados na memória, retornando ao modo de espera ao final da gravação.

Page 47: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

46

Figura 23 - Fluxograma do código de escrita do SDMC

Inicio

Estado=RST: variaveis são

inicializadas e Estado recebe

INIT

Estado=INIT: sinal de

CS=0 por 80 clocks

(habilita comunicação SPI)

Estado=CMD0:

Entra em modo de espera

Estado=CMD55:

Avisa que o próximo

comando é de Aplicação

Específica

Estado=CMD41:

Aplicação especifica para

ativar a inicialização do

cartão SD

Se miso=1

Estado=POLL_CMD:

Verifica o termino da

inicialização.

Sim

Estado=:IDLE

Estado de espera por

comando de escrita

Se wr=1

Não

Estado=WRITE_BLOCK_CMD (CMD24): Envia o sinal de escrita de

bloco de 512 bytes

Sim

Estado=WRITE_BLOCK_INIT:Inicia o envio de bytes (byte_counter=512)

Estadi=WRITE_BLOCK_DATAEnvia um byte e faz

byte_counter=byte_counter-1

Se Byte_counter=0

Não

Sim

Fonte: Elaborado pelo autor.

4.4 Algoritmo de tratamento e amostragem

A amostragem de dados é realizada através da leitura, temporizada, dos

registradores responsáveis pelo armazenamento dos dados de aceleração obtidos do

acelerômetro. O algoritmo de comunicação com o acelerômetro é formulado de maneira que os

dados sejam continuamente lidos, na maior frequência de comunicação possível. Desta forma,

Page 48: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

47

a frequência do comando de sensibilidade deste Process, sendo inferior a frequência de

transmissão de dados, e que será a responsável por definir a frequência de amostragem.

Além de definir a frequência de amostragem, este Process é responsável por

tratamentos dos dados, sendo possível a aquisição de N dado (subamostras) a serem tratados

para a representação de um único dado amostrado. Outra função é a de organizar os dados em

um registrador de 512 bytes, o qual será utilizado na gravação do SDMC, já que o comando

para escrever, realiza a gravação de blocos de 512 bytes.

Partindo disto, algumas considerações devem ser feitas: a frequência de

amostragem definida foi de 10 Hz, ou seja, um dado a cada 0,1 segundo; a frequência do clock

que realiza a sensibilidade do Process de amostragem é de 50 MHz; o número de sub amostras

no caso onde elas são utilizadas é de 100, o número de variáveis a serem registradas são três,

referente aos três eixos, sendo cada uma com 16 bits. O tamanho do registrador é de 512 bytes,

ou 256 variáveis de 16 bits. Uma vez que o número de variáveis (3x16 bits) não é um divisor

para o tamanho do bloco a ser gravado no SDMC (2x256), utiliza-se uma quarta variável,

equivalente ao hexadecimal AAh, preenchendo dois bytes a cada conjunto de amostra das 3

variáveis.

Desta forma, a Equação 01 representa a formula de cálculo do divisor de frequência

a ser utilizado.

𝑓𝑟𝑒𝑞. 𝑑𝑒 𝑎𝑚𝑜𝑠𝑡𝑟𝑎𝑔𝑒𝑚 =𝑓𝑟𝑒𝑞. 𝑑𝑜 𝑐𝑙𝑜𝑐𝑘

𝑁º 𝑑𝑒 𝑠𝑢𝑏 𝑎𝑚𝑜𝑠𝑡𝑟𝑎𝑠 ∗ 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 𝑑𝑒 𝑓𝑟𝑒𝑞. (4.1)

Para o caso em que não há tratamento do sinal obtido, temos o valor do divisor dado

por:

10 𝐻𝑧 =50 𝑀𝐻𝑧

1 ∗ 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 𝑑𝑒 𝑓𝑟𝑒𝑞. (4.2)

𝑑𝑖𝑣𝑖𝑠𝑜𝑟 𝑑𝑒 𝑓𝑟𝑒𝑞. =50 𝑀𝐻𝑧

10 𝐻𝑧= 5.000.000 (4.3)

Já para o caso, onde há um tratamento de dados, utilizando 100 sub amostras, o

divisor de frequência é calculado da seguinte forma:

10 𝐻𝑧 =50 𝑀𝐻𝑧

100 ∗ 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 𝑑𝑒 𝑓𝑟𝑒𝑞. (4.4)

𝑑𝑖𝑣𝑖𝑠𝑜𝑟 𝑑𝑒 𝑓𝑟𝑒𝑞. =50 𝑀𝐻𝑧

10 𝐻𝑧 ∗ 100= 50.000 (4.5)

Page 49: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

48

Embora a taxa de amostragem seja de 10 Hz, devido o SDMC registra apenas

através de blocos de 512 bytes, o tempo de registro dos dados não é de 0,1. A frequência com

que os dados são registrados no SDMC é dado pela Equação (06).

𝑓𝑟𝑒𝑞. 𝑑𝑒 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜 =(2 ∗ 𝑣𝑎𝑟𝑖á𝑣𝑒𝑖𝑠) ∗ 𝑓𝑟𝑒𝑞. 𝑑𝑒 𝑎𝑚𝑜𝑠𝑡𝑟𝑎𝑔𝑒𝑚

𝑏𝑦𝑡𝑒𝑠 𝑑𝑜 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑑𝑜𝑟 (4.6)

𝑓𝑟𝑒𝑞. 𝑑𝑒 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜 =(2 ∗ 4 𝑏𝑦𝑡𝑒𝑠) ∗ 10 𝐻𝑧

512 𝑏𝑦𝑡𝑒𝑠= 0,15625 𝐻𝑧 (4.7)

Sendo a frequência de registro igual a 0,15625 Hz, o tempo entre cada registro é de

6,4 segundos. Desta forma, após a aquisição dos dados, é recomendado que sejam esperados

6,4 segundos antes de remover o SDMC, a fim de garantir que os últimos dados obtidos sejam

realmente registrados neste.

Além da frequência de aquisição de dados, o Process de amostragem também

define quais tratamentos a serem realizados nos dados obtidos. Vislumbrando demonstrar esta

propriedade, o código desenvolvido foi modificado, a fim de apresentar um algoritmo para

realizar a média de 100 dados amostrados a cada 0,01 segundo, resultando em um dado

amostrado a ser registrado, a cada 0,1 segundo. O trecho de código apresentado na Figura 24,

apresenta um algoritmo para cálculo de média aritmética em linguagem VHDL.

Figura 24 - Algoritmo em linguagem VHDL para tratamento por média

-- aceleração: Valor de entrada

-- n: número de amostras da entrada

-- acumulador: somador dos n valores de entrada

media: PROCESS (lista_de_sensibilidade)

-- definição de variáveis

BEGIN

--

CASE contador IS

WHEN 0 => acumulador:= aceleração;

WHEN 1 TO n-1 => acumulador:= acumulador + aceleração;

WHEN n => acumulador:= acumulador /n

END CASE;

n<=n+1;

--

END PROCESS media; Fonte: Elaborado pelo autor.

Page 50: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

49

4.5 Análise dos resultados

Buscando apresentar dados reais e na falta de um dispositivo que permitisse um

controle da posição do acelerômetro, foi implementado um protocolo, para a movimentação do

sensor, visando a aquisição de dados para efeito de comparação entre os resultados obtidos com

o tratamento via cálculo da média aritmética de 100 valores, e dos dados sem tratamento,

permitindo a percepção da redução de ruído.

Desta forma, tomou-se como padrão a seguinte sequência de rotação do sensor

acelerômetro:

Inicialmente o mesmo é posicionado com o eixo z paralelo à gravidade, de tal forma

que a leitura feita neste eixo seja positiva, e as dos eixos x e y sejam próximas a zero.

O sensor é girado 180º em torno do eixo y, de forma que o e o eixo z passe a ficar

em sentido contrário ao da gravidade.

O sensor retorna a posição inicial e repete o segundo movimento, girando agora em

todo do eixo x. A Figura 25 Apresenta por meio de imagens 3D este procedimento.

Seguindo este padrão de movimentação, realizou-se amostragem de dados em

ambos os modelos: sem tratamento e com tratamento por média. A Figura 26 e a Figura 27

apresentam os gráficos obtido através do aplicativo desenvolvido em plataforma MATLAB,

referentes aos códigos sem e com tratamento, respectivamente. Em ambos os gráficos é possível

perceber a coerência entre os dados e a movimentação de ensaio.

Na Figura 26 e na Figura 27 são apresentados dois sub gráficos. Os primeiros sub

gráficos apresentam as plotagens dos dados de aceleração dos três eixos, já os segundos sub

gráficos são referentes à soma vetorial dos três eixos, que, uma vez que o experimento busca

eliminar o efeito da aceleração dinâmica, deve, teoricamente, manter seu valor fixo no valor da

constante de gravidade na terra. Os valores dos segundos sub gráficos são dados em função do

erro percentual.

Observando ambos os gráficos é clara a percepção da vantagem em utilizar um

tratamento por média, uma vez que este apresenta um perfil mais suave, e sem as oscilações

ruidosas vistas no gráfico de dados sem tratamento. Observando o segundo sub gráfico de

ambas as figuras, é possível perceber uma melhora do erro do somatório, todavia, percebe-se

que mesmo no gráfico dos dados tratados por média, o erro se apresenta elevado, que indica

que projetos que exijam maior nível de precisão requisitam modelos matemáticos de maior

robustez, o que foge do escopo deste trabalho.

Os resultados obtidos por meio da leitura do cartão SD através do software HxD,

bem como os valores esperados a partir da realização do protocolo de rotação proposto,

mostram que a implementação proposta é funcional. A partir da análise dos dados com

tratamento por média e sem tratamento, observa-se que tratamentos dos dados do acelerômetros

podem, e devem, ser implementados para que seja possível a utilização dos mesmos em

aplicações que demandem altos níveis de precisão.

Page 51: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

50

Figura 25 - Gráfico 3D do posicionamento do ADXL345 durante ensaios

Tempo T0 Posição no tempo T1 Posição no tempo T2 Posição no tempo T3

Posição no tempo T4 Posição no tempo T5 Posição no tempo T6 Posição no tempo T7

Posição no tempo T8 Posição no tempo T9 Tempo T10 Tempo T11

Tempo T12 Tempo T13 Tempo T14 Tempo T15

Fonte: Elaborado pelo autor.

Page 52: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

51

Figura 26 - Gráfico dos dados de aceleração sem tratamento

Fonte: Elaborado pelo autor.

Figura 27 - Gráfico de dados de aceleração com tratamento por média

Fonte: Elaborado pelo autor.

T0 T1 T2 T4

T6

T8 T10 T12 T14

7

T3 T5 T7

T9 T11 T13 T15

7

Page 53: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

52

5 CONCLUSÃO

A aplicação apresentada neste trabalho, bem como a teoria que o embasa, tornam

fácil a reprodução, com a possibilidade de modificação desta, de forma que projetos baseados

em FPGA possam facilmente vincula-la em sua estrutura.

Como objetivado, o projeto proposto mostrou-se funcional em sua totalidade,

apresentando tanto o sistema de comunicação, para aquisição de dados, com o sensor

acelerômetro, quanto o tratamento e registro de tais dados na memória não volátil do tipo flash

presente no cartão SD utilizado.

Dentre as vantagens do método de registro de dado em cartão SD proposto,

encontra-se a possibilidade de realização da aquisição de dados, para validação de projetos,

mesmo em casos onde não seria possível manter um computador fisicamente conectado, para a

captura de dados em tempo real.

Além disso, o uso do sensor acelerômetro ADXL345 apresenta diversas aplicações

possíveis, tendo como proposta de projetos futuros, desde um sistema de controle de

estabilidade de veículos aéreos, como de quadcópteros, até aplicações simples, porém uteis,

como o caso de um mouse de computador baseado em acelerômetro, cujo o funcionamento seria

independente da superfície de trabalho.

Os resultados obtidos pelos experimentos, mostram que algoritmos de tratamento

são indispensáveis a aplicações baseadas neste tipo de sensoriamento, dada a notada diferença

entre os dados sem tratamento e aqueles com um simples tratamento através do cálculo de

média aritmética.

Quanto à tecnologia de FPGAs, observou-se que embora desenvolvida com alto

nível de paralelismo, esta possui ferramentas que permitem facilmente a interação deste, com

dispositivos sequenciais voltados à arquitetura de microprocessadores, o que dá indícios de que

tecnologias baseadas nesse tipo de dispositivo ainda ocuparão grande parte do mercado,

tornando o conhecimento deste tipo de dispositivo, indispensável a um engenheiro eletricista

da área de automação e controle.

Page 54: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

53

REFERÊNCIAS

ANALOG Devices. 3-Axis, ±2 g/±4 g/±8 g/±16 g Digital Accelerometer: ADXL345

Datasheet. Norwood: Analog Devices, 2010. Disponível em:

http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf. Acesso em

27/12/2013.

ALTERA Corporation. Technology Milestones. Altera.com. 2011. Disponível em:

http://www.altera.com/corporate/about_us/history/abt-history.html?GSA_pos=6&WT.

oss_r=1&WT.oss=history . Acesso em: 10 de out. 2013.

ALTERA Corporation. White Paper: Voltage Regulator Section for FPGAs. Versão 1.0. San

Jose, Califórnia, 2008, 8 p. Disponível em: http://www.altera.com/literature/wp/wp-01071-

voltage-regulator-selection-fpgas.pdf. Acesso em 27/12/2013.

COSTA, Cesar da; MESQUITA, Leonardo; PINHEIRO, Eduardo. Elementos de Lógica

Programável com VHDL e DSP: Teoria & Prática. São Paulo: Érica, 2011. 269 p.

D’AMORE, Roberto, Vhdl - Descrição e Síntese de Circuitos Digitais, Rio de Janeiro, LTC,

2ª Edição, 2012.

JOHNSON, Jeff, List and comparison of FPGA companies. FPGA developer. 2011.

Disponível em http://www.fpgadeveloper.com/2011/07/list-and-comparison-of-fpga-

companies.html. Acesso em: 05 de nov. 2013.

MERRIFIELD, Steven J. VHDL SD card interface. 2008. Disponível em

http://stevenmerrifield.com/tools/sd.vhd. Acesso em 27/12/2013.

PEDRONI, Volnei A. Eletrônica Digital Moderna e VHDL. Rio de Janeiro: Elsevier, 2010.

619 p. Tradução de Arlete Simille Marques.

SANDISK Corporation. SanDisk Secure Digital Card: Product Manual, versão 2.2,

Sunnyvale, Califórnia, 2004, 123 p. Disponível em:

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/General/SDSpec.pdf. Acesso em

27/12/2013.

SENSR. Practical guide to accelerometers. 2013. Disponível em

http://www.sensr.com/pdf/practical-guide-to-accelerometers.pdf. Acesso em 27/12/2013

SREE, S. S. Digital Pen Ruler. 2013. 69 f. TCC (Graduação) - Curso de Electronics And

Communication Engineering, Department Of Electronics & Communication Engineering,

Aditya Engineering College, Surampalem, 2013. Cap. 5. Disponível em:

http://pt.scribd.com/doc/129882236/DOCUMENTATION-docx. Acesso em 27/12/2013.

ZELENOVSKY, Ricardo e MENDONÇA, Alexandre, PC: Um Guia Prático de Hardware e

Interfaceamento, Rio de Janeiro, MZ Editora, 2006

Page 55: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

54

APÊNDICE – CÓDIGO DE LEITURA DE ACELEROMETRO E ESCRITA EM

SDMC, EM VHDL

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity main is

generic(

size_acc: natural:=13;

-- one start byte, plus 512 bytes of data, plus two FF end bytes (CRC)

WRITE_DATA_SIZE : integer := 515 -- 2 bytes data storage

);

port (

--spi-3:acelerometro

acc_cs, acc_sclk: out std_logic;

acc_din: inout std_logic;

--spi-4:SD card

sdcard_cs : out std_logic;

sdcard_mosi : out std_logic;

sdcard_miso : in std_logic;

sdcard_sclk : out std_logic;

--interface sclk

switch: in std_logic_vector(3 downto 0);

button: in std_logic_vector(1 downto 0);

led: out std_logic_vector(7 downto 0);

-- 50 Mhz clock

clk_50_in : in std_logic

);

end main;

architecture do of main is

type states is (

RST,

INIT,

CMD0,

CMD55,

CMD41,

POLL_CMD,

IDLE, -- wait for read or write pulse

SEND_CMD,

RECEIVE_BYTE_WAIT,

RECEIVE_BYTE,

WRITE_BLOCK_CMD,

WRITE_BLOCK_INIT, -- initialise write command

Page 56: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

55

WRITE_BLOCK_DATA, -- loop through all data bytes

WRITE_BLOCK_BYTE, -- send one byte

WRITE_BLOCK_WAIT -- wait until not busy

);

type data_array is array (512 downto 1) of std_logic_vector(7 downto 0);

signal wr : std_logic;

signal dm_in : std_logic:='1'; -- data mode, 0 = write continuously, 1 = write single

block

signal state: states:=RST;

signal return_state : states;

signal sclk_sig : std_logic := '0';

signal cmd_out : std_logic_vector(55 downto 0):=x"FFFFFFFFFFFFFF";

signal recv_data : std_logic_vector(7 downto 0);

signal address : std_logic_vector(31 downto 0):=x"00000000";

signal cmd_mode : std_logic := '1';

signal data_mode : std_logic := '1';

signal response_mode : std_logic := '1';

signal data_sig : std_logic_vector(7 downto 0) := x"00";

signal data:data_array;

signal clk_50 : std_logic;

signal acc_x, acc_y, acc_z: integer range -(2**size_acc) to 2**size_acc-1:=0;

begin

sdcard_sclk <= sclk_sig;

sdcard_mosi <= cmd_out(55) when cmd_mode='1' else data_sig(7);

with switch(3) select

clk_50<=clk_50_in when '1',

'0' when others;

cartao_sd:process(clk_50)

variable byte_counter : integer range 0 to WRITE_DATA_SIZE;

variable bit_counter : integer range 0 to 160;

begin

data_mode <= dm_in;

if rising_edge(clk_50) then

case state is

when RST =>

sclk_sig <= '0';

cmd_out <= (others => '1');

address <= x"00000000";

byte_counter := 0;

cmd_mode <= '1'; -- 0=data, 1=command

response_mode <= '1'; -- 0=data, 1=command

Page 57: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

56

bit_counter := 160;

sdcard_cs <= '1';

state <= INIT;

when INIT => -- CS=1, send 80 clocks, CS=0

if (bit_counter = 0) then

sdcard_cs <= '0';

state <= CMD0;

else

bit_counter := bit_counter - 1;

sclk_sig <= not sclk_sig;

end if;

when CMD0 =>

cmd_out <= x"FF400000000095";

bit_counter := 55;

return_state <= CMD55;

state <= SEND_CMD;

when CMD55 =>

cmd_out <= x"FF770000000001"; -- 55d OR 40h = 77h

bit_counter := 55;

return_state <= CMD41;

state <= SEND_CMD;

when CMD41 =>

cmd_out <= x"FF690000000001"; -- 41d OR 40h = 69h

bit_counter := 55;

return_state <= POLL_CMD;

state <= SEND_CMD;

when POLL_CMD =>

if (recv_data(0) = '0') then

state <= IDLE;

else

state <= CMD55;

end if;

when IDLE =>

if (wr='1') then

state <= WRITE_BLOCK_CMD;

else

state <= IDLE;

end if;

when SEND_CMD =>

if (sclk_sig = '1') then

if (bit_counter = 0) then

state <= RECEIVE_BYTE_WAIT;

Page 58: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

57

else

bit_counter := bit_counter - 1;

cmd_out <= cmd_out(54 downto 0) & '1';

end if;

end if;

sclk_sig <= not sclk_sig;

when RECEIVE_BYTE_WAIT =>

if (sclk_sig = '1') then

if (sdcard_miso = '0') then

recv_data <= (others => '0');

if (response_mode='0') then

bit_counter := 3; -- already read bits 7..4

else

bit_counter := 6; -- already read bit 7

end if;

state <= RECEIVE_BYTE;

end if;

end if;

sclk_sig <= not sclk_sig;

when RECEIVE_BYTE =>

if (sclk_sig = '1') then

recv_data <= recv_data(6 downto 0) & sdcard_miso;

if (bit_counter = 0) then

state <= return_state;

else

bit_counter := bit_counter - 1;

end if;

end if;

sclk_sig <= not sclk_sig;

when WRITE_BLOCK_CMD =>

cmd_mode <= '1';

if (data_mode = '0') then

cmd_out <= x"FF" & x"59" & address & x"FF"; --

continuous

else

cmd_out <= x"FF" & x"58" & address & x"FF"; --

single block

end if;

bit_counter := 55;

return_state <= WRITE_BLOCK_INIT;

state <= SEND_CMD;

when WRITE_BLOCK_INIT =>

cmd_mode <= '0';

byte_counter := WRITE_DATA_SIZE;

state <= WRITE_BLOCK_DATA;

Page 59: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

58

when WRITE_BLOCK_DATA =>

if byte_counter = 0 then

state <= RECEIVE_BYTE_WAIT;

return_state <= WRITE_BLOCK_WAIT;

response_mode <= '0';

else

if ((byte_counter = 2) or (byte_counter = 1)) then

data_sig <= x"FF"; -- two CRC bytes

elsif byte_counter = WRITE_DATA_SIZE then

if (data_mode='0') then

data_sig <= x"FC"; -- start byte, multiple

blocks

else

data_sig <= x"FE"; -- start byte, single

block

end if;

else

-- bit a ser gravado

-------------------------------------------------------------------------------------------

data_sig <= data(byte_counter-2);

end if;

bit_counter := 7;

state <= WRITE_BLOCK_BYTE;

byte_counter := byte_counter - 1;

end if;

when WRITE_BLOCK_BYTE =>

if (sclk_sig = '1') then

if bit_counter=0 then

state <= WRITE_BLOCK_DATA;

else

data_sig <= data_sig(6 downto 0) & '1';

bit_counter := bit_counter - 1;

end if;

end if;

sclk_sig <= not sclk_sig;

when WRITE_BLOCK_WAIT =>

response_mode <= '1';

if sclk_sig='1' then

if sdcard_miso='1' then

if (data_mode='0') then

state <= WRITE_BLOCK_INIT;

else

address <=

std_logic_vector(unsigned(address) + x"200");

state <= IDLE;

end if;

Page 60: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

59

end if;

end if;

sclk_sig <= not sclk_sig;

when others => state <= IDLE;

end case;

end if;

end process cartao_sd;

acelerometro:process(clk_50)

variable count: natural range 0 to 100:=0;

variable rw,mb: std_logic:='0';

variable addr,reg,data: std_logic_vector(7 downto 0):=x"00";

variable datax,datay,dataz: std_logic_vector(12 downto 0):="0000000000000";

variable i: natural range 0 to 35:=0;

variable k: natural range 0 to 8:=0;

begin

if rising_edge(clk_50)then

if(count=10)then count:=0;

case i is

when 0 =>

acc_sclk<='1'; acc_cs<='1';

case k is -- define se é leitura/escrita, qual o endereço, e o que

deve ser escrito

when 0 =>rw:='0';mb:='0';addr:=x"31"; reg:=x"4f";

when 1 =>rw:='0';mb:='0';addr:=x"2c"; reg:=x"07";

when 2 =>rw:='0';mb:='0';addr:=x"2d"; reg:=x"08";

when 3 =>rw:='1';mb:='0';addr:=x"32"; reg:=x"00";

when 4 =>rw:='1';mb:='0';addr:=x"33"; reg:=x"00";

when 5 =>rw:='1';mb:='0';addr:=x"34"; reg:=x"00";

when 6 =>rw:='1';mb:='0';addr:=x"35"; reg:=x"00";

when 7 =>rw:='1';mb:='0';addr:=x"36"; reg:=x"00";

when 8 =>rw:='1';mb:='0';addr:=x"37"; reg:=x"00";

end case;

when 1 => acc_sclk<='1'; acc_cs<='0';

when 2 => acc_sclk<='0'; acc_din<=rw;

when 3 => acc_sclk<='1'; acc_din<=rw;

when 4 => acc_sclk<='0'; acc_din<=mb;

when 5 => acc_sclk<='1'; acc_din<=mb;

when 6 => acc_sclk<='0'; acc_din<=addr(5);

when 7 => acc_sclk<='1'; acc_din<=addr(5);

when 8 => acc_sclk<='0'; acc_din<=addr(4);

when 9 => acc_sclk<='1'; acc_din<=addr(4);

when 10 => acc_sclk<='0'; acc_din<=addr(3);

when 11 => acc_sclk<='1'; acc_din<=addr(3);

when 12 => acc_sclk<='0'; acc_din<=addr(2);

when 13 => acc_sclk<='1'; acc_din<=addr(2);

when 14 => acc_sclk<='0'; acc_din<=addr(1);

when 15 => acc_sclk<='1'; acc_din<=addr(1);

Page 61: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

60

when 16 => acc_sclk<='0'; acc_din<=addr(0);

when 17 => acc_sclk<='1'; acc_din<=addr(0);

when 18 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(7);end if;

when 19 => acc_sclk<='1'; if(rw='1')then data(7):=acc_din; else

acc_din<=reg(7);end if;

when 20 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(6);end if;

when 21 => acc_sclk<='1'; if(rw='1')then data(6):=acc_din; else

acc_din<=reg(6);end if;

when 22 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(5);end if;

when 23 => acc_sclk<='1'; if(rw='1')then data(5):=acc_din; else

acc_din<=reg(5);end if;

when 24 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(4);end if;

when 25 => acc_sclk<='1'; if(rw='1')then data(4):=acc_din; else

acc_din<=reg(4);end if;

when 26 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(3);end if;

when 27 => acc_sclk<='1'; if(rw='1')then data(3):=acc_din; else

acc_din<=reg(3);end if;

when 28 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(2);end if;

when 29 => acc_sclk<='1'; if(rw='1')then data(2):=acc_din; else

acc_din<=reg(2);end if;

when 30 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(1);end if;

when 31 => acc_sclk<='1'; if(rw='1')then data(1):=acc_din; else

acc_din<=reg(1);end if;

when 32 => acc_sclk<='0'; if(rw='1')then acc_din<='Z'; else

acc_din<=reg(0);end if;

when 33 => acc_sclk<='1'; if(rw='1')then data(0):=acc_din; else

acc_din<=reg(0);end if;

when 34 =>

acc_sclk<='1'; acc_cs<='1';

case k is --registra os valores lidos nos registradores

when 0 =>null;

when 1 =>null;

when 2 =>null;

when 3 =>datax:="00000000" & data(7 downto 3);

when 4 =>datax:=data & datax(7 downto 3);

when 5 =>datay:="00000000" & data(7 downto 3);

when 6 =>datay:=data & datay(7 downto 3);

when 7 =>dataz:="00000000" & data(7 downto 3);

when 8 =>dataz:=data & dataz(7 downto 3);

end case;

when 35 =>

acc_sclk<='1'; acc_cs<='1';

Page 62: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

61

if(k>=8)then k:=3; else k:=k+1;end if;

end case;

if(i>=35)then i:=0;else i:=i+1; end if;

else count:=count+1;

end if;

end if;

acc_x<=to_integer(signed(datax(12 downto (13-size_acc))));

acc_y<=to_integer(signed(datay(12 downto (13-size_acc))));

acc_z<=to_integer(signed(dataz(12 downto (13-size_acc))));

end process acelerometro;

amostra:process(clk_50)

variable count1: natural range 0 to 50000:=0;

variable count2: natural range 0 to 100:=0;

variable count3: natural range 0 to 63:=0;

variable acum_x, acum_y, acum_z: integer range -2**(8+(size_acc-1)) to 2**(8+(size_acc-

1))-1;

variable vel_x,vel_y,vel_z,dis_x,dis_y,dis_z: integer range -2**15 to 2**15-1:=0;

variable acc_x_std,acc_y_std,acc_z_std: std_logic_vector(15 downto 0);

variable vel_x_std,vel_y_std,vel_z_std: std_logic_vector(15 downto 0);

variable dis_x_std,dis_y_std,dis_z_std: std_logic_vector(15 downto 0);

variable acc_x_o, acc_y_o, acc_z_o: integer range -(2**size_acc) to 2**size_acc-1:=0;

begin

if rising_edge(clk_50)then

if(count1=50000)then -- 10000 amostras por segundo

count1:=0;

case count2 is

when 0=>

wr<='0';

acum_x:=acc_x;

acum_y:=acc_y;

acum_z:=acc_z;

when 1 to 99=>

wr<='0';

acum_x:=acum_x+acc_x;

acum_y:=acum_y+acc_y;

acum_z:=acum_z+acc_z;

when 100=>

acum_x:=acum_x/100;

acum_y:=acum_y/100;

acum_z:=acum_z/100;

acc_x_std := std_logic_vector(to_signed(acum_x, 16));

acc_y_std := std_logic_vector(to_signed(acum_y, 16));

acc_z_std := std_logic_vector(to_signed(acum_z, 16));

led<=acc_z_std(8 downto 1);

--

case count3 is

when others =>data((512-count3*8) downto (505-

count3*8))<=

Page 63: UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE … LUIZ WATTES OLIVEIRA JUNIOR... · Para solicitar a ficha catalográfica de seu trabalho, acesse o site: , clique ... Fernando Pessoa

62

( acc_x_std(15 downto 8), acc_x_std(7

downto 0),

acc_y_std(15 downto 8), acc_y_std(7

downto 0),

acc_z_std(15 downto 8), acc_z_std(7

downto 0),

x"AA", x"AA");

end case;

if count3=63 then

count3:=0; wr<='1';

else count3:=count3+1; wr<='0';

end if;

end case;

if(count2=100)then count2:=0;

else count2:=count2+1;

end if;

else count1:=count1+1; wr<='0';

end if;

end if;

end process amostra;

end do;