• Nenhum resultado encontrado

Gerenciador de Protocolo é a denominação dada, neste trabalho, ao dispositivo que implementa a interface entre o software do NCAP e a TII. O comportamento do Gerenciador de Protocolo foi descrito integralmente em VHDL e implementado com um dispositivo PLD.

O gerenciador é responsável por obter os dados e os sinais de controle através da porta paralela, com a finalidade de disparar e gerenciar o processo que estabelece o protocolo IEEE 1451.2, controlando assim, as atividades do STIM. Desta maneira, o Gerenciador de Protocolo recebe os endereços de função, canal e escrita, através da porta paralela do PC e os disponibiliza,

de maneira sincronizada, para a interface TII. Além disso o gerenciador recebe do STIM os dados por meio do sinal DIN e os disponibiliza para tratamento interno no NCAP.

O gerenciador foi desenvolvido com o intuito de fornecer uma solução que possa ser empregada em diversas aplicações e possibilite o modo de operação plug and play do STIM, pois o dispositivo pode ser conectado a qualquer PC que implemente a funcionalidade do software do NCAP desenvolvido neste trabalho. Introduz-se, deste modo, uma grande flexibilidade no sistema, pois a porta paralela não precisa ser modificada e, além disso, o gerenciador pode ser implementado com um PLD de baixo custo e uso geral.

Foram desenvolvidas e implementadas, duas versões do Gerenciador de Protocolo, a primeira versão possui uma entrada de 8 bits de dados e 2 bits de controle, e uma saída de 8 bits para realizar operações de leitura. A segunda versão possui uma entrada de dados de 8 bits e uma saída de 5 bits para operações de leitura.

7.2.2.1 - Gerenciador de Protocolo com Entrada e Saída de Oito Bits

O Gerenciador de Protocolo com entrada e saída de oito bits foi a primeira versão implementada, podendo ser utilizado com sucesso junto com um software de gerenciamento da porta paralela baseado na linguagem Phyton34, que possibilite a leitura e escrita com 8 bits.

Esta versão foi desenvolvida com base no conceito de máquina de estados, utilizando a descrição VHDL comportamental. O funcionamento do dispositivo é relativamente complexo e, ao todo, foram necessários 80 estados35 para atingir o nível de desempenho desejado. Além das entradas e saídas mencionadas, o dispositivo possui um sinal de habilitação e um sinal de relógio, do qual dependem os estados implementados.

O diagrama esquemático desta versão do Gerenciador de Protocolo é mostrado na Figura 7.15. O dispositivo é composto basicamente pelos seguintes blocos: multiplexador e controle de dados, módulo de disparo, detecção do STIM, gerenciador e demultiplexador. Os códigos fonte correspondentes são fornecidos no disquete anexado ao final do trabalho.

34 Phyton: é uma linguagem puramente orientada a objeto e de domínio público, que introduz modularidade e portabilidade.

Phyton é interpretada, no entanto, não é necessário compilar os programas, como acontece com Java.

35 Dada a complexidade do projeto, optou-se por não inserir um diagrama de estados, pois os estados implementados podem ser

facilmente analisados e contabilizados a partir dos códigos fonte pertencentes aos diferentes blocos que fazem parte do projeto do gerenciador. Isto é possível graças à flexibildade da descrição em VHDL.

a) Módulo de Multiplexação

Este módulo é composto por um sistema multiplexador preparado para aceitar, da porta paralela, o envio de 10 bits, sendo que 8 são de dados (EN_DADOS[7..0]) e 2 são de controle (C[1..0]). Desta maneira é possível multiplexar os dados de acordo com a configuração mostrada na Figura 7.16. Os blocos funcionais responsáveis por realizar a multiplexação são o Mux_paralela e o Ctrl, apresentados na Figura 7.17. A interligação entre os módulos pode ser observada na Figura 7.15.

Figura 7.15. Gerenciador de Protocolo com entrada e saída de oito bits.

C[1..0] = 01 => FUNÇÃO [7..0] = EN_DADOS C[1..0] = 10 => CANAL [7..0] = EN_DADOS C[1..0] = 11 => ESCRITA_1 [7..0] = EN_DADOS C[1..0] = 00 => ESCRITA_2 [7..0] = EN_DADOS

a) b)

b) Módulo de Disparo

Quando da porta paralela for enviado um valor de controle igual a ‘01’, o bloco ctrl ativa o bloco funcional trig, responsável por disparar o gerenciador. Assim, o gerenciador irá gerar um pulso que sai, através da TII, via NTRIG. O bloco funcional trig é mostrado na Figura 7.18.

c) Módulo de Detecção do STIM

De acordo com o padrão IEEE 1451.2, o STIM deve ser retirado ou conectado do conector da TII, sem desligar a alimentação do NCAP. O módulo Mod_Nsdet fornecerá alimentação (POWER) para o STIM, por meio da TII, apenas quando detectar a sua presença, através do sinal NSDET em nível ativo baixo. Entretanto, o NCAP sempre possui alimentação ativa (PWR), como observado no diagrama da Figura 7.19 a, que ilustra o modo hot-swap. O bloco funcional

