• Nenhum resultado encontrado

CAPÍTULO 4  DESENVOLVIMENTO DO PROJETO 39 

4.3  ELABORAÇÃO DOS CIRCUITOS ELETRÔNICOS 43 

4.3.9  PROJETO DO CIRCUITO ETHERNET PARA O FPGA 79 

A partir da proposta inicial de se desenvolver uma plataforma que atendesse também aplicações em computação ubíqua que, por natureza, exigem interação e interoperabilidade com outros dispositivos, incluir comunicação

Ethernet no sistema tornou-se essencial.

A rede Ethernet é padronizada pela norma IEEE 802.3. Ela é do tipo barramento e constitui uma das opções para a camada host/rede do modelo de referência TCP/IP. Cada dispositivo Ethernet deve possuir um número MAC (Media Access Control) que o identifica unicamente. Ele é formado por um conjunto de seis números hexadecimais de dois dígitos (48 bits). Todos os dispositivos se interligam por um HUB, que nada mais é que um concentrador, recebendo dados de um dispositivo e repassando aos demais.

A comunicação em uma estrutura desse tipo exige que camadas superiores peçam o envio de um determinado pacote a um dispositivo com certo número

IP. Assim, deve-se procurar na rede qual dispositivo possui aquele IP, para

então se obter o seu endereço MAC. É através desse endereço que um dispositivo consegue se comunicar com aquele desejado através do meio físico (Ethernet). Isso é feito através de um protocolo chamado ARP (Address

Resolution Protocol). Esse protocolo envia sinais broadcast (para todos na

rede) perguntando qual dispositivo possui aquele endereço IP. Então o dispositivo retorna uma mensagem que contém o seu endereço MAC. A partir daí, a camada de host/network poderá enviar a informação pelo meio físico até o dispositivo de destino.

Outro serviço notório é o DHCP (Dynamic Host Configuration Protocol), que é utilizado para a configuração automática dos dispositivos em uma rede IP de tal forma que o endereço IP e outras informações sejam fornecidas assim que o dispositivo é ligado. Para isso, o dispositivo envia um pacote UDP/IP em modo

broadcast através de determinada porta. O equipamento responsável por

decidindo qual IP será assimilado por esse novo dispositivo e envia essas informações através da mesma porta UDP até o cliente que realizou a requisição. A partir desse momento, o dispositivo adota que o seu endereço IP é aquele retornado pelo DHCP server.

Definida a necessidade do protocolo Ethernet, partiu-se para a escolha do dispositivo controlador do protocolo. Para valorizar trabalhos anteriormente desenvolvidos dentro do departamento de engenharia mecatrônica da UnB, escolheu-se utilizar o controlador ENC28J60 que já havia sido utilizado em trabalhos anteriores, testado e aprovado por colegas.

Esse controlador desenvolvido pela empresa Microchip é responsável por construir uma interface serial/Ethernet. Ele deve ser utilizado em conjunto com outro microcontrolador/FPGA com suporte ao protocolo SPI. A Figura 25 mostra o esquemático desse controlador. Pode-se observar que, internamente, está construído a camada MAC e a camada física (PHY) da Ethernet. Logo, os dados que devem ser enviados para ele é o pacote IP.

Figura 25 - Esquemático do controlador Ethernet.

As principais características deste controlador são: a) Compatível com o padrão IEEE 802.3 (Ethernet); b) Compatível com as redes 10/100/1000 Base-T;

c) Suporta uma porta 10 Base-T com detecção automática de polaridade de correção;

d) Suporta comunicação full e half-duplex;

e) Pode ser programado para retransmissão automática na colisão24; f) Verifica automaticamente pacotes errados e os rejeita;

g) 8 KB para o buffer de transmissão e recepção;       

24 Uma colisão é quando dois dispositivos começam a transmitir em uma rede Ethernet. Nesse caso, os dois dispositivos devem parar a transmissão, esperar um determinado tempo e tentar

h) Interface SPI com clock de até 20MHz; i) Alimentação de 3.1 à 3.6V (3.3V típico); j) Entradas tolerantes a 5V;

k) Exige clock externo de 25MHz.

A pilha TCP/IP desenvolvida pela Microchip já fornece toda a interface necessária. Basicamente, o funcionamento do controlador se dá escrevendo nos registradores e na memória interna do ENC28J60 através de comandos enviados pela porta SPI. Logo, o controlador envia os dados para um dispositivo, configura-se o MAC de destino e em seguida é colocado no buffer o pacote desejado para a transmissão. Após essa configuração, um comando é enviado para que se inicie a transmissão.

A recepção ocorre de maneira análoga, o pacote recebido é colocado no buffer de transmissão até que o programa o leia. O ENC28J60 avisa ao microcontrolador/FPGA da existência de um pacote através de interrupção ou através de pooling. O primeiro método interrompe a execução do programa no microcontrolador/FPGA e passa para a rotina programada que será encarregada de pegar o pacote recebido. No segundo método, o microcontrolador/FPGA de forma periódica pergunta ao ENC28J60 se existe algum dado no buffer e, caso exista, faz a transferência.

O circuito utilizado foi extraído do manual do fabricante do controlador que sugere tanto o circuito quanto os valores dos dispositivos. Este circuito também foi utilizado por colegas do Departamento em trabalhos anteriores (Chagas, 2008). A Figura 26 mostra o circuito implementado.

Conforme já adiantado, este controlador utiliza interface SPI. Essa interface faz uso de quatro sinais para a comunicação serial entre dois dispositivos, onde um deles é o master e o outro slave. O master deve enviar o sinal de clock, pois é um protocolo síncrono. Outro sinal é para habilitação do slave, chamado de Chip Select (CSL), utilizado quando se tem vários dispositivos compartilhando o mesmo barramento de dados SPI. O terceiro é por onde trafegará os dados do master para o slave e o quarto é para o tráfego de dados na direção oposta.

Segue, na Tabela 19, a descrição dos pinos utilizados, bem como a função de cada um deles.

Tabela 19 – Descrição dos pinos e sinais utilizados no protocolo Ethernet - FPGA.

NOME TIPO DESCRIÇÃO PINO NO

ARM

SCK O Clock para a interface SPI 178

SI I Data In para interface SPI 162

SO O Data Out para interface SPI 163

RST I Sinal de reset 164

CS I

Chip select é utilizado para selecionar o chip quando se tem mais de um dispositivo interconectado à interface SPI. Se colocado em nível lógico 1 o dispositivo desabilita a comunicação com o microcontrolador;

165

CLKOUT O Pino de clock de saída programável 180 INT O

Interrupt é utilizado para notificar o microcontrolador quando não se opta pelo pooling.

167