Download PDF
ads:
Universidade de S
˜
ao Paulo
Instituto de F
´
ısica de S
˜
ao Carlos
Departamento de F
´
ısica e Inform
´
atica
Grupo de F
´
ısica Computacional e Instrumenta¸c
˜
ao Aplicada
Mario Alexandre Gazziro
Desenvolvimento e implementa¸ao de
instrumenta¸ao eletrˆonica para cria¸ao de
est´ımulos visuais para experimentos com o
duto ´optico da mosca
ao Carlos, SP
Julho de 2009
ads:
Livros Grátis
http://www.livrosgratis.com.br
Milhares de livros grátis para download.
Mario Alexandre Gazziro
Desenvolvimento e implementa¸ao de
instrumenta¸ao eletrˆonica para cria¸ao de
est´ımulos visuais para experimentos com o
duto ´optico da mosca
Tese apresentada ao Programa de os-Gradua¸ao
em F´ısica do Instituto de F´ısica de ao Carlos
da Universidade de ao Paulo, como parte dos
requisitos para obten¸ao do t´ıtulo de Doutor em
Ciˆencias.
´
Area: F´ısica Aplicada - Computacional.
Orientador: Prof. Dr. Jan F.W. Slaets
ao Carlos, SP
Julho de 2009
ads:
AUTORIZO A REPRODUÇÃO E DIVULGAÇÃO TOTAL OU PARCIAL DESTE
TRABALHO, POR QUALQUER MEIO CONVENCIONAL OU ELETRÔNICO, PARA
FINS DE ESTUDO E PESQUISA, DESDE QUE CITADA A FONTE.
Ficha catalográfica elaborada pelo Serviço de Biblioteca e Informação IFSC/USP
Gazziro, Mario Alexandre.
Desenvolvimento e implementação de instrumentação eletrônica
para criação de estímulos visuais para experimentos com o duto
óptico da mosca / Mario Alexandre Gazziro; orientador Jan F. W.
Slaets.-- São Carlos, 2009.
87 p.
Tese (Doutorado em Ciências - Área de concentração: Física
Aplicada – Opção Física Computacional) – Instituto de Física de São
Carlos da Universidade de São Paulo.
1. Neurobiofísica. 2. Instrumentação eletrônica. 3. FPGA. 4.
Sistema visual da mosca. 5. Processamento de vídeo em tempo
real. I.Título.
Aos meus pais,
Mario e Bene
Agradecimentos
Ao meu orientador, Prof. Jan Frans Willem Slaets, pela paciˆencia, por seu apoio e
direcionamento preciso durante a execu¸ao do presente trabalho, sem o qual o mesmo n˜ao
seria poss´ıvel. Ao Prof. Roland K
¨
oberle, por sua natureza cient´ıfica impec´avel, sendo
uma inspira¸ao `a todos que desejem encontrar algo novo em meio ao desconhecido. Aos
professores Eduardo Marques, Jos´e Saito, Valentin Roda, Guilherme Sipahi, pelo apoio
e acompanhamento durante minha carreira acadˆemica na ´ultima d´ecada. Embora mais
recente, devo agradecer tamb´em ao Prof. Reynaldo Daniel, pois sua empolga¸ao pela
neurociˆencia serve como inspira¸ao `a todos que atuam na ´area. Em especial `a Lirio
Almeida, dinossauro do Rock’n’Roll e guru da eletrˆonica, sendo que o presente trabalho
´e fruto da continuidade dos grandes avan¸cos obtidos por ele no campo da eletrˆonica
instrumental de apoio `a neurociˆencia da vis˜ao da mosca. Aos amigos do laborat´orio
Dipteralab: Nelson Fernandes, Ingrid Miranda, Paulo Matias, Nataly Horner, Rafael
Viegas, Ivanilda St´efani e Ailton Alves, os quais trabalham com extrema dedica¸ao nesta
´area de pesquisa a qual permeia as fronteiras da ciˆencia conhecida. A todos os funcion´arios
do IFSC, em especial `a S´ılvio Athayde e Victor Barioto, pelo profissionalismo e pronto
atendimento. Aos professores do Instituto Superior ecnico de Lisboa, Jo˜ao Cardoso
e Pedro Diniz, pelo apoio durante meu est´agio no exterior. Aos amigos recentes Caio
Assun¸ao, Carlos Eduardo, Nicole Novaes, Dalmir Rapelli, Paula Neves, Adriano Sanches,
Luis Uebel e Tatiana de Alencar e aos antigos, Raul Habesch, Alexandre Medeiros, Richard
Lingner e Augusto Carbol e Elias Neto.
`
A Izis Cavalcanti, por seu trabalho e dedica¸ao na
cria¸ao de nossos filhos, Caio e Alice, os quais me proporcionam imensur´aveis momentos
de felicidade. Agrade¸co por fim `as agˆencias financiadoras FAPESP, CAPES e CNPq,
respectivamente pelo apoio `a compra dos materiais utilizados, pela realiza¸ao do meu
est´agio no exterior e pelo meu treinamento em projeto de circuitos integrados digitais.
He who controls the past
commands the future.”
George Orwell
Resumo
GAZZIRO, M. Desenvolvimento e implementa¸ao de instrumenta¸ao eletrˆonica
para cria¸ao de est´ımulos visuais para experimentos com o duto ´optico da
mosca. 2009. 87p. Tese (Doutorado) Instituto de F´ısica de ao Carlos Universidade
de ao Paulo, ao Carlos, 2009.
O presente trabalho explora a utiliza¸ao de hardware reconfigur´avel (FPGA) no desen-
volvimento de geradores de est´ımulos visuais para utiliza¸ao em experimentos de neuro-
ciˆencia com invertebrados, tais como moscas. O experimento asico consiste na visua-
liza¸ao de uma imagem fixa que ´e movida horizontalmente a cada quadro, a partir dos
dados recebidos do est´ımulo. Os requisitos desejados foram visualizar imagens a 200 FPS
(quadros por segundo), com resolu¸ao de 640x480 pixels e 256 n´ıveis de intensidade, para
monitores com deflex˜ao eletromagn´etica e 500 FPS com resolu¸ao de 512x480 pixels para
monitores com deflex˜ao eletrost´atica. A utiliza¸ao de FPGAs, ao ines do uso das mo-
dernas placas gr´aficas se deve ao fato que, em experimentos de neurobiof´ısica com o duto
´optico de moscas, exige-se controle em tempo real de cada quadro exibido, uma vez que
o est´ımulo visualizado ´e posteriormente correlacionado no tempo com a resposta neural.
arios projetos foram implementados e avaliados neste trabalho. Os principais desafios
foram: desenvolver a ogica adequada para gerar os sinais de sincronismo do v´ıdeo e da
mem´oria de v´ıdeo; a implementa¸ao de hardware capaz de efetuar o deslocamento hori-
zontal da imagem determinado pelo estimulo, de acordo com a taxa de atualiza¸ao dos
quadros. Em um dos geradores desenvolvidos, a fim de aumentar a resolu¸ao aparente de
posicionamento horizontal, passos artificiais ‘entre-pixels’ foram implementados usando
dois frame-buffers de v´ıdeo, contendo respectivamente os pixels ´ımpares e pares da ima-
gem original a ser exibida. Esta implementa¸ao gerou um efeito visual capaz de dobrar a
capacidade de posicionamento horizontal do gerador.
Palavras-chave: Neurobiof´ısica. Instrumenta¸ao eletrˆonica. FPGA. Sistema
visual da mosca. Processamento de video em tempo real.
Abstract
GAZZIRO, M. High-performance visual stimulation system for use in neuro-
science experiments with the blowfly. 2009. 87p. PhD Thesis Instituto de F´ısica
de ao Carlos Universidade de ao Paulo, ao Carlos, 2009.
This thesis describes the development of several visual stimulus generators to be used in
neuroscience experiments with invertebrates such as flies. The experiment consists in the
visualization of a fixed image being moved horizontally according to the received stimulus
data. The preferred requirements were being able to visualize images on electromagnetic
deflection monitors at 200 FPS (frames per second) with a resolution of 640x480 pixels
and 256 levels of intensity. For electrostatic deflection monitor’s frame rates of 500 FPS
with a 512x480 pixels resolution were selected. Modern graphic cards could not be used
to realize optical neuro-biophysic experiments with invertebrates since they are unable to
be controlled in real-time. Precise temporal control of the visual stimulus is needed to
perform off-line time correlation analysis between the applied stimulus and the acquired
neural data. Several projects were implemented and evaluated in this work. The main
challenges were: to develop the logic to generate the appropriate synchronization signals
for the video monitor and the timing signals for the memory. Special FPGA hardware
was designed to perform the horizontal displacement of the image at the selected frame
rate. In one of the developed prototypes the apparent resolution of horizontal positioning
capability was increased implementing artificial steps between pixels. This was imple-
mented using two video frame buffers, containing respectively the odd and even pixels
of the image to be visualized. This implementation was able to created a visual effect
doubling the horizontal positioning capacity of the generator.
Keywords: Neurobiophysics. Electronic instrumentation. FPGA. Fly’s vi-
sual system. Real-time video processing.
Lista de Figuras
Figura 1 Olho composto da mosca . . . . . . . . . . . . . . . . . . . . . . . . 16
Figura 2 Como o olho da mosca difere dos demais artr´opodes . . . . . . . . . 17
Figura 3 Tempo de resposta dos foto-receptores . . . . . . . . . . . . . . . . . 18
Figura 4 Corte de se¸ao do olho composto . . . . . . . . . . . . . . . . . . . . 20
Figura 5 Sensitividade binocular dos neurˆonios H1 . . . . . . . . . . . . . . . 21
Figura 6 Estrutura interna do monitor CRT com deflex˜ao eletromagn´etica . . 22
Figura 7 Tempo de ativao do osforo em uma tr´ıade do monitor RGB . . . . 23
Figura 8 Gerador de est´ımulos visuais Picasso . . . . . . . . . . . . . . . . . . 24
Figura 9 Padr˜ao gerado pelo Picasso . . . . . . . . . . . . . . . . . . . . . . . 24
Figura 10 Gerador de est´ımulos visuais ViSaGe . . . . . . . . . . . . . . . . . . 25
Figura 11 Gerador de est´ımulos visuais FliMax . . . . . . . . . . . . . . . . . . 26
Figura 12 Gerador de est´ımulos visuais VSImG . . . . . . . . . . . . . . . . . . 26
Figura 13 Diagrama em bloco do experimento completo. . . . . . . . . . . . . . 27
Figura 14 Mosca imobilizada para o experimento . . . . . . . . . . . . . . . . . 28
Figura 15 Cabca da mosca exposta . . . . . . . . . . . . . . . . . . . . . . . . 29
Figura 16 Inser¸ao do micro-eletrodo extracelular . . . . . . . . . . . . . . . . . 30
Figura 17 Tela do oscilosc´opio: sinal captado e discriminado . . . . . . . . . . . 30
Figura 18 As cinco principais etapas na aquisi¸ao do sinal . . . . . . . . . . . . 31
Figura 19 Posicionamento ideal do micro-eletrodo extracelular . . . . . . . . . 31
Figura 20 Est´ımulo: velocidades horizontais . . . . . . . . . . . . . . . . . . . . 34
Figura 21 Kit de desenvolvimento DE2 da Terasic . . . . . . . . . . . . . . . . 36
Figura 22 Kit de desenvolvimento DE3 da Terasic . . . . . . . . . . . . . . . . 37
Figura 23 Kit de desenvolvimento ML505 da Xilinx . . . . . . . . . . . . . . . 38
Figura 24 Gerador de est´ımulos visuais operando em monitor XY . . . . . . . . 39
Figura 25 Arquitetura do gerador de est´ımulos utilizando uClinux . . . . . . . 40
Figura 26 Rela¸ao entre os espa¸cos do usu´ario e do kernel . . . . . . . . . . . . 41
Figura 27 Arquitetura do gerador de est´ımulos baseado em FIFO . . . . . . . . 42
Figura 28 Arquitetura da fun¸ao PULSO . . . . . . . . . . . . . . . . . . . . . 44
Figura 29 Gerador de est´ımulos baseado em FIFO em funcionamento . . . . . . 44
Figura 30 Arquitetura do gerador de dois monitores . . . . . . . . . . . . . . . 45
Figura 31 Gerador de est´ımulos de dois monitores em funcionamento . . . . . . 46
Figura 32 Arquitetura de comunica¸ao e verifica¸ao de erros . . . . . . . . . . . 47
Figura 33 Controle do cursor em funcionamento . . . . . . . . . . . . . . . . . 48
Figura 34 Estrutura dos omat´ıdeos no olho da mosca . . . . . . . . . . . . . . . 49
Figura 35 Gera¸ao das imagens com diferentes amostragens . . . . . . . . . . . 50
Figura 36 Detalhe do funcionamento do efeito ‘entre-pixel’ . . . . . . . . . . . . 51
Figura 37 A arquitetura ‘Passos Artificiais Entre-Pixels’ . . . . . . . . . . . . . 52
Figura 38 Cena 3D natural´ıstica renderizada pela plataforma Ogre 3D . . . . . 53
Figura 39 Arquitetura da integra¸ao entre FPGA e GPU . . . . . . . . . . . . 54
Figura 40 Sistema integrado entre FPGA e GPU em funcionamento . . . . . . 55
Figura 41 Gera¸ao do mesmo est´ımulo com duas amostragens . . . . . . . . . . 58
Figura 42 Experimento realizado com gerador baseado em FIFO . . . . . . . . 59
Figura 43 Raster do experimento realizado pelo gerador baseado em FIFO . . . 60
Figura 44 Compara¸ao entre os PSTH dois sistemas . . . . . . . . . . . . . . . 60
Figura 45 Sistema em funcionamento apresentando padr˜ao natural´ıstico . . . . 61
Figura 46 Histograma de intervalos . . . . . . . . . . . . . . . . . . . . . . . . 62
Figura 47 Cabo do gerador de est´ımulos visuais. . . . . . . . . . . . . . . . . . 79
Figura 48 RTL do gerador de est´ımulos baseado em FIFO . . . . . . . . . . . . 81
Figura 49 RTL da gera¸ao do clock de v´ıdeo . . . . . . . . . . . . . . . . . . . 81
Figura 50 RTL do gerador de dois monitores: Parte do kit DE3 . . . . . . . . . 82
Figura 51 RTL do gerador de dois monitores: Parte do kit DE2 . . . . . . . . . 83
Sum´ario
1 Introdu¸ao 15
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 O olho composto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 O sistema visual da mosca . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Uso de tubos de raios cat´odicos em neurociˆencias . . . . . . . . . . . . . . 21
1.5 ecnicas atuais de estimula¸ao visual de insetos . . . . . . . . . . . . . . . 24
2 O Experimento 27
2.1 Prepara¸ao da mosca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Aquisi¸ao de dados neurais . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 O est´ımulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3 Metodologia 35
3.1 Kits de desenvolvimento utilizados . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Primeira abordagem: controle do monitor XY . . . . . . . . . . . . . . . . 38
3.3 Segunda abordagem: utiliza¸ao do NIOS e uClinux . . . . . . . . . . . . . 39
3.4 Terceira abordagem: deslocamento da imagem baseado em FIFO . . . . . . 42
3.5 Quarta abordagem: controle de dois monitores . . . . . . . . . . . . . . . . 44
3.6 Quinta abordagem: verifica¸ao de erros e controle do cursor . . . . . . . . 46
3.7 Sexta abordagem: amplia¸ao da capacidade horizontal . . . . . . . . . . . 48
3.7.1 A t´ecnica ‘Passos Artificiais Entre-Pixels’ . . . . . . . . . . . . . . . 50
3.7.2 A arquitetura para gera¸ao dos ‘Passos Artificiais Entre-Pixels . . 51
3.8 etima abordagem: integra¸ao entre FPGA e GPU . . . . . . . . . . . . . 52
4 Resultados e Discuss˜ao 57
4.1 ‘Deslocamento da imagem baseado em FIFO’ . . . . . . . . . . . . . . . . 57
4.2 ‘Amplia¸ao da capacidade horizontal’ . . . . . . . . . . . . . . . . . . . . . 60
5 Conclus˜oes 63
Referˆencias 65
A Listagem dos odigos fonte em Matlab 69
B Listagem dos principais odigos fonte em Verilog 73
C Cabo de liga¸ao entre FPGA e porta paralela 79
D Diagramas RTL 81
E Processo de Ornstein-Uhlenbeck 85
Lista de abreviaturas e siglas 87
15
1 Introdu¸ao
1.1 Objetivos
Esse trabalho tem por objetivo desenvolver equipamentos geradores de est´ımulos vi-
suais para utiliza¸ao em experimentos de neurociˆencia.
Nossa proposta consiste na utiliza¸ao de monitores convencionais e no uso de tec-
nologia de hardware reconfigur´avel. Tal tecnologia deve possibilitar atender os requisitos
desejados, listados abaixo:
- Possibilitar que padr˜oes visuais natural´ısticos sejam exibidos com taxa de atualiza¸ao
de quadros de 200 Hz;
- Permitir um controle preciso para o deslocamento do est´ımulo visual, da ordem de
mil pontos.
Ambos os requisitos devem ser atingidos com a cria¸ao de uma arquitetura gr´afica
espec´ıfica para gera¸ao de v´ıdeo em tempo-real, contendo um registrador especial para
controle do deslocamento. Ser˜ao implementados ‘passos artificiais entre-pixels’ usando
dois frame buffers de v´ıdeo, contendo respectivamente os pixels ´ımpares e pares da ima-
gem original a ser exibida. Espera-se que essa implementa¸ao produza um efeito visual
capaz de dobrar a capacidade de posicionamento horizontal do gerador de est´ımulos. Pos-
teriormente ser´a realizada uma an´alise entre o est´ımulo e os sinais neurais.
16
O equipamento desenvolvido ser´a validado junto ao laborat´orio Dipteralab do IFSC-
USP, tendo seus resultados comparados com os equipamentos tradicionais utilizados nesse
laborat´orio.
1.2 O olho composto
A partir de osseis, na maioria trilobitas, os sabemos que os artr´opodes utilizam
olhos compostos desde a era cambriana, a cerca de 540 milh˜oes de anos atr´as. Olhos
compostos produzem uma vis˜ao em mosaico do ambiente, devido ao fato de que cada uma
das facetas (ou omat´ıdeos) do olho ´e direcionada para um ponto ligeiramente diferente no
espa¸co (Figura 1). A resolu¸ao da imagem fica, ent˜ao, limitada pelo n´umero de omat´ıdeos
e pelo ˆangulo entre eles.
Figura 1: Olho composto da mosca (1).
Existem ainda condi¸oes diferentes para vis˜ao durante o dia e a noite. Insetos que
devem enxergar bem durante o dia possuem sete ou oito c´elulas foto-receptoras agrupadas
embaixo de cada lente dos omat´ıdeos. Essas elulas est˜ao dispostas de forma que suas
superf´ıcies coletoras de luz (os rabomeros) ao fundidas no centro de cada omat´ıdeo,
criando uma estrutura chamada Rabdoma, semelhante a um bastonete (Figura 2a).
17
Todo omat´ıdeo ´e encapsulado em um tubo de c´elulas de pigmento, de forma que raios
de luz que incidem em ˆangulos diferentes da orienta¸ao do tubo ao removidos (Figura
2b). Dessa forma muitos otons ao perdidos, mas a resolu¸ao ´e melhorada.
Figura 2: Como o olho da mosca (d)(e) difere dos olhos dos demais artr´opodes (a)(b)(c) (1).
Insetos que precisam enxergar bem durante a noite apresentam menor quantidade de
pigmentos no encapsulamento dos Rabdomas, permitindo que a luz proveniente de um
campo maior consiga atingir seus foto-receptores (Figura 2c). Isso aumenta a sensibili-
dade, por´em sacrifica a resolu¸ao.
Muitos insetos conseguem deslocar as elulas de pigmento, configurando o olho com-
posto para trabalhar da melhor forma poss´ıvel, tanto de dia como `a noite (1).
A cerca de 100 milh˜oes de anos atr´as, a ordem Diptera (mosquitos e moscas) desen-
volveu um truque para conseguir maior resolao de seus olhos compostos: eles separaram
os rabomeros foto-receptores em cada omat´ıdeo, de forma que, ao inv´es de ver apenas
um ponto por omat´ıdeo, eles agora veriam sete (Figura 2d). Isso ´e chamado de olho
18
de superposi¸ao neural, o que tamb´em envolveu algumas religa¸oes dentro do c´erebro da
mosca (Figura 2e)(2).
Outro aspecto no olho composto da mosca ´e a resposta dos foto-receptores em fun¸ao
da temperatura. Em 34
C, a velocidade de resposta dos foto-receptores de uma mosca
Calliphora vicina ultrapassa o dobro da velocidade registrada aos 19
C de temperatura
(3), conforme apresentado na Figura 3.
Figura 3: Tempo de resposta dos foto-receptores da mosca ap´os incidˆencia de flash em fun¸ao
da temperatura ambiente (3).
Um conceito importante relacionado ao tempo de resposta de qualquer sistema visual
biol´ogico ´e a Fus˜ao de Cintili¸ao (Flicker Fusion), tamem conhecido como CFFT(Critical
Flicker Fusion Threshold). Ele determina (em Hz) o ponto limite no qual um animal
passa a ver uma luz estrobosc´opica como se fosse um feixe cont´ınuo. O valor da Fus˜ao de
Cintila¸ao para moscas foi avaliado em 200 Hz (4), por´em, Tatler et al determinaram que
esse valor pode estar entre 400 e 500 Hz para temperaturas ambientes extremas de 34
C
(3).
19
1.3 O sistema visual da mosca
As moscas povoam a Terra a mais de 300 milh˜oes de anos, tendo desde enao se
ramificado em mais de 125.000 esp´ecies. Isso faz com que as moscas sejam um dos grupos
animais mais bem-sucedidos em termos evolutivos no nosso planeta (5).
Assim como 3/4 das esp´ecies animais na face da Terra, as moscas possuem um in-
trincado sistema de olhos compostos. Numa mosca existem cerca de 50.000 omat´ıdeos
distribu´ıdos em ambos os olhos. Ao contr´ario do que ocorre no erebro de vertebrados,
um ´unico neurˆonio pode ser localizado e identificado arias vezes, e em diferentes moscas.
Isso permite a aquisi¸ao de mais dados sobre neurˆonios em localiza¸oes idˆenticas, por´em
em moscas distintas, proporcionando uma caracteriza¸ao quantitativa mais confi´avel em
termos estat´ısticos (6).
Cada omat´ıdeo da mosca ´e dotado de oito elulas foto-receptoras, denominadas de
R1 a R8. As c´elulas R1 a R6 de um mesmo omat´ıdeo possuem diferentes alinhamentos
´opticos. Isso permite que a luz que sai de um ponto espacial incida de forma que as
c´elulas foto-receptoras R1 a R6 dos omat´ıdeos vizinhos recebam a luz do mesmo ponto do
espa¸co do qual os foto-receptores R7 e R8 do omat´ıdeo central recebem (Figura 4). Os
foto-receptores cont´em organelas pigmentadas respons´aveis pela capta¸ao da luz incidente
e sua convers˜ao em sinal el´etrico por meio de rea¸oes qu´ımicas. Esse sinal el´etrico ´e
propagado pelos axˆonios de seu respectivo foto-receptor.
Conforme se avan¸ca para centros superiores de processamento visual, os mecanismos e
fun¸oes exatas de suas estruturas tornam-se menos compreendidos, sendo alvos de intensa
pesquisa. a evidˆencias por meio de observoes da medula que sugerem que ela esteja
ligada `a computa¸ao e extra¸ao inicial de parˆametros visuais tais como velocidade, dire¸ao,
orienta¸ao e contraste do est´ımulo fornecido (7).
O sistema visual da mosca possui dois neurˆonios H1, um em cada hemisf´erio cerebral,
20
Figura 4: Corte de se¸ao do olho composto (2).
que conectam as duas placas lobulares diretamente. Com uma ´arvore dendr´ıtica de 250
µm e um axˆonio medindo 1.200 µm de comprimento e 5 µm de diˆametro, as respostas
do sistema visual ocorrem na forma de potenciais de ao detect´aveis extracelularmente
ao longo do axˆonio e da ´arvore dendr´ıtica que se estendem pelo hemisf´erio oposto ao do
neurˆonio H1 e seu soma. Portanto podemos dizer que esse tipo de aquisi¸ao ´e sens´ıvel
a movimentos ipsilaterais regressivos. Isso quer dizer que obtemos resposta axima do
neurˆonio ao estimular os olhos compostos do lado oposto ao hemisf´erio onde se a a
aquisi¸ao do sinal, com movimentos horizontais de tr´as para frente em rela¸ao `a cabca
da mosca, e obtemos uma resposta nula, com a inibi¸ao do sinal, para movimentos na
dire¸ao contr´aria (Figura 5).
Os neurˆonios H1 apresentam um per´ıodo refrat´ario de 2 ms. Isso quer dizer que ap´os
efetuar um disparo, o neurˆonio fica inativo durante 2 ms, tempo esse necess´ario para sua
repolariza¸ao (8).
Muitas pesquisas a foram feitas em torno do H1 e, hoje em dia, a um modelo desse
tipo de neurˆonio consolidado em neurociˆencia, ao apenas pela a mencionada facilidade
de identifica¸ao e pela resposta em spikes (disparos dos neurˆonios), mas tamem por
sustentar respostas a est´ımulos por longos per´ıodos de tempo e pelo fato da placa lobular
ser reconhecidamente um centro de computa¸ao neural dos movimentos no entorno do
21
Figura 5: Sensitividade binocular dos neurˆonios H1 (l´obulos direito e esquerdo, respectivamente).
Seta cheia representa a dire¸ao preferencial e seta vazia a dire¸ao de inibi¸ao (8).
animal, mantendo respostas estereotipadas e relativamente robustas (8). Apesar disso,
´e importante lembrar que, por mais estereotipada que sejam as respostas do H1, ao se
observa uma repetibilidade, spike por spike, entre duas respostas do mesmo H1 para dois
est´ımulos idˆenticos. Ou seja, o H1 ´e apenas uma das arias partes do sistema complexo
que ele constitui, sendo que cada resposta que se mede e analisa nele ´e resultado de muitos
outros processamentos complexos realizados nas estruturas descritas anteriormente.
Uma das caracter´ısticas mais not´aveis do sistema visual da mosca, e t´ıpica desse tipo
de sistemas, ´e seu alto grau de flexibilidade, sendo capaz de adaptar sua dinˆamica conforme
a estat´ıstica do est´ımulo fornecido, de forma a otimizar a transmiss˜ao de informa¸oes (9).
1.4 Uso de tubos de raios cat´odicos em neurociˆencias
Tubos de raios cat´odicos (CRT)(Figura 6) em se tornado uma condi¸ao sine qua
non para a pesquisa experimental em vis˜ao. Por´em, largura de banda, ajuste de alta
voltagem, persistˆencia do osforo e taxas de atualiza¸ao constituem limita¸oes que afetam
22
a aparˆencia das imagens apresentadas nos CRTs. O efeito conjunto de todos esses fatores
pode resultar em uma imagem na tela significativamente diferente da imagem nominal
que se deseja apresentar (10).
Figura 6: Estrutura interna do monitor CRT com deflex˜ao eletromagn´etica: 1: Tes canh˜oes de
el´etrons (para os pontos de osforo vermelho, verde e azul); 2: Feixes de el´etrons; 3: Bobinas
de foco; 4: Bobinas de deflex˜ao; 5: Conex˜ao do ˆanodo; 6: ascara de separa¸ao dos feixes
vermelho, verde e azul; 7: Camada de osforo com regi˜oes vermelhas, verdes e azuis; 8: Vis˜ao
ampliada do lado interno da tela, coberto com camada de osforo (11).
Experimentos com vis˜ao em neurociˆencias freq
¨
uentemente for¸cam os CRT’s at´e o
limite, ao necessitarem, por exemplo, de altas taxas de exibi¸ao de quadros por segundo.
Um problema decorrente do uso de altas taxas de atualiza¸ao ´e, no caso do tempo de
dura¸ao do quadro ser menor que o tempo de decaimento do osforo, a fus˜ao da imagem
apresentada com a luminˆancia residual do quadro anterior (10). A fim de evitar esse
problema, deve-se ter em mente que ao ´e poss´ıvel apresentar est´ımulos cujos per´ıodos
sejam menores do que o tempo de decaimento do pigmento de cor do monitor. A Tabela
1 apresenta os tempos de decaimento dos osforos mais comuns nos monitores coloridos,
em rela¸ao percentual ao valor atingido durante o pico de luminosidade.
Zele et al. (13) demonstraram que, para experimentos em neurofisiologia, tubos de
raios cat´odicos podem produzir artefatos sobre o sinal que se deseja transmitir. Em
suas conclus˜oes, apontam que o uso de taxa de atualiza¸ao de quadros com freq
¨
uˆencias
maiores do que 100 Hz contribuem para a diminui¸ao da gera¸ao de ru´ıdo. Testando
23
Tabela 1: Tempo de decaimento dos osforos mais comuns (10)(12).
osforo 10% 1% 0.1%
P22r 1,5 ms - -
P22g 6,0 ms - -
P22b 4,8 ms - -
P4 0,060 ms 0,22 ms 1,25 ms
P104 0,060 ms 0,65 ms 3,50 ms
P45 1,5 ms 2,8 ms 4,25 ms
monitores RGB convencionais, eles tamb´em avaliaram o tempo de decaimento de uma
tr´ıade (conjunto formado pelos trˆes pigmentos de osforo colorido em um pixel), ativada
de forma acrom´atica (branca) e com luminˆancia uniforme de 60 cd.m
2
, utilizando um
espectroradiˆometro, com diferentes aberturas. Os resultados ao apresentados na (Figura
7).
Figura 7: Tempo de ativao do osforo em uma tr´ıade acrom´atica do monitor RGB: linha
cont´ınua representa abertura de 2’ de arco no detector e a linha pontilhada representa abertura
de 1
o
(13).
24
1.5 T´ecnicas atuais de estimula¸ao visual de insetos
1. Picasso
O gerador de est´ımulos Picasso, apresentado na Figura 8 ao foi especificamente de-
senvolvido para esta finalidade. Trata-se na verdade de um sintetizador de imagens
muito vers´atil, que serviu bem aos fins da comunidade cient´ıfica.
Figura 8: Gerador de est´ımulos visuais Picasso (14).
A Figura 9 apresenta um padr˜ao criado por Reinagel et al (15) utilizando o sinteti-
zador Picasso, com uma taxa de 200 quadros por segundo.
Figura 9: Padr˜ao gerado pelo Picasso (15).
Borst (16), Flanagin (14) e Warzecha (17) tamem utilizam o Picasso para gera¸ao
de est´ımulos visuais para moscas, com taxas de repeti¸ao de quadros entre de 180 e
25
200 quadros por segundo, utilizando monitores XY (de deflex˜ao eletrost´atica).
2. ViSaGe
O ViSaGe ´e um sistema que utiliza uma mistura de tecnologias de prateleira (como
placas de v´ıdeo com tecnologia PCI-Express) com hardwares dedicados, como con-
trole de sinais de entrada e sa´ıda e conversores A/D e D/A. Este sistema, apresentado
na Figura 10, opera apenas com monitores de tubo convencionais (18).
Figura 10: Gerador de est´ımulos visuais ViSaGe (19).
Ele apresenta resolu¸oes da ordem de 512x480 pixels, com taxa de apresenta¸ao de
quadros da ordem de 180 Hz.
´
E muito utilizado em experimentos de psicologia com
humanos ou em experimentos de monitora¸ao de atividade no ortex de pequenos
mam´ıferos (6). Possui um Dot Clock de 160 MHz e uma resolu¸ao de sa´ıda de 14
bits, com uma mem´oria para sobreposi¸ao de quadros de 16 MB.
3. FliMax
FliMax (Figura 11) ´e um sistema de gera¸ao de est´ımulo visual da Universidade de
Groningen, que possui um display com 7000 LEDs. Este sistema utiliza circuitos
sample-and-hold para converter o sinal de uma placa VGA que controla o painel de
LEDs. A vantagem do FliMax ´e que, ao contr´ario dos monitores XY, a apresenta¸ao
de uma imagem constante ao depende da taxa de refresh, e a taxa de atualiza¸ao
da imagem apresentada chega a 370Hz, sendo que a imagem gerada abrange um
campo visual maior (20).
26
Figura 11: Gerador de est´ımulos visuais FliMax (21).
4. VSImG
Desenvolvido por Almeida (22), o VSGImG foi uma parte de sua pesquisa de
mestrado, em conjunto com outros odulos para obten¸ao e processamento dos
sinais neurais captados do duto ´optico da mosca.
O VSGImG ´e apresentado na Figura 12, no qual vemos a mosca em frente a um
monitor XY (de deflex˜ao eletrost´atica), sendo apresentado e ela um padr˜ao de odigo
de barras a uma taxa de 500 quadros por segundo.
Figura 12: Gerador de est´ımulos visuais VSImG (22).
Este padr˜ao, que possui resolu¸ao de 256x256 pixels e 256 n´ıveis de intensidade,
´e deslocado horizontalmente (a fim de gerar os est´ımulos desejados) feito de forma
anal´ogica, atraes da aplica¸ao de um tens˜ao de entrada junto ao canal de varredura
horizontal, o que permite um deslocamento muito suave da imagem.
27
2 O Experimento
O experimento consiste na apresenta¸ao de um est´ımulo visual controlado com uma
distribui¸ao de velocidades horizontais conhecida, em um monitor CRT de deflex˜ao eletro-
magn´etica. O neurˆonio H1 responder´a a esse tipo de movimento com a gera¸ao de spikes
(23), que ser˜ao captados extracelularmente por um micro-eletrodo. Ap´os a amplifica¸ao,
filtragem e discrimina¸ao adequada do sinal captado, os instantes t
i
de cada spike ser˜ao
armazenados no computador, para posterior an´alise, conforme apresentado no diagrama
em bloco da Figura 13.
Figura 13: Diagrama em bloco do experimento completo.
28
2.1 Prepara¸ao da mosca
As diferen¸cas anatˆomicas e estruturais entre o sistema visual de moscas machos e
fˆemeas ao conhecidas (24), embora ainda ao se saiba exatamente como isso afeta o
processamento da informa¸ao visual e qu˜ao diferenciado ele resulta. Por isso, todos os
experimentos foram realizados em moscas emeas, por possu´ırem um H1 de localiza¸ao
mais acil.
Primeiramente, a mosca ´e preparada para uma microcirurgia atrav´es de sua imobi-
liza¸ao com cera, posicionamento da mosca no suporte e posicionamento adequado da
cabca. Para manter a mosca viva por um longo per´ıodo de tempo - que pode chegar a
uma semana, em condi¸oes ambientais favor´aveis - ´e inserido um tubo de alimenta¸ao no
suporte que fica ao alcance da boca da mosca, fornecendo-lhe ´agua com c´ucar quando
necess´ario (Figura 14).
Figura 14: Mosca imobilizada para o experimento (25).
Com um microsc´opio e um micro-bisturi, num exerc´ıcio de habilidade motora ao feitas
incis˜oes seguidas pela remo¸ao do exoesqueleto protetor na parte posterior da cabca
da mosca. O interior da cabca fica ent˜ao exposto, e com um micro-gancho rompe-se
um m´usculo transparente de dif´ıcil visualiza¸ao, localizado ao longo do canto interno
29
do hemisf´erio exposto. Se isso ao for feito adequadamente, a aquisi¸ao de dados ´e
comprometida, pois esse m´usculo ´e uma grande fonte de ru´ıdos devido a suas contra¸oes
peri´odicas. Ainda com o gancho, remove-se cuidadosamente o tecido protetor que recobre
as camadas do erebro.
´
E posicionado enao o fio de referˆencia no canto inferior externo
da cabca da mosca (Figura 15).
Figura 15: Cabca da mosca exposta. Detalhe no zoom: traqu´eias respirat´orias e posi¸ao prov´avel
do sinal ´otimo do H1 (invis´ıvel a olho nu) (25).
A pr´oxima etapa consiste na localiza¸ao do sinal do neurˆonio H1 com micro-eletrodo
extracelular. Essa tarefa pode durar at´e horas e exige experiˆencia e intui¸ao por parte
do experimentador, uma vez que sua localiza¸ao ´e feita “`as cegas” dentro de uma regi˜ao
de maior probabilidade de encontr´a-lo, com a ajuda da sa´ıda de ´audio amplificada do
sinal el´etrico captado (Figura 16). Uma vez localizado o sinal do neurˆonio, ao realizados
micro-ajustes do micro-eletrodo, a fim de amplificar o sinal e reduzir o ru´ıdo proveniente
de outros neurˆonios e de traqu´eias respirat´orias que se encontram na regi˜ao (Figura 17).
30
Figura 16: Inser¸ao do micro-eletrodo extracelular no c´erebro da mosca. Esq: Mosca posicionada
para localiza¸ao do sinal. Dir: micro-eletrodo inserido com sinal detectado (25).
Figura 17: Tela do oscilosc´opio: sinal captado e discriminado em tempo-real (26).
2.2 Aquisi¸ao de dados neurais
Forneceremos a seguir uma vis˜ao geral da instrumenta¸ao utilizada no sistema de
aquisi¸ao de dados neurais, que vem sendo desenvolvida e aperfei¸coada no DipteraLab (27)
desde 1998. Toda a instrumenta¸ao de aquisi¸ao foi desenvolvida por nosso laborat´orio de
instrumenta¸ao aplicada, exclusivamente para a realiza¸ao desse tipo de experimento (22).
31
A aquisi¸ao do sinal pode ser dividida em cinco etapas principais, que apresentaremos na
Figura 18 a seguir.
Figura 18: As cinco principais etapas na aquisi¸ao do sinal: 1: Capta¸ao; 2: Amplifica¸ao; 3:
Filtragem; 4: Discrimina¸ao; 5: Registro dos tempos de ocorrˆencia (22).
1. Capta¸ao: Como em nossa pesquisa estamos interessados apenas nos spikes dis-
parados pelo neurˆonio H1 em resposta ao est´ımulo fornecido, foi feita a op¸ao de
aquisi¸ao extracelular do sinal, onde o micro-eletrodo ´e posicionado numa regi˜ao
externa por´em pr´oxima ao neurˆonio de interesse. Essa t´ecnica, sendo menos inva-
siva, permite a aquisi¸ao de sinais neuronais mais pr´oximos poss´ıveis das condi¸oes
naturais de funcionamento do H1, sem comprometer seriamente a dinˆamica interna
da c´elula e permitindo um n´ıvel de detalhe adequado ao que nos interessa.
Figura 19: Posicionamento ideal do micro-eletrodo extracelular em rela¸ao ao neurˆonio H1. Note
que se trata de uma montagem, uma vez que em condi¸oes naturais o H1 ao ´e vis´ıvel a olho nu
(25).
32
No meio extrafisiol´ogico, a intensidade do sinal propagado em volta do axˆonio do
neurˆonio H1 devido ao spike ´e da ordem de 20 - 100 µV. A capta¸ao desse sinal
foi feita por meio de um micro-eletrodo de tungstˆenio marca FHC, pr´oprio para
esse tipo de experimento. Esse micro-eletrodo tem seu corpo revestido por verniz
isolante de epoxi, sendo que apenas sua ponta fica exposta. Teremos uma maior ou
menor seletividade do sinal pelo micro-eletrodo conforme a ´area exposta da ponta.
Dado o grande umero de neurˆonios que disparam em resposta aos est´ımulos visuais,
´e importante ter um alto grau de seletividade de sinal, a fim de podermos captar
essencialmente o sinal de interesse. Assim, no nosso caso procuramos usar micro-
eletrodos com ´areas expostas menores, que garantem uma maior seletividade dos
sinais por´em com uma maior resistˆencia el´etrica em contrapartida - que com esses
n´ıveis de sinais neurais ao contribuir´a significativamente com ru´ıdos ermicos. As
impedˆancias dos micro-eletrodos utilizados variaram entre 2,7 - 5 M Ω.
2. Amplifica¸ao: A amplifica¸ao se dar´a em duas etapas:
Amplificador Diferencial: Foi utilizado um amplificador de instrumenta¸ao
que se encontra localizado imediatamente ap´os o micro-eletrodo. Isso ´e feito
para evitar a interferˆencia de mais ru´ıdos ao longo da transmiss˜ao de um sinal
sem amplifica¸ao. As duas entradas desse amplificador ser˜ao dadas pelo micro-
eletrodo, posicionado numa regi˜ao de axima proximidade ao neurˆonio H1,
e pelo fio de referˆencia, tamb´em posicionado dentro da cabca da mosca de
forma sim´etrica ao micro-eletrodo - em geral, no canto inferior da cabca aberta
(Figura 19). Essa configura¸ao permitir´a a elimina¸ao de ru´ıdos comuns a essas
duas entradas. O amplificador tamem atua como um filtro passa alta, para
freq
¨
uˆencias acima de 300 Hz, tendo conseq
¨
uentemente como sa´ıda um sinal
AC. Essa sa´ıda ter´a um ganho de voltagem de 100 vezes.
Amplificador Inversor: Nessa etapa, foi utilizado um amplificador operaci-
onal de baixo ru´ıdo, que amplificar´a o sinal tamem em 100 vezes e cuja sa´ıda
ser´a direcionada para o rack principal.
33
Ao fim da etapa de amplifica¸ao, o sinal ter´a sido amplificado cerca de 10.000 vezes,
atingindo enao a ordem de 1 volt, e a tendo sido pr´e-filtrado.
3. Filtragem: Para esse prop´osito, foram usados filtros ativos passa alta (freq
¨
uˆencia
de corte = 300 Hz ) e passa baixa (freq
¨
uˆencia de corte = 7 kHz), conformando
um filtro passa-banda que refina mais a banda de freq
¨
uˆencias desejadas, eliminando
componentes de altas e de baixas freq
¨
uˆencias.
4. Discrimina¸ao: O sinal antes de ser efetivamente discriminado passa por um mo-
nitor de ´audio que permite um monitoramento sonoro do sinal, que ser´a de grande
valia na prepara¸ao do experimento, durante a localiza¸ao do H1. A discrimina¸ao
se a por meio de um discriminador de janela de amplitude ajust´avel, com um li-
miar inferior (LI) e superior (LS) (Figura 18). Se o sinal estiver fora desse intervalo
(tanto para mais como para menos), nada acontece. Se o sinal estiver dentro dessa
janela de amplitude, isso elicita um pulso digital com largura fixa de 10 µs. Temos
assim a digitaliza¸ao do sinal captado por discrimina¸ao, onde se atribue o valor 1
para cada pulso gerado pelo discriminador e um valor 0 quando nada ´e detectado.
5. Registro dos tempos de ocorrˆencia: Nessa etapa, para cada spike (= 1) ser´a
atribu´ıdo seu respectivo instante temporal t
i
. No sistema de aquisi¸ao utilizado em
nossos experimentos, isso foi feito com o auxilio do ’Registro de tempo de ocorrˆencia’
(Figura 13), cujo rel´ogio tem resolu¸ao de 1 µs. O instante de cada disparo ser´a
registrado num arquivo de dados, no computador hospedeiro.
34
2.3 O est´ımulo
O est´ımulo visual ´e realizado movendo-se uma imagem fixa de maneira horizontal,
com velocidade v(t). os discretizamos o tempo em intervalos denominados bins, com 5
ms, valor pr´oximo ao per´ıodo refrat´ario dos neurˆonios H1 (2 ms). A mosca ent˜ao vˆe um
novo quadro no monitor a cada δt = 5 ms, o qual muda sua posi¸ao δx de acordo com
δx(t) = v(t)δt.
A velocidade v(t) ´e gerada por um processo Ornstein-Uhlenbeck com tempos de corre-
la¸ao τ
c
= 20 ms. Esse processo ´e detalhado no Apˆendice E. O est´ımulo ´e tomado a partir
de uma distribui¸ao gaussiana com fun¸ao de correla¸ao C(t) = e
t/τ
c
. O experimento
dura 20 minutos, consistindo de trechos repetidos com dura¸ao de 10 segundos. Em cada
trecho, nos primeiros 5 segundos o mesmo est´ımulo ´e apresentado, sendo que nos pr´oximos
5 segundos a mosca vˆe um est´ımulo diferente, assim como apresentado na Figura 20.
Figura 20: Est´ımulo: velocidades horizontais para o deslocamento de uma imagem fixa. Os
primeiros 5 segundos constituem o est´ımulo a ser repetido, e os demais 5 segundos constituem
um padr˜ao aleat´orio, para evitar a adapta¸ao do sistema visual da mosca (23).
35
3 Metodologia
Nesse cap´ıtulo ao detalhados os materiais utilizados, e ao apresentadas as diversas
abordagens utilizadas para tratar o problema da gera¸ao de est´ımulos visuais para o estudo
de neurociˆencia com insetos. Durante todo o projeto, a linguagem de desenvolvimento
utilizada foi o Verilog (28).
3.1 Kits de desenvolvimento utilizados
A maior parte da eletrˆonica utilizada foi baseada em kits de desenvolvimento de
FPGA. Nas diferentes abordagens, foram utilizados chips dos dois principais fabricantes
mundiais: as empresas Altera e Xilinx. Os softwares de desenvolvimento utilizados foram
o Quartus 9.0 e o ISE Design Suite 10.1. A Figura 21 apresenta o kit DE2, com chip
FPGA da familia Cyclone II da Altera. Trata-se do kit mais popular no meio acadˆemico,
al´em de possuir custo acess´ıvel. Suas caracter´ısticas mais relevantes para as finalidades
do projeto ao listadas a seguir.
FPGA Altera Cyclone II EP2C35F672C6 com 33.216 elementos l´ogicos, 483.840 bits
de mem´oria, 4 PLLs e 475 pinos;
Mem´oria SRAM com 512 Kbytes (tempo de acesso de 10 ns);
36
Figura 21: Kit de desenvolvimento DE2 (29).
Mem´oria SDRAM com 8 Mbytes;
DAC de v´ıdeo com 10 bits por canal e com banda de 140 MHz (modelo ADV7123);
Interfaces Ethernet e USB em hardware;
Conectores de expans˜ao IDC-40, mapeados como General Purpose I/O (GPIO).
Na linha das FPGAs mais avan¸cadas atualmente, encontra-se a fam´ılia Stratix III da
Altera. A Figura 22 apresenta o kit DE3, do fabricante Terasic. Seu custo ´e considera-
velmente elevado, e suas caracter´ısticas principais ao listadas a seguir.
FPGA Altera Stratix III EP3SL150F1152C2 com 170.400 elementos ogicos, 5.630.976
bits de mem´oria, 8 PLLs e 744 pinos;
Conectores de expans˜ao IDC-40, mapeados como General Purpose I/O (GPIO);
Conectores HSTC de alta velocidade.
Al´em de possuir uma grande quantidade de elementos l´ogicos e bits de mem´oria, o kit
DE3 possui PLLs ao mais avan¸cadas, permitindo o ajuste de freq
¨
uˆencias intermedi´arias
37
com maior precis˜ao e estabilidade. Os conectores HSTC apresentam uma grande quanti-
dade de pinos, sendo que cada um dos quatro conectores encontrados no kit pode se ligar
a um adaptador com trˆes conectores IDC-40 na modalidade GPIO. Al´em das conex˜oes
para aterramentos e alimenta¸oes, temos a possibilidade de ligar cerca de 400 pinos de
entrada e sa´ıda `a esse kit, ao passo que, o modelo DE2 permite a conex˜ao de pouco mais
de 60 pinos.
Figura 22: Kit de desenvolvimento DE3 com adaptador HSTC para GPIO (29).
A Figura 23 apresenta o kit de desenvolvimento ML505 da Xilinx. Esse kit possui
FPGA da familia Virtex-5 e tamb´em faz parte da linha de modelos mais avan¸cados da
atualidade, al´em de possuir conex˜ao para barramento PCI-Express.
FPGA Xilinx Virtex-5 XC5VLX50T;
Conector PCI Express Edge Connector (x1 Endpoint);
Sa´ıda VGA/DVI;
Gerador de clock de sistema program´avel.
38
O uso do barramento PCI-Express como duto para troca de dados entre o computa-
dor hospedeiro e a instrumenta¸ao desenvolvida representa o maior atrativo desse kit de
desenvolvimento. Seu custo ´e intermedi´ario dentre os custos dos kits descritos anterior-
mente.
Figura 23: Kit de desenvolvimento ML505 da Xilinx (30).
3.2 Primeira abordagem: controle do monitor XY
No in´ıcio do desenvolvimento, estipulou-se a necessidade de averiguar como as FPGAs
iriam se comportar frente `a tarefa de gera¸ao de sinais de v´ıdeo com altas taxas de
amostragem. Caracter´ısticas inerentes `as FPGAs, como atrasos de clock (clock skew),
glitches durante cruzamentos de dom´ınios de clock, metaestabilidade, jitter, dentre out-
ras, colocavam em d´uvida se as mesmas seriam capazes de realizar essa tarefa de forma
adequada e sem a introdu¸ao de artefatos visuais.
Uma possibilidade seria tentar gerar um padr˜ao de imagem nos monitores XY veto-
39
riais atualmente utilizados em nosso laborat´orio, com taxa de 500 quadros por segundo.
Foi projetado ent˜ao um processador gr´afico simplificado, e um padr˜ao de barras foi ar-
mazenado em uma LUT implementada utilizando os bits de mem´oria internos da FPGA.
Para esse experimento, foi utilizado o kit DE2. Como a sa´ıda do DAC de v´ıdeo desse
kit atua na faixa anal´ogica do sinal de v´ıdeo, entre 0 e 1 volt, circuitos eletrˆonicos foram
constru´ıdos externamente ao kit com a finalidade de de gerar as amplitudes da ordem de 0
a 10 volts, necess´arias ao controle do monitor XY. A Figura 24 apresenta esse experimento
em funcionamento.
Figura 24: Gerador de est´ımulos visuais operando em monitor XY.
3.3 Segunda abordagem: utiliza¸ao do NIOS e uClinux
Uma vez comprovada a capacidade das FPGAs em gerar e manter os sinais de sin-
cronismo da varredura do v´ıdeo, mesmo com altas taxas de amostragem (como foi com-
provado na se¸ao anterior), a pr´oxima etapa no desenvolvimento do projeto consistia em
40
estabelecer uma forma de enviar informa¸oes a partir de um computador hospedeiro para
o sistema, de forma est´avel e robusta.
Dada a necessidade de enviar o padr˜ao de imagem a ser exibido, doravante denomi-
nado simplesmente por monet, assim como as informa¸oes sobre o deslocamento a ser
realizado na imagem, foi utilizada uma abordagem muito atual, na qual um processador
baseado em s´ıntese ogica (softcore) foi utilizado e, sobre o mesmo, foi executado o sis-
tema operacional uClinux (31). A mem´oria externa SDRAM (8 Mbytes) foi utilizada
pelo sistema operacional embarcado, e a imagem do sistema de arquivos foi carregada
diretamente, por meio da interface JTAG.
A arquitetura do processador gr´afico, desenvolvida anteriormente, foi adaptada para
uso em monitores CRT de deflex˜ao eletromagn´etica (com gera¸ao de sincronismos horizon-
tal e vertical), operando inicialmente em 150 Hz. Foram acrescentadas ogicas adicionais
para realiza¸ao do deslocamento da imagem, com base em registradores de entrada espec´ı-
ficos para essa finalidade. Tamb´em foi adicionada ogica para gera¸ao de uma sa´ıda com
a finalidade de indicar a mudan¸ca de quadros na gera¸ao do v´ıdeo (sincronismo vertical).
Figura 25: Arquitetura do gerador de est´ımulos utilizando uClinux.
Nessa arquitetura, o monet ´e carregado diretamente por interm´edio de uma ogica de
controle, operando por meio da porta USB. O processador softcore NIOS II fica, enao,
encarregado de receber os est´ımulos pela interface Ethernet e repass´a-los para o proces-
sador gr´afico (utilizando um porto de entrada e sa´ıda em seu barramento, padr˜ao Avalon),
41
cada vez que esse ´ultimo gera uma interrup¸ao indicando requisi¸ao de novo quadro.
O sistema operacional uClinux fica encarregado do gerenciamento da rede TCP/IP, em
execu¸ao sobre a interface Ethernet, e tamb´em pelo gerenciamento das mem´orias FIFO,
dentro do espa¸co do kernel, as quais mant´em as informa¸oes dos est´ımulos at´e que um
pedido de interrup¸ao seja realizado.
Os arquivos de est´ımulo s˜ao ent˜ao acessados diretamente pela rede, utilizando mapea-
mento de disco por NFS. Um aplicativo rodando no espa¸co do usu´ario realiza as leituras
dos est´ımulos, repassando os dados das mesmas a um odulo do kernel especialmente
desenvolvido para essa aplica¸ao, conforme ilustrado na Figura 26.
Figura 26: Rela¸ao entre os espa¸cos do usu´ario e do kernel: acesso aos registradores
O odigo fonte completo do processador gr´afico ´e apresentado no Apˆendice B. Um
estudo completo e detalhado sobre a utiliza¸ao do sistema operacional uClinux sobre o
processador NIOS II ´e detalhado pelo autor em (32).
42
3.4 Terceira abordagem: deslocamento da imagem
baseado em FIFO
Na se¸ao anterior foi explorada uma das formas de realizar a interface entre um sis-
tema utilizando FPGA com um computador hospedeiro. Outra maneira de implementar
essa interface se faz com a elabora¸ao um tipo de circuito eletrˆonico customizado, tamem
chamado de “glue logic”, no qual a FPGA se torna uma ponte entre o computador hos-
pedeiro e os perif´ericos que se pretende controlar. Nessa abordagem, ´e utilizada a pr´opria
FPGA como ponte entre o computador hospedeiro e o processador gr´afico.
A Figura 27 apresenta a arquitetura dessa nova abordagem. Assim como na abor-
dagem anterior, o monet continua sendo carregado pela interface USB, em uma mem´oria
RAM de duas portas, cuja a segunda porta ´e controlada diretamente pelo processador gr´a-
fico, o qual realiza a requisi¸ao do valor do pixel correspondente ao instante da varredura.
O processador softcore foi substitu´ıdo por uma mem´oria FIFO de clock duplo, criada
por meio da Megafun¸ao DC-FIFO (33), um IP Core fornecido pela Altera. De um lado
da FIFO, o computador hospedeiro, utilizando a porta paralela em modo padr˜ao (SPP),
envia os est´ımulos. O clock de escrita ´e determinado pelo computador, o qual tamb´em
monitora um flag que indica quando a FIFO est´a preenchida pela metade.
Figura 27: Arquitetura do gerador de est´ımulos baseado em FIFO.
43
Do outro lado da FIFO, o clock de leitura ´e determinado pelo dot-clock do proces-
sador gr´afico, o que evita problemas de clock-skew, dada a mudan¸ca de dom´ınios de clock.
Embora o dot-clock seja alto (84,164 MHz), os dados de est´ımulo que informam o desloca-
mento do v´ıdeo ao liberados apenas ap´os o recebimento do sinal de mudaca de quadro
(sincronismo vertical) com taxa de 200 Hz, gerado a partir de uma sa´ıda registrada no
processador gr´afico.
odigo 1 Sa´ıda registrada do sinal de sincronismo vertical.
output reg VERT_out;
reg VERT_in;
always@(posedge iCLK)
begin
VERT_out<=VERT_in;
end
Como o sinal de sincronismo vertical (originalmente desenvolvido para atender as
exigˆencias da temporiza¸ao do v´ıdeo) era muito longo, a FIFO apresentava problemas em
seu funcionamento, esporadicamente liberando mais de um dado e causando flickers no
sistema gerador de est´ımulos.
Uma solu¸ao encontrada foi a utiliza¸ao da fun¸ao PULSO, a qual gera um pulso curto
quando uma borda de subida ´e detectada. Seu c´odigo ´e descrito a seguir e sua arquitetura
´e apresentada na Figura 28.
odigo 2 Fun¸ao PULSO para gerar um pulso curto quando uma borda de subida ´e
detectada.
module pulso(output reg pulse_out, input trigger_in, input clk);
reg delay;
always @ (posedge clk)
begin
if (trigger_in && !delay) pulse_out <= 1’b1;
else pulse_out <= 1’b0;
delay <= trigger_in;
end
endmodule
Nessa abordagem foram utilizados kits DE2 e DE3, conforme mostrado pela Figura 29.
Por´em, toda a arquitetura foi implementada utilizando-se apenas o kit DE2. O kit DE3
44
Figura 28: Arquitetura da fun¸ao PULSO, para gerar um pulso curto quando uma borda de
subida ´e detectada.
foi utilizado apenas para gera¸ao do dot-clock, uma vez que suas PLLs, mais elaboradas,
permitem a convers˜ao do clock do sistema (50 MHz) para o dot-clock (84,164 MHz). Os
diagramas RTL das implementa¸oes de ambos os kits se encontram no Apˆendice D.
Figura 29: Gerador de est´ımulos baseado em FIFO em funcionamento.
3.5 Quarta abordagem: controle de dois monitores
As pesquisas desenvolvidas no laborat´orio Dipteralab tamem envolvem a estimula¸ao
independente de cada olho da mosca, com a aquisi¸ao de dois sinais neurais e a apresen-
45
ta¸ao de dois est´ımulos visuais independentes (34). A Figura 30 apresenta a arquitetura
utilizada em uma abordagem inicial para tratar dessa necessidade.
Figura 30: Arquitetura do gerador de dois monitores: utiliza¸ao h´ıbrida dos kits DE2 e DE3.
Nessa arquitetura foram utilizados dois kits DE2 e um kit DE3. Dois processadores
gr´aficos independentes foram implementados na FPGA Stratix, do kit DE3, comparti-
lhando do mesmo dot-clock. O acesso dos processadores gr´aficos `as mem´orias de video e
aos DACs foi realizado por meio da interface GPIO. Como o objetivo dessa abordagem
era simplesmente averiguar o controle de dois monitores simultˆanetamente, ao foram
inseridas as FIFOs de est´ımulo na arquitetura. Na Figura 31, que mostra o sistema em
funcionamento, ´e poss´ıvel observar todos os kits conectados por cabos IDC de 40 vias
(mesmo padr˜ao dos cabos de hard disks IDE).
46
Figura 31: Gerador de est´ımulos de dois monitores em funcionamento.
3.6 Quinta abordagem: verifica¸ao de erros e con-
trole do cursor
Nas abordagens anteriores, ao houve preocupa¸ao com a verificao da validade dos
dados do est´ımulo. Tamb´em ao era poss´ıvel realizar o envio de outros tipos de est´ımulo,
al´em da informa¸ao de deslocamento. A fim de tratar dessas quest˜oes, foi desenvolvida
uma arquitetura para um controlador de comunica¸ao por meio do porto paralelo, per-
mitindo valida¸ao dos dados e recebimento de outros tipos de est´ımulos (Figura 32).
Essa arquitetura foi desenvolvida para responder automaticamente `as requisi¸oes do
porto paralelo do computador hospedeiro, quando configurado em modo EPP (35). Essa
arquitetura mant´em um registrador especial para armazenar o valor do checksum (soma de
todos os bytes) dos valores recebidos. Esse registrador ´e automaticamente recalculado na
FPGA, sendo fornecido ao computador de controle, sempre que requerido. O computador,
por sua vez, mant´em seu pr´oprio controle de checksum, a fim de verificar se os valores ao
47
Figura 32: Arquitetura de comunica¸ao e verifica¸ao de erros.
coincidentes.
Os c´odigos das fun¸oes em Matlab para comunica¸ao com essa interface est˜ao listados
no Apˆendice A, e o odigo fonte em Verilog do controlador EPP encontra-se listado no
Apˆendice B.
Uma vez que o controlador EPP realiza o tratamento dos dados de chegada, pode-
se decidir o destino dos mesmos dentro do sistema. Nessa abordagem, optou-se por
implementar um cursor junto `a imagem do v´ıdeo. A posi¸ao desse cursor ´e atualizada
pelo computador de controle, o qual especifica que tipo de dado est´a sendo enviado, quer
seja um deslocamento horizontal ou as coordenadas do cursor.
A apresenta¸ao de est´ımulos visuais mistos em diferentes camadas tem sido objeto
de discuss˜ao recente nas pesquisas em neurociˆencia da vis˜ao. A Figura 33 apresenta esse
sistema em funcionamento.
48
Figura 33: Controle do cursor em funcionamento.
3.7 Sexta abordagem: amplia¸ao da capacidade ho-
rizontal
Nas abordagens realizadas at´e agora, o ´unico aspecto relacionado ao sistema visual
da mosca levado em considera¸ao havia sido a taxa de amostragem, da ordem de 200
quadros por segundo. Essa se¸ao visa analisar a forma como a resolu¸ao espacial da
imagem apresentada ´e percebida pelos foto-receptores nos omat´ıdeos da mosca.
Inicialmente ´e necess´ario determinar o dot-pitch efetivo do monitor CRT utilizado.
Trata-se de um modelo Studioworks 221U da marca LG, com diˆametro de tela de 21
polegadas, banda de 250 MHz, resolu¸ao m´axima de 1600x1200 pixels e dot-pitch nominal
de 0, 266mm (36). Para atingir a taxa de 200 quadros por segundo, ´e necess´ario reduzirmos
a resolu¸ao do monitor, a fim de ao ultrapassar a banda de v´ıdeo suportada. Nesse
sistema utilizou-se ent˜ao a resolu¸ao de 640x480 pixels.
Com essa resolu¸ao, em um monitor com tela de 21 polegadas, obtemos um dot-pitch
efetivo de 0, 666mm, de acordo com a equa¸ao 3.1, extra´ıda de Compton (12).
49
DOT P IT CH EF ET IV O =
horizontal
horizontal
2
+vertical
2
(diagonal25.4)
horizontal
(3.1)
Se considerarmos a estrutura de distribui¸ao dos omat´ıdeos da mosca, veremos que
existe um alinhamento de um grau entre cada omat´ıdeo. Com a mosca posicionada a
uma distˆancia de 10cm (R = 100mm) da tela do monitor (Figura 34), e de acordo com a
equa¸ao 3.2, obtemos x = 1, 745mm.
Figura 34: Estrutura dos omat´ıdeos no olho da mosca com alinhamento de um grau (1).
x =
R.π
180
(3.2)
Em uma an´alise inicial, o sistema ´e satisfat´orio, pois o valor m´ınimo do deslocamento
da imagem (0, 666mm) ´e menor do que o valor m´ınimo detectado pelos omat´ıdeos `a
distˆancia de 10 cm (1, 745mm). Por´em, levando em conta o que foi discutido na se¸ao 1.2,
o olho composto das moscas possui rabdomas abertos, o que contribui para o aumento
efetivo da resolu¸ao espacial percebida pelo inseto.
Como ao existem estudos conclusivos sobre o qu˜ao efetiva ´e a capacidade de per-
cep¸ao da resolu¸ao espacial das moscas, o desafio reside em se criar um sistema visual
que apresente um deslocamento horizontal maior do que a pr´opria resolu¸ao utilizada no
monitor.
50
3.7.1 A t´ecnica ‘Passos Artificiais Entre-Pixels’
A fim de atingir uma precis˜ao de posicionamento maior do que a pr´opria resolu¸ao
da varredura horizontal do monitor, foi desenvolvida a t´ecnica em quest˜ao. Seu princ´ıpio
de funcionamento consiste no fato de que, dada uma imagem original, se amostrarmos
a mesma tomando conjuntos de pixels vizinhos, e separando esses conjuntos em imagens
intermedi´arias menores (Figura 35), a apresenta¸ao seq
¨
uencial dessas imagens no tempo
gera um efeito visual de deslocamento na dire¸ao do est´ımulo.
Figura 35: Gera¸ao das imagens com diferentes amostragens utilizando a ecnica ‘Passos Artifi-
ciais Entre-Pixels’: a: imagem original; b: colunas pares e ´ımpares; c: imagem par; d: imagem
´ımpar.
O odigo a seguir apresenta como ´e realizada a gera¸ao das imagens amostradas para
conjuntos de dois grupos de pixels vizinhos, utilizando o software Matlab. A Figura
36 tenta ilustrar o efeito causado, com base na amplia¸ao exata de uma mesma regi˜ao
nas duas imagens geradas. Percebe-se nitidamente a impress˜ao visual de deslocamento,
embora o efeito seja mais simples de ser visualizado com a imagem em movimento.
51
odigo 3 Script em Matlab para amostrar duas imagens a partir da original.
I = imread(’imagem.bmp’); % Carrega imagem original (1280x960)
I=rgb2gray(I); % Converte para tons de cinza
A=I(1:2:end,1:2:end); % Extrai pixels (primeira amostragem)
B=I(1:2:end,2:2:end); % Extrai pixels (segunda amostragem)
imwrite(A,’amostragem1.bmp’,’BMP’) % Armazena imagem A (640x480)
imwrite(B,’amostragem2.bmp’,’BMP’) % Armazena imagem B (640x480)
Figura 36: Detalhe do funcionamento do efeito ‘entre-pixel’: as imagens ampliadas em destaque
correspondem a amplia¸ao exata da mesma regi˜ao nas duas imagens amostradas.
3.7.2 A arquitetura para gera¸ao dos ‘Passos Artificiais Entre-
Pixels’
A fim de gerar o efeito desejado, a arquitetura deve inicialmente comportar uma
quantidade de frame-buffers de v´ıdeo igual ao n´umero de imagens amostradas. A Figura
37 apresenta a arquitetura desenvolvida para duas imagens.
Agora, os est´ımulos s˜ao mapeados utilizando-se 10 bits, sendo o bit menos significativo
52
Figura 37: A arquitetura para gera¸ao dos ‘Passos Artificiais Entre-Pixels’.
respons´avel pela sele¸ao de qual frame-buffer estar´a ativo no momento da varredura do
v´ıdeo. Essa arquitetura passa a utilizar a interface EPP desenvolvida, para envio dos
dados `a FIFO de est´ımulo e tamem para carregamento dos monets aos frame-buffers.
Para ampliar ainda mais a resolu¸ao no efeito de posicionamento horizontal, ´e necess´ario
tomar um conjunto maior de grupos de pixels durante a amostragem, ampliar a quantidade
de frame-buffers de v´ıdeo, e realizar a multiplexa¸ao utilizando a quantidade correspon-
dente de bits menos significativos do est´ımulo.
3.8 S´etima abordagem: integra¸ao entre FPGA e GPU
A gera¸ao de est´ımulos visuais mais aprimorados, como cenas em 3D, ao ´e efetiva-
mente explorada experimentalmente devido `a complexidade em modelar o sistema visual
da mosca para esse tipo de est´ımulo. Por´em, uma proposta de abordagem, pensando na
necessidade futura desse tipo de experimento, ´e tratada aqui.
A id´eia principal ´e fazer uso das ferramentas e odigos livres dispon´ıveis, que ao
53
abundantes na ´area, a adapt´a-los `as necessidades de nossos experimentos.
A primeira ferramenta necess´aria ´e um engine 3D. O mais indicado para nossa utiliza-
¸ao ´e o Ogre3D (37), devido a seu tipo de licen¸ca, o qual permite o re-desenvolvimento e
altera¸ao dos ´ultimos est´agios do pipeline 3D em seu odigo fonte. A Figura 38 apresenta
uma cena 3D natural´ıstica renderizada pelo engine Ogre, com 6.500 triˆangulos, calculada
a uma taxa de 33 quadros por segundo.
Figura 38: Cena 3D natural´ıstica renderizada pela plataforma Ogre 3D.
Pretende-se ent˜ao utilizar o engine Ogre para carregamento e defini¸ao dos elemen-
tos da cena, como objetos e luzes, e redirecionar o pipeline de renderiza¸ao 3D para a
arquitetura proposta, formada pela integra¸ao de FPGA e GPU. Basicamente, podemos
definir os est´agios desse pipeline da seguinte maneira:
alculo de perspectiva;
Gera¸ao de v´ertices;
Enquadramento (Clipping);
Elimina¸ao por profundidade (Z-Buffer);
Exibi¸ao (Sa´ıda de v´ıdeo).
54
Os dois primeiros ´ıtens, c´alculo de perspectiva e gera¸ao de v´ertices, demandam muito
processamento em ponto flutuante, o que sabemos consumir muitos recursos quando im-
plementados em FPGA. a os demais ´ıtens podem ser implementados com relativa sim-
plicidade e expectativa de ganho de performance.
Rollins (38) escreveu um algoritmo completo de tra¸cado de raios para a plataforma
CUDA(39) da NVidia, utilizando as vantagens do paralelismo desse sistema. A partir de
seu trabalho, foi enao desenvolvida a arquitetura apresentada na Figura 39.
Figura 39: Arquitetura da integra¸ao entre FPGA e GPU.
O c´alculo de perspectiva e a gera¸ao de v´ertices foram mantidos dentro da arquitetura
CUDA, devido `a utiliza¸ao de recursos em ponto flutuante. a o alculo de clipping (que
determina quais objetos est˜ao enquadrados na vis˜ao da amera) e determina¸ao de z-buffer
(que descarta os objetos que est˜ao obstru´ıdos por outros no plano da cˆamera), assim como
a sa´ıda final do frame buffer de v´ıdeo, foram implementados na FPGA, utilizando o kit
de desenvolimento ML505 da Xilinx.
Para integrar as duas arquiteturas foi utilizado o barramento PCI-Express. Para lidar
com os complicados n´ıveis de sinais LVDS e as sincroniza¸oes cr´ıticas desse barramento
foi utilizado um IP Core do ambiente de programa¸ao ISE, entitulado LogiCore ‘Endpoint
Block Plus Wrapper for PCI Express’, o qual proe uma interface direta para a mem´oria
SDRAM no kit.
55
Os resultados desse sistema ao apresentados na Figura 40, onde em destaque ´e pos-
s´ıvel visualizar o kit ML505 e a placa de v´ıdeo NVidia 8600 no computador hospedeiro, e
ao lado, uma cena em 3D gerada no monitor de apoio, ligado ao kit da FPGA.
Figura 40: Sistema integrado entre FPGA e GPU em funcionamento.
56
57
4 Resultados e Discuss˜ao
arias das abordagens apresentadas no cap´ıtulo 3 tiveram seus resultados apresenta-
dos ao final de sua descri¸ao, com a apresenta¸ao do equipamento em funcionamento.
Nesse cap´ıtulo, vamos nos ater aos resultados obtidos com experimentos utilizando o
sistema visual da mosca propriamente dito, utilizando aquisi¸oes neurais do erebro do
animal. As duas abordagens que foram testadas em laborat´orio com o sistema visual da
mosca foram:
Deslocamento da imagem baseado em FIFO (se¸ao 3.4);
Amplia¸ao da capacidade horizontal (se¸ao 3.7.)
4.1 ‘Deslocamento da imagem baseado em FIFO’
Inicialmente pretende-se validar o sistema, comparando-o com o atual equipamento
utilizado no laborat´orio, o VSImG, apresentado na se¸ao 1.5. Uma vez que o sistema
proposto opera em 200 Hz, e o VSImG opera em 500 Hz, foi necess´ario gerar um est´ımulo
com mil pontos, sendo que a cada 5 pontos foi tomada uma amostra para gerar o est´ımulo
58
de 200 Hz, e a cada 2 pontos, foi tomada outra amostra, agora para formar o est´ımulo
de 500 Hz, conforme apresentado na Figura 41. Esse procedimento garantiu que ambos
os est´ımulos visuais se comportassem da mesma forma, com as mesmas velocidades e a
mesma dura¸ao.
Figura 41: Gera¸ao do mesmo est´ımulo com duas amostragens: Losangos: amostragem de 200
Hz; Pontos: amostragem de 500 Hz.
Preparada a mosca, foi realizado o experimento utilizando o VSImG, com dura¸ao
de 20 minutos. A mosca foi posicionada `a uma distˆancia de 10 cm da tela, com brilho
ajustado para gerar fluxo luminoso de 5 lux. O deslocamento m´aximo da tela foi ajustado
em 7 cm.
Ap´os o ermino do experimento padr˜ao, e utilizando-se a mesma mosca, um novo
experimento foi realizado, com o gerador baseado em FIFO, conforme mostra a Figura
42.
As caracter´ısticas principais do experimento foram mantidas, com a mosca posicionada
a 10 cm do centro da tela, fluxo luminoso ajustado em 5 lux, e o deslocamento aximo
da tela ajustado em 7 cm. A temperatura ambiente se manteve em 24
o
C em ambos os
experimentos. O resultado pode ser visualizado na Figura 43, que apresenta o diagrama
Raster do experimento. Um diagrama Raster ´e gerado a partir de uma dada lista de spikes
59
Figura 42: Experimento realizado com gerador baseado em FIFO.
gerada devido `a execu¸ao repetitiva do mesmo ciclo de est´ımulos.
Outra forma de visualizar os resultados da aquisi¸ao neural ´e utilizando o chamado
PSTH (Peristimulus Time Histogram), ou simplesmente gr´afico das taxas de disparo,
conforme apresentado na Figura 44. Nessa figura ao apresentadas ambas as taxas de
disparo registradas nos dois experimentos, sendo que as barras em azul correspondem
ao VSImG, e as barras em vermelho, ao gerador baseado em FIFO. Dado que as barras
ao transparentes, ´e poss´ıvel perceber que ambos os sistemas obtiveram taxas de disparo
significativamente similares, validando ent˜ao nosso sistema.
60
Figura 43: Raster do experimento realizado pelo gerador baseado em FIFO.
Figura 44: Compara¸ao entre os PSTH do dois sistemas: Azul: VSImG; Vermelho: Gerador
baseado em FIFO.
4.2 ‘Amplia¸ao da capacidade horizontal’
O sistema de amplia¸ao da capacidade horizontal foi utilizado em um experimento
com o sistema visual da mosca, conforme apresentado na Figura 45. O experimento foi
61
realizado duas vezes, com a mesma mosca, sendo que na primeira vez o efeito ‘entre-pixel’
foi desabilitado, para atuar como experimento de controle.
Figura 45: Sistema em funcionamento apresentando padr˜ao natural´ıstico.
Para saber se o efeito ‘entre-pixel’ produziu os resultados desejados, deve-se fazer uso
do histograma ISI (Inter Spike Interval), o qual apresenta os intervalos entre os disparos.
Esperamos que, se a precis˜ao do deslocamento horizontal for melhorada, o n´umero de
intervalos curtos entre os spikes deva diminuir.
Os histogramas ISI da Figura 46 mostram claramente uma diminui¸ao do n´umero de
intervalos nos experimentos, sendo que na Figura 46-c podemos visualizar a ocorrˆencia da
diminui¸ao dos intervalos curtos, entre 1 e 2 bins, validando enao o sistema proposto.
62
Figura 46: Histograma de intervalos: a: experimento padr˜ao; b: experimento com efeito ‘entre-
pixel’; c: diferen¸ca entre o padr˜ao e o efeito ‘entre-pixel’, apresentando diminui¸ao para os
intervalos curtos, entre 1 e 2 bins.
63
5 Conclus˜oes
Foram desenvolvidos com sucesso diversos geradores de est´ımulos visuais utilizando
circuitos FPGA. A grande flexibilidade oferecida pelo uso desta tecnologia, que permite
constantes reconfigura¸oes do hardware (utilizando a linguagens de programa¸ao Verilog)
permitiu a avalia¸ao de diversos prot´otipos.
Em um dos prot´otipos foi utilizada uma abordagem com uso de processador baseado
em s´ıntese ogica NIOS II e sistema operacional µClinux, onde tivemos como vantagem
a interface com sistemas externos para acesso aos dados dos est´ımulos, por´em, dado o
ao determinismo do kernel (seria necess´ario um kernel de tempo-real), o sistema ao se
configurou como apto para experimentos com o sistema visual da mosca, apresentando
jitter sobre o deslocamento desejado.
Num outro prot´otipo, foram implementados dois frame-buffers, cada um contendo uma
imagem do monet com deslocamento horizontal de meio pixel. Com esta nova t´ecnica, foi
poss´ıvel duplicar artificialmente a resolu¸ao horizontal de posicionamento, atingindo 1024
n´ıveis de deslocamento em um monitor com varredura de 640 colunas.
Implementou-se tamb´em uma configura¸ao capaz de produzir simultaneamente dois
est´ımulos visuais. Com esta configura¸ao, torna-se poss´ıvel realizar experimentos en-
volvendo dois monitores, ou agregar num ´unico monitor a sobreposi¸ao de um segundo
est´ımulo, controlando o deslocamento de um cursor.
Embora originalmente projetada para estimular a vis˜ao de insetos da ordem Diptera,
essa nova arquitetura pode ser utilizada em outros experimentos que necessitam est´ımulos
visuais, inclusive para utiliza¸ao com humanos.
64
65
Referˆencias
1 MOSES, K. Fly eyes get the whole picture. Nature, v. 443, n. 12, p. 638–639, 2006.
2 ZELHOF, A. et al. Transforming the architecture of compound eyes. Nature, v. 443,
n. 12, p. 696–699, 2006.
3 TATLER, B.; O’CARROL, D.; LAUGHLIN, S. Temperature and the temporal resol-
ving power of fly photoreceptors. Journal of Comparative Physiology A, v. 186, n. 4,
p. 399–407, 2000.
4 MCCANN, G.; MACGINITIE, G. Optomotor response studies of insect vision. Pro-
ceedings of the Royal Society B: biological sciences, v. 163, n. 992, p. 369–401, 1965.
5 BORST, A.; HAAG, J. Neural networks in the cockpit of the fly. Journal of Compar-
ative Physiology A, v. 188, n. 6, p. 419–437, 2002.
6 BURKHARDT, D. Autrum’s impact on compound eye research in insects. In:
STAVENGA, D. G.; HARDIE, R. C. (Ed.). Facets of vision. Heidelberg: Springer-
Verlag Berlin, 1989.
7 LAUGHLIN. The roles of the parallel channels in the early visual processing by the
arthropod compound eye. In: ALI, M. (Ed.). Photoreception and vision in inverte-
brates. New York: Plenum Press, 1982.
8 HAUSEN, K. The lobula-complex of the fly: structure, function and significance in
visual behaviour. In: ALI, M. (Ed.). Photoreception and vision in invertebrates. New
York: Plenum Press, 1982. v. 74.
9 FAIRHALL, A. et al. Efficiency and ambiguity in an adaptive neural code. Nature,
v. 412, n. 6849, p. 787–792, Aug. 2001.
10 GARC´ıA-P´eREZ, M.; PELI, E. Luminance artifacts of cathode-ray tube displays for
vision research. Spatial Vision, v. 14, n. 2, p. 201–215, 2001.
11 WIKIPEDIA’S definition for CRT Monitor. Dispon´ıvel em:
<http://en.wikipedia.org/wiki/Cathode ray tube>. Acesso em: Jul. 2009.
66
12 COMPTON, K. Image performance in CRT displays. [S.l.]: SPIE Publications, 2003.
13 ZELE, A.; VINGRYS, A. Cathode-ray-tube monitor artefacts in neurophysiology.
Journal of Neuroscience Methods, v. 141, n. 1, p. 1–7, 2005.
14 FLANAGIN, V. Dynamic adaptation in fly motion vision. 2006. 113 p. (Masters The-
sis) - Ludwig-Maximilians Universit
¨
at, M
¨
unchen, 2006.
15 REINAGEL, P. et al. Encoding of visual information by lgn bursts. The American
Physiological Society, v. 81, n. 5, p. 2558–2569, 1999.
16 BORST, A. Noise, not stimulus entropy, determines neural information rate. Journal
of Computational Neuroscience, v. 14, p. 23–31, 2003.
17 WARZECHA, A.; EGELHAAF, M. On the performance of biological movement detec-
tors and ideal velocity sensors in the context of optomotor course stabilization. Visual
Neuroscience, v. 15, n. 1, p. 113–122, 1998.
18 NERI, P. Spatial integration of optic flow signals in fly motion-sensitice neurons. Jour-
nal of Neurophysiology, v. 95, n. 12, p. 1608–1619, Dec 2006.
19 REN, J. Cambridge research systems. Dispon´ıvel em:
<http://www.crsltd.com/catalog/visage/overview.html>. Acesso em: 22 julho
2009.
20 ESTEVES, I. Sistemas ´opticos para gerao de est´ımulos visuais para a mosca. 2007.
42 p. Monografia (Projeto de Gradua¸ao) - Escola de Engenharia de ao Carlos, Uni-
versidade de ao Paulo. 2007.
21 LINDEMANN, J. et al. Flimax, a novel stimulus device for panoramic and highspeed
presentation of behaviourally generated optic flow. Vision Research, v. 43, n. 7, p.
779–791, Mar. 2003.
22 ALMEIDA, L. O. B. Desenvolvimento de Intrumenta¸ao eletrˆonica para estudos de
codificos neurais no duto ´optico em moscas. 2006. 86 p. Disserta¸ao (Mestrado)
Instituto de F´ısica de ao Carlos, Universidade de ao Paulo, 2006.
23 STEVENINCK, R. et al. Reproducibility and variability in neural spike trains. Science,
v. 275, n. 5307, p. 1805–1808, 1997.
24 FRANCESCHINI, N. Retinal mosaic of the fly compound eye. In: ALI, M. (Ed.).
Photoreception and vision in invertebrates. New York: Plenum Press, 1982.
67
25 HORNER, N. Multifractalidade no odigo neural da mosca. 2008. 70 p. Disserta¸ao
(Mestrado) Instituto de F´ısica de ao Carlos, Universidade de ao Paulo, 2008.
26 GAZZIRO, M. A. Instrumenta¸ao para neurobiof´ısica. 2002. 21 p. Monografia (Projeto
de Gradua¸ao) - Instituto de Ciˆencias Matem´aticas e de Computa¸ao, Universidade
de ao Paulo. 2002.
27 K
¨
oBERLE, R.; SLAETS, J. Website do Laborat´orio DipteraLab do IFSC-USP.
Dispon´ıvel em: <http://www.dipteralab.ifsc.usp.br/novo>. Acesso em: 15 de julho
2009.
28 IEEE-SA. Standard Verilog Hardware Description Language. [S.l.]: IEEE, 2001.
29 TERASIC. Terasic FPGA Systems. Dispon´ıvel em: <http://www.terasic.com.tw>.
Acesso em: 23 julho 2009.
30 XILINX. Xilinx INC. Dispon´ıvel em: <http://www.xilinx.com>. Acesso em: 23 julho
2009.
31 UCLINUX. Embedded linux project. Dispon´ıvel em: <http://www.uclinux.org/ >.
Acesso em: 29 julho 2009.
32 GAZZIRO, M. A. Tutorial de uClinux sobre NIOS II. Dispon´ıvel em: <http://gpu-
sc.googlecode.com/files/tutorial uclinux.pdf >. Acesso em: 30 julho 2009.
33 ALTERA. Single and Dual-Clock FIFO Megafunction: user guide. 23 p. Dispon´ıvel
em: <http://www.altera.com/literature/ug/ug fifo.pdf >. Acesso em: 28 julho 2009.
34 FERNANDES, N. et al. Recording from two neurons: second order stimulus recon-
struction from spike trains. Neural computation, Cambridge, USA. In press. Dispon´ıvel
em: <http://arxiv.org/abs/0906.3023>. Acesso em: julho 2009.
35 PEACOCK, C. Interfacing the parallel port. Dispon´ıvel em:
<http://www.beyondlogic.org/epp/epp.htm>. Acesso em: 20 julho 2009.
36 LG. Studioworks 221U Repairing manual. 1999. 30 p. Technical manual.
37 STREETING, S.; JOHNSTONE, B. OGRE - Open source 3D graphics engine.
Dispon´ıvel em: <http://www.ogre3d.org>. Acesso em: 17 de julho 2009.
38 ROLLINS, E. Real-time ray tracing with NVIDIA CUDA GPGPU. Dispon´ıvel em:
<http://eric rollins.home.mindspring.com/ray/cuda.html>. Acesso em: 17 de julho
2009.
68
39 NVIDIA. CUDA Zone The resource for CUDA developers. Dispon´ıvel em:
<http://www.nvidia.com/object/cuda home.htm>. Acesso em: 23 de julho 2009.
40 COVER, T. M.; THOMAS, J. A. Elements of information theory. 2nd. ed. Hoboken,
N.J.: Wiley-Interscience, 2006.
41 FERNANDES, N. M. Redu¸ao dimensional no espco de est´ımulos no sistema visual
da mosca. 2009. 110 p. Tese (Doutorado) Instituto de F´ısica de ao Carlos, Uni-
versidade de ao Paulo, (Defesa prevista para out. 2009).
69
A Listagem dos odigos fonte em
Matlab
odigo 4 Fun¸ao para ajuste do deslocamento da imagem (10 bits) em 2 ciclos.
function ajusta_desloc(ioObj, porta, dado, hi_low)
io32(ioObj, porta+2, 1);
io32(ioObj, porta, dado);
if (hi_low>0) io32(ioObj, porta+2, 9);
else io32(ioObj, porta+2, 3);
end
io32(ioObj, porta+2, 1);
odigo 5 Fun¸ao para ajuste das coordenadas do cursor (8 bits).
function ajusta_cursor(ioObj, porta, dado, x_ou_y)
io32(ioObj, porta+2, 5);
io32(ioObj, porta, dado);
if (x_ou_y>0) io32(ioObj, porta+2, 13);
else io32(ioObj, porta+2, 7);
end
io32(ioObj, porta+2, 5);
odigo 6 Fun¸ao para ler sinal de ‘meio-vazio’ enviado pela FIFO.
function [dado_int]=FIFO_meio_vazio(ioObj, porta)
dado=io32(ioObj, porta+1);
dado_int=(bitand(uint8(dado), uint8(64))/64);
70
odigo 7 Software para envio do est´ımulo.
clear all
% Inicializa a porta paralela
ioObj = io32();
status = io32(ioObj);
porta = hex2dec(’378’);
io32(ioObj,address, 0);
% Carrega arquivos de estimulo (deslocamento e coordenadas do cursor)
importfile(’estimulo.dat’);
[TAM B]=size(estimumo);
importfile(’cursor_x.dat’);
importfile(’cursor_y.dat’);
chksum=0;
old_chksum=0;
n=10; % largura do valor de deslocamento, em bits
for C = 1:TAM % LACO PRINCIPAL
% Aguarda FIFO de estimulos estar pela metade
while (FIFO_meio_vazio(ioObj, porta)),
end
% Envia byte mais significativo do deslocamento
if ((bitget(estimumo(C), 8)==0) && (bitget(estimumo(C), 9)==0))
ajusta_desloc(ioObj, porta, 0, 1);
elseif ((bitget(estimumo(C), 8)==1) && (bitget(estimumo(C), 9)==0))
ajusta_desloc(ioObj, porta, 1, 1);
elseif ((bitget(estimumo(C), 8)==0) && (bitget(estimumo(C), 9)==1))
ajusta_desloc(ioObj, porta, 2, 1);
elseif ((bitget(estimumo(C), 8)==1) && (bitget(estimumo(C), 9)==1))
ajusta_desloc(ioObj, porta, 3, 1);
end;
% Envia byte menos significativo do deslocamento
ajusta_desloc(ioObj, porta, estimumo(C), 0);
% Ajusta posi¸c~ao do cursor
ajusta_cursor(ioObj, porta, cursor_x(C), 1);
ajusta_cursor(ioObj, porta, cursor_y(C), 0);
% Calcula Checksum no MATLAB
dado=estimumo(C);
old_chksum=chksum;
chksum=dado+old_chksum;
if ((dado+old_chksum)>=(2^n)) chksum=chksum-(2^n); end
% Recupera Checksum calculado pela FPGA
low=le_chksum(ioObj, porta, 0)
high=le_chksum(ioObj, porta, 1)
chk_fpga=(high*256)+low;
% Se diferente, aborta a execucao do experimento
if (chk_fpga~=chksum) disp(’Erro de Checksum!!’); break; end
end
71
odigo 8 Fun¸ao para ler checksum calculado pela FPGA (10 bits) em 2 ciclos.
function [dado]=le_chksum(ioObj, porta, hi_low)
io32(ioObj, porta+2, 36);
if (hi_low>0) io32(ioObj, porta+2, 44);
else io32(ioObj, porta+2, 38);
end
dado=io32(ioObj, porta);
io32(ioObj, porta+2, 36);
io32(ioObj, porta+2, 0);
72
73
B Listagem dos principais odigos
fonte em Verilog
Par^ametros do Processador Gr´afico
// Arquivo PARAMET.H
// Para DOT CLOCK de 84,164 MHz
// Resolu¸c~ao ajustada em 640x480 pixels
// Frequencia horizontal ajustada em 104,7 kHz
// Frequencia vertical ajustada 200 Hz
// Horizontal (Pixel)
parameter H_SYNC_CYC = 96;
parameter H_SYNC_BACK = 48;
parameter H_SYNC_ACT = 640;
parameter H_SYNC_FRONT= 16;
parameter H_SYNC_TOTAL= 800;
// Vertical (Linha)
parameter V_SYNC_CYC = 2;
parameter V_SYNC_BACK = 32;
parameter V_SYNC_ACT = 480;
parameter V_SYNC_FRONT= 11;
parameter V_SYNC_TOTAL= 525;
// Offset de inicio
parameter X_START = H_SYNC_CYC+H_SYNC_BACK+4;
parameter Y_START = V_SYNC_CYC+V_SYNC_BACK;
Processador Gr´afico
module Processador_Grafico(
iCursor_RGB_EN, // habilita cores do cursor
iCursor_X, // coordenada horizontal do cursor
iCursor_Y, // coordenada vertical do cursor
iCursor_R, // valor da cor vermelha do cursor
iCursor_G, // valor da cor verde do cursor
iCursor_B, // valor da cor azul do cursor
iRed,
iGreen,
iBlue,
oAddress,
oCoord_X,
oCoord_Y,
oVGA_R,
oVGA_G,
oVGA_B,
oVGA_H_SYNC,
oVGA_V_SYNC,
oVGA_SYNC,
oVGA_BLANK,
oVGA_CLOCK,
SHIFT_out,
VERT_out,
iCLK,
74
iRST_N
);
‘include "PARAMET.H"
// Host Side
output reg [19:0] oAddress;
output reg [9:0] oCoord_X;
output reg [9:0] oCoord_Y;
input [3:0] iCursor_RGB_EN;
input [9:0] iCursor_X;
input [9:0] iCursor_Y;
input [9:0] iCursor_R;
input [9:0] iCursor_G;
input [9:0] iCursor_B;
input [9:0] iRed;
input [9:0] iGreen;
input [9:0] iBlue;
output [9:0] oVGA_R;
output [9:0] oVGA_G;
output [9:0] oVGA_B;
output reg oVGA_H_SYNC;
output reg oVGA_V_SYNC;
output oVGA_SYNC;
output oVGA_BLANK;
output oVGA_CLOCK;
input [8:0] SHIFT_out;
output reg VERT_out;
input iCLK;
input iRST_N;
reg [9:0] H_Cont;
reg [9:0] V_Cont;
reg [9:0] Cur_Color_R;
reg [9:0] Cur_Color_G;
reg [9:0] Cur_Color_B;
wire mCursor_EN;
wire mRed_EN;
wire mGreen_EN;
wire mBlue_EN;
assign oVGA_BLANK = oVGA_H_SYNC & oVGA_V_SYNC;
assign oVGA_SYNC = 1’b0;
assign oVGA_CLOCK = iCLK;
assign mCursor_EN = iCursor_RGB_EN[3];
assign mRed_EN = iCursor_RGB_EN[2];
assign mGreen_EN = iCursor_RGB_EN[1];
assign mBlue_EN = iCursor_RGB_EN[0];
reg VERT_in;
always@(posedge iCLK)
begin
VERT_out<=VERT_in;
end
// Plota pixel de acordo com a verredura e o conteudo da memoria
always@(posedge iCLK or negedge iRST_N)
begin
if(!iRST_N)
begin
oCoord_X <= 0;
oCoord_Y <= 0;
oAddress <= 0;
end
else
begin
if( H_Cont>=X_START && H_Cont<X_START+H_SYNC_ACT &&
V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )
begin
oCoord_X <= H_Cont-X_START+SHIFT_out;
oCoord_Y <= V_Cont-Y_START;
oAddress <= oCoord_Y*H_SYNC_ACT+oCoord_X-3;
75
end
end
end
// Gera o cursor nas coordenadas indicadas
always@(posedge iCLK or negedge iRST_N)
begin
if(!iRST_N)
begin
Cur_Color_R <= 0;
Cur_Color_G <= 0;
Cur_Color_B <= 0;
end
else
begin
if(H_Cont>=X_START+8 && H_Cont<X_START+H_SYNC_ACT+8 &&
V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )
begin
if(
(
(
(H_Cont==X_START + 8 + iCursor_X) ||
(H_Cont==X_START + 8 + iCursor_X+1) ||
(H_Cont==X_START + 8 + iCursor_X-1) ||
(H_Cont==X_START + 8 + iCursor_X+2) ||
(H_Cont==X_START + 8 + iCursor_X-2) ||
(H_Cont==X_START + 8 + iCursor_X+3) ||
(H_Cont==X_START + 8 + iCursor_X-3) ||
(H_Cont==X_START + 8 + iCursor_X+4) ||
(H_Cont==X_START + 8 + iCursor_X-4) ||
(H_Cont==X_START + 8 + iCursor_X+5) ||
(H_Cont==X_START + 8 + iCursor_X-5) ||
(H_Cont==X_START + 8 + iCursor_X+6) ||
(H_Cont==X_START + 8 + iCursor_X-6) ||
(H_Cont==X_START + 8 + iCursor_X+7) ||
(H_Cont==X_START + 8 + iCursor_X-7) ||
(H_Cont==X_START + 8 + iCursor_X+8) ||
(H_Cont==X_START + 8 + iCursor_X-8) ||
(H_Cont==X_START + 8 + iCursor_X+9) ||
(H_Cont==X_START + 8 + iCursor_X-9) ||
(H_Cont==X_START + 8 + iCursor_X+10) ||
(H_Cont==X_START + 8 + iCursor_X-10) ||
(H_Cont==X_START + 8 + iCursor_X+11) ||
(H_Cont==X_START + 8 + iCursor_X-11) ||
(H_Cont==X_START + 8 + iCursor_X+12) ||
(H_Cont==X_START + 8 + iCursor_X-12) ||
(H_Cont==X_START + 8 + iCursor_X+13) ||
(H_Cont==X_START + 8 + iCursor_X-13) ||
(H_Cont==X_START + 8 + iCursor_X+14) ||
(H_Cont==X_START + 8 + iCursor_X-14) ||
(H_Cont==X_START + 8 + iCursor_X+15) ||
(H_Cont==X_START + 8 + iCursor_X-15)
) &&
(
(V_Cont==Y_START + iCursor_Y) ||
(V_Cont==Y_START + iCursor_Y+1) ||
(V_Cont==Y_START + iCursor_Y-1) ||
(V_Cont==Y_START + iCursor_Y+2) ||
(V_Cont==Y_START + iCursor_Y-2) ||
(V_Cont==Y_START + iCursor_Y+3) ||
(V_Cont==Y_START + iCursor_Y-3) ||
(V_Cont==Y_START + iCursor_Y+4) ||
(V_Cont==Y_START + iCursor_Y-4) ||
(V_Cont==Y_START + iCursor_Y+5) ||
(V_Cont==Y_START + iCursor_Y-5) ||
(V_Cont==Y_START + iCursor_Y+6) ||
(V_Cont==Y_START + iCursor_Y-6) ||
(V_Cont==Y_START + iCursor_Y+7) ||
(V_Cont==Y_START + iCursor_Y-7) ||
(V_Cont==Y_START + iCursor_Y+8) ||
(V_Cont==Y_START + iCursor_Y-8) ||
(V_Cont==Y_START + iCursor_Y+9) ||
(V_Cont==Y_START + iCursor_Y-9) ||
76
(V_Cont==Y_START + iCursor_Y+10) ||
(V_Cont==Y_START + iCursor_Y-10) ||
(V_Cont==Y_START + iCursor_Y+11) ||
(V_Cont==Y_START + iCursor_Y-11) ||
(V_Cont==Y_START + iCursor_Y+12) ||
(V_Cont==Y_START + iCursor_Y-12) ||
(V_Cont==Y_START + iCursor_Y+13) ||
(V_Cont==Y_START + iCursor_Y-13) ||
(V_Cont==Y_START + iCursor_Y+14) ||
(V_Cont==Y_START + iCursor_Y-14) ||
(V_Cont==Y_START + iCursor_Y+15) ||
(V_Cont==Y_START + iCursor_Y-15)
)
)
&& mCursor_EN
)
begin
Cur_Color_R <= iCursor_R;
Cur_Color_G <= iCursor_G;
Cur_Color_B <= iCursor_B;
end
else
begin
Cur_Color_R <= iRed;
Cur_Color_G <= iGreen;
Cur_Color_B <= iBlue;
end
end
else
begin
Cur_Color_R <= iRed;
Cur_Color_G <= iGreen;
Cur_Color_B <= iBlue;
end
end
end
// Gerador de sincronismo horizontal
always@(posedge iCLK or negedge iRST_N)
begin
if(!iRST_N)
begin
H_Cont <= 0;
oVGA_H_SYNC <= 0;
end
else
begin
// Contador do sincronismo horizontal
if( H_Cont < H_SYNC_TOTAL )
H_Cont <= H_Cont+1;
else
H_Cont <= 0;
// Gera o sinal de sincronismo horizontal
if( H_Cont < H_SYNC_CYC )
oVGA_H_SYNC <= 0;
else
oVGA_H_SYNC <= 1;
end
end
// Gerador de sincronismo vertical
always@(posedge iCLK or negedge iRST_N)
begin
if(!iRST_N)
begin
V_Cont <= 0;
oVGA_V_SYNC <= 0;
VERT_in <= 0;
end
else
begin
// Se ocorrer sincronismo horizontal, reinicia
if(H_Cont==0)
77
begin
// Contador do sincronismo vertical
if( V_Cont < V_SYNC_TOTAL )
begin
V_Cont <= V_Cont+1;
VERT_in <= 0;
end
else
begin
V_Cont <= 0;
VERT_in <= 1;
end
// Gera o sinal de sincronismo vertical
if( V_Cont < V_SYNC_CYC )
oVGA_V_SYNC <= 0;
else
oVGA_V_SYNC <= 1;
end
end
end
// Registradores internos que mantem o valor dos canais de cor
reg [9:0] R_R;
reg [9:0] G_G;
reg [9:0] B_B;
assign oVGA_R = R_R;
assign oVGA_G = G_G;
assign oVGA_B = B_B;
always@(posedge iCLK)
begin
R_R = (H_Cont>=X_START+9 && H_Cont<X_START+H_SYNC_ACT+9 &&
V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )
? (mRed_EN ? Cur_Color_R : 0) : 0;
G_G = (H_Cont>=X_START+9 && H_Cont<X_START+H_SYNC_ACT+9 &&
V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )
? (mGreen_EN ? Cur_Color_G : 0) : 0;
B_B = (H_Cont>=X_START+9 && H_Cont<X_START+H_SYNC_ACT+9 &&
V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )
? (mBlue_EN ? Cur_Color_B : 0) : 0;
end
endmodule
78
Interface EPP com controle de CHECKSUM
// Atribui pinagem da FPGA e cria registradores de comunicacao
wire EPP_WRITE = ~GPIO_1[7];
wire [7:0] EPP_DATAIN={GPIO_1[21],GPIO_1[19],GPIO_1[17],GPIO_1[15],GPIO_1[14],GPIO_1[13],GPIO_1[11],GPIO_1[9]};
wire [7:0] EPP_DATAOUT;
assign {GPIO_1[21],GPIO_1[19],GPIO_1[17],GPIO_1[15],GPIO_1[14],GPIO_1[13],GPIO_1[11],GPIO_1[9]}=EPP_DATAOUT;
wire EPP_INTERRUPT;
assign GPIO_1[23] = EPP_INTERRUPT;
wire EPP_WAIT;
assign GPIO_1[31] = EPP_WAIT;
wire EPP_DATA_STROBE = ~GPIO_1[25];
wire EPP_RESET = GPIO_1[27];
wire EPP_ADDR_STROBE = ~GPIO_1[29];
//Devemos sincronizar os sinais de strobe com nosso clock
// Utilizacao de registrador de deslocamento de 3 pontos para sincronizar clock
wire EPP_STROBE = EPP_DATA_STROBE | EPP_ADDR_STROBE; // apenas um eh ativo por vez
reg [2:0] EPP_STROBE_REG;
always @(posedge OSC_50) EPP_STROBE_REG <= {EPP_STROBE_REG[1:0], EPP_STROBE};
// Detecta as bordas de strobe
wire EPP_STROBE_EDGE1 = (EPP_STROBE_REG[2:1]==2’b01);
wire EPP_STRBOE_EDGE2 = (EPP_STROBE_REG[2:1]==2’b10);
// Responde imediatamente a uma transacao
assign EPP_WAIT = EPP_STROBE_REG[1];
// Recebe escrita da porta EPP e calcula CHECKSUM
reg [7:0] addr_reg, data_reg;
reg [7:0] cursor_y, cursor_x;
reg [9:0] chksum=0, old_chksum=0;
always @(posedge OSC_50)
begin
if(EPP_STROBE_EDGE1 & EPP_WRITE)
begin
if (EPP_ADDR_STROBE & ~EPP_RESET)
begin
addr_reg = EPP_DATAIN;
old_chksum = chksum;
chksum = ((addr_reg<<8)+ old_chksum);
end
else
if(EPP_DATA_STROBE & ~EPP_RESET)
begin
data_reg = EPP_DATAIN;
old_chksum = chksum;
chksum = (data_reg + old_chksum);
end
// Recebe posi¸c~ao do Cursor pela sinalizacao do bit EPP_RESET
else if(EPP_ADDR_STROBE & EPP_RESET) cursor_y <= EPP_DATAIN;
else if(EPP_DATA_STROBE & EPP_RESET) cursor_x <= EPP_DATAIN;
end
end
// Atende a um comando de leitura da porta EPP para informar o CHECKSUM
wire EPP_READ = ~EPP_WRITE;
wire [7:0] EPP_DATA_MUX = EPP_ADDR_STROBE ? chksum[9:8] : chksum[7:0];
assign EPP_DATAOUT = (EPP_READ & EPP_WAIT) ? EPP_DATA_MUX : 8’hZZ;
79
C Cabo de liga¸ao entre FPGA e
porta paralela
Figura 47: Cabo do gerador de est´ımulos visuais.
80
Tabela 2: Atribui¸ao dos pinos da porta paralela no modo EPP (35).
Pino Sinal Dire¸ao Fun¸ao Invertido
1 EPP WRITE Sa´ıda N´ıvel baixo indica escrita e alto leitura Sim
2-9 EPP D0-D7 Bi-dir Barramento de dados 8 bits ao
10 EPP INTERRUPT Entrada Interrup¸ao na borda de subida ao
11 EPP WAIT Entrada Usado para handshaking Sim
12 RESERVADO Entrada Reservado ao
13 RESERVADO Entrada Reservado ao
14 EPP DATA STROBE Sa´ıda Indica transferˆencia de DADO Sim
15 RESERVADO Entrada Reservado ao
16 EPP RESET Sa´ıda Reset, ativo em n´ıvel baixo ao
17 EPP ADDR STROBE Sa´ıda Indica transferˆencia de ENDERE ¸CO Sim
18-25 GROUND GND Aterramento
81
D Diagramas RTL
Figura 48: RTL do gerador de est´ımulos baseado em FIFO.
Figura 49: RTL da gera¸ao do clock de v´ıdeo no kit DE3
82
Figura 50: RTL do gerador de dois monitores: Parte do kit DE3
83
Figura 51: RTL do gerador de dois monitores: Parte do kit DE2
84
85
E Processo de Ornstein-Uhlenbeck
A posi¸ao ocupada pela imagem a cada 5ms ´e determinada por um arquivo de posi¸ao
gerado no computador. Este conjunto de posi¸oes ´e obtido ao integrarmos uma erie
de velocidades gerada por um processo estat´ıstico denominado processo de Ornstein-
Uhlenbeck (40)(41). Esta erie temporal de velocidades V
t
´e obtida da seguinte maneira,
V
t+∆
= c + α × V
t
+ Φ
t
, |α| < 1. (E.1)
Onde os valores Φ
t
ao obtidos de uma distribui¸ao Gaussiana de edia zero e desvio
σ
2
Φ
. O termo α representa quanto o pr´oximo valor V
t+∆
est´a correlacionado com o valor
anterior V
t
. Veremos como a escolha de α determina a escala temporal de correla¸ao entre
os valores de V
t
. O termo c representa uma velocidade constante.
Para determinarmos o valor edio desta s´erie temporal, efetuamos a m´edia sobre
ensembles da eq. E.1,
V
t+∆
= c + α × V
t
+ Φ
t
. (E.2)
Como temos Φ
t
= 0,
V = c + α × V (E.3)
V =
c
1 α
. (E.4)
Em geral teremos, c = 0, ou seja, V = 0.
Para obtermos o desvio da distribui¸ao V
t
de m´edia zero, precisamos obter a m´edia
de seus valores ao quadrado.
V
2
t+∆
= [α × V
t
+ Φ
t
]
2
(E.5)
V
2
= α
2
V
2
+ Φ
2
+ 2αV × Φ. (E.6)
O produto de duas distribui¸oes independentes sim´etricas de m´edia zero resulta em uma
distribui¸ao sim´etrica de edia zero. Ou seja,
V × Φ = 0. (E.7)
Reescrevendo, Φ
2
σ
2
Φ
temos,
86
σ
2
V
= V
2
V
2
=
σ
2
Φ
1 α
2
. (E.8)
Vemos que para α 0, reobtemos a distribui¸ao Gaussiana inicial, V Φ.
Podemos calcular a influˆencia da correla¸ao introduzida por α na determina¸ao dos
pr´oximos valores desta erie temporal. Escreveremos V
t+N
V
N
, ou seja, V
t
V
0
. Desta
forma, iterativamente,
V
1
= αV
0
+ Φ
0
(E.9)
V
2
= αV
1
+ Φ
1
= α(αV
0
+ Φ
0
) + Φ
1
= α
2
V
0
+ αΦ
0
+ Φ
1
(E.10)
V
3
= αV
2
+ Φ
2
= α(α
2
V
0
+ αΦ
0
+ Φ
1
) + Φ
2
= α
3
V
0
+ α
2
Φ
0
+ αΦ
1
+ Φ
2
. (E.11)
Consequentemente,
V
N
= α
N
V
0
+
N1
i=0
α
i
Φ
N1i
. (E.12)
Ao multiplicarmos a express˜ao acima por V
0
e efetuarmos novamente a m´edia sobre en-
sembles, obteremos a correla¸ao entre a velocidade no tempo t e t + ∆.
V
N
V
0
= α
N
V
2
0
+ V
0
N1
i=0
α
i
Φ
N1i
. (E.13)
Mais uma vez ultilizando o fato da multiplica¸ao de duas distribui¸oes independentes
de m´edia zero ter edia zero,
N1
i=0
α
i
V
0
Φ
N1i
= 0 e utilizando eq. E.8,
V
N
V
0
= α
N
σ
2
V
= α
N
σ
2
Φ
1 α
2
(E.14)
Podemos reescrever esta express˜ao a fim de obtermos a rela¸ao entre α e o tempo de
correla¸ao do est´ımulo τ ,
V
t+N
V
t
=
σ
2
Φ
1 α
2
× e
N/τ
(E.15)
τ =
1
ln |α|
(E.16)
Ou seja, apartir do processo de Ornstein-Uhlenbeck (eq. E.1, c = 0) geramos uma erie
temporal Gaussiana de edia zero (eq. E.4), desvio σ
V
(eq. E.8) e correla¸ao temporal τ
(E.16).
87
Lista de abreviaturas e siglas
CFFT Critical Flicker Fusion Threshold, p. 20
IDC Insulated Displacement Connector, p. 38
GPIO General Purpose Input/Output, p. 38
HSTC High-Speed Terasic Connector, p. 38
PCI Peripheral Component Interconnect, p. 39
VGA Video Graphics Array, p. 39
DVI Digital Visual Interface, p. 39
LUT Look Up Table, p. 40
JTAG Joint Test Action Group, p. 41
FIFO First In First Out, p. 42
NFS Network File System, p. 42
CRT Cathode Ray Tube, p. 23
IP Intelectual Property, p. 43
SPP Standard Parallel Port, p. 43
RTL Register Transfer Level, p. 45
IDE Integrated Drive Electronics, p. 46
EPP Enhanced Parallel Port, p. 47
GPU Graphics Processing Unit, p. 52
CUDA Compute Unified Device Architecture, p. 54
LVDS Low-Voltage Differential Signaling, p. 54
PSTH Peristimulus Time Histogram, p. 58
ISI Inter Spike Interval, p. 60
RGB Red Green Blue, p. 24
FPGA Field Programmable Gate Array, p. 37
PLL Phase-Locked Loop, p. 37
SRAM Static Random Access Memory, p. 37
SDRAM Synchronous Dynamic Random Access Memory, p. 37
DAC Digital-to-analog converter, p. 37
USB Universal Serial Bus, p. 37
Livros Grátis
( http://www.livrosgratis.com.br )
Milhares de Livros para Download:
Baixar livros de Administração
Baixar livros de Agronomia
Baixar livros de Arquitetura
Baixar livros de Artes
Baixar livros de Astronomia
Baixar livros de Biologia Geral
Baixar livros de Ciência da Computação
Baixar livros de Ciência da Informação
Baixar livros de Ciência Política
Baixar livros de Ciências da Saúde
Baixar livros de Comunicação
Baixar livros do Conselho Nacional de Educação - CNE
Baixar livros de Defesa civil
Baixar livros de Direito
Baixar livros de Direitos humanos
Baixar livros de Economia
Baixar livros de Economia Doméstica
Baixar livros de Educação
Baixar livros de Educação - Trânsito
Baixar livros de Educação Física
Baixar livros de Engenharia Aeroespacial
Baixar livros de Farmácia
Baixar livros de Filosofia
Baixar livros de Física
Baixar livros de Geociências
Baixar livros de Geografia
Baixar livros de História
Baixar livros de Línguas
Baixar livros de Literatura
Baixar livros de Literatura de Cordel
Baixar livros de Literatura Infantil
Baixar livros de Matemática
Baixar livros de Medicina
Baixar livros de Medicina Veterinária
Baixar livros de Meio Ambiente
Baixar livros de Meteorologia
Baixar Monografias e TCC
Baixar livros Multidisciplinar
Baixar livros de Música
Baixar livros de Psicologia
Baixar livros de Química
Baixar livros de Saúde Coletiva
Baixar livros de Serviço Social
Baixar livros de Sociologia
Baixar livros de Teologia
Baixar livros de Trabalho
Baixar livros de Turismo