mod_nsdet é mostrado na Figura 7.19 b.

a) b)

Figura 7.17. a) Bloco de controle, b) Bloco multiplexador.

Figura 7.18. Módulo de disparo.

d) Gerenciador

O módulo gerenciador é responsável por controlar o fluxo de dados e sinais de controle através da interface TII, do lado do NCAP. O módulo é responsável por obter os endereços de função, canal e escrita fornecidos pelo software do NCAP, de forma paralela, e disponibilizá-los para o STIM utilizando o sinal DIN, de forma série, bem como obter os dados que entram via DOUT, de forma série, e disponibilizá-los, de forma paralela, para processamento interno no NCAP.

Os dados que entram através de DOUT são divididos internamente e colocados em três barramentos de oito bits, SAIDA_1[7..0], SAIDA_2[7..0] e DADOS_TEDS[7..0], para serem enviados ao módulo demultiplexador. O diagrama do bloco funcional gerenciador é apresentado na Figura 7.20.

e) Módulo Demultiplexador

O módulo demultiplexador (Demux) é responsável por obter os dados que entram via EN_PARALELA1[7..0], EN_PARALELA2[7..0] e DADOS_TEDS[7..0] e disponibilizá-los para o barramento de saída SAIDAPARALELA[7..0], do Gerenciador de Protocolo, de acordo com o sinal de controle fornecido pelo bloco Demux_Ctrl, a fim de que o software do NCAP possa realizar a leitura de dados. Os blocos funcionais são mostrados na Figura 7.21.

a) b)

Figura 7.20. Módulo gerenciador.

7.2.2.2 - Gerenciador de Protocolo com Entrada de Oito Bits e Saída de Cinco Bits

Esta versão do Gerenciador de Protocolo foi utilizada na implementação final do sistema. O diagrama esquemático é mostrado na Figura 7.22. O dispositivo é composto basicamente pelos seguintes blocos: módulo de entrada de dados da porta paralela, módulo de disparo, detecção do STIM e gerenciador. Os códigos fonte correspondentes são fornecidos no disquete anexado ao final do trabalho.

Em contraste com o Gerenciador de Protocolo apresentado na seção 7.2.2.1, nesta versão dispõe-se de uma entrada de 8 bits de dados sem sinais de controle, pois a multiplexação é feita com endereços de 8 bits que circulam pelo mesmo barramento. As operações de leitura são feitas através de uma saída de 5 bits, com a finalidade de utilizar o pacote Parport diretamente.

De acordo com as recomendações do pacote Parport, a leitura de dados deve ser feita através do registrador de estados da porta paralela, usando a configuração mostrada na Tabela 7.1.

Bit Pino # 7 11 (invertido) 6 10 5 12 4 13 3 15

Internamente, no gerenciador, é lido um byte por vez, enviado pelo STIM. Cada byte é dividido em duas parcelas, na qual a primeira contém os 5 primeiros bits, sendo que o bit mais significativo deve ser invertido e, a segunda parcela, contém os 3 bits restantes com o bit mais significativo invertido; a parcela é preenchida com zeros até completar os 5 bits. O software do NCAP realiza dois ciclos de leitura por cada byte enviado pelo STIM e o byte real é reconstruído internamente no NCAP. Na Figura 7.23 ilustra-se o mecanismo de leitura mencionado.

Tabela 7.1. Pinagem do registrador de estados da porta paralela para funções de leitura.

Figura 7.23. Algoritmo para conversão de um byte em duas parcelas de 5 bits, utilizando dois ciclos de leitura.

Esta versão do Gerenciador de Protocolo também realiza uma multiplexação dos dados que vêm da porta paralela. Porém, com o objetivo de usar apenas o registrador de dados, a multiplexação é feita de acordo com a seqüência mostrada na Figura 7.24. Empregaram-se os endereços 01111111, 11111100, 11111101 e 11111110 para realizar o controle de dados de entrada, pois são valores que, de acordo com o padrão IEEE 1451.2, podem ser utilizados a critério do projetista.

Além das funções já apresentadas na seção 7.2.2.1d, o módulo gerenciador realiza uma demultiplexação interna dos barramentos de dados, além de implementar o algoritmo que transforma um byte em duas parcelas de 5 bits. O módulo de disparo (trig) e de detecção (mod_nsdet) desempenham as mesmas funções que já foram comentadas quando foi analisado o Gerenciador de Protocolo com entrada e saída de 8 bits.

Como no caso anterior, esta versão foi desenvolvida com base no conceito de máquina de estados, utilizando a descrição VHDL comportamental. Foram necessários 96 estados para atingir o nível de desempenho desejado. Esta solução é compatível com o pacote Parport e, portanto, mais conveniente para ser empregada na implementação do nó IEEE 1451 proposto.