projeto e implementação de sistemas embarcados i - icmcemarques/se/monografia_pise.pdf · a parte...

18
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

Upload: vannga

Post on 14-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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

Page 2: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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

Page 3: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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.

Page 4: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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

Page 5: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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.

Page 6: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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.

Page 7: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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.

Page 8: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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

Page 9: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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.

Page 10: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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.

Page 11: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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

Page 12: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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

Page 13: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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:

Page 14: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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).

Page 15: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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

Page 16: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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”.

Page 17: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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”.

Page 18: Projeto e Implementação de Sistemas Embarcados I - ICMCemarques/se/monografia_pise.pdf · A parte de software é implementada em código C e a parte de hardware implementada em

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)