projeto e implementação de sistemas embarcados i - icmcemarques/se/monografia_pise.pdf · a parte...
TRANSCRIPT
Projeto Final
Responsáveis: Prof. Dr. Eduardo Marques e Prof. Dr. Vanderlei Bonato
Estagiário PAE: Bruno Franciscon Mazzotti
Guilherme G. Cola - 5656129
Raphael Philipe M. da Silva - 5696763
Douglas Salles Viroel - 5452567
São Carlos
dezembro de 2009
SSC 741 - Projeto e Implementação de Sistemas
Embarcados I
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO – ICMC
UNIVERSIDADE DE SÃO PAULO - USP
Conteúdo
Resumo .......................................................................................................................................... 3
1. Introdução ................................................................................................................................. 4
2. Materiais utilizados e funcionamento ...................................................................................... 7
2.1 DE2-70 ................................................................................................................................. 7
2.2 Painel de controle................................................................................................................ 9
2.3 Captura de vídeo ............................................................................................................... 10
2.4 LCD ..................................................................................................................................... 11
3. Desenvolvimento ..................................................................................................................... 12
4. Dificuldades encontradas ........................................................................................................ 15
5. Lições aprendidas .................................................................................................................... 16
6. Créditos ................................................................................................................................... 17
7. Referências bibliográficas ........................................................................................................ 18
Resumo
Este relatório descreve o desenvolvimento do projeto prático feito para a disciplina de
Projeto e Implementação de Sistemas Embarcados I – SSC 741, feito sob orientação do prof. Dr.
Eduardo Marques utilizando o KIT de desenvolvimento DE2-70 da TERASIC, composto por uma
placa de desenvolvimento, um display de LCD touch screen e uma câmera digital de 5 megapixels.
O projeto consistia inicialmente no desenvolvimento de uma nova câmera digital touch screen com
funções de aplicação de molduras sobre as fotos tiradas, bem como alguns filtros de imagem, como
sépia e preto e branco. Ao decorrer do desenvolvimento do projeto, foram encontradas diversas
dificuldades, inviabilizando o desenvolvimento daquilo que havia sido proposto inicialmente. Ao
fim, foi desenvolvido um sistema de menus touch screen para aplicação dos filtros sépia e preto e
branco, totalmente feito com pré-processamento em hardware. Pode-se verificar a grande
flexibilidade e poder do kit de desenvolvimento utilizado.
1. Introdução
A disciplina de Projeto e Implementação de Sistemas Embarcados I consistiu em fazermos um
projeto utilizando o kit DE2-70 da Altera, uma câmera d5m, e um display de LCD ltm. Este projeto,
basicamente, consiste em desenvolver uma funcionalidade para esta câmera, e consequentemente
aprimorar nossos conhecimentos em plataformas embarcadas, linguagem VHDL e Verilog, além de
entender melhor a parte de integração entre hardware e software.
Verilog é uma linguagem de descrição de hardware utilizada para modelagem de sistemas
eletrônicos. Com kits de implementação é possível descarregar o código em matrizes de portas
conhecidas como FPGA’s.
Existem vários estágios entre a descrição da linguagem Verilog até prototipagem da FPGA,
entre eles destacam-se: especificação, projeto em alto e baixo nível , codificação RTL, simulação,
síntese, roteamento e validação.
Figura 1. Processo de desenvolvimento
Durante a especificação são definidos parâmetros importantes como tamanho da palavra ou
se o reset deverá ser síncrono. O design em alto e baixo nível é onde são definidos diversos blocos
do projeto, como eles se comunicam e são implementados.
Em seguida é feita a conversão do projeto em baixo nível para o código Verilog utilizando
construtores da linguagem. A simulação se encarregada de verificar o funcionamento dos modelos
em qualquer nível de abstração utilizando simuladores e testando os códigos RTL.
A síntese é o processo de transformação do RTL em Verilog em entradas e mapeia o RTL para
as primitivas da tecnologia alvo.
Figura 2: Síntese
Por fim os blocos são posicionados e roteados gerando um arquivo GDS que é usado na
indústria para fabricação, testado e validado antes de ser liberado no mercado.
Figura 3: Implementação em silício.
O projeto inicial do grupo visou a utilização do kit DE2-70 com LCD e câmera integrados para
criar um produto final com diversas funcionalidades.
As funcionalidades da câmera incluíam: tirar fotos, aplicação de tons de cinza e sépia nas
imagens, zoom, gravação de vídeos e vídeos em câmera lenta e aplicação de molduras nas fotos.
Também foi proposto um menu utilizando o touch screen do LCD para controlar as funcionalidades
da câmera.
O objetivo do projeto foi desenvolver uma câmera digital com diversas funcionalidades
utilizando o kit DE2-70 com câmera e LCD integrados.
Inicialmente as funções a serem desenvolvidas para a câmera digital compreendiam em tirar
fotos, aplicação de filtros (Greyscale e Sépia), zoom, diferentes tipos de molduras para as fotos,
menus de controle touch screen e finalmente gravação de vídeos.
O projeto teve inicio com estudos nos códigos dos exemplos existentes no kit, utilizando para
isso o software NIOS II IDE. Diante da grande complexidade do software não foi possível dar
continuidade a implementação em software do projeto.
O passo seguinte foi desenvolver o projeto em hardware, como integração do LCD com a
câmera. A conquista encaminhou o projeto para um novo caminho sendo este então implementado
totalmente em hardware.
A dificuldade encontrada durante o desenvolvimento do projeto e o atraso em relação ao
estudo do software do kit fez necessária a redução da proposta inicial do projeto para outro mais
simples.
A nova proposta para o projeto incluía as funções básicas como tirar foto e aplicação dos
filtros nas imagens, posteriormente foi mantida também a proposta do menu no LCD com botões
sensíveis ao toque.
O grande desafio do projeto passou a ser então a integração dos módulos de escrita no LCD e
do touch screen apresentados nos exemplos do kit.
Por fim o resultado foi uma câmera controlada pelo touch screen do LCD, com as funções de
filtros nas imagens e tirar foto.
Para realizar o projeto foram incluídos três módulos no projeto já existente do kit. Dois
módulos responsáveis pela captura do touch screen e outro módulo criado para tratar a imagens e
os comandos. O módulo relacionado ao menu da câmera envia os pixels diretamente para as duas
SDRAMs.
Uma descrição mais detalha do desenvolvimento é tratada no tópico três. No segundo tópico
é apresentado o kit da Altera DE2-70 e nos demais é citada as dificuldades encontradas e as lições
aprendidas.
2. Materiais utilizados e funcionamento
2.1 DE2-70
O kit DE2-70 contém todos os componentes necessários para rodar a placa DE2-70 com um
computador que rode o Microsoft Windows.
Figura 4: Kit DE2-70
O kit inclui:
Placa DE2-70
Cabo USB para programação e controle da FPGA
CD com documentação da placa
Fonte de 12V DC
Na figura 5, possui uma foto da placa DE2-70 e indica o lugar dos conectores e componentes
chaves.
Figura 5: Foto da placa DE2-70
A placa é composta principalmente, pelos seguintes componentes de hardware:
Altera Cyclone® II 2C70 FPGA
Dispositivo de configuração serial Altera – EPCS16
USB Blaster para programação
2Mbyte SSRAM
2 SDRAM de 32Mbytes
Flash 8Mbytes
4 botões
18 pinos
18 LEDs vermelhos
9 LEDs verdes
Oscilador de 50MHz e 28,63Mhz para fontes de clock
2 decodificadores de TV e conector TV-in
Controlador USB
Transmissor receptor RS-232
Suporte a interface I/O
Controlador Ethernet 10/100
2 slots de expansão
Na figura 6, tem-se o diagrama de blocos da placa DE2-70. Para facilitar o uso, todas as
conexões são feitas através da FPGA Cyclone II.
Figura 6: Diagrama de blocos da placa DE2-70
2.2 Painel de controle
A placa vem junto com um painel de controle que faz com que o usuário possa acessar
diversos componentes da placa através do computador pela USB.
O painel de controle da DE2-70 pode ser usado para acender os LEDs, modificar os valores no
display de sete segmentos, mudar o valor do LCD, ler/escrever nas memórias
SDRAM/SSRAM/FLASH, entre outros.
Para que o painel de controle possa implementar funções, é necessário o download de
códigos específicos de controle. São os códigos responsáveis pela comunicação entre a placa e o
painel de controle.
Figura 7: Comunicação entre o painel de controle e a placa.
2.3 Captura de vídeo
O kit oferece também um utilitário de vídeo, onde é possível entre outras coisas fazer a
captura de uma imagem da fonte de vídeo (no nosso caso, a câmera D5M através da expansão).
O utilitário de vídeo é baseado no sistema NIOS II rodando na Cyclone II com a SDRAM ou
SSRAM. A parte de software é implementada em código C e a parte de hardware implementada em
Verilog com o SOPC builder, o que torna possível fazer algumas modificações nas funcionalidades
do utilitário.
Na figura 8, mostra o diagrama de blocos do utilitário de vídeo.
Figura 8: Diagrama de blocos do utilitário de vídeo.
Para um processo de captura da imagem, o computador envia o sinal de captura para o
processador Nios II. Este, interpreta o comando, e faz com que a controladora de vídeo capture a
imagem para a SSRAM. Depois de capturada, a imagem é copiada para a SDRAM-U2. O computador
lê a imagem bruta da SDRAM-U2, converte em uma imagem RGB e mostra no display.
2.4 LCD
O kit LCD LTM (LCD Touch Panel Module) é composto pelo display, cabo IDE de 40 pinos e CD
com código fonte e documentação.
O display possui formato de 4x3, com área ativa de (93.6x56.16) mm e 16 milhões de cores.
Como pode ser visto na figura 9, o LTM é composto por basicamente 3 componentes: o
módulo do painel touchscreen do LCD, um conversor AD, e o expansion header de 40 pinos. O
módulo LCD e do painel touch, controlam os sinais provenientes da FPGA como sinal de entrada e
mostram as imagens no LCD. O conversor AD é responsável por converter as coordenadas do ponto
de toque para o dado digital correspondente e enviar para a FPGA pela expansion header.
Figura 9: Diagrama de blocos do display LCD
3. Desenvolvimento
Como ponto de partida foram utilizados o projeto CD-ROM DE 3 in 1 (FPGA, Camera e LCD),
disponibilizado na página da disciplina e DE2_70_LTM_Ephoto, presente no cd do LCD LTM.
O desenvolvimento do projeto final foi feito da seguinte maneira: foram inseridos três
módulos ao projeto disponibilizado no site da disciplina para a inclusão de menus e aplicação de
filtros, captura de coordenadas touch screen e verificação de comandos. O diagrama de blocos e a
máquina de estados, gerado pelo Quartus II, podem ser observados nas figuras abaixo:
Figura 10: Diagrama de Blocos
Figura 11: Diagrama de estados
Os componentes inseridos de outros projetos foram o “Conversor A/D para SPI” e o “Touch
Point Detector” sendo que o último foi modificado para a verificação de novas áreas de varredura
para geração de outros comandos.
O componente “Menu” é responsável por desenhar os botões no LCD para que o usuário
possa aplicar os efeitos nas imagens. O componente realiza a alteração nas imagens provenientes
do componente “RAW2RGB” de acordo com o filtro escolhido e em seguida envia os pixels
diretamente as duas SDRAMs. As informações das coordenadas do módulo “Touch Point Detector”
são recebidas pelo “Menu” que interpreta qual botão foi pressionado pelo usuário.
As ligações entre os componentes no diagrama RTL pode ser observada na figura a seguir:
Figura 12: Diagrama RTL
É possível observar através da figura acima como os componentes estão ligados entre si e
terminam enviando as informações a SDRAM.
Como resultado final, foi obtido um sistema de aplicação de filtros (sépia e preto e branco)
aplicados por comandos enviados por toques no LCD. A tela do LCD pode ser observada na figura
abaixo:
Figura 13: Projeto final. Display da câmera mostrando os botões do menu.
Os botões da esquerda selecionam os filtros desejados na imagem (RGB, Greyscale e Sépia) e
os da direita são responsáveis por tirar a foto e voltar ao modo de captura (branco e azul
respectivamente).
4. Dificuldades encontradas
Durante o desenvolvimento do projeto, foram encontradas algumas dificuldades para o
desenvolvimento. As dificuldades iniciais podem ser observadas abaixo:
1. Pouca familiaridade com o projeto de sistemas embarcados e com a arquitetura do
kit da Altera;
2. Pouco entendimento sobre a relação hardware/software utilizando o NIOS II;
3. O projeto foi proposto antes de se conhecer as limitações da placa.
Com o desenvolvimento do projeto, pode-se focar no desenvolvimento de uma aplicação
funcional, utilizando somente o projeto de hardware, novamente foram encontradas dificuldades:
1. Pouco conhecimento sobre a linguagem Verilog;
2. Utilização de código confuso proveniente da documentação;
3. Incompatibilidade entre o módulo de flash para sdram com o projeto desenvolvido.
Na figura 7 pode-se observar o módulo incompatível que pretendia se utilizar para recuperar
imagens gravadas na flash da placa DE2-70. A incompatibilidade deu-se pelo fato de não se saber as
coordenadas X e Y das figuras guardadas.
Figura 14: Módulo flash_to_sdram
5. Lições aprendidas
Durante o desenvolvimento do trabalho, foram aprendidas algumas lições sobre o projeto e
implementação de sistemas embarcados.
Primeiramente deve-se levar em conta que é difícil propor um projeto sem conhecimento
preciso sobre a arquitetura sobre o qual este vai ser implementado. Assim poderiam ter sido
evitadas decisões erradas de projeto.
Também foi possível perceber que se pode ter várias opções sobre a implementação de
uma determinada funcionalidade e nem sempre a opção mais óbvia, como a modificação de um
componente pronto, é a mais fácil. Isso foi verificado pela criação do componente “Menus” ai invés
da modificação do componente “RAW2RGB”.
6. Créditos
A seguir serão descritos os créditos de participação que cada integrante teve durante o
desenvolvimento deste projeto:
Guilherme Cola: Desenvolvimento do relatório e auxílio na implementação de alguns
módulos;
Raphael Philipe Mendes da Silva: implementação do componente “Menus” e inclusão do
componente “AD2SPI” de outro projeto;
Douglas Salles: implementação do componentes “Menus” e “Touch Point Detector”.
7. Referências bibliográficas
[1] Manual DE2-70, Altera. Disponível em: <www.altera.com>.
[2] Woorimt&i.
Disponível em: <www.woorimtni.co.kr/terasic/terasic_fpga_01_view.jsp>.
[3] Fórum, Universidade La Sierra. Disponível em:
<faculty.lasierra.edu/~ehwang/digitaldesign/webpages/projects.html>
[4] Samir Palnitkar. Verilog HDL. Prentice Hall PTR. 2 edição (Março, 2003)