Classificador LVQ configurável em FPGA

Transcrição

Classificador LVQ configurável em FPGA
Centro Universitário Positivo - UnicenP
Núcleo de Ciências Exatas e Tecnológicas – NCET
Engenharia da Computação
Valéria Arcie Polli
Classificador LVQ configurável em FPGA
Curitiba
2005
Centro Universitário Positivo - UnicenP
Núcleo de Ciências Exatas e Tecnológicas – NCET
Engenharia da Computação
Valéria Arcie Polli
Classificador LVQ configurável em FPGA
Monografia apresentada à disciplina de
Projeto Final, como requisito parcial à
conclusão do Curso de Engenharia da
Computação. Orientador: Prof. Valfredo
Pilla Jr.
Curitiba
2005
ii
Termo de Aprovação
Valéria Arcie Polli
Classificador LVQ configurável em FPGA
Monografia aprovada como requisito parcial à conclusão do curso de
Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca
examinadora:
Prof. Valfredo Pilla Jr. (orientador)
Prof. Edson Pedro Ferlin
Prof. Maurício Perretto
Curitiba, 12 de dezembro de 2005
iii
Agradecimentos
Primeiramente, agradeço a Deus que me proporcionou a oportunidade de
chegar até aqui, realizar este projeto e concluir mais uma etapa na minha vida.
Aos meus pais, José Wierzba Polli e Irene Maria Arcie Polli, pelo esforço que
fizeram para que hoje eu pudesse estar concluindo este curso de graduação e
principalmente pelo amor, valores e o apoio em todos os momentos dessa
caminhada.
Aos meus avós, Alécio Arcie e Rosária Arcie, que em todos os momentos de
dificuldade me mostraram que sem luta não há conquista.
Às minhas irmãs Marilise, Bruna e Josirene que sempre acreditaram no meu
trabalho e as agradeço por terem agüentado meu mau humor e stress durante todo
o curso.
Ao meu namorado Rodrigo Villaverde Cendon, que nunca me deixou desistir,
pelo seu apoio, carinho e paciência.
Ao meu orientador professor e amigo Valfredo Pilla Jr, pela idéia do projeto, por
acreditar e sempre estar disposto a ajudar, não apenas nesse projeto, mas em
outras pesquisas acadêmicas. Agradeço também ao professor José Carlos da
Cunha que sempre me incentivou.
E aos professores do curso de Engenharia da Computação da UnicenP,
responsáveis diretos pela minha formação profissional.
iv
Sumário
Lista de Figuras ..................................................................................................... viii
Lista de Tabelas....................................................................................................... xi
Lista de Siglas ........................................................................................................ xii
Lista de Símbolos.................................................................................................. xiii
Resumo .................................................................................................................. xiv
Abstract ................................................................................................................... xv
1
INTRODUÇÃO ..................................................................................................... 1
2
REVISÃO BIBLIOGRÁFICA ................................................................................. 3
2.1
FPGA ............................................................................................................. 3
2.1.1
Arquitetura da família Cyclone.................................................................. 4
2.1.2
Placa de desenvolvimento Nios.............................................................. 11
2.2
REDES NEURAIS............................................................................................. 15
2.2.1
Histórico.................................................................................................. 15
2.2.2
Neurônio Biológico.................................................................................. 16
2.2.3
Neurônio Modelado ................................................................................ 18
2.2.4
Arquiteturas de RNAs ............................................................................. 18
2.2.5
Aprendizado ........................................................................................... 20
2.2.5.1
Aprendizado Supervisionado ............................................................ 20
2.2.5.2
Aprendizado Não-supervisionado..................................................... 21
2.2.6
Algoritmo de treinamento para Retropropagação (Back-propagation).... 21
2.2.7
SOM (Self-Organizing Maps).................................................................. 22
2.3
CLASSIFICADOR LVQ ..................................................................................... 23
2.3.1
A Classificação LVQ ............................................................................... 24
2.3.2
LVQ1 ...................................................................................................... 24
2.3.3
LVQ2 ...................................................................................................... 25
2.3.4
LVQ3 ...................................................................................................... 26
2.3.5
Diferenças entre LVQ1, LVQ2 e LVQ3 ................................................... 26
2.3.6
Classificador LVQ ................................................................................... 26
2.3.7
Porque usar LVQ .................................................................................... 27
2.4
INTERFACE USB ............................................................................................ 27
v
3
ESPECIFICAÇÃO TÉCNICA.............................................................................. 31
3.1
ESPECIFICAÇÃO DE HARDWARE ....................................................................... 32
3.1.1
3.1.1.1
Configuração via interface JTAG ...................................................... 32
3.1.1.2
Configuração via interface USB........................................................ 32
3.1.2
3.2
ESPECIFICAÇÃO DE SOFTWARE ....................................................................... 35
Treinamento da RNA no MatLab ............................................................ 35
3.2.2
Software de configuração da rede LVQ.................................................. 36
3.2.3
Firmware................................................................................................. 36
ESPECIFICAÇÃO DE VALIDAÇÃO ....................................................................... 37
3.3.1
Validação de Hardware .......................................................................... 37
3.3.2
Validação de Software............................................................................ 37
3.4
INFRA-ESTRUTURA.......................................................................................... 37
3.5
ESTUDO DE VIABILIDADE TÉCNICO-ECONÔMICA ................................................ 38
3.6
CRONOGRAMA ............................................................................................... 38
PROJETO........................................................................................................... 41
4.1
REQUISITOS MÍNIMOS PARA FUNCIONAMENTO ................................................... 41
4.2
PROJETO DE HARDWARE ................................................................................ 41
4.3
PROJETO DE SOFTWARE ................................................................................. 44
4.3.1
Software de Comunicação...................................................................... 44
4.3.2
Treinamento do Classificador LVQ no MatLab ....................................... 45
4.3.3
Firmware................................................................................................. 46
4.4
5
Módulo de comunicação......................................................................... 33
3.2.1
3.3
4
Módulo FPGA ......................................................................................... 32
PROCEDIMENTOS DE TESTES E VALIDAÇÃO DO PROJETO .................................... 51
4.4.1
Procedimentos de teste do módulo de comunicação ............................. 51
4.4.2
Procedimentos de teste da comunicação entre PC e FPGA .................. 51
4.4.3
Procedimentos de teste para validação da rede LVQ na FPGA............. 52
RESULTADOS ................................................................................................... 53
5.1
COMUNICAÇÃO USB → µC............................................................................. 53
5.2
COMUNICAÇÃO PC → FPGA .......................................................................... 53
5.3
TREINO NO MATLAB ....................................................................................... 54
5.4
SOFTWARE .................................................................................................... 57
5.5
CLASSIFICADOR LVQ EM HARDWARE ............................................................... 57
vi
6
CONCLUSÃO..................................................................................................... 64
7
REFERÊNCIAS .................................................................................................. 65
Anexo 1 – Diagramas esquemáticos ........................................................... 67
Anexo 2 – Layout das placas ....................................................................... 71
Anexo 3 – Diagramas de software ............................................................... 73
Anexo 4 – Telas do software ....................................................................... 77
Anexo 5 – Artigo .......................................................................................... 81
Anexo 6 – Manual Técnico .......................................................................... 82
Anexo 7 – Manual do Usuário...................................................................... 83
vii
LISTA DE FIGURAS
Figura 1 - Diagrama em blocos da família Cyclone. ................................................... 4
Figura 2 - Estrutura do LABs do Cyclone. .................................................................. 5
Figura 3 - Sinais de controle dos LABs. ..................................................................... 5
Figura 4 - LE do Cyclone. ........................................................................................... 6
Figura 5 - LE em modo normal. .................................................................................. 7
Figura 6 - LE em modo aritmético dinâmico. .............................................................. 8
Figura 7 - Conexões de Interconnect. ........................................................................ 8
Figura 8 - Sinais de controle do bloco M4K RAM. ...................................................... 9
Figura 9 - Relação de linhas do LAB com bloco de M4K RAM................................... 9
Figura 10 - Geração do clock global......................................................................... 10
Figura 11 - Diagrama em blocos da placa de desenvolvimento Nios. ...................... 11
Figura 12 - Conector de expansão 1. ....................................................................... 12
Figura 13 - Conector de expansão 2. ....................................................................... 12
Figura 14 – Disposição dos componentes da placa de desenvolvimento Nios
[ALTERA, 2004].................................................................................................. 13
Figura 15 - Display 7 segmentos da placa de desenvolvimento do Nios.................. 14
Figura 16 - Disposição dos push-buttons e LEDs na placa. ..................................... 14
Figura 17 - Representação gráfica do XOR.............................................................. 16
Figura 18 - Componentes do neurônio biológico. ..................................................... 17
Figura 19 - Potencial de ação em um neurônio. ....................................................... 17
Figura 20 - Neurônio de McCulloch e Pitts. .............................................................. 18
Figura 21 - Exemplos de arquiteturas de RNAs. ...................................................... 19
Figura 22 - Aprendizagem Supervisionado............................................................... 20
Figura 23 - Aprendizado Não-supervisionado. ......................................................... 21
Figura 24 - Perceptron de múltiplas camadas. ......................................................... 21
Figura 25 - Exemplo de mapeamento usando SOM................................................. 22
Figura 26 - Arquitetura da Rede LVQ. ...................................................................... 23
Figura 27 - Conectores utilizados pela USB. ............................................................ 28
Figura 28 - Formatos dos pacotes do protocolo USB............................................... 30
Figura 29 - Diagrama em Blocos do sistema............................................................ 31
Figura 30 – Algoritmo de classificação da rede LVQ................................................ 33
Figura 31 - Módulo de comunicação. ....................................................................... 33
viii
Figura 32 - Fluxograma do firmware do µC. ............................................................. 34
Figura 33 - Diagrama em blocos da utilização do TUSB. ......................................... 34
Figura 34 - Fluxograma do treinamento da rede LVQ no MatLab. ........................... 35
Figura 35 - Fluxograma da execução do μC. ........................................................... 36
Figura 36 - Cronograma do Projeto (parte I)............................................................. 39
Figura 37 - Cronograma do Projeto (parte II)............................................................ 40
Figura 38 - Divisão dos módulos de hardware. ........................................................ 41
Figura 39 - Algoritmo de treino do classificador LVQ. .............................................. 46
Figura 40 - Fluxograma de processamento do µC. .................................................. 47
Figura 41 - Diagrama de estados da rede neural LVQ. ............................................ 47
Figura 42 - Diagrama em blocos da rede no FPGA.................................................. 48
Figura 43 - Diagrama de estados da leitura dos resultados da classificação. .......... 49
Figura 44 - Diagrama de estados de recepção e controle da execução................... 50
Figura 45 - Teste de envio de dado para a FPGA. .................................................. 52
Figura 46 - Sinal gerado pelo µC para a FPGA. ....................................................... 53
Figura 47 - Dado transmitido para a FPGA. ............................................................. 54
Figura 48 - Dado de teste da FPGA. ........................................................................ 54
Figura 49 - Resultado do treino com coeficiente de aprendizagem igual a 0,01. ..... 55
Figura 50 - Resultado do treino com coeficiente de aprendizagem igual a 0,1. ....... 55
Figura 51 - Resultado do treino com coeficiente de aprendizagem igual a 0,5. ....... 56
Figura 52 - Resultado do treino com coeficiente de aprendizagem igual a 1. .......... 56
Figura 53 - Dados enviados para a FPGA................................................................ 57
Figura 54 - Processo de recepção dos dados. ......................................................... 59
Figura 55 - Fases do processo de classificação....................................................... 60
Figura 56 - Total do chip utilizado............................................................................. 61
Figura 57 - Uso de memória (número de dimensões x número de classes – 3D). ... 62
Figura 58 – Uso de memória (número de dimensões x número de classes)............ 62
Figura 59 - Número máximo de dados para análise (3D). ........................................ 63
Figura 60 - Número máximo de dados para análise................................................. 63
Figura 61 - Diagrama esquemático do µC................................................................ 68
Figura 62 - Diagrama esquemático do conversor USB / Serial. ............................... 69
Figura 63 - Diagrama esquemático do módulo da FPGA. ........................................ 70
Figura 64 - Layout da placa do µC. .......................................................................... 72
Figura 65 - Layout da placa do TUSB. ..................................................................... 72
Figura 66 - Diagrama de caso de uso. ..................................................................... 74
ix
Figura 67 - Diagrama de seqüência cadastrar dados de entrada............................. 74
Figura 68 - Diagrama de seqüência configurar parâmetros da rede. ....................... 74
Figura 69 - Diagrama de seqüência comunicar com FPGA. .................................... 75
Figura 70 - Modelo Relacional.................................................................................. 75
Figura 71 - Diagrama de classes.............................................................................. 76
Figura 72 - Tela de cadastro de dados de entrada da rede...................................... 78
Figura 73 - Tela de cadastro de dados de configuração da rede LVQ. .................... 78
Figura 74 - Tela principal do software. ..................................................................... 79
Figura 75 - Tela de dados de envio para a FPGA. ................................................... 80
x
LISTA DE TABELAS
Tabela 1 - Recursos do dispositivo (adaptado de Cyclone Device Handbook). ......... 3
Tabela 2 - Padrões de E/S do Cyclone. ................................................................... 11
Tabela 3 - Pinagem dos push-buttons da placa de desenvolvimento Nios. ............. 14
Tabela 4 - Pinagem dos LEDs da placa de desenvolvimento Nios. ......................... 14
Tabela 5 - Pinos da interface USB ........................................................................... 28
Tabela 6 - Ambientes e ferramentas de desenvolvimento........................................ 37
Tabela 7 - Linguagem de programação.................................................................... 37
Tabela 8 - Tabela de custos. .................................................................................... 38
Tabela 9 – Eventos do Projeto Final......................................................................... 38
Tabela 10 - Sinais da comunicação com porta USB. ............................................... 42
Tabela 11 - Pinos utilizados do µC. .......................................................................... 42
Tabela 12 - Sinais da comunicação com µC. ........................................................... 42
Tabela 13 - Sinais da comunicação µC e FPGA. ..................................................... 43
Tabela 14 - Pinos utilizados no FPGA...................................................................... 43
Tabela 15 - Componentes utilizados. ....................................................................... 44
Tabela 16 – Seqüência de dados esperado pelo teste da comunicação.................. 51
Tabela 17 - Resultado esperado no teste da rede em hardware.............................. 52
xi
LISTA DE SIGLAS
CISC
-
Complex Instruction Set Computers
CMOS
-
Complementary Metal Oxide Semi-Conductor
EAB
-
Embedded Array Block
E/S
-
Entrada/Saída
FPGA
-
Field-Programmable Gate Array
FIFO
-
First-In First-Out
ICMC
-
Instituto de Ciências Matemáticas e de Computação
JTAG
-
Joint Test Action Group
LAB
-
Logic Array Block
LE
-
Logic Element
LUT
-
Look-up-table
LVDS
-
Low Voltage Differential Signal
LVTTL
-
Low Voltage Transistor Transistor Level
LVQ
-
Learning Vector Quantization
MLP
-
Multilayer Perceptron
NCET
-
Núcleo de Ciências Exatas e Tecnológicas
NRZI
-
Non Return to Zero Invert
PC
-
Personal Computer
PCI
-
Peripheral Component Interconnect
RAM
-
Randomic Acess Memory
RN
-
Redes Neurais
RNA
-
Redes Neurais Artificiais
ROM
-
Read-only Memory
SRAM
-
Static Randomic Acess Memory
TTL
-
Transistor-transistor Logic
USB
-
Universal Serial Bus
USP
-
Universidade de São Paulo
VHDL
-
Very
high
speed
integrated
Language
xii
circuits
Hardware
Descripton
LISTA DE SÍMBOLOS
µ
-
micro
µC
-
microcontrolador
Hz
-
Hertz
MHz
-
Mega Hertz
V
-
Volts
xiii
RESUMO
Com o avanço tecnológico dos dispositivos reconfiguráveis, principalmente as
FPGAs, a realização de updates em hardware foi extremamente facilitada. Desta
maneira não há a necessidade de intervenção física facilitando, principalmente, o
trabalho de projetistas.
Como a computação reconfigurável se mostra bastante dinâmica em projetos,
surgiu a idéia de criar uma arquitetura em hardware capaz de executar uma rede
neural configurável. Para isso a rede LVQ foi selecionada. É uma rede que exige
cálculos matemáticos simples (arquitetura baseada em cálculo de distância
euclidiana), facilitando o desenvolvimento da arquitetura.
Com essas características de reconfigurabilidade do hardware, desenvolveu-se
uma rede neural e a arquitetura permite sua configuração de acordo com os dados a
serem classificados para cada problema especifico.
O objetivo deste projeto é a implementação da rede, comprovando seu
funcionamento, para que futuramente possa ser aplicada a varias áreas, tais como
automação, biomédica, processamento de imagens, processamento de voz, entre
outros.
Os resultados encontrados neste projeto mostram que é eficiente a aplicação
de reconhecimento de padrões em dispositivos como as FPGAs. Foi possível
comprovar o funcionamento e buscar aplicações com maior complexidade.
Palavras-chave:
FPGA,
Lógica
Reconhecimento de Padrões.
xiv
Programável,
Rede
Neural
LVQ,
ABSTRACT
With the technological advance of reconfigurable devices, especially FPGAs,
the accomplishment of hardware updates was extremely facilitated. This way isn't
necessary physical intervention facilitating the work of designers.
With the dynamism of reconfigurable computing, the idea was develop an
architecture in hardware capable to execute a neural net. For this pourpose the LVQ
training method was selected. This net demands simple mathematical calculations
(Euclidean distance based architecture), facilitating the development of the
architecture.
With these reconfigurable characteristics of the hardware, a neural net in
programmable logic was developed enabling its configuration for the data that need
to be classified.
The objective of this project is the implementation of the net, proving
itsfunctioning, so that in future can be applied in different areas, such as automation,
biomedical, image processing, voice recognition, and others.
The results found in this project shows that the application of standards
recognition in FPGAs is very efficient. It was possible to prove the functioning and to
search applications with bigger complexity.
Keywords:
Recognition.
FPGA,
Programmable
xv
Logic,
LVQ
neural
network,
Pattern
1
1 INTRODUÇÃO
A computação reconfigurável vem sendo utilizada em larga escala para projetos
de hardware que necessitem de um grande poder de processamento. Neste campo um
dispositivo muito utilizado é a FPGA (Field-Programmable Gate Array).
As FPGAs são circuitos de hardware que podem ser modificados praticamente
em qualquer momento durante o uso. As FPGAs consistem em array de blocos lógicos
configuráveis, que implementam funções lógicas AND, NAND, OR, NOR e XOR [USP,
2005].
Existem processadores de uso geral, que executam várias funções. Em alguns
casos, este excesso de funções torna o processamento muito lento. Para isso, existem
hardwares que podem ser desenvolvidos para aplicações especificas, que executam
poucas funções e tem um processamento bastante rápido devido ao processamento
ser totalmente paralelo.
Muitas vantagens podem ser vistas no uso de FPGA como a possibilidade de
desenvolver unidades funcionais dedicadas a resolver problemas especiais e
mudanças rápidas no hardware. Em microprocessadores de uso geral, se tem um
hardware que não pode ser modificado, fixo, mas no FPGA essa mudança é bastante
simples e rápida, feita via software.
O projeto tem como objetivo a implementação de uma rede neural em um
hardware reconfigurável.
Dentro da computação uma área de grande interesse aos pesquisadores é
Inteligência Artificial (IA) ou Inteligência Computacional (IC) no estudo de Redes
Neurais Artificiais (RNA). Segundo [BRAGA, 2000] as redes neurais artificiais são
sistemas paralelos distribuídos compostos por unidades de processamento simples
(neurônios) que calculam determinadas funções matemáticas (normalmente nãolineares), capazes de armazenar conhecimento tornando-o acessível para uso. Essa
estrutura se assemelha ao cérebro humano.
Geralmente, o conhecimento é adquirido a partir de um processo de
aprendizagem. Esse processo se dá pela força de conexões entre os nodos
(neurônios), que são utilizados para armazenar o conhecimento adquirido.
As redes neurais artificiais têm uma enorme gama de aplicações, podendo ser
utilizadas nas mais diversas áreas, como: automação, biomédica, processamento de
imagens, processamento de voz, etc.
2
A Rede Neural (RN) selecionada para implementação neste projeto é LVQ
(Learning Vector Quantization) [KOHONEN, 1997], sendo bastante interessante para
implementação em hardware visto que utiliza cálculos de distância euclidiana entre
amostras de vetores de referência, o que elimina o uso de multiplicadores, que ocupam
grande quantidade de lógica dos componentes programáveis [KUGLER, 2003].
A rede LVQ é um método de treinamento de RNA para classificação de padrões
no qual cada saída da RN representa uma classe. Cada classe é referenciada a um
vetor de pesos (vetores de referência), os quais representam os centros de clusters
que definem as superfícies de decisão das classes. Este tipo de rede assume que um
conjunto de padrões de treinamento é conhecido, junto com uma distribuição inicial dos
vetores de referência.
Este projeto busca uma solução para sistemas que exigem grande poder
computacional, adotando como solução um dispositivo de baixo custo e com recursos
suficientes para este tipo de processamento. Para tanto, este documento foi redigido
em 6 seções distintas, considerando esta como seção introdutória.
Na segunda seção encontra-se a revisão da literatura. Nela é apresentada a base
teórico-conceitual, oferecendo um panorama da tecnologia utilizada e uma visão geral
dos estudos nessa área.
Na terceira seção é apresentada a especificação técnica de software e hardware,
objetivos de cada módulo do projeto e funcionamento de cada um deles.
Na quarta seção encontra-se o projeto de desenvolvimento do sistema, software
(aplicativo desenvolvido e treino da rede no MatLab) e hardware (módulo de
comunicação e módulo da FPGA).
Na quinta seção são apresentados os resultados obtidos, mostrando o
funcionamento de cada módulo, como resultados obtidos nos teste de cada um e
resultado do sistema completo em funcionamento.
Finalmente, na sexta seção, são apresentadas as conclusões obtidas com o
desenvolvimento deste projeto, bem como as limitações e direcionamento para futuras
implementações.
3
2 REVISÃO BIBLIOGRÁFICA
2.1
FPGA
As FPGAs são circuitos de hardware que podem ser modificados praticamente
em qualquer momento durante o uso. As FPGAs consistem em arrays de blocos
lógicos configuráveis, que implementam funções lógicas, tais como AND, NAND, OR,
NOR e XOR [USP, 2005].
A FPGA utilizada neste projeto é EP1C20F400C7 da família Cyclone, disponível
na placa de desenvolvimento Nios II – Edição Cyclone [ALTERA, 2004].
Os dispositivos da família Cyclone contêm uma arquitetura bidimensional de
linhas e colunas. Esta arquitetura é composta por LABs (Logic Array Blocks), onde
cada LAB contém 10 LEs (Logic Elements). As linhas e colunas são interconectadas
com velocidades que variam provendo interconexão eficiente entre LABs e LEs
[ALTERA, 2004].
Na figura 1, os blocos de memórias M4K RAM são agrupados nas colunas entre os
LAB’s. Na parte externa, é possível ver os IOEs (elementos de entrada / saída) da
FPGA, que suportam diferentes padrões de E/S (entrada / saída). O número de blocos
M4K RAM, PLLs, linhas e colunas variam para cada dispositivo da família Cyclone,
como mostra na tabela 1 [ALTERA, 2004].
Tabela 1 - Recursos do dispositivo (adaptado de Cyclone Device Handbook).
4
Figura 1 - Diagrama em blocos da família Cyclone.
2.1.1 Arquitetura da família Cyclone
Cada LAB (Logic Array Blocks), consistem em agrupamentos de 10 LEs (logic
elements), sinais de controle dos LABs, interconexões locais, uma tabela de LUT (lookup table), possuem interconexões por linhas e colunas, apresentado na figura 2
(estrutura do LAB).
As conexões locais de link direto (Direct Link Connection), minimizam o uso das
linhas e colunas, provendo maior performance e flexibilidade. Existe uma ligação direta
de cada LE que o conecta a outros 30 LEs através de uma conexão de link direto.
Cada LAB possui uma lógica para dirigir sinais de controle a seus LEs. Os LABs
contém os seguintes sinais de controle: dois clocks, dois sinais de habilitação de clock,
dois asynchronous clears, synchronous clear, asynchronous preset/load, synchronous
load e sinais de controle de soma / subtração, mostrados na figura 3.
5
Figura 2 - Estrutura do LABs do Cyclone.
Figura 3 - Sinais de controle dos LABs.
O LE é a menor unidade da lógica na arquitetura do Cyclone. O LE é compacto e
fornece características avançadas para utilização eficiente da lógica. Cada LE contém
uma LUT de 4 entradas, para que possa executar qualquer função de quatro variáveis.
Além disso, cada LE contém um registrador programável e carry (selecionado).
6
O LE possui os seguintes tipos de interconexão: local, linha, coluna, registrador
programável e link direto. Duas saídas da LE são direcionadas para roteamento de
coluna ou linha, uma para link direto e uma para interconexão local. Isso permite que a
LUT e o registrador programável trabalhem paralelamente.
Essas características são chamadas de Register Packing, que melhoram a
utilização do dispositivo, pois este dispositivo pode utilizar a LUT e o registrador em
funções não relacionadas. A estrutura do LE do Cyclone é apresentada na figura 4.
Figura 4 - LE do Cyclone.
Os LEs possuem uma característica de somador/subtrator dinâmico, que livra
recursos lógicos de usar um conjunto de LE’s para implementar ambas as operações.
Essa característica é controlada pelo sinal de controle addnsub, que coloca o LAB para
realizar tanto A + B quanto A – B.
O dispositivo Cyclone possui dois modos de operação dos LEs: modo normal e
modo aritmético dinâmico. Cada modo usa os recursos do LE diferentemente.
Em cada modo, oito entradas são disponíveis para a LE (quatro dados de entrada
da interconexão local da LAB, carry-in0 e carry-in1 da LE anterior, o carry-in do LAB e a
7
conexão da cadeia de registradores), que são direcionadas para diferentes destinos
para implementar a função lógica desejada.
O modo normal é apropriado para aplicações de lógica gerais e funções
combinatórias. O sinal addnsub só é permitido no modo normal se o LE está no final de
uma cadeia de somador/subtrator. Este modo é apresentado na figura 5.
O modo aritmético dinâmico é ideal para implementar somadores, contadores,
acumuladores, funções de paridade e comparadores.
Um LE no modo aritmético usa quatro LUT’s de duas entradas configuradas como
um somador ou subtrator dinâmico. O modo aritmético dinâmico é apresentado na
figura 6.
Figura 5 - LE em modo normal.
Na arquitetura Cyclone, os LE’s, blocos de memória M4K e dispositivos de E/S
são providos por uma estrutura de interconexão MultiTrack. A interconexão MultiTrack
consiste de linhas contínuas roteadoras e de performance otimizada de diferentes
velocidades usadas para realizar conexões inter e intra blocos. Simplifica o estágio de
integração de projetos baseados em blocos, eliminando os ciclos de re-otimização que
geralmente geram mudanças de projeto. Consiste de interconexões de linha e coluna
com distâncias fixas. Linhas dedicadas interconectam sinais roteados de e para LAB’s,
PLL’s, blocos de memória M4K dentro de uma mesma linha. Essas linhas incluem (1)
interconexões de links diretos entre LAB’s e blocos adjacentes e (2) R4 Interconnect
(Row4) que liga quatro blocos (figura 7).
8
Figura 6 - LE em modo aritmético dinâmico.
Figura 7 - Conexões de Interconnect.
A interconexão de colunas opera similarmente a interconexão de linhas. Colunas
dedicadas interconectam sinais roteados de e para LAB’s, PLL’s, blocos de memória
M4K verticalmente. Essas colunas incluem: cadeias de LUT’s dentro de um LAB,
cadeias de Registradores programáveis dentro de um LAB, C4 interconecta quatro
blocos.
9
A memória embarcada do Cyclone consiste em colunas de blocos da memória
M4K. Cada bloco de M4K pode executar vários tipos de memória com ou sem
paridade, incluindo dual-port verdadeiro, dual-port simples e single-port de RAM, ROM
e FIFO. A figura 8 apresenta os sinais de controle dos blocos de memória. E a figura 9
mostra a relação entre linhas dos LABs com os bloco memória M4K
Figura 8 - Sinais de controle do bloco M4K RAM.
Figura 9 - Relação de linhas do LAB com bloco de M4K RAM.
10
Os dispositivos Cyclone fornecem uma rede global do pulso de clock. Há quatro
pinos dedicados para o clock (CLK[3..0 ], dois pinos no lado esquerdo e dois pinos no
lado direito). A rede global do pulso de clock é mostrada na figura 10.
Figura 10 - Geração do clock global.
Tensão de trabalho dos elementos de E/S do dispositivo Cyclone são os
seguintes padrões:
ƒ
3.3 V LVTTL/LVCMOS
ƒ
2.5-V LVTTL/LVCMOS
ƒ
1.8-V LVTTL/LVCMOS
ƒ
1.5-V LVCMOS
ƒ
3.3-V PCI
ƒ
LVDS
ƒ
RSDS
ƒ
SSTL-2 class I and II
ƒ
SSTL-3 class I and II.
11
Tabela 2 - Padrões de E/S do Cyclone.
2.1.2 Placa de desenvolvimento Nios
A placa de desenvolvimento Nios inclui a FPGA que é utilizada, além de oferecer
outros recursos que podem utilizado no projeto como apresentado na figura 11.
Figura 11 - Diagrama em blocos da placa de desenvolvimento Nios.
12
Os conectores de expansão da placa do Nios, PROTO1 e PROTO2 compartilham
dos pinos do E/S do dispositivo Cyclone, os disponibilizando para o usuário. O
PROTO1 compartilha seus pinos com o conector do compact flash. As figuras 12 e 13
apresentam os conectores de expansão.
Figura 12 - Conector de expansão 1.
Figura 13 - Conector de expansão 2.
13
Figura 14 – Disposição dos componentes da placa de desenvolvimento Nios [ALTERA, 2004].
14
A
figura
14
apresenta
a
disposição
dos
componentes
na
placa
de
desenvolvimento Nios, edição Cyclone.
Na placa de desenvolvimento Nios, há dois displays sete segmentos (U8 e U9),
conectados ao dispositivo Cyclone, de modo que cada segmento seja controlado
individualmente por um pino de E/S do dispositivo. Quando o pino do Cyclone dirige a
lógica para nível lógico baixo, o diodo emissor de luz correspondente é ativado. Os
displays e a correspondente pinagem de cada um é mostrada na figura 15.
A placa contém push-buttons e LEDs, todos conectados a portas individuais do
dispositivo Cyclone. A tabela 3 contém os pinos de cada push-button conectado ao
Cyclone e na tabela 4 é apresentada a pinagem dos LEDs. Na figura 16 é apresentada
a disposição dos LEDs e push-buttons na placa de desenvolvimento do Nios.
Figura 15 - Display 7 segmentos da placa de desenvolvimento do Nios.
Tabela 3 - Pinagem dos push-buttons da placa de desenvolvimento Nios.
Tabela 4 - Pinagem dos LEDs da placa de desenvolvimento Nios.
Figura 16 - Disposição dos push-buttons e LEDs na placa.
15
A configuração do dispositivo Cyclone é feita através da interface JTAG (J24)
disponível na placa de desenvolvimento Nios, que permite a configuração via software
Quartus II.
2.2
Redes Neurais
2.2.1 Histórico
Em 1943, um trabalho pioneiro sobre redes neurais artificiais foi realizado por
Warren McCullock e Walter Pitts “A Logical Calculus of the Ideas Immament in Nervous
Activity”.
Eles desenvolveram um estudo sobre o comportamento do neurônio biológico,
com o objetivo de criar um modelo matemático capaz de simular o comportamento do
neurônio biológico. As conclusões desta pesquisa foram de extrema importância para a
futura implementação computacional do neurônio formal. O modelo de McCullock e
Pitts foi chamado de nodos MCP.
A grande discussão em torno de RNA é a aprendizagem [BRAGA, 2000], que não
foi foco da pesquisa de McCullock e Pitts. Eles se concentraram em descrever o
neurônio matematicamente e não como seria a aprendizagem. Em 1949, Donald Hebb
mostrou como a aprendizagem se daria a partir de uma atualização de pesos na
entrada dos nodos (neurônios).
Frank Rosenblatt, em 1958, implementou o primeiro modelo neural, o perceptron.
Ele demonstrou que acrescentando pesos aos nodos MCP a rede neural poderia ser
treinada para reconhecimento de alguns padrões. O perceptron simples de
comportava-se como um classificador, dividindo o espaço em regiões distintas para
cada uma das classes existentes. O perceptron só é capaz de separar padrões que
sejam linearmente separáveis [BRAGA, 2000].
Em 1969, Minskey e Papert mostraram que o percepton não era capaz de
executar algumas funções. O perceptron é capaz de aprender tudo aquilo que ele
consegue representar [BRAGA, 2000], problemas de entrada que a solução não
poderia ser separadas linearmente, não haveria solução.
Um exemplo de função que o perceptron não poderia resolver é a função XOR.
Supondo um plano onde x e y são as entradas da rede e o ponto cartesiano (x,y) é o
valor da respectiva saída, como na figura 17.
16
Figura 17 - Representação gráfica do XOR.
Como mostra a figura 17, não é possível traçar uma única reta (função linear)
capaz de dividir plano de maneira que as saídas com valor zero ficam situadas de um
lado da reta e as com valor um do outro.
Após Minskey e Papert demonstrarem este problema, um período chamado de
anos negros das redes neurais artificiais iniciou, por desencorajar novas pesquisas e
desestimular o estudo mais profundo deste campo.
Em 1982, Teuvo Kohonen [KOHONEN, 1997] definiu um novo modelo de rede
neural, conhecido como mapa auto-organizável de características. Ao contrário do
perceptron, ele não era limitado a valores binários, mas os valores das entradas, dos
pesos e das saídas poderiam ser contínuos.
A grande importância do trabalho de Kohonen foi ter introduzido um novo
paradigma no estudo das redes neurais: o aprendizado não-supervisionado, onde a
rede neural não precisa ficar sendo comparada constantemente a um valor de saída
durante a fase de aprendizado, mas este método é válido apenas para as redes SelfOrganizing Maps - SOM (as redes LVQ utilizando o algoritmo supervisionado para seu
treino).
2.2.2 Neurônio Biológico
Os neurônios biológicos são divididos em três partes: o corpo da célula, os
dendritos e o axônio [BRAGA, 2000].
Os dendritos têm como função receber os impulsos de outros neurônios e levá-los
até o corpo da célula. A informação que chega ao corpo da célula é processada, novos
impulsos são gerados e levados pelos axônios até os dendritos de outros neurônios. A
figura 18 apresenta a estrutura do neurônio.
17
Figura 18 - Componentes do neurônio biológico.
No neurônio há uma diferença de potencial entre seu interior (concentração de
potássio) e exterior (concentração de sódio). Dentro da célula a concentração de íon de
potássio gera um potencial de -70mV em relação ao seu exterior. Para que a célula
consiga produzir um impulso nervoso, as sinapses necessitam produzir um potencial de
-50mV, como mostrado na figura 19. Neste momento há a inversão do nível de
potássio e sódio, fazendo com que a célula se torne positiva em relação ao exterior,
fazendo com que o impulso seja propagado pelo axônio. O impulso chegando ao
terminal
do
axônio
fará
com
que
este
se
abra,
liberando
as
moléculas
neurotransmissoras, que continuarão o mesmo processo para o neurônio seguinte.
Figura 19 - Potencial de ação em um neurônio.
18
2.2.3 Neurônio Modelado
O neurônio modelado é uma descrição matemática de McCullock e Pitts, sobre o
que sabiam a respeito do neurônio biológico.
O neurônio modelado possui terminais de entrada x1, x2, ..., xn, que representam
os dendritos. Um terminal de saída y que representa o axônio. E pesos acoplados as
entradas w1, w2, ..., wn, que representam o comportamento das sinapses. A figura 20
apresenta a estrutura do neurônio modelado.
O neurônio biológico é disparado quando a soma dos impulsos ultrapassa o limiar
de excitação [BRAGA, 2000]. No neurônio modelado o mecanismo é muito parecido,
uma soma ponderada entre os valores da entrada (x1w1 + x2w2 + ... + xnwn, uma soma
ponderada) é realizada, quando o limiar é ultrapassado (função de ativação θ) ele é
disparado (saída igual a 1), caso a soma não ultrapasse o limiar de ativação ele não é
disparado (saída igual a 0).
A função de ativação que define o disparo do neurônio é dada por:
n
∑x w
i =1
i
i
≥θ
(1)
Figura 20 - Neurônio de McCulloch e Pitts.
O conhecimento é adquirido pelo ajuste do neurônio a partir de um processo de
aprendizagem. Esse processo se dá pela força de conexões entre os neurônios, que
são utilizados para armazenar o conhecimento adquirido.
2.2.4 Arquiteturas de RNAs
Algumas arquiteturas de RNAs foram definidas e são apresentados na figura 21.
19
As arquiteturas de rede podem ser divididas quanto ao número de camadas e tipo
de conexões.
o Quanto ao número de camadas:
•
Rede de camada única é quando só há um nó (neurônio) entre a
entrada e qualquer saída (Figura 21 a).
•
Rede de múltiplas camadas quando só há mais de um nó (neurônio)
entre a entrada e qualquer saída (Figura 21 b, c, d).
o Quanto ao tipo de conexão:
•
Rede feedforward ou acíclica quando a saída de um neurônio na iésima camada da rede não pode ser usada como entrada de nodos
em camadas de índices maior ou igual a i (figura 21 a, b, c).
•
Rede feedback ou cíclica quando a saída de algum neurônio na iésima camada da rede é usada como entrada de nodos em
camadas de índices menor ou igual a i (figura 21 d, e). Quando
todas as saídas de uma rede são cíclicas, ela é denominada autoassociativa (figura 26 e).
Figura 21 - Exemplos de arquiteturas de RNAs.
20
2.2.5 Aprendizado
“O aprendizado é um processo pelo qual os parâmetros de uma rede neural são
ajustados através de uma forma continua de estímulos pelo ambiente no qual a rede
está operando, sendo o tipo especifico de aprendizagem realizado definido pela
maneira particular como ocorrem os ajustes realizados nos parâmetros” [BRAGA,
2000].
Para a aprendizagem das redes neurais artificiais foram desenvolvidos diversos
métodos, que podem ser divididos em dois paradigmas: aprendizado supervisionado e
não-supervisionado.
2.2.5.1 Aprendizado Supervisionado
O aprendizado supervisionado é um mecanismo onde a entrada e a saída
desejada da rede são fornecidas por um supervisor (também conhecido como
professor). Neste método, o supervisor apresenta o comportamento da rede como
sendo bom ou ruim, visando encontrar uma ligação entre a entrada e a saída da rede,
assim direcionando o processo de treinamento.
Com isso, os dados de entrada são apresentados à rede neural, juntamente com
a saída desejada. O valor obtido pelo processamento é comparado ao valor desejado e
assim o ajuste de pesos é feito para aproximar esses valores de saída da rede. Na
figura 22 é mostrada a estrutura do treinamento supervisionado.
Figura 22 - Aprendizagem Supervisionado.
21
2.2.5.2 Aprendizado Não-supervisionado
O aprendizado não-supervisionado acontece quando somente os padrões de
entrada são apresentados à rede neural [BRAGA, 2000]. Não há um supervisor
acompanhando o processo. Como mostra a figura 23.
Figura 23 - Aprendizado Não-supervisionado.
2.2.6 Algoritmo de treinamento para Retropropagação (Back-propagation)
Alguns algoritmos de treino de redes neurais são citados, começando pelo mais
comum, algoritmo de retropropagação de erro, para treinamento de redes MLP
(Multilayer Perceptron).
O perceptron de múltiplas camadas consiste em um conjunto de unidades
sensoriais formando a camada de entrada, uma ou mais camadas ocultas e uma
camada de saída. A figura 24 representa a estrutura de um perceptron de múltiplas
camadas.
Figura 24 - Perceptron de múltiplas camadas.
O algoritmo consiste de dois passos: a propagação que se dá quando um vetor de
dados é aplicado à entrada da rede e este se propaga pela rede camada a camada
(neste ponto os pesos da rede permanecem fixos). O segundo passo é o de
22
retropropagação, onde os pesos são ajustados de acordo com a regra de correção de
erro.
2.2.7 SOM (Self-Organizing Maps)
O SOM (mapa auto-organizado), método criado por Kohonen [KOHONEN, 1997],
são redes neurais com treinamento não-supervisionado, ela por si própria define seus
parâmetros, sem auxílio externo.
O princípio de utilização de Self-Organizing é que para reconhecimento de
padrões que compartilham características, estes deverão ser agrupados numa única
classe. Para tanto, é necessária a redundância dos dados de entrada, para que a rede
possa encontrar padrões sem a ajuda de um professor (caso não haja redundância,
estes são considerados ruídos aleatórios).
Figura 25 - Exemplo de mapeamento usando SOM.
Na figura 25 é apresentado um exemplo de treino do algoritmo SOM, onde um
conjunto de dados de entrada (cruzes vermelhas) é submetido ao treino e é obtido o
mapeamento das classes (bolinhas azuis).
23
O SOM consiste numa grade n-dimensional (geralmente bi-dimensional) de
neurônios. Cada neurônio é composto por um vetor de pesos e eventualmente uma
“etiqueta” que identifica o estado que esse neurônio representa. O valor de saída de
um neurônio é a medida da distancia euclidiana entre o seu vetor de pesos, e o vetor
de dados que é apresentado à rede. Em vez do produto interno, pode ser usada
qualquer medida de distância entre os dois vetores. O neurônio vencedor será o que
tiver maior valor de saída.
2.3
Classificador LVQ
Learning Vector Quantization (LVQ) define uma família de algoritmos criados por
Kohonen. A LVQ é um classificador baseado em agrupamento (clustering) [PILLA,
1999], ou seja, é um método de treinamento de redes neurais para classificação de
padrões no qual cada saída representa uma classe em particular (porém, várias saídas
também podem ser usadas para uma única classe).
Cada classe é referenciada por um vetor de pesos, que representam os centros
de clusters (ou centróides) que definem as superfícies de decisão das classes. Este
tipo de rede assume que o conjunto de padrões de treinamento é conhecido, junto com
uma distribuição inicial dos vetores de referência (mesmo que centróides).
Na figura 26 é apresentada a arquitetura da rede LVQ. Esta rede possui uma
camada competitiva [PILLA, 2000] que classifica o padrão de entrada, relacionando a
uma subclasse, e assim estabelecendo através das subclasses os vetores de
referência e a camada linear que agrupa as subclasses às classes.
Figura 26 - Arquitetura da Rede LVQ.
24
2.3.1 A Classificação LVQ
A atribuição de uma classe à um vetor de características é efetuada pela
identificação do protótipo mais próximo deste vetor. Na rede LVQ, a classificação é
processada calculando-se a distância do vetor de entrada ao conjunto de protótipos.
Esta classificação pode ser expressa matematicamente pela equação 2.
c = arg min{ x − mi }
(2)
Onde a x é atribuída a classe a que pertence o protótipo c. Os pesos de cada
célula devem posicionar os protótipos de tal forma que, o espaço seja dividido em
regiões distintas para as diferentes classes. As células que se encontram na fronteira
das classes definem o limite de cada classe. O processo de treino é realizado a partir
da excessiva classificação de um conjunto de exemplos pré-classificados, onde há o
progressivo ajuste dos pesos.
Podem ser destacados alguns processos de treino apresentados por Kohonen:
LVQ1, LVQ2 e LVQ3 [KOHONEN, 1997].
2.3.2 LVQ1
Considere x(t) o vetor de características aplicado ao processo de treino na
iteração t. Admita mi(t) como vetor de pesos da célula na mesma iteração. O processo
de adaptação dos pesos mi(t) acontece pela identificação da célula vencedora c,
equação 2.
A alteração dos pesos mi, garante a convergência e minimiza a taxa de erros,
equação 3.
m c (t + 1) = mc (t ) + α (t )[x(t ) − mc (t )]
se mc e x ∈ a mesma classe
m c (t + 1) = mc (t ) − α (t )[x(t ) − mc (t )]
se mc e x ∈ a mesma diferentes
m i (t + 1) = mi (t )
para I ≠ c
(3)
No processo de treino, mc aproxima-se de x(t), se mc e x(t) pertencem a mesma
classe. No caso de x(t) e a célula vencedora c não pertençam a mesma classe, o
25
centróide se afastará do exemplo x(t). A atualização só é feita para a célula vencedora
e as outras permanecendo inalteradas.
A função α (t) representa o passo de adaptação do algoritmo.
o α (t) deve estar compreendido entre os valores 0 e 1, para garantir
estabilidade;
o α (t) deve decrescer para 0, para garantir convergência.
A forma como α (t) decresce (que pode ser definido como uma função
exponencial ou linear) para 0 não é o mais importante para convergir o processo,
desde que um número suficiente de iterações seja realizado.
2.3.3 LVQ2
O processo de classificação é o mesmo para todos os métodos LVQ, o que difere
cada um deles é a forma do treino. LVQ2 atualiza duas células simultaneamente em
cada iteração do processo de treino. As células atualizadas referem-se aos protótipos
mi e mj mais próximos do conjunto de treino. A atualização obedece as seguintes
condições:
o A célula mais próxima mi deve pertencer a x(t) e a segunda célula mais
próxima mj, deve pertencer a uma classe diferente de x(t).
o Os pesos das duas células só são atualizados se x(t) estiver numa “janela”
definida em torno do plano de separação das duas células.
Nesta situação, as distâncias di e dj (distâncias euclidiana de x(t) aos centróides
mi e mj) devem respeitar a condição apresentada na equação 4.
⎛ d d j ⎞ 1− w
min⎜⎜ i , ⎟⎟ >
⎝ di di ⎠ 1 + w
(4)
Onde w é a largura da janela. A w é atribuído um valor entre 0,2 e 0,3. Se o
exemplo x(t) respeitar as duas condições, os centróides serão atualizados segundo a
equação 5.
m c (t + 1) = mc (t ) + α (t )[x(t ) − mc (t )]
Para classes (mi) = classe (x(t))
m c (t + 1) = mc (t ) − α (t )[x(t ) − mc (t )]
Para classes (mi) ≠ classe (x(t))
(5)
26
2.3.4 LVQ3
LVQ3 foi definida a partir de uma combinação da melhor fronteira de LVQ2, com a
estabilidade de LVQ1. Identificando em LVQ3 as duas células mais próximas mi e mj do
exemplo x(t). Para que sejam atualizadas, devem verificar as condições:
o Pelo menos uma delas pertencer a x(t);
o A distância di e dj (distância euclidiana de x(t) aos centróides mi e mj),
respeitar as condições como em LVQ2 na equação 4.
Se as suas células respeitam as condições e pertencem as classes diferentes,
são atualizadas pela equação 5.
Mas se mi e mj pertencem a mesma classe e por conseqüência a x(t) são
atualizados pela equação 6.
mk (t + 1) = mk (t ) + εα (t )[x(t ) − mk (t )]
K Є {i, j}
(6)
A constante ε está compreendida entre 0,1 e 0,5 para uma janela w entre 0,2 e
0,3. Este algoritmo conduz à convergência mesmo em processos longos de treino.
2.3.5 Diferenças entre LVQ1, LVQ2 e LVQ3
Na maior parte das implementações, os três métodos levam a mesma
semelhança nas precisões estatísticas. LVQ1 e LVQ3 apresentam métodos mais
robustos de treino. Já LVQ2 é adequada para afinações finais da rede, por exemplo,
após um treino da LVQ1. Para este tipo de afinação é recomendável que sejam
utilizados passos de adaptação bastante baixos e poucas iterações.
2.3.6 Classificador LVQ
O classificador LVQ é um comparador de pontos. Cada amostra de entrada da
rede é classificada como pertencente à classe do centro de cluster mais similar à
amostra, ou seja, a medida de similaridade ou de dissimilaridade entre dois pontos x e
y pode ser implementada como a distância euclidiana entre esses dois pontos. Para
este projeto a distância que é utilizada é Manhattan, simplificando os cálculos em
hardware, como é apresentado na equação 7 [KUGLER, 2003].
27
n =i
d ( x, y ) = ∑ x ni − y n
(7)
1
2.3.7 Porque usar LVQ
Esta rede neural foi escolhida por ser interessante para a implementação em
hardware devido ao fato da rede ser baseada no cálculo de distância euclidiana entre
as amostras e os vetores de referência. O que elimina a necessidade de
multiplicadores, que necessitam mais ciclos de clock para execução dos cálculos
[KUGLER, 2003], como, a utilização de redes MLP, com o algoritmo de
retropropagação de erro para o treinamento, que exige um grande número de
multiplicações, o que dificultaria a implementação em lógica programável.
2.4
Interface USB
A versão 1.1 do barramento USB suporta dois modos de transferência: o modo
full speed, operando com velocidade de 12Mbits/s e o modo low speed, operando a
uma velocidade de 1.5 Mbits/s. Este segundo, mesmo sendo mais lento, é muito menos
susceptível a interferências eletromagnéticas, reduzindo assim os custos com
componentes de maior qualidade e com enrolamentos em barra de ferrite.
Taxas de transferência obtíveis atualmente com o barramento USB:
•
High Speed - 480Mbits/s (USB 2.0)
•
Full Speed - 12Mbits/s (USB 1.1 e 2.0)
•
Low Speed - 1.5Mbits/s (USB 1.1 e 2.0)
A USB é um barramento com interface mestre / escravo, isto é, só é permitido
um mestre (host) por barramento. O host é responsável por gerenciar todas as
transações e a coordenação da banda utilizada por cada dispositivo do barramento. Os
dados podem ser enviados por vários métodos de transmissão, sempre utilizando um
protocolo baseado em tokens.
A topologia do barramento USB é baseada no sistema estrela, assim como nas
redes Ethernet. Do ponto de vista de que a USB foi desenvolvida para diminuir a
quantidade de cabos que saem do computador, ela não é muito efetiva. Mesmo
considerando que a maioria dos seus dispositivos pode ser alimentada pelo próprio
barramento, ainda é necessário um cabo saindo da CPU para cada dispositivo, ao
28
contrário do funcionamento dos computadores da Apple, onde você pode ligar o mouse
no teclado e o teclado na CPU.
Isto até é possível com a USB tradicional, mas há o inconveniente de que cada
dispositivo que servisse como uma nova porta USB precisaria ter um host controller,
isto é, um gerenciador para os dispositivos que estivessem acoplados a este
equipamento. Este sistema, além de dificultar mais o projeto dos dispositivos de
hardware, também apresenta o empecilho do aumento do custo de produção de
qualquer equipamento que viesse a ser conectado neste barramento.
Mesmo com uma maior quantidade de cabos, a topologia estrela oferece alguns
benefícios à interface USB, principalmente no que diz respeito à alimentação dos
dispositivos. Com esta topologia, cada equipamento pode ter a sua alimentação
controlada individualmente. No caso de uma falha causando sobrecarga no barramento
em algum dispositivo, este pode ser desativado sem interferir nos demais.
Com relação à quantidade de dispositivos que podem ser adicionados a um
mesmo controlador provavelmente não haverá problemas, visto que cada controlador
pode gerenciar até 127 dispositivos.
O nome USB sugere já no nome uma comunicação serial (Universal Serial Bus).
Este utiliza 4 fios, sendo um par de alimentação (+5V e GND) e outro par de sinais de
dados. Esta comunicação é baseada no sistema de codificação NRZI (Non Return to
Zero Invert), o qual envia os dados acompanhados de um sinal de sincronização.
A figura 32 mostra os conectores utilizados pela porta USB.
A:
B:
Figura 27 - Conectores utilizados pela USB.
A) Conector fêmea tipo A, encontrado no Host. B) Conector fêmea tipo B, encontrado nos dispositivos.
Tabela 5 - Pinos da interface USB
Número Pino
1
2
3
4
Cor do Cabo
Vermelho
Branco
Verde
Preto
Função
Vbus (5V)
DD+
GND
29
A especificação USB suporta a conexão plug-and-play, com carregamento
dinâmico dos drivers. Basta apenas o usuário conectar o dispositivo à uma porta USB
que o host o detectará, carregando automaticamente o driver para o equipamento. O
usuário final não precisa se preocupar com configurações complicadas, tais como IRQs
e endereços de portas, assim como está dispensada a reinicialização do computador.
Tão fácil como a conexão é a desconexão de um dispositivo USB. Basta retirar o cabo,
que o host automaticamente irá descarregar o driver da memória.
O carregamento do driver apropriado para o dispositivo é realizado através do
PID (Product ID) e do VID (Vendor ID). O VID é um número fornecido pelo USB
Implementor’s Forum com um certo custo. Outras organizações provêem outros VIDs
para uso não comercial, como ensino ou pesquisa. Para uma detecção coerente do
dispositivo conectado ao barramento, os fabricantes realizam uma combinação de VID
e PID para que não haja outro equipamento no mercado com o mesmo código,
evitando assim conflitos posteriores. Esta combinação funciona como um endereço fixo
de cada dispositivo do barramento.
Só pode existir um USB Host, e este é o master do barramento. Ele toma
conhecimento da inserção e do desligamento dos dispositivos, inicia o processo de
enumeração e comanda todas as transações subsequentes no barramento. É de sua
responsabilidade também coletar os status e as estatísticas de cada dispositivos.
A estrutura do software:
ƒ
Host Controler driver: Camada que "linka" as diferentes implementações
do host ao resto da estrutura USB.
ƒ
USB System software: Camada que atua entre o Controlador e o software
cliente (parte do sistema operacional).
ƒ
Client software: Permite ao cliente comunicar com um dispositivo USB
através de abstrações da camada USB System.
O host USB envia constantemente, a cada 1 milisegundo, um pacote de início de
frame (SOF - start of frame). Todos os dispositivos estão continuamente "ouvindo" o
barramento. Quando o host envia um token cujo endereço "casa" com o do dispositivo,
este decodifica o pacote, verifica o tipo do mesmo e, de acordo com o tipo, toma as
devidas atitudes.
O escalonamento de envio pela banda compartilhada é feito trocando o
dispositivo-alvo nos SOF.
Cada pacote tem um PID que especifica o tipo, como mostra a figura 28. A
transação inicia quando o host controller envia um pacote token com o endereço do
30
periférico, endpoint number (porto), a direção de transferência de dados e o tipo de
canal de transferência. O endereço do periférico é selecionado de acordo com o
endereço passado pelo token. Se o host estiver pedindo dados, então o pacote de
dados é enviado pelo periférico. Geralmente, depois que o dado é enviado, o
destinatário (host ou periférico) envia um pacote handshake, que pode ser ACK, NAK
ou STALL.
Figura 28 - Formatos dos pacotes do protocolo USB.
31
3 ESPECIFICAÇÃO TÉCNICA
Inicialmente é apresentada a visão geral do sistema e a descrição funcional de
cada módulo. A figura 29 apresenta o diagrama em blocos do sistema.
Figura 29 - Diagrama em Blocos do sistema.
O sistema consiste na implementação de uma rede neural utilizando computação
reconfigurável. Para tanto, o sistema é dividido em três módulos: módulo FPGA,
módulo de comunicação e módulo PC. Sendo o módulo da FPGA responsável pela
rede neural em hardware. O módulo de comunicação responsável pela transferência
dos dados do PC para a FPGA. E, o módulo do PC responsável pelo treino da rede
neural (realizado no MatLab), configuração da FPGA e envio da configuração da rede
neural.
32
3.1
Especificação de Hardware
3.1.1 Módulo FPGA
O módulo da FPGA consiste em um dispositivo lógico que contém uma rede
neural do tipo LVQ para o reconhecimento de padrões.
Este dispositivo permite várias gravações, o que auxilia no desenvolvimento de
projetos e nas mudanças necessários. Outra vantagem do uso de uma FPGA é que
com o hardware dedicado ao processamento da rede neural, é possível obter um maior
poder computacional, como mostra [RIBEIRO, 2002], foi implementada na USP uma
rede neural em uma FPGA e esta respondeu aos dados de entrada em 10ns, enquanto
que a mesma rede implementada em um PC necessita de pelo menos 23µs.
O módulo da FPGA possui dois modos de configuração: (1) JTAG e (2) USB, os
quais são apresentados a seguir.
3.1.1.1 Configuração via interface JTAG
Como desenvolvimento do firmware da FPGA, o dispositivo pode ser configurado,
o que acontece através do software Quartus II, pela interface JTAG. Após a
configuração do dispositivo, pode prosseguir com a configuração da rede neural.
3.1.1.2 Configuração via interface USB
Pela interface USB é configurada a rede neural na FPGA, com o envio dos
parâmetros de configuração e dados que são analisados pela rede. Isso acontece
através de um aplicativo desenvolvido, que é responsável pelo envio desses dados:
•
Configuração da rede neural
o Número de sub-classes;
o Número de dimensões;
o Vetores de referência (subclasses);
o Mapeamento das classes com as subclasses;
•
Dados para análise.
A rede LVQ na FPGA faz a análise dos dados recebidos do PC e o resultado da
classificação é exibido por displays sete segmentos.
33
O algoritmo de classificação da rede LVQ segue os passos descritos na figura 30.
Figura 30 – Algoritmo de classificação da rede LVQ.
3.1.2 Módulo de comunicação
Este módulo é responsável pela comunicação entre a FPGA e o PC. Para esta
comunicação são utilizados um microcontrolador de arquitetura CISC (Complex
Instruction Set Computers), da família 8051 da ATMEL (89S51 ou 89C51 que já
possuem memória de programa integrada no chip) e um conversor USB / Serial
(TUSB).
A figura 31, mostra como é formado este módulo.
Figura 31 - Módulo de comunicação.
Os dados são enviados pelo PC pela interface USB para o TUSB, este faz o envio
dos dados para μC pela porta serial. Quando os dados são recebidos pelo μC, este faz
a transmissão para a FPGA.
Quando o μC recebe um novo dado, ele faz a transmissão deste dado para um de
seus port e sinaliza a chegada de um novo dado para a FPGA. Como é mostrado no
fluxograma da figura 32.
O dispositivo que faz a interface entre PC e FPGA, o TUSB ao ser conectado a
uma porta USB do computador, é automaticamente reconhecido como um dispositivo
externo e o seu driver é solicitado. O driver utilizado para a conversão de USB para
Serial é compatível com Windows 98SE, Milenium, 2000 e XP.
Após o dispositivo ter sido instalado corretamente, será adicionada uma porta
serial COMx na lista de dispositivos do Windows, com a qual pode-se estabelecer uma
comunicação assim como com qualquer outro dispositivo serial.
34
Figura 32 - Fluxograma do firmware do µC.
Figura 33 - Diagrama em blocos da utilização do TUSB.
35
3.2
Especificação de Software
O módulo do PC pode ser dividido em três módulos: treinamento, configuração da
rede LVQ e configuração da FPGA.
O treinamento é realizado pelo software MatLab, que gera um arquivo de saída do
seu treino. O software de configuração é responsável por importar os dados resultantes
do treino no MatLab e armazená-los em um banco de dados. A partir destes dados
armazenados, eles podem ser enviados para a rede na FPGA. O software Quartus II é
responsável pela configuração da FPGA com o firmware da rede LVQ genérica.
3.2.1 Treinamento da RNA no MatLab
O treinamento é feito no software MatLab. A partir de um conjunto de dados, o
MatLab realiza o treino, que tem como resultado a geração de um arquivo que contém
a os vetores de referência, com as suas subclasses e o mapeamento destas com as
classes. O treinamento no MatLab é feito seguindo os passos da figura 34.
Figura 34 - Fluxograma do treinamento da rede LVQ no MatLab.
36
3.2.2 Software de configuração da rede LVQ
O software de configuração da rede LVQ também é responsável pela interface
com o usuário. E possui as seguintes funções:
•
Armazenamento dos dados de configuração da rede neural;
•
Envio dos vetores de referência da Rede Neural LVQ;
•
Envio dos dados para análise.
Os dados de saída do treinamento no MatLab são importados pelo software de
configuração da rede. Este software contém um banco de dados que é capaz de
armazenar qualquer tipo de treino da rede LVQ.
Para realizar a classificação, a rede LVQ deve ser configurada. Os vetores de
referência e o mapeamento das classes são enviados para a FPGA (que está
configurada), para configurar a rede LVQ. Esses dados de configuração da rede são
selecionados no software, a partir dos arquivos que foram importados.
A configuração da rede LVQ consiste no envio dos seguintes parâmetros: número
total de vetores de referência (número de subclasses), número de dimensões
(características dos dados), envio de cada um dos vetores de referência e o
mapeamento das classes de saída da rede.
3.2.3 Firmware
O firmware do μC é responsável pela transmissão dos dados recebidos do PC
(porta serial) para a FPGA (porta paralela), como na figura 35.
Figura 35 - Fluxograma da execução do μC.
37
3.3
Especificação de Validação
3.3.1 Validação de Hardware
A validação do hardware é feita a partir da análise de cada umas das partes. Para
isso faz-se necessário verificar a comunicação entre:
o Módulo de Comunicação e PC – recebimento pelo módulo de
comunicação.
o Módulo da FPGA e PC – recebimento pelo módulo da FPGA.
3.3.2 Validação de Software
A validação da rede neural faz-se a partir de um comparativo entre os resultados
obtidos pela rede LVQ na FPGA e da mesma no PC (MatLab).
Uma forma de validar a rede em hardware é aplicar uma função com resposta
conhecida, e verificar se o resultado obtido é o mesmo do esperado.
3.4
Infra-estrutura
A tabela 6 apresenta os ambientes de desenvolvimento e ferramentas de software
utilizadas e na tabela 7 as linguagens empregadas.
Foi utilizada a plataforma Windows para o desenvolvimento.
Tabela 6 - Ambientes e ferramentas de desenvolvimento.
Software
Borland C++Builder
Quartus II
MatLab 6.5
Keil
Utilização
Para o desenvolvimento da interface com o usuário.
Para a implementação da rede neural em lógica programável
Para a realização do treinamento da Rede Neural
Utilizado para desenvolvimento do programa assembly e C
para microcontrolador com núcleo 8051 da ATMEL
Tabela 7 - Linguagem de programação.
Linguagem
Assembly/C para 8051
MySQL
C/C++ para Microsoft Windows
C para ambiente do MatLab
Linguagem de descrição de hardware
Ferramentas de Software
Keil
DB Tools
Borland C++Builder
MatLab
Quartus II
38
3.5
Estudo de Viabilidade Técnico-econômica
O custo estimado do projeto pode ser verificado na tabela 8.
Tabela 8 - Tabela de custos.
Descrição
Qtde.
Horas de trabalho (aprox. 4 hrs/dia)
600
TUSB3410
1
AT89C51
1
Box para o circuito externo
1
Regulador de Tensão UA7833
1
Placa de desenvolvimento Nios, edição
1
Cyclone
Componentes Variados
1
Fonte 110V - 12V
1
*considerando US$ 1,00 = R$ 2,78 (18/3/05)
3.6
Custo Unitário
R$ 15,00
US$ 2,50*
R$ 9,00
R$ 25,00
US$ 0,25*
Total
R$ 9.000,00
US$ 2,50 *
R$ 9,00
R$ 25,00
US$ 0,25 *
US$ 1.022,30*
US$ 1.022,30*
R$ 50,00
R$ 10,00
Mão de Obra:
Materiais:
TOTAL:
R$ 50,00
R$ 10,00
R$ 9.000,00
R$ 2.943,63
R$ 11.943,63
Cronograma
Na tabela 9 são mostradas as principais atividades do projeto final com as
respectivas datas de entrega. E nas figuras 36 e 37 é apresentado o cronograma de
realização do projeto.
Tabela 9 – Eventos do Projeto Final.
Data
28/2/2005
28/3/2005
2/5/2005
10/10/2005
24/10/2005
7/11/2005
28/11/2005
12/12/2005
Atividade a ser apresentada
Entrega da proposta do projeto dentro do padrão específico
Entrega da especificação técnica do projeto
Entrega do projeto (monografia) e do resumo e abstract do artigo
para congresso
Apresentação do projeto implementado e qualificação para fase
final
Segunda apresentação do projeto implementado e qualificação
para fase final (decréscimo de 30% na nota)
Entrega da documentação completa em espiral para banca
examinadora (3 vias), contendo a monografia, manual técnico,
manual do usuário e artigo científico.
Defesa formal do projeto.
Entrega de toda a documentação do projeto, encadernado, em 2
vias, contendo a monografia, manual técnico, manual do usuário,
artigo científico. Mais CD contendo, no formato WEB, todo
conteúdo dos manuais.
39
Figura 36 - Cronograma do Projeto (parte I).
40
Figura 37 - Cronograma do Projeto (parte II).
41
4 PROJETO
4.1
Requisitos mínimos para funcionamento
Os requisitos mínimos de hardware para o funcionamento são:
•
Microcomputador funcionando a pelo menos 600MHz, com porta USB
(1.1).
Os requisitos de software:
4.2
•
Windows 98 e NT;
•
Windows 2000 e XP;
•
Banco de dados My-SQL;
•
MatLab.
Projeto de Hardware
O projeto de hardware é dividido em dois blocos, sendo um o módulo de
comunicação e outro o módulo da FPGA, como mostrado na figura 38.
Figura 38 - Divisão dos módulos de hardware.
42
O módulo de comunicação é composto de um μC e um conversor USB/Serial
(TUSB). Ele é responsável pelo controle da comunicação da FPGA com o PC, sendo a
“ponte da comunicação”.
Na tabela 10 á apresentado os sinais de controle da interface USB do PC
utilizados e na tabela 11 é apresentado os pinos do µC utilizados.
Tabela 10 - Sinais da comunicação com porta USB.
Sinais
DD+
GND
Responsabilidade
Sinais de dados
Sinais de dados
Terra
Tabela 11 - Pinos utilizados do µC.
Sinais
D0 a D7
WR
DIR
RX
TX
Port
P0
P1.0
P1.1
P3.0
P3.1
Pinos do µC
32 a 39
1
2
10
11
O µC tem como responsabilidade a transmissão de dados entre a FPGA e o PC.
Os dados enviados pelo PC são recebidos pelo conversor USB/Serial e enviados para
o µC pela interface serial. Para isso é implementado um conversor serial/paralelo no
µC.
Na figura 61 (anexo 1), é apresentada a forma de alimentação do µC, sendo feita
a partir de uma fonte de alimentação com tensão com valores entre 7 e 12V.
A figura 62 (anexo 1), apresenta o conversor USB/Serial. Sua saída é ligada
direto a porta serial do µC, apresentado na tabela 12.
Tabela 12 - Sinais da comunicação com µC.
Sinais
RX
TX
Responsabilidade
Recebe os dados da porta
Envia os dados da porta
43
O segundo módulo é o da FPGA que possui a rede neural LVQ. Na FPGA são
utilizados os pinos descritos na tabela 13.
Tabela 13 - Sinais da comunicação µC e FPGA.
Sinais
uC0 a uC7
WR
RD
Responsabilidade
Barramento de dados
Sinalização de chegada de dado
Sinaliza leitura da resposta da rede
Ativação
Barramento
↑ (Borda de subida)
1 (nível lógico alto)
FIM_DAT
Sinaliza final da leitura dos dados
1 (nível lógico alto)
A alimentação da placa da FPGA também é feita a partir de uma fonte externa, no
qual a entrada para a fonte está na própria placa, alimentado todos os componentes.
A figura 63 (anexo 1), apresenta os pinos utilizados da FPGA, que são
apresentados na tabela 14.
São necessários dois sinais de controle. Um deles para a comunicação paralela,
para sinalizar a chegada de um novo dado, esse sinal é ativo em nível lógico baixo,
sendo nomeado como WR, este sinal é apresentado na figura 65 (anexo 1). O outro
sinal de controle é o RD que é utilizado para a leitura dos resultados obtidos pela
classificação, ativo em nível lógico alto.
Tabela 14 - Pinos utilizados no FPGA.
Pinos
C18
C19
D18
D19
D17
D20
E17
F17
G15
G20
Nome
uC0
uC1
uC2
uC3
uC4
uC5
uC6
uC7
WR
RD
Função
Barramento de dados
0 (nível lógico baixo)
1 (nível lógico alto)
Para esta implementação é estimada a utilização dos componentes apresentados
na tabela 15.
Nas figuras 64 e 65 (anexo 2) são apresentados os layout das placas do módulo
de comunicação.
44
Tabela 15 - Componentes utilizados.
Itens
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
4.3
Parte
470R
470R
1K5
10K
33R
100K
4.7K
15K
33K
1µF
4.7µF
10µF
22pF
33pF
100nF
1N4148
AT89C51
74LS245
TUSB3410
UA78M33CKC
RD,
RST,
RESET
11.0592 MHz
12MHz
CN-USB
CONN
JACK
PWR
Display
Placa Nios
Referência
R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11
R12, R13, R14, R15, R16, R17, R18, R19, R20, R21
R26
R22, R23, R31, R33
R27, R28
R24, R25
R29
R30
R32
C6, C8, C10
C7, C11
C12
C1, C3, C13, C14
C2, C4
C5, C9
D1
U10
U9, U11
U6
U7, U8
Qtd
11
10
2
4
2
2
1
1
1
3
2
1
4
2
2
1
1
2
1
2
SW1, SW2, SW3
3
Y2
Y1
CN1
1
1
1
J3
1
U1, U2, U3, U4, U5
Placa de desenvolvimento
5
1
Projeto de Software
No PC há duas partes distintas implementadas: a primeira se refere ao software
que interage com o usuário (que realiza o envio de dados). E o segundo é a
implementação do treino do classificador LVQ no MatLab.
4.3.1 Software de Comunicação
Os principais casos de uso encontrados no software são apresentados na figura
66 (anexo 3).
Cadastrar Dados de entrada: responsável pelo cadastro de dados de entrada da
rede neural.
45
Configurar Parâmetros da rede: responsável pelos parâmetros de configuração da
rede neural no FPGA.
Comunicar com FPGA: responsável pela comunicação entre PC e a FPGA.
Para os casos de uso encontrados, as figuras 67, 68 e 69 (anexo 3) apresentam
os correspondentes diagramas de seqüência.
Os dados são persistidos para que sejam feitas futuras análises e o mesmo é feito
com os parâmetros de configuração da rede gerados pelo MatLab. É utilizado o modelo
relacional apresentado na figura 70 (anexo 3).
As principais classes que são utilizadas:
cPorta: responsável pela comunicação com a porta USB.
cDados: responsável pela dados de análise da rede neural.
cBrokerDados: broker responsável pela persistência dos dados de análise da rede
neural.
cConfiguracao: responsável pela configuração de parâmetros da rede neural na
FPGA.
cBrokerConfiguracao: responsável pela persistência dos dados de configuração
da rede neural.
cFileRW: responsável pela leitura e escrita de arquivos.
O relacionamento entre as classes é apresentado na figura 71 (anexo 3), que
mostra o diagrama de classes.
Nas figuras 72, 73, 74 e 75 (anexo 4) são apresentados os protótipos de tela do
software.
4.3.2 Treinamento do Classificador LVQ no MatLab
No PC também é feito o treino da rede LVQ no MatLab. A partir de uma
ferramenta disponível no software MatLab é realizado o treino. Essa ferramenta permite
criar uma rede do tipo LVQ, passar os parâmetros do treino e obter os centróides
(vetores de referência).
O algoritmo de treino da rede é descrito na figura 39. O treino é realizado
mediante o ajuste de pesos (vetores de referência) [MUKAI, 2001].
Para o treino realizado, os vetores de referência iniciais foram gerados utilizando
o comando fcm (fuzzy c-means) do MatLab, que permite encontrar um conjunto de
cluster para um dado conjunto de entrada, os parâmetros dessa função é a matriz de
46
dados e um número inteiro que corresponde ao total de clusters que serão
encontrados.
A partir dessa distribuição inicial dos vetores de referência (centróides ou cluster),
os parâmetros de treino são inicializados, como número máximo de épocas, coeficiente
de aprendizagem, percentual de dados pertencente a cada classe, e número de cluster.
Inicio
Inicializar vetores de referência
Inicializar taxa de aprendizado (n)
faça
Determinar j de tal forma que || x - Wj || seja um mínino.
Se T = Cj
Wj (novo) = Wj (anterior) + n [x - Wj (anterior)]
Senão
Wj (novo) = Wj (anterior) - n [x - Wj (anterior)]
Fim Se
Enquanto for falsa, repetir
Figura 39 - Algoritmo de treino do classificador LVQ.
4.3.3 Firmware
O firmware do µC é responsável por receber dados de uma porta serial, enviá-los
por uma porta paralela. A cada dado que o µC recebe, ele os envia para a porta P0 e
gera um pulso indicando a chegada de um novo dado para a FPGA.
A figura 40 apresenta o fluxograma da execução do µC.
A rede LVQ que é implementada em uma FPGA tem o funcionamento descrito na
figura 41 que mostra o diagrama de estados e na figura 42 é apresentado o diagrama
em blocos da rede LVQ em hardware.
A rede LVQ é baseada no cálculo de distância euclidiana. A rede define
centróides, que representam as diferentes subclasses. Para cada dado de entrada é
calculada a distância a cada um dos centróides, aquele que obtiver a menor distância
se torna a subclasses vencedora.
A rede LVQ desenvolvida tem capacidade de classificar no máximo 16 subclasses
com 16 dimensões.
47
Figura 40 - Fluxograma de processamento do µC.
Figura 41 - Diagrama de estados da rede neural LVQ.
48
Figura 42 - Diagrama em blocos da rede no FPGA.
O firmware completo da FPGA consiste em três partes: recepção dos dados (fase
A), processamento (fase B) e exibição dos resultados (fase C). Cada uma dessas fases
é exibida em um display para ser possível acompanhar o processo da FPGA.
A recepção dos dados é feita como descrita no diagrama de estados da figura 44.
Há opções que podem ser executadas: (1) recepção dos dados para análise, (2)
configuração da rede LVQ e (3) início do processamento. Essa máquina de estados
também tem a responsabilidade de sinalizar para as demais máquinas de estados qual
fase está sendo processada. Por exemplo, quando é iniciada a execução, ela gera um
sinal para a máquina de estados que controla o fluxo de execução da rede LVQ que já
pode iniciar o processo. Quando acontece o termino da execução dos dados, é esta
máquina de estados que sinaliza que os dados podem ser lidos.
Com a configuração da rede completa, o processamento pode ser iniciado.
Quando isso ocorre, há uma máquina de estados que controla a execução da rede,
disponibilizando os dados na entrada do classificador, e aguardando a resposta que é
gravada em um registrador, como descrito na figura 44.
Depois do fim do processamento de todos os dados, a FPGA aguarda um sinal de
leitura do resultado, e cada sinal desse exibe no display 7 segmentos a classe e o
correspondente dado. Esse processo é descrito na figura 43.
49
Figura 43 - Diagrama de estados da leitura dos resultados da classificação.
50
Figura 44 - Diagrama de estados de recepção e controle da execução.
51
4.4
Procedimentos de testes e validação do projeto
Para verificar o correto funcionamento do projeto, cada módulo é testado
isoladamente e ao final o conjunto. Os procedimentos para teste são descritos nas
seções a seguir.
4.4.1 Procedimentos de teste do módulo de comunicação
O módulo de comunicação tem a verificação de funcionamento com uma troca de
mensagens entre PC e µC.
Um dado é enviado por um software de teste pela porta USB, que aguarda o
recebimento de um dado vindo do µC. Para garantir que o dado enviado foi recebido
pelo µC e enviado ao PC corretamente, é somado o valor um ao dado, e enviado
novamente ao PC. Assim se o valor que chegar ao PC corresponder ao valor enviado
mais um, significa que a comunicação está correta. A tabela 16 apresenta um exemplo
de como é o teste de comunicação.
Tabela 16 – Seqüência de dados esperado pelo teste da comunicação.
Dado enviado pela PC Dado enviado pelo µC
A
B
a
b
1
2
4.4.2 Procedimentos de teste da comunicação entre PC e FPGA
O teste de recebimento de dados na FPGA é feito a partir de envio de uma
seqüência de dados pelo PC através do módulo de comunicação. Esses dados
enviados são exibidos em um display 7 segmentos para verificar se o valor enviado
realmente chega até o destino.
A figura 45 apresenta a transmissão de um dado para a FPGA e qual a
representação do resultado nos displays. O valor de teste deve ser entre 0 e 99, já que
há dois displays disponíveis na placa.
52
Figura 45 - Teste de envio de dado para a FPGA.
4.4.3 Procedimentos de teste para validação da rede LVQ na FPGA
A rede LVQ é validada realizando a classificação de uma função conhecida (uma
função lógica), e verificando se os valores de classes de saída correspondem ao valor
verdadeiro. Por exemplo, utilizando a função XOR, a partir de sua tabela verdade,
realizando o treino no MatLab, é enviando a rede a configuração obtida no treino
(vetores de referência e mapeamento das classes) e os dados para a análise (a própria
tabela verdade da função XOR, sem a resposta) como mostra a tabela 17, e verificando
se o resultado esperado pela rede é obtido.
Tabela 17 - Resultado esperado no teste da rede em hardware.
Vetores
Mapeamento Dado para Resultado
de
Subclasses
das classes
análise
Esperado
referência
A
B
A
B
1
1
1
1
1
1
1
1
2
2
2
1
2
2
2
1
3
2
2
1
2
2
2
4
1
2
2
1
53
5 RESULTADOS
Neste capitulo é apresentado os resultados obtidos em cada um dos módulos
implementados.
5.1
Comunicação USB → µC
Para testar a comunicação entre o PC e o módulo de comunicação, foi realizado
um teste, que consiste no envio de um dado do PC ao µC, e este deveria retornar o
valor enviado somando o valor um, assim comprovando que o valor realmente estava
sendo recebido, que poderia ser o próprio valor enviado lido do buffer da serial. Foi
verificado que a comunicação funcionou sem problemas.
5.2
Comunicação PC → FPGA
A comunicação entre o PC e a FPGA é realizado um teste, onde o PC faz o envio
de um dado pela porta USB, que é recebido no µC e este o envia para a FPGA que
exibe o valor no display 7 segmentos da placa.
Quando o µC recebe um novo dado, ele é movido para a porta P0 do e sinalizado
através do bit P1.0 que um novo dado válido está disponível. O sinal gerado pelo µC
pode ser visto na figura 46.
Figura 46 - Sinal gerado pelo µC para a FPGA.
54
Na figura 47, é apresentada a transmissão de um dado do PC para a FPGA e na
figura 48 a exibição deste valor no display da FPGA.
Figura 47 - Dado transmitido para a FPGA.
Figura 48 - Dado de teste da FPGA.
5.3
Treino no MatLab
O treino no MatLab da função XOR, depois de sucessivas tentativas, obteve-se os
seguintes resultados, apresentados nas figuras 49, 50, 51 e 52. Para cada uma das
figuras, um coeficiente de aprendizagem diferente foi usado. Sendo que para todos os
diferentes coeficientes de aprendizagem, utilizado o mesmo número de épocas no
treino, igual a 100 épocas. O resultado obtido no treino é apresentado como sendo o
resultado esperado (representado pelo símbolo +) e o resultado obtido (representado
pelo símbolo o).
55
Figura 49 - Resultado do treino com coeficiente de aprendizagem igual a 0,01.
Figura 50 - Resultado do treino com coeficiente de aprendizagem igual a 0,1.
56
Figura 51 - Resultado do treino com coeficiente de aprendizagem igual a 0,5.
Figura 52 - Resultado do treino com coeficiente de aprendizagem igual a 1.
57
5.4
Software
No software foram persistidos os dados que posteriormente são analisados pela
rede e os dados resultantes do treino no MatLab.
Na figura 53, as marcar vermelhas representam os dados que são enviados para
a FPGA. E a marca azul representa o resultado esperado do processamento da rede
LVQ na FPGA.
Figura 53 - Dados enviados para a FPGA.
5.5
Classificador LVQ em hardware
Para a validação e verificação de funcionamento do sistema foi submetido a uma
função com resposta conhecida, no caso a função XOR. A partir do resultado do treino
da função XOR no MatLab, foi simulado no software Quartus II.
A execução da rede LVQ na FPGA segue alguns passos. Primeiramente, é feita a
configuração da rede, com os parâmetros da rede (vetores de referência e
mapeamento das classes) e envio dos dados, como mostram as figuras 54 e 55.
58
Quando a configuração e recepção dos dados ocorrem corretamente, um flag
(WRITE_OK) é ativado, sinalizando que o processamento pode iniciar.
O processamento da função XOR na rede LVQ, considerando apenas o tempo de
processamento dos dados, a uma freqüência de 2 MHz na FPGA, tem duração de
aproximadamente 417 µs. Enquanto que a rede executada em um microcomputador
AMD Sempron 2 GHz com 256 MBytes de RAM, levou cerca de 1,688 ms, que mostra
grande vantagem da FPGA no processamento de uma rede neural deste tipo.
A rede LVQ implementada na FPGA tem capacidade de diferenciar até 16
classes, com 16 características.
Para implementação dessa rede foram utilizados os seguintes recursos da FPGA:
2352 bytes de memória RAM, apenas 6% do total da memória. 1042 LE (elementos
lógicos) que correspondem apenas a 5% do que disponível no dispositivo. E
considerando todos os sinais de controle, dados e bits utilizados na própria placa de
desenvolvimento do Nios, foram utilizados 115 dos 301 pinos do Cyclone disponíveis.
Na figura 56 é apresentado os recursos do chip Cyclone que foram usados. Pela
figura é possível observar que os recursos disponíveis no chip não foram totalmente
utilizados, o que permitiria um aumento na arquitetura da rede e maior número de
classes separáveis pela rede. O aumento no tamanho da arquitetura da rede implicaria
em aumento considerável do uso de memória e não do uso de elementos lógicos.
É possível verificar o total de memória necessária para implementar uma
arquitetura de rede maior, como mostra a equação 9. Sendo d o número de dimensões,
n o número de dados, I a largura dos dados e sc o número de subclasse.
[
Tmemoria = dl (n + sc + 1) + (n * sc )
]
(9)
Nas figuras 57 e 58 são apresentados os gráficos de uso da memória em bits
conforme o total de número de classes e dimensões para barramento 8 bits.
As figuras 59 e 60 mostram o número máximo de dados que pode ser configurada
a arquitetura de 8 bits com número de classes e dimensões para o dispositivo Cyclone
EP1C20F4400C7. Para a arquitetura implementada, é utilizado o número máximo de
128 dados (que corresponde a 2048 bytes) que podem ser enviados para análise, mas
esse número não representa o máximo suportado pelo dispositivo e o gráfico apresenta
os valores máximos para cada configuração de classes e dimensões.
59
Figura 54 - Processo de recepção dos dados.
60
Figura 55 - Fases do processo de classificação.
61
Figura 56 - Total do chip utilizado.
62
Figura 57 - Uso de memória (número de dimensões x número de classes – 3D).
Figura 58 – Uso de memória (número de dimensões x número de classes).
63
Figura 59 - Número máximo de dados para análise (3D).
Figura 60 - Número máximo de dados para análise.
64
6 CONCLUSÃO
Com a conclusão da implementação deste projeto, observou-se um resultado
satisfatório na rede neural em hardware, comprovando seu funcionamento.
Com o desenvolvimento desta arquitetura em VHDL, verificou-se que é um
processo bastante complexo.
Para continuação deste projeto, alguns pontos podem ser melhorados, como a
comunicação entre o PC e a FPGA bidirecional, que por falta de tempo hábil, foi
realizada a comunicação unidirecional. Isso seria interessante para possibilitar o
armazenamento dos resultados obtidos para posterior estudos e análises de
desempenho da rede.
Seria importante a implementação de uma rede neural mais robusta, já que a
implementada, tem como limitação o máximo de 16 classes e subclasses e 16
dimensões, com largura de dados de 8 bits, o que para a maioria dos problemas reais
acaba se tornando inviável sua solução. Mas caso aja necessidade de um barramento
de maior largura e mais memória para armazenamento de dados e vetores de
referência, para resolução de um problema específico, este é facilmente adaptado com
a arquitetura desenvolvida.
Essa área de pesquisa demonstra ser promissora, já que cresce a pesquisa de
reconhecimento de padrões. E, a FPGA se mostrou capaz de suprir as necessidades
de desempenho para o trabalho com redes neurais.
65
7 REFERÊNCIAS
Altera Corporation. Nios Development Board, Reference Manual, Cyclone Edition.
2004.
Altera Corporation. Nios Development Kit, Cyclone Edition, Getting Started User Guide.
2003.
Altera Corporation. FPGA Cyclone - DATASHEET. Datasheet da família Cyclone. [online]
Disponível
na
Internet
em
WWW
por
http://altera.com/literature/hb/cyc/cyc_c5v1_01.pdf (pesquisar realizada em 10 de
outubro de 2005).
Altera Corporation. Cyclone Device Handbook, Volume 1. [on-line] Disponível na
Internet em WWW por http://altera.com/literature/hb/cyc/cyc_c5v1.pdf (pesquisar
realizada em 10 de outubro de 2005).
AT89C51 – DATASHEET. Datasheet do AT89C51 da ATMEL. [on-line] Disponível na
Internet
em
WWW
por
http://www.atmel.com/dyn/resources/prod_documents/doc0265.pdf (pesquisar realizada
em 10 de maio de 2005).
BEYOND LOGIC. USB in a NutShell. [on-line] Disponível na Internet em WWW por:
http://www.beyondlogic.org/usbnutshell/usb2.htm ( pesquisar realizada em 10 de maio
de 2005).
BRAGA, Antônio de Pádua. “Redes Neurais Artificiais: Teoria e Aplicações”. LTC. Rio
de Janeiro. 2000.
KOHONEN, Teuvo. “Self-Organizing Maps”. 2. ed. Heidelberg: Springer-Verlag. 1997.
KUGLER, Mauricio. “Desenvolvimento de uma Rede Neural LVQ em Linguagem VHDL
para Aplicações em Tempo-Real”. Artigo publicado em VI Congresso Brasileiro de
Redes Neurais. São Paulo. 2003.
MUKAI, Ivana Naomi, PILLA, Valfredo Jr, LOPES, Heitor S. “Análise de peditórios no
domínio do tempo para classificadores LVQ de padrões de EEG relacionados ao
movimento”. Artigo publicado em CBRN – Congresso Brasileiro de Redes Neurais.
Curitiba. 2001.
PILLA, Valfredo Jr. “Detecção de Padrões Eletroencefalográficos Relacionados ao
Movimento para uma Interface Cérebro-computador”. Dissertação de mestrado.
Curitiba. CEFET-PR. 1999.
PILLA, Valfredo Jr, LOPES, Heitor S. “Análise de um classificador neural de sinais de
EEG na detecção de movimentos”. Artigo publicado em CBEB – Congresso Brasileiro
de Engenharia Biomédica. Curitiba. 2000.
RIBEIRO, Alexandre Alves de Lima. “Reconfigurabilidade dinâmica e remota de
FPGAs”. Dissertação de mestrado. ICMC – USP. São Paulo. 2002.
66
USP – Universidade de São Paulo. [on-line] Disponível em WWW
http://www.icmc.usp.br/~lcr/comp_reconfiguravel.htm (18 de março de 2005).
por:
TUSB3410 – DATASHEET. Datasheet do conversor USB/Serial. [online] Disponível na
Internet em WWW por: http://www-s.ti.com/sc/ds/tusb3410.pdf (pesquisar em 29 de
abril de 2005).

Documentos relacionados