Você está na página 1de 51

Centro Universitário Positivo - UnicenP

Núcleo de Ciências Exatas e Tecnológicas – NCET


Engenharia da Computação
Sibilla Batista da Luz

Giga de Testes para FPGAs

Curitiba
2006
Centro Universitário Positivo - UnicenP
Núcleo de Ciências Exatas e Tecnológicas – NCET
Engenharia da Computação
Sibilla Batista da Luz

Giga de Testes para FPGAs

Monografia apresentada à disciplina de


Projeto Final, como requisito parcial
à conclusão do Curso de Engenharia
da Computação. Orientador: Prof.
Valfredo Pilla Junior.

Curitiba
2006

ii
TERMO DE APROVAÇÃO

Sibilla Batista da Luz

Giga de Testes para FPGAs

Monografia aprovada como requisito parcial à conclusão do curso de


Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca
examinadora:

Prof. Valfredo Pilla Junior. (Orientador)


Prof. Adriana Cursino Thomé
Prof. Maurício Perreto

Curitiba, 11 de dezembro de 2006

iii
Agradecimentos

Agradeço primeiramente a Deus, que me proporcional tudo de bom que eu


conquistei até hoje.
Aos meus pais, Benedito Acir da Luz e Sonia M. B. da Luz, que sempre me
deram apoio e acreditaram na conclusão dessa graduação.
Ao meu noivo Elder França, que me motivou nos momentos de dificuldade,
nunca deixando que eu desanimasse.
Ao Prof. Valfredo Pilla Jr. pela orientação e apoio no desenvolvimento do
projeto.
Agradeço também, ao laboratorista Maurício Cúnico pelos esclarecimentos
das dúvidas e pelas dicas de grande valia referentes ao projeto.

iv
SUMÁRIO
LISTA DE FIGURAS.............................................................................................................vi
LISTA DE TABELAS........................................................................................................... vii
LISTA DE SIGLAS..............................................................................................................viii
LISTA DE SÍMBOLOS .........................................................................................................ix
RESUMO................................................................................................................................ x
ABSTRACT ...........................................................................................................................xi
1. INTRODUÇÃO.................................................................................................................. 1
2. REVISÃO BIBLIOGRÁFICA ........................................................................................... 3
2.1 Internet.......................................................................................................................... 3
2.1.1 Arquitetura Internet ............................................................................................... 3
2.1.2 Camada Internet ..................................................................................................... 4
2.1.3 Camada de Transporte ........................................................................................... 6
2.2 Kit PICDEM.net ........................................................................................................... 9
2.2.1 Microcontrolador PIC...........................................................................................11
2.3 Kit Didático Microcontrolador 8051 ...........................................................................12
2.3.1 Família 8051.........................................................................................................12
2.3.2 Kit 8051 ................................................................................................................13
2.4 Dispositivos Lógicos Programáveis ............................................................................14
2.4.1 FPGAs...................................................................................................................15
2.4.2 Kit Cyclone ...........................................................................................................15
3. Especificação Técnica .......................................................................................................17
3.1 Especificação de Hardware..........................................................................................17
3.2 Especificação de Software ...........................................................................................19
3.2.1 Firmware ...............................................................................................................19
3.2.2 Software................................................................................................................21
3.3 Validação .....................................................................................................................23
3.4 Recursos Necessários...................................................................................................24
3.5 Estimativa de Custos ....................................................................................................24
3.6 Cronograma .................................................................................................................25
4. Projeto................................................................................................................................26
4.1 Hardware......................................................................................................................26
4.1.1 Cliente ...................................................................................................................27
4.1.2 Kit PICDEM.net ...................................................................................................27
4.1.3 FPGA ....................................................................................................................27
4.1.4 Giga de Testes .......................................................................................................28
4.2 Software .......................................................................................................................29
4.2.1 Diagrama de Fluxo de Dados Nível Zero.............................................................29
4.2.2 Diagrama de Fluxo de Dados Nível Um...............................................................30
5. Resultados ..........................................................................................................................33
6. Conclusão ..........................................................................................................................39
7. Referencias Bibliográficas.................................................................................................40
Anexo I ...................................................................................... Erro! Indicador não definido.

v
LISTA DE FIGURAS

Figura 1 – Camadas da Arquitetura Internet.. ......................................................................... 4


Figura 2 – Cabeçalho IP.. ....................................................................................................... 6
Figura 3 – Cabeçalho TCP ...................................................................................................... 8
Figura 4 - PICDEM.netTM Placa de Demonstração Internet/Ethernet. ................................... 9
Figura 5 - PICDEM.netTM Diagrama em blocos. .................................................................10
Figura 6 – Microcontrolador 8051. ........................................................................................13
Figura 7 – Kit Cyclone. .........................................................................................................17
Figura 8 – Diagrama em Blocos do Sistema .........................................................................18
Figura 9 – Fluxograma do Firmware .....................................................................................20
Figura 10 – Fluxograma do Software em C++ ......................................................................23
Figura 11 – Diagramas de Fluxo de Dados Nível Zero. ........................................................30
Figura 12 – Diagramas de Fluxo de dados Nível Um. ..........................................................32
Figura 13 –Giga de Testes. ....................................................................................................33
Figura 14 – Circuito do Sistema. ...........................................................................................33
Figura 15 – Circuito de Teste. ...............................................................................................34
Figura 16 – Página Web do Giga de Testes...........................................................................34
Figura 17 – Lógica implementada em AHDL. ......................................................................35
Figura 18 – Ondas de Simulação no Quartus II.....................................................................36
Figura 19 – Nível Lógico nos Instantes de Tempo. ...............................................................36
Figura 20 – Programa Implementado em C++. .....................................................................37
Figura 21 – Resultado do Teste para a FPGA “Habiltada”. ..................................................38
Figura 22 – Resultado do Teste para a FPGA “Desabiltada”. ...............................................38

vi
LISTA DE TABELAS

Tabela 1 – Memórias do PIC18F452....................................................................................12


Tabela 2 – Composição do PIC18F452................................................................................12
Tabela 3 – Estimativa de Custos...........................................................................................25
Tabela 4 – Cronograma do Projeto.......................................................................................26
Tabela 5 – Pinagem do Circuito Teste..................................................................................29

vii
LISTA DE SIGLAS

NCET – Núcleo de Ciências Exatas e Tecnológicas


UNICENP – Centro Universitário Positivo
PLDs – (Programmable Logic Devices) Dispositivos de Lógica Programável
CPLDs – (Complex Programmable Logic Devices) Dispositivos de Lógica Programável
Complexa
FPGA – (Field Programmable Gate Arrays) Arranjos de Portas Programáveis em Campo.
HDL – (Hardware Description Language) Linguagem de Descrição de Hardware.
AHDL – (Altera Hardware Description Language) Linguagem de Descrição de Hardware
Altera.

viii
LISTA DE SÍMBOLOS

? – Ohm
Hz – Hertz
µ – micro 10-6
A – Ampére
V – Volt
I/O – Entrada e Saída de Dados
µC – Microcontrolador.

ix
RESUMO

Este projeto consiste em um verificador de lógica de FPGAs, onde o


dispositivo pode ser habilitado ou desabilitado remotamente. Os dispositivos
lógicos programáveis possuem várias vantagens, mas a principal é que podemos
alterar um projeto sem ter que confeccionar novas placas de circuito impresso,
justamente por sua característica de reprogramação. A Internet surgiu na década
de 60 e tornou-se uma revolução nas telecomunicações, hoje é utilizada em todos
os lugares do mundo. O projeto tem o objetivo de unir essas duas tecnologias. O
sistema valida se o programa em AHDL gravado na FPGA está funcionando
corretamente. Para isso é utilizado um arquivo de simulação do programa Quartus
II, com grid size de 50 µs, a partir dele todos os testes são realizados. O resultado
obtido deve ser comparado com as ondas de simulação para validação da lógica.
A utilização da rede Internet possibilita fazer um chaveamento de operação na
FPGA, mudando sua lógica remotamente. Neste projeto o usuário tem a
possibilidade de habilitar ou desabilitar as saídas da FPGA como um Chip Enable.
A comunicação é feita utilizando-se o protocolo TCP/IP, e a interação com o
usuário é feita através de uma página web.

Palavras-Chave: FPGAs, HDL, Internet, TCP/IP, Microcontrolador, Controle


Remoto.

x
ABSTRACT

This project consists of a verifier of logic of FPGAs with a remote device


enable. Programmable Logic Devices have many advantages, but the main one is
the capability of to modify a project without changes to the circuit board, because
its reprogramming capabilities. The Internet came out around 1969 and became a
great revolution in the world of telecommunication. Today the internet is used all
over the world. The system project presented here validates if the AHDL code the
configure the FPGA is functioning correctly. For this an archive VWF of the
program Quartus II is used, with grid size of 50µs, it all the tests is carried through.
The gotten result must be compared with the waves of simulation for validation of
the logic. The use of net Internet makes possible to remotely make a keying of
operation in the FPGA, changing remotely its logic. In this project the user has the
possibility to enble or to disable the outputs of the FPGA as a Chip Enable. The
communication is made using TCP/IP protocol, and the interaction with the user is
done through a web page.

Keywords: FPGAs, HDL, Internet, TCP/IP, Microcontroller, Remote Control.

xi
1

1. INTRODUÇÃO

Os primeiros computadores que surgiram eram extremamente caros e


dispendiosos, teve-se então a necessidade de compartilhar poder computacional
em grande escala, uma vez que não era possível acompanhar o orçamento
[COMER, 1998].
A Agência de Projetos de Pesquisa Avançada (Advanced Research Projets
Agency – ARPA) começou a investigar a ligação em redes de dados e
desenvolver um software de comunicação para interligar redes diferentes. Nos
anos 70, a ligação inter-redes tinha se tornado o foco de pesquisa da ARPA, e a
Internet inicial surgia. A pesquisa continuou nos anos 80, e se tornou um sucesso
comercial nos anos 90.
A Internet cresceu para um sistema global de comunicação que alcança
todos os países do mundo e vem possibilitando novos tipos de aplicações como,
por exemplo, servidores embarcados em dispositivos dedicados [MOKARZEL,
2004].
No início da década de 80 uma outra grande tecnologia começava a surgir,
os Dispositivos Lógicos Programáveis. A idéia de um hardware que pode ser
alterado e atualizado sem a necessidade de substituição física de componentes
trouxe grandes expectativas, pois criava a possibilidade de combinar a velocidade
do hardware com a flexibilidade do software [RIBEIRO, 2002].
Desde então, as PLDs têm evoluído significativamente, alcançando
elevados níveis de densidade, altos índices de desempenho e menores custos de
fabricação.
A união dessas duas tecnologias traz uma ampla variedade de projetos. A
possibilidade de alterar a funcionalidade de uma FPGA remotamente, fazendo um
chaveamento na lógica em operação, facilita muito a utilização de sistemas que
precisem de várias funções distintas, sendo que todas estão no mesmo chip e
podem ser alteradas de qualquer computador conectado a rede.
2

A alteração no dispositivo se torna muito mais rápida e menos dispendiosa,


já que não há necessidade de substituição física de componentes no circuito e
nem a presença do programador no local da estação.
Este projeto tem o objetivo de desenvolver um verificador de lógica de
FPGAs. Este verificador valida se o programa em AHDL gravado na mesma está
funcionando corretamente. O dispositivo pode conter até duas lógicas distintas
que são selecionadas, uma por vez, pelo usuário remotamente.
Para isso um arquivo de simulação (VWF – Vector Waveform File) do
programa Quartus II é processado e enviado ao circuito de testes, que aplica
valores às entradas da FPGA e lê suas saídas. Essas saídas são comparadas
com as ondas de simulação geradas pelo programa Quartus II antes da gravação
do dispositivo.
3

2. REVISÃO BIBLIOGRÁFICA

Nesta revisão bibliográfica são abordados os temas principais no


desenvolvimento do projeto, são eles:
?? Rede Internet e seus protocolos.
?? Kit PICDEM.net usado para alterações remotas da FPGA.
?? Kit Didático Microcontrolador 8051.
?? Dispositivos Lógicos Programáveis.

2.1 Internet

A Internet é uma rede de redes em escala mundial de milhões de


computadores que permite o acesso a informações e todo tipo de transferência de
dados [CARVALHO, 1997].
Quando a Internet surgiu foi uma revolução nas telecomunicações, hoje é a
rede mais conhecida, mas não é a única, existem outras menos utilizadas.

2.1.1 Arquitetura Internet

A arquitetura Internet é largamente utilizada na interconexão e na


interoperação de sistemas computacionais heterogêneos. Tal arquitetura foi
lançada pelo Departamento de Defesa do governo americano e escolhida para ser
o padrão obrigatório de comunicação entre os diversos sistemas daquela
organização. Na época de seu lançamento, a Arquitetura Internet era a única
alternativa para fazer frente aos protocolos proprietários de fabricantes de
equipamentos, tornando-se assim, um padrão de fato do mercado
[CARVALHO,1997].
4

A grande característica da Arquitetura Internet é a simplicidade de


implementação dos protocolos, que mesmo assim, atendem aos requisitos de
interconexão exigidos pela maioria dos sistemas.
A arquitetura Internet possui uma organização em camadas, como mostra a
figura 1, onde se procurou definir um protocolo próprio para cada camada, bem
como a interface de comunicação entre duas camadas adjacentes.
Essa arquitetura é composta por dois protocolos principais: o PI (Internet
Protocol), e o TCP (Transmission Control Protocol). Fazem então, o conjunto
TCP/IP oferecendo um serviço de alta confiabilidade.

Figura 1 – Camadas da Arquitetura Internet. Fonte: CARVALHO, 1997.

2.1.2 Camada Internet

Nesta camada o principal protocolo é o IP (Internet Protocol), que é


responsável pelo transporte de pacotes de dados através de uma ou mais sub-
redes interconectadas, desde a maquina de origem até a de destino [CARVALHO,
1997].
5

O IP opera no modo datagrama, isto é, não é orientado a conexão. Os


pacotes são autocontidos e carregam as informações necessárias para o
transporte e controle dos mesmos nas sub-redes utilizadas.
Além de guiar os datagramas, o IP pode fragmentá-los. Isso é feito no caso
de redes que suportam apenas pacotes pequenos. Neste caso existe sempre o
consentimento de quem originou o pacote.
Os dados que trafegam pela rede possuem um cabeçalho IP, mostrado na
Figura 2, onde cada campo contém uma informação sobre o pacote. Os campos
são:
?? Version: indica a versão do protocolo Internet usado e o formato do mesmo.
?? IHL: Internet Header Length ou comprimento do cabeçalho Internet define o
número de worlds de 32 bits que compõem o cabeçalho.
?? Type of service: contém a qualidade do serviço desejado. Esses valores
são abstratos e usados como guia para seleção de prioridade.
?? Total Lenght: é o tamanho total do datagrama, medido em octetos, incluindo
o cabeçalho Internet e os dados.
?? Identification: esse valor é colocado pelo remetente para orientar o receptor
na reconstrução de datagramas fragmentados.
?? Flags: conjunto de flags
o Bit 0: reservado.
o Bit 1: (DF) 0 = pode fagmentar, 1 = não pode fragmentar.
o Bit 2: (MF) 0 = último fragmento, 1 = mais fragmentos.
?? Fragment offset: indica o ponto em que o datagrama pertence a uma
mensagem fragmentada. O primeiro fragmento de uma mensagem é
sempre 0.
?? Time to live: indica o tempo máximo que um datagrama pode permanecer
na rede, evitando que loops infinitos sejam criados.
?? Protocol: contém o protocolo utilizado na camada superior (transporte).
?? Head checksum: é o checksum do cabeçalho IP.
?? Source address: o endereço IP de origem.
?? Destination address: o endereço IP de destino.
6

?? Options: pode ou não aparecer no datagrama.


?? Padding: garante que o cabeçalho IP seja finalizado com um múltiplo de 32
bits.

O cabeçalho IP, também possui um checksum para garantir a integridade


do mesmo, o que não garante a integridade do datagrama transportado
[MOKARZEL, 2004].

Figura 2 – Cabeçalho IP. Fonte: MOKARZEL, 2004.

2.1.3 Camada de Transporte

A arquitetura Internet especifica dois protocolos de transporte o TCP


(Transmission Control Protocol), que é orientado a conexão, e o UDP (User
Datagram Protocol), que não é orientado a conexão [CARVALHO, 1997].
O TCP tem por função o transporte fim-a-fim confiável de mensagens de
dados entre dois sistemas, ele garante ao usuário que a entrega das mensagens
foram feitas na mesma ordem que foi enviada, sem perda ou duplicação e também
sem danificação. Oferece uma alta confiabilidade a camada de aplicação e pode
ser usado em qualquer tipo de rede.
Principais funções:
?? Transferência de dados: os dados da aplicação são acomodados em
mensagens de tamanho variável, transferidas em modo full-duplex.
7

?? Transferência de dados urgentes: os dados urgentes (por exemplo, as


informações de controle) são transferidos com indicativo de urgência, tendo
precedência sobre os dados normais.
?? Estabelecimento e liberação de conexão: antes de iniciar qualquer tipo de
transferência de dados é estabelecida uma conexão, liberada apenas ao
final da fase da transferência de dados.
?? Multiplexação: dados de várias aplicações são multiplexados pelo TCP para
serem entregues ao IP para transmissão; no destino ocorre a
demultiplexação para entrega dos dados as respectivas aplicações.
?? Segmentação: as mensagens entregues ao TCP podem ser segmentadas.
Cada segmento deve compor um datagrama IP e possuir um número de
identificação, que possibilita a posterior recomposição da mensagem
original no destino.
?? Controle de fluxo: utilizando o mecanismo de controle de fluxo baseado no
principio de janela deslizante de tamanho variável, o TCP envia vários
segmentos ao destino, mesmo antes de receber um reconhecimento
positivo ou negativo, adaptando-se à diferença de velocidade existente
entre os dois sistemas envolvidos.
?? Controle de erros: os segmentos são numerados para que possam ser
ordenados e entregues na seqüência correta à aplicação de destino.
?? Precedência e segurança: níveis de precedência e de segurança podem ser
estabelecidos pela aplicação para tratamento dos dados durante o
processo de comunicação.

O Protocolo TCP possui um cabeçalho TCP, mostrado na Figura 3, que vem


logo após o cabeçalho IP e contém as seguintes informações:
?? Source port: número de porta de origem.
?? Destination port: número de porta de destino.
?? Sequence number: o número de seqüência do primeiro octeto de dado
dessa mensagem.
8

?? Acknowledgment number: quando o bit ACK está setado, esse campo


contém o valor da próxima seqüência de números que o remetente da
mensagem espera receber, confirmando todos os que estiverem antes
deles.
?? Data offset: aponta o inicio dos dados transportados.
?? Reserved: reservado para aplicações futuras, preenchido com 0.
?? Control Bits: 6 bits de controle
o URG: Urgent Pointer.
o ACK: Acknowledgment.
o PSH: Função Push.
o RST: Reset a conexão.
o SYN: Seqüência de números para sincronização.
o FIN: Fim dos dados.
?? Window: informa o tamanho da janela de recepção.
?? Checksum: cálculo para verificação de erro na mensagem transmitida.
?? Urgent pointer: aponta para os dados urgentes dentro da mensagem.
?? Options: pode existir carregando algumas opções no final do cabeçalho.
?? Padding: garante que o cabeçalho IP seja finalizado com um múltiplo de 32
bits.

Figura 3 – Cabeçalho TCP. Fonte: MOKARZEL, 2004.


9

2.2 Kit PICDEM.net

O PICDEM.net, mostrado na figura 4, é uma ferramenta desenvolvida pela


Microchip que contem o necessário para a implementação de um sistema de
Internet embarcado [MOKARZEL, 2004].
É constituído de uma placa de demonstração Internet/Ethernet, que usa um
microcontrolador PIC18F452 (suporta também o PIC16F877) e firmware TCP/IP
[MICROCHIP, 2002].

Figura 4 - PICDEM.netTM Placa de Demonstração Internet/Ethernet.


Fonte: MICROCHIP, 2002.

Este kit utiliza o Microchip TCP/IP Stack, que é um pacote de programas


que pode prover serviços para aplicações padrão TCP/IP (HTTP Server, Mail
Client, etc), ou para uma aplicação TCP/IP desenvolvida pelo cliente que não
precisa conhecer todas as especificações do TCP/IP para utilizá-lo.
O TCP/IP Stack é implementado de uma forma modular, com todos os
serviços criados nas camadas mais abstratas, cada camada acessando serviços
de uma ou mais camadas inferiores. O Stack é escrito em linguagem de
programação ‘C’, para os compiladores Microchip C18 (em uso neste projeto) e o
Hi-Tech PICC18, desenvolvido para atender apenas a família 18 de
microcontroladores.
10

O PICDEM.net , mostrado em diagrama em blocos na figura 5, suporta


interface Ethernet e RS-232 que é utilizada principalmente na primeira
configuração da placa, onde é programado IP, bits por segundo, paridade, stop
bit, etc. Para isso é utilizado um programa terminal padrão, como Hyper Terminal
do Windows [MOKARZEL, 2004]. O esquemático desse kit é apresentado em
anexo.
Características do PICDEM.net:
?? TCP/IP Stack
?? Web Server com HTML
?? EEPROM Serial 24L256
?? Firmware para Xmodem para download de web pages para a EEPROM
?? Conector ICSPTM /ICD, utilizado para fazer debugger com o circuito já em
funcionamento.
?? Interface Ethernet
?? Interface Serial RS-232
?? Display LCD
?? PHY da Realtek RTL8019S

Figura 5 - PICDEM.netTM Diagrama em blocos. Fonte: MICROCHIP, 2002.


11

2.2.1 Microcontrolador PIC

A família PIC18 possui microcontroladores de 18 a 80 pinos, seus softwares


soquetes são compatíveis com a família PIC16. No projeto é utilizado o
microcontrolador PIC18F452, que tem suas características apresentadas na
Tabela 1 e 2 [MICROCHIP, 2002].
Utiliza uma arquitetura RISC, com freqüências de clock de até 40Mhz, até
2048k palavras de memória de programa e até 3968 bytes de memória RAM.
Além disso, podem ser encontrados com diversos periféricos internos, como: até
quatro temporizadores, memória EEPROM interna, gerador / comparador,
amostrador PWM, conversores A/D de até 12 bits, interface de barramento CAN,
I2C, SPI, entre outros.
Características básicas do desenho interno desses MCUs:
?? Capacidade de pipeline (enquanto executa uma instrução, o processador
busca a próxima instrução na memória, de a forma a acelerar a execução
do programa).
?? Capacidade de execução de uma instrução por ciclo de máquina (as
instruções que provocam desvio no programa são executadas em dois
ciclos de máquina). Obs: Um ciclo de máquina no PIC equivale a quatro
ciclos de clock.
?? Cada instrução ocupa sempre apenas uma posição de memória de
programa (devido à largura do barramento de dados de memória de
programa ser maior, justamente para acomodar uma instrução inteira em
apenas uma posição de memória).
?? Tempo de execução fixo para todas as instruções (com exceção das
instruções de desvio). Devido ao fato de cada instrução do PIC ocupar
apenas um posição de memória, o tempo de execução é fixo, facilitando a
determinação do tempo de execução de um programa [PEREIRA, 2002].
12

Tabela 1 – Memórias do PIC18F452


Memória de dados
Memória de Programa
Bytes Bytes
Tipo Bytes RAM EEPROM
FLASH 32K 1536 256

Tabela 2 – Composição do PIC18F452


Portas ADC MSSP USART CCP/ Timers Encapsulamento Pinos
I/O 10-bit PWM 8/16-bit
34 8 I2C/SPI 1 2 1/3 DIP, PLCC, 40/44
TQFP

2.3 Kit Didático Microcontrolador 8051

2.3.1 Família 8051

No início da década de 80, a INTEL, que já tinha criado o microcontrolador


8048, lançou uma nova família, herdeira dos 8048, intitulada 8051 de “8 Bits”.
Mostrado na figura 6. Tipicamente o 8051, como representante básico de família,
contem internamente:
?? RAM interna de uso geral de 128 bytes e 128 bytes correspondentes aos
registradores especiais;
?? ROM interna de 4Kbytes;
?? 4 Ports de I/O;
?? 2 timers de 16 bits;
?? 1 Interface serial;
?? Capacidade de 64 kbytes de endereçamento externo de ROM;
?? Capacidade de 64 kbytes de endereçamento externo de RAM;
?? Processador “Booleano” (opera com bits);
13

?? Ciclos típicos de instrução de 1 e 2 µs a 12MHz;


?? Instrução direta de divisão e multiplicação;
?? Entradas de interrupção externa;

Figura 6 – Microcontrolador 8051. Fonte: Data Sheet PHILIPS, 1996.

As portas P0, P1, P2 e P3 cada uma com oito linhas, são destinadas ã
comunicação externa. P0 e P2 se destinam a gerenciar as vias de dados e
endereços da comunicação do microcontrolador com a ROM, RAM ou periféricos
tipo “I/O mapeado”. P1 e P3 destinam-se às vias de comunicação externa, sendo
tipicamente usadas para interface com uso externo.
Além disso, o port 3 tem funções especiais por onde se comunicam os
periféricos internos que existem nos microcontroladores: timers, serial e A/D
[NICOLOSI, 2001].

2.3.2 Kit 8051

Neste kit utilizou-se o microcontrolador 8031 que é da família 8051. Esta


escolha foi feita porque apenas 4 Kbytes de memória ROM do 8051 seriam
insuficientes precisando então de uma ROM externa. Optou-se pelo
14

microcontrolador 8031, que não contem memória ROM interna, porém é mais
barato.
Na placa é possível endereçar 32K posições de memória, visto que são
utilizadas memórias RAM (62256) e EPROM (27C256) que possuem organização
de 32K endereços X 8 bits.
É possível também endereçar um hardware externo utilizando a expansão
de 16 bits, neste caso, pode-se desabilitar a memória RAM da placa utilizando
endereços acima de 7FFFh, pois a partir desse endereço o bit A15 ficará em 1
levando o pino /CE da memória RAM para estado de desabilitação do chip.
A placa ainda dispõe de entradas externas para os timers (Timer 0 e Timer
1), entradas externas de interrupção (/INT0 e /INT1), pinos de RX e TX para
comunicação serial e pinos de /RD e /WR informando que operação está sendo
executada pelo microcontrolador (se escrita ou leitura na memória externa)
[Manual da Placa 8031, 2003].
O esquemático da placa é apresentado no anexo I.

2.4 Dispositivos Lógicos Programáveis

Um PLD (Programmable Logic Device) é um CI (Circuito Integrado) que


contem um grande número de portas, Flip-Flops, e registradores que são
interconectados no chip. Um CI é programável porque a função específica do CI
para dada aplicação pode ser determinada selecionando-se que conexões devem
ser abertas e quais devem ficar intactas [TOCCI, 2003].
As FPGAs são formados por blocos lógicos interligados por uma matriz, onde
cada bloco equivalente a um integrado PLD.
Estes dispositivos possuem as seguintes características:
?? Os dispositivos são programáveis/graváveis, permitindo que se efetue
facilmente a alteração do projeto.
?? Possuem uma grande quantidade de portas lógicas, ou seja, uma maior
escala de integração, o que permite construir circuitos lógicos complexos
com um único integrado.
15

?? Permitem que se implemente funções lógicas bastante complexas, as quais


podem utilizar elementos como Flip-Flops.
?? Pode-se utilizar uma descrição de hardware padronizada como o HDL
(Hardware Description Language), ou suas variâncias AHDL e VHDL
[FERLIN e ELEUTÉRIO, 1998].

2.4.1 FPGAs

As FPGAs (Field Programmable Gate Arrays) são circuitos integrados, da


classe dos VLSIs ("Very Large Scale Integration") sem função pré-determinada,
apresentando recursos eletrônicos independentes que podem ser configurados via
software.
Fisicamente, um FPGA consiste em um arranjo bidimensional de blocos
lógico-programáveis, conectados entre si por meio de uma estrutura de
interconexões. A função lógica implementada por cada elemento - definida pelos
estados das chaves transistorizadas que compõem o elemento -, bem como as
conexões entre os blocos funcionais, são determinadas por vetores binários de
configuração, que podem ser transferidos para o FPGA, repetidamente, a partir de
uma fonte externa.
É permitida a programação em mais de um nível: instruções para
configuração das entradas e saídas dos blocos podem ser incluídas nos vetores
binários. As saídas são do tipo tristate, e os registradores podem ser usados para
armazenar os dados de entrada ou saída. Todos esses blocos configuráveis
podem ser interconectados para implementar praticamente qualquer circuito
lógico.

2.4.2 Kit Cyclone

Este kit contém a FPGA, sobre a qual são realizados os testes para
validação do programa AHDL em execução, após a gravação. O kit, apresentado
16

na figura 7, foi desenvolvido pelo Unicenp (Centro Universitário Positivo) e utiliza o


chip Cyclone EP1C3T144 da Altera.
17

Figura 7 – Kit Cyclone.

3. Especificação Técnica

3.1 Especificação de Hardware

Aqui é apresentado uma visão geral do sistema com seus principais


componentes, representados na figura 8.
18

Rede Ethernet
Computador Kit PICDEM.net
Cliente
Protocolo TCP/IP

Chip Select

Kit Cyclone FPGA

Giga de Testes
Serial

Figura 8 – Diagrama em Blocos do Sistema

A seqüência de operações a serem executadas no sistema acontece da


seguinte maneira: de qualquer computador conectado a rede Internet o cliente
utiliza o navegador Internet (browser) para fazer acesso ao endereço IP do
PICDEM, onde visualiza uma página web que tem operações de controle da
FPGA . Nesta página, poderá escolher se a FPGA estará habilitada ou
desabilitada durante a verificação da lógica.
O cliente é capaz de realizar os testes através de um programa
implementado em C++, onde seleciona o arquivo de formato VWF do projeto
feito no Quartus II. Os valores das entradas, indicadas nesse arquivo, são
enviados ao microcontrolador (Port 1) que as aplica à FPGA.
Os valores de saída são enviados para um buffer (74LS244) e
repassados para o microcontrolador (Port 0) que envia serialmente para o
programa do computador.
Após os dados serem recebidos o resultado é visualizado através de
gráficos, e a validação pode ser feita comparando esses gráficos com as ondas
de simulação geradas pelo Quartus II.
O cliente pode alterar a funcionalidade da FPGA na página web e
realizar o teste quantas vezes forem necessárias. Porem, se o dispositivo for
reprogramado deve-se resetar o circuito de testes, e o programa de interface
19

deve ser executado novamente, para que a conexão serial possa funcionar
corretamente.

3.2 Especificação de Software

O projeto tem como base um arquivo do programa Quartus II, este


arquivo do formato VWF, é gerado na compilação das ondas de simulação que
servem para testar o programa escrito em AHDL.
A giga de testes processa o arquivo VWF e aplica os valores dos sinais
de entrada a FPGA, descritos no arquivo, e lê as saídas do dispositivo,
validando assim à lógica em funcionamento.
Antes de realizar a operação de testes, o usuário deve gravar o
programa na FPGA e selecionar na página web se ela estará desabilitada
(todas as saídas em nível lógico alto ou baixo, dependendo da lógica
implementada) ou habilitada (saídas dependentes das entradas).

3.2.1 Firmware

O firmware implementado no projeto segue a seqüência lógica mostrada


no fluxograma, figura 9.
Primeiramente é estabelecida uma conexão serial com velocidade de
57.600 bits/s. Os dados são recebidos no microncotrolador através do
programa em C++. Um a um são armazenados na memória RAM. A
quantidade de valores é dada pelo end time dividido pelo grid size, ambos
foram definidos no Quartus II, sendo que o grid size é fixo em 50µs e o end
time em 1,35s.
Um por vez os valores são aplicados às entradas da FPGA e os dados
de saída da mesma são armazenados na RAM. Após esse processo, os dados
da memória são enviados serialmente em pacotes de 1.500 bytes para o
20

programa, sendo que ao término de cada pacote espera-se um caractere para


liberar o envio do próximo.

Figura 9 – Fluxograma do Firmware


21

3.2.2 Software

No programa implementado em C++, a lógica seguida é mostrada no


fluxograma da figura 10. Uma conexão serial de 57.600 bits/s é estabelecida. O
usuário seleciona o arquivo VWF, que é validado para verificar se o grid size é
de 50µs.
O arquivo é percorrido até encontrar-se a string “Transition”, pois depois
dela começam a ser descritos os níveis lógicos das entradas. Do começo do
arquivo até a string são declaradas as entradas e as saídas do programa
AHDL, o número de entradas e saídas juntamente com seus nomes são
armazenados. Esses nomes devem ser obrigatoriamente de um caractere para
entrada e dois para saída.
Cada entrada corresponde a uma coluna da matriz de dados que
armazenará os níveis lógicos de cada uma formando no final, uma combinação
de bits. Após o preenchimento total da matriz, as linhas são transformadas em
um número decimal inteiro correspondente ao valor binário formado pelas oito
colunas da linha. Esse valor é enviado para o microcontrolador que executa
suas devidas funções e retorna para o programa o valor das saídas da FPGA.
Os dados são novamente convertidos para uma matriz, que terá seus
valores mostrados para o usuário através de gráficos, onde serão visualizados
os sinais de entrada, saída e seus respectivos níveis lógicos. O resultado
obtido dependerá da habilitação ou não da FPGA através da página web.
22
23

Figura 10 – Fluxograma do Software em C++

3.3 Validação

A validação foi feita no decorrer do desenvolvimento do projeto, em cada


etapa de implementação são realizados testes e corrigidos os erros existentes.
Primeiramente foi implementado e testado a conexão do kit PICDEM
com a Internet, através da rede Ethernet. Por seqüência, criada a página HTML
e os comandos cgi colocados na mesma, como teste, um led no kit PICDEM
era ligado ou desligado pelo usuário através da página web, o status mostrado
no display do kit também era modificado.
Para o teste do circuito composto por buffer, decodificador e
microcontrolador 8051, valores da tabela ascII eram enviados pelo Hiper
Terminal do Windows, via serial, para o microcontrolador. O valor era então
24

comparado com a seqüência de leds que acendiam formando uma combinação


binária de oito bits.
Como teste de processamento do arquivo, utilizou-se um código em
AHDL de uma porta and.
Com todos os blocos ligados os últimos testes e ajustes foram
realizados. Para validação final do funcionamento, os gráficos gerados pelo
programa são comparados com as ondas de simulação do Quartus II,
verificando desta maneira, se a lógica em operação na FPGA está realmente
correta.

3.4 Recursos Necessários

Para desenvolvimento do projeto são necessários os seguintes materiais


de hardware e software:
?? Rede Ethernet
?? Microcomputador, com sistema operacional Windows, conectado
a Internet, via rede Ethernet. Com interface serial;
?? Ambiente de desenvolvimento Borland C++ Builder 6;
?? Ambiente de desenvolvimento MPLAB 7.31;
?? Compilador C para programar o microcontrolador (C18);
?? Ambiente de desenvolvimento Keil;
?? Ambiente de desenvolvimento para linguagem AHDL (Quartus II);
?? Kit PICDEM.net da Microchip;
?? Kit microcontrolador 8051;
?? Kit Cyclone da Altera;
?? Circuitos integrados: 74LS244, 74LS138, 74LS02;
Foram listados apenas os principais materiais do projeto, sem levar em
consideração materiais para teste como multímetro, osciloscópio e proto-board.

3.5 Estimativa de Custos


25

Para o desenvolvimento do projeto, os principais materiais tais como, o


Kit PICDEM.net e o Kit Cyclone foram disponibilizados pela faculdade.
Porem visando listar o custo total do projeto todos os materiais foram
listados na tabela 3, sem levar em consideração materiais de teste como
osciloscópio, multímetro e proto-board.
Considerou-se também o tempo de trabalho no desenvolvimento do
projeto, desde a fase de pesquisa até a documentação final, totalizando em
torno de 720 horas de trabalho, onde a hora trabalhada equivale a de RS
12,00.

Tabela 3 – Estimativa de Custos


Recursos Necessários Custos (R$)
MPLAB 7.31 Free
MPLAB C18 1.103,00
Quartus II Free
Kit PICDEM.net 1.493,00
Kit Cyclone 214,00
Kit 8051 50,00
Circuito auxiliar 10,00
Trabalho de desenvolvimento 8.640,00

3.6 Cronograma

Para melhor gerenciamento do projeto um cronograma de execução de


tarefas foi desenvolvido, este é apresentado na tabela 4.
26

Tabela 4 – Cronograma do Projeto


Descrição Início Término
Protocolo de Comunicação 04/04/2006 22/05/2006
Página web de interface com o usuário 23/05/2006 05/06/2006
Microcontrolador 8051 e circuito 06/06/2006 31/07/2006
Comunicação serial 01/08/2006 15/08/2006
Implementação em C++ 16/08/2006 11/09/2006
Testes e ajustes 12/09/2006 26/09/2006
Validação final de funcionamento 27/09/2006 04/10/2006

4. Projeto

4.1 Hardware
27

4.1.1 Cliente

O computador cliente conectado serialmente ao giga de testes não


precisa ser necessariamente o mesmo utilizado para fazer acesso, através da
página web, ao kit PICDEM. A alteração de habilitação ou não da FPGA pode
ser feita de qualquer máquina conectada a rede.
O usuário faz uso do giga de testes através de um programa
implementado em C++, utilizando o ambiente de desenvolvimento Builder 6.0,
onde seleciona o arquivo de simulação do Quartus II. Os resultados obtidos
após a aplicação dos valores à FPGA são visualizados através de gráficos, que
mostram os níveis lógicos dos sinais de entrada e de saída nos instantes de
tempo.

4.1.2 Kit PICDEM.net

O kit PICDEM que permite a comunicação do sistema com a Internet.


Ele disponibiliza um pacote de programas que provê serviços para aplicações
padrão TCP/IP tais como http Server, FTP Server, Mail Client, etc. Os
programas são todos implementados em C ansi, e utilizam o ambiente de
desenvolvimento MPLAB 7.31 com o compilador para linguagem C C18.
Os comandos selecionados através da página web são implementados
no programa de webserv pertencente ao pacote de programas. Nele são
programadas as ações dos botões presente na página, aplicação do sinal no
pino de seleção (5V – habilitação, 0V desabilitação) e o status mostrado na
web.
Para controle de habilitação ou desabilitação utiliza-se o IO50 da FPGA
que é ligado no pino RC0 do microcontolador PIC18F452 presente neste kit,
que tem seu esquemático apresentado no anexo I.

4.1.3 FPGA

A FPGA utilizada para o giga de testes pertence ao kit Cyclone,


desenvolvido pelo Unicenp (Centro Universitário Positivo) que contem o
dispositivo Cyclone EP1C3T144 da Altera e um circuito básico para
manipulação da mesma, o esquemático da placa é mostrado no Anexo I.
28

Nesta FPGA que serão realizados os testes da lógica em execução. O


programa gravado nesse dispositivo deve ser correspondente ao arquivo de
simulação utilizado como base para o giga de testes. Se a FPGA estiver
habilitada, apresentará um valor de saída dependente dos valores de entrada.
Como o resultado da simulação da lógica, através do programa Quartus
II, já é previamente obtido, é possível comparar o resultado adquirido com o
esperado, e verificar assim se a lógica em funcionamento está operando
corretamente.
Se a FPGA foi desabilitada pelo usuário através da página web, o
resultado apresentados nos gráficos deve ser de todas as saídas em nível
lógico alto ou baixo, dependendo da lógica implementada em AHDL.

4.1.4 Giga de Testes

O circuito de teste é composto do kit do microcontrolador 8051,


decodificador 74LS138, buffer 74LS244 e uma porta nor 74LS02. Este circuito
é responsável por receber serialmente os valores das entradas da FPGA,
armazena-los na memória RAM, aplicá-los na FPGA, ler suas saídas,
armazená-las na RAM e enviar novamente para computador. Sendo que, é
possível verificar no máximo oito portas de entrada e oito de saída da FPGA.
Os pinos da FPGA e do microcontrolador conectados ao circuito de teste
são apresentados na tabela 5 e o esquemático do circuito de teste está
apresentado no Anexo I.
As entradas da FPGA recebem os valores direto do Port1 do
microcontrolador. As saídas passam por um buffer mapeado em memória,
através do decodificador, e são aplicadas no Port0.

Tabela 5 – Pinagem do Circuito Teste


Pino da FPGA Pino do µC 8051 Descrição
IO34 P1.0 Entrada
IO36 P1.1 Entrada
IO38 P1.2 Entrada
IO40 P1.3 Entrada
29

IO41 P0.0 Saída


IO42 P1.4 Entrada
IO43 P0.1 Saída
IO44 P1.5 Entrada
IO45 P0.2 Saída
IO46 P1.6 Entrada
IO47 P0.3 Saída
IO48 P1.7 Entrada
IO49 P0.4 Saída
IO51 P0.5 Saída
IO53 P0.6 Saída
IO55 P0.7 Saída

4.2 Software

São apresentados os diagramas de fluxos de dados do sistema.

4.2.1 Diagrama de Fluxo de Dados Nível Zero

O diagrama, mostrado na figura 11, apresenta um a visão geral do fluxo


de dados. O cliente altera, através da web, como mostra a figura 15, o
funcionamento da FPGA, habilitando ou desabilitando o dispositivo. O acesso à
página é feito através do navegador Internet utilizando-se o endereço IP
correspondente ao kit PICDEM. O IP do kit pode ser fixo ou dinâmico, para
fazer a alteração entre um modo e outro basta configurar o PICDEM pelo Hyper
Terminal, através de uma conexão serial.
30

A operação de habilitação pode ser realizada de qualquer máquina


conectada a rede, podendo então ser efetuada de um computador distinto ao
que o giga de testes está conectado via serial. O comando é enviado para o kit
PICDEM que executa a operação na FPGA.
Através de um programa implementado em linguagem C++, utilizando-se
o ambiente de desenvolvimento Borland Builder 6.0, o usuário é capaz de obter
os resultados obtidos nos testes realizados na FPGA.
Para isso, o usuário seleciona o arquivo de simulação (VWF)
correspondente à lógica em execução na FPGA, e a partir de seu
processamento o programa obtém os valores correspondentes as entrada e os
envia para o circuito teste. Esses dados são aplicados no dispositivo e as
saídas, do mesmo, lidas e enviadas para o programa cliente.

Comando Comando de
CLIENTE seleção
Aplicação
Status da Web
FPGA PICDEM
Arquivo Status
Gráfico de
resultado
Sinal de
Sinal seleção
Aplicação
atualizado
VWF
Aplicação
TCP/IP Stack
Dados de
entrada da
FPGA Dados de Sinal Seleção
entrada

GIGA DE Entradas
Aplicação
TESTE µC
Dados de FPGA
saída Saídas

Figura 11 – Diagramas de Fluxo de Dados Nível Zero.

4.2.2 Diagrama de Fluxo de Dados Nível Um


31

O diagrama, mostrado na figura 12, apresenta um a visão mais


detalhada do fluxo de dados do sistema. O cliente acessa a página web do
sistema digitando na barra de endereços do browser o IP do kit PICDEM. Na
página pode selecionar se a FPGA estará habilita ou desabilitada, como um
Chip Enable. No modo “desabilitada” todas as saídas ficam em nível lógico alto
ou baixo, depende da lógica implementada. Quando a FPGA estiver
“habilitada” as saídas são dependentes dos sinais de entrada. O comando é
enviado para o PICDEM que aplica o sinal de seleção na FPGA, o status do
dispositivo é automaticamente atualizado na página web.

No programa o usuário deve selecionar o arquivo VWF que servirá como


base para o teste da FPGA, o arquivo é validado verificando se o grid size é de
50µs. O arquivo é percorrido e os valores das entradas são armazenados em
uma matriz, sendo que, cada coluna corresponde a uma entrada e o número de
linhas é dado pelo quociente do end time pelo grid size. A matriz é preenchida
por colunas, só quando todas as linhas da coluna forem completadas que a
próxima coluna receberá os valores da entrada seguinte. Ao final, cada linha da
matriz terá oito colunas que representam um número binário de oito bits.
Para enviar ao microcontrolador, as colunas da matriz são
transformadas em um número inteiro decimal, que corresponde ao número
binário formado por elas. O circuito de teste aplica esses valores ás entrada da
FPGA, lê suas saídas e armazena na memória RAM. Quando todos os dados
forem aplicados, os valores de saída são enviados para o programa do builder,
que converterá novamente para uma matriz, mostrada para o usuário através
de gráficos.
32

1 2
CLIENTE Comando de
IP do PICDEM Valor do dado
Carregar seleção
Selecionar de seleção
página lógica na
Web no página
browser web
Arquivo Status PICDEM
VWF atualizado

4 Sinal de
seleção
Status
5 Atualizar
dados na 3
Validar web
arquivo Aplicar
Seleção

Arquivo
validado
Comando
6 selecionado
Processar
arquivos
7 Valores FPGA
aplicados
Enviar os
Dados 8
dados para
o µC Aplicar Valores
dados obtidos

9
Dados de
entrada Obter
Valores
dados
resultantes Resultado
Dados
mostrados

GIGA DE
TESTES
12 11 10

Mostrar Dados Dados


Converter Receber os Dados de
dados no convertidos recebidos
dados dados do saída
gráfico µC

Figura 12 – Diagramas de Fluxo de dados Nível Um.


33

5. Resultados

Os resultados gerais foram satisfatórios, pois o projeto foi concluído com


êxito. Nas figuras 13 e 14, é apresentado o sistema final com suas partes
integradas. A imagem 15 é referente ao interior da caixa que envolve o circuito
de teste.

Figura 13 –Giga de Testes.

Figura 14 – Circuito do Sistema.


34

Figura 15 – Circuito de Teste.

Para comprovar o funcionamento do sistema foram criados dois projetos


no Quartus II, o primeiro de um led com lógica and e o outro de um
decodificador. As saídas só são habilitas quando o enable alterado pelo
usuário através da página web, que é mostrada na figura 16, está em nível
lógico alto.

Figura 16 – Página Web do Giga de Testes.


35

Como exemplo do funcionamento do sistema, são descritos os passos de


execução para o teste da lógica apresentada na figura 17.
Primeiramente é gerado o projeto no programa Quartus II e o codigo em
AHDL implementado, a partir isso, geraram-se as ondas de simulação, onde o
resultado da mesma pode ser visto na figura 18.
Os valores dos sinais são armazenados em um arquivo de formato VWF,
que guarda os níveis lógicos das entradas nos instantes de tempo, que variam
de 0s a 1,35s, com um intervalo de grid size de 50µs.
Para exemplificar são apresentados na figura 19 os níveis lógicos
referentes à entrada a do programa em AHDL.

Figura 17 – Lógica implementada em AHDL.


36

Figura 18 – Ondas de Simulação no Quartus II.

Figura 19 – Nível Lógico nos Instantes de Tempo.

O programa processa o arquivo de simulação e obtém os valores que


serão aplicados na FPGA pelo circuito de teste. Pra realizar essa operação,
primeiro o software valida o arquivo de simulação verificando se o grid size é
de 50µs, que é obrigatório. O programa percorre posição a posição do arquivo
37

através de um ponteiro e armazena os valores de entradas em uma matriz,


sendo que, cada coluna corresponde a uma entrada. A matriz é preenchida por
colunas, só quando todas as linhas da coluna forem completadas que a
próxima coluna receberá os valores da entrada seguinte. Após o
preenchimento, a matriz terá oito colunas que representam um número binário
de oito bits.
Para enviar ao microcontrolador, as colunas da matriz são
transformadas em um número inteiro decimal, que corresponde ao número
binário formado por elas, como mostra o trecho de código imlementado em
C++ apresentado na figura 20.

Figura 20 – Programa Implementado em C++.

O circuito de teste aplica esses valores ás entrada da FPGA, lê suas


saídas e armazena na memória RAM. Após todos os dados aplicados, os
valores de saída são enviados para o computador, que converterá novamente
para uma matriz, mostrada para o usuário através de gráficos, como mostra a
figura 21 para a FPGA “habilita” e figura 22 para ”desabiltada”. As ondas de
simulação da figura 18 e os gráficos da figura 21 e 22 são equivales e
correspondem à lógica AHDL apresentada na moldura da figura 20.
38

Figura 21 – Resultado do Teste para a FPGA “Habiltada”.

Figura 22 – Resultado do Teste para a FPGA “Desabiltada”.


39

6. Conclusão

O programa Quartus II faz o teste do programa AHDL através das ondas


de simulação, mas essa verificação é feita antes da gravação da FPGA. Com o
giga de testes é possível verificar se a lógica em execução no dispositivo está
correta e se não existe problemas de funcionamento no dispositivo, pois os
gráficos obtidos no programa são comparados com as ondas de simulação,
desta maneira, é possível notar se ocorreram erros.
Mesmo o projeto sendo concluído com êxito, ainda existe possíveis
alterações para melhorar o funcionamento do sistema, como modificar os
gráficos apresentados ao usuário para o mesmo modelo das ondas de
simulação do Quartus II que possuem uma forma mais clara de visualização.
A possibilidade de utilizar a internet para controlar o funcionamento da
FPGA traz grande flexibilidade, pois as alterações podem ser realizadas de
qualquer máquina conectada a rede Ethernet. O problema ocorreria em uma
possível evolução do projeto, onde mais funções fossem controladas pela web,
o kit PICDEM só disponibiliza duas portas de comunicação livres e isso limita a
aplicação, pois funções adicionais são necessárias que existam pinos de I/O
para interação com o sistema.
40

7. Referencias Bibliográficas

CARVALHO, T. C. M. B., Organização e Arquitetura de Redes de


Computadores OSI e TCP/IP, 2ª. ed. São Paulo: Makron Books, 1997.

COMER, D., Interligação em rede com TCP/IP, 3ª. ed. Rio de Janeiro:
Campus, 1998.

MOKARZEL, M. P.; CARNEIRO, K. P. M. C., Internet Embedded: TCP/IP


para Microcontroladores, 1ª. ed. São Paulo: Érica, 2004.

PEREIRA, F., Microcontroladores PIC: Técnicas Avançadas, 2ª. ed. São


Paulo: Érica, 2002.

NICOLOSI, DENYS E. C., Microcontrolador 8051 Detalhado, 2ª. ed. São


Paulo: Érica, 2001.

RIBEIRO, A. A. L., Reconfigurabilidade Dinâmica e Remota de FPGAs,


Dissertação de Mestrado, São Paulo: USP – São Carlos, 2002.

TOCCI, R. J., Sistemas Digitais: Princípios e Aplicações, 8ª. ed. São Paulo:
Prentice Hall, 2003.

Microchip Tecnology Inc. PICDEM.netTM : User’s Guide. Arizona, 2002.

ALTERA CORPORATION. Pin Information for the CycloneTM .EP1C3T144


Device Final Version 1.3. San Jose, 2004.

Você também pode gostar