Módulo EPOS para Interface Paralela Bidirecional Assíncrona Padrão IEEE 1284

 

Introdução/Objetivos

O objetivo da comunicação paralela é, tão somente, enviar dados de uma aplicação a um dispositivo conectado a uma porta paralela e, por vezes, vice versa. Para que essa comunicação possa ocorrer, é necessário que a aplicação selecione um dos dispositivos conectados a uma das portas paralelas. Somente uma aplicação pode fazer uso de um dispositivo ao mesmo tempo. Ainda, uma aplicação pode fazer uso de mais de um dispositivo simultaneamente. Antes de se iniciar a comunicação, precisa haver uma negociação entre a aplicação e o dispositivo mediada pelo sistema operativo (SO), a fim de se estabelecer um modo de transferência de dados adequado às necessidades da aplicação e às limitações lógicas ou físicas do dispositivo. Esta negociação é tarefa exclusiva do SO, de forma que a aplicação se limita apenas a apresentar as características desejadas para a comunicação. Quando uma aplicação exigir um modo de transferência com características além do permitido pelo dispositivo, sua compilação deve negar o pedido, embora ainda seja possível haver uma verificação da natureza do dispositivo em tempo de execução. No caso de haver mais de um dispositivo conectado à mesma porta, será de responsabilidade do SO manter informações sobre os modos de transferência negociados com cada um dos dispositivos. É importante notar que, em nível de SO, uma porta paralela é utilizada de acordo com o regime de compartilhamento por tempo.
 

O padrão IEEE

Quatro documentos especificam várias funcionalidades, requeridas e opcionais, para a implementação de interfaces paralelas e de dispositivos que se conectam a estas interfaces. O primeiro documento foi publicado em 1994 e foi substituído por outro no ano 2000. Este documento-base (IEEE Std 1284-2000) especifica os métodos de sinalização elétrica a serem implementados pelos hospedeiros e pelos dispositivos interfaceadores. Além disto especifica um formato de string para identificação de dispositivos conectados à porta, bem como o método para que este dado seja enviado ao hospedeiro sem que o canal de dados seja utilizado para tal tarefa. Os dispositivos que podem ser conectados na porta paralela são tipicamente impressoras. Entretanto podem ser conectados àquela dispositivos de qualquer natureza que requeiram comunicação de dados paralela assíncrona, bidirecional ou não. O documento-padrão IEEE Std 1284.1 foi, na realidade, publicado em 1997, depois da publicação do primeiro documento-base em 1994; continuando, entretanto atual nos dias de hoje. O padrão 1284.1 especifica a comunicação entre hospedeiro e impressoras de forma independente de camada física de comunicação e é, portanto, utilizado também para especificar comunicação entre hospedeiros e impressoras conectadas a outros hospedeiros através de uma rede tal qual TCP/IP ou NetBios. Como trata especificamente de impressoras e o protocolo definido é independente da camada física utilizada, não se tratará deste protocolo neste trabalho. O documento-padrão IEEE Std 1284.3 trata do uso avançado das portas paralelas conectando vários dispositivos ao hospedeiro simultaneamente, através de daisy chaining e multiplexação. Trata também de uma arquitetura de programação de drivers que tem como objetivo ser implementável em várias arquiteturas e sistemas operacionais, além de especificar o esquema de uma camada de ligação que roteia corretamente informações entre diversos sistemas de software e os dispositivos usados por estes. Este padrão, juntamente com o padrão-base serão contemplados na análise do sistema de software e implementados efetivamente. O último documento (IEEE Std 1284.4), publicado no ano 2000, trata de um protocolo de comunicação de nível correspondente aos níveis OSI de transporte e sessão. Serve na prática para permitir que computadores e outros dispositivos possam se comunicar entre si através de um canal que suporta múltiplas conexões lógicas, garantia de integridade dos pacotes, controle de fluxo etc. Este protocolo será estudado e levado em consideração na análise, mas não será incluído na implementação deste trabalho.

A figura abaixo ilustra as relações entre os padrões publicados.


IEEE 1284

Como introduzido anteriormente, o padrão IEEE 1284 especifica as características eletrofísicas e um método de identificação de dispositivos aos hospedeiros.
 


Figura 1-pinagem da porta paralela (IEEE 1284-A)

Significado dos pinos da figura acima, conforme o modo de compatibilidade:

Modos de Operação e Fases de Operação em Cada Modo

Modo de Compatibilidade

O modo de compatibilidade possibilita que dispositivos anteriores à nova especificação ainda possam tirar proveito das interfaces paralelas de hospedeiros produzidas segundo o novo padrão. Os modos adicionais nibble e byte servem para permitir que haja comunicação bidirecional sem que os modos avançados sejam usados. Interfaces conformantes com o padrão devem suportar, no mínimo, os modos de compatibilidade e o modo nibble.

Fases:

Modo Nibble

Modo em que o dispositivo pode enviar dois lotes de quatro bytes por vez para o host. É utilizado juntamente (mas não simultaneamente) com o modo de compatibilidade para implementar um canal de comunicação bidirecional.

Fases:

Modo Byte

Similar ao modo nibble, exceto pelo fato de que a comunicação dsipositivo-host é feita pelos oito canais de dados em modo reverso.
 

Fases: exatamente as mesmas do modo nibble.

Modo ECP (Extended Capabilities Port)

Método que se utiliza de um controlador de DMA para transferência de dados a taxas mais altas que os modos acima. Provê um canal de comunicação bidirecional parecido com o modo byte. Direcionado principalmente a impressoras.

Fases:

Modo EPP (Extended Parallel Port)

Similar ao modo ECP. Utiliza DMA e o canal de comunicação é bidirecional. Direcionado a dispositivos que requeiram alta taxa de transferência em um canal paralelo (ZIP drives, discos rígidos externos, gravadores de CD etc.).

Fases:

Fases de Operação

A figura abaixo ilustra as atividades e os estados que a interface paralela pode assumir no decorrer de sua operação, bem como as transições possíveis entre eles.


Análise de Domínio

Para cuidar das tarefas de acesso a dispositivo físico tais quais realização de transferências em rajada e manutenção do estado da interface, definiu-se um novo mediador chamado ParPort. Na figura abaixo tem-se o diagrama correspondente.


Como há um padrão que define métodos e protocolos para seleção de dispositivos conectados simultaneamente na porta paralela através de daisy-chain e multiplexing, pode-se encarar o sistema formado por estes dispositivos ligados destas duas maneiras como um barramento. Há, entretanto, ressalvas a se fazer em relação ao acesso ao barramento, que deve ser de uma aplicação por vez.

Na figura abaixo, as famílias de abstrações importantes para a abstração de comunicação paralela.


Na família IO definiu-se um barramento paralelo, que servirá de abstração para o "barramento" formado pelos dispositivos conectados de acordo com as duas formas supracitadas.

Abaixo a figura da abstração Parallel_Bus.

Note-se que o barramento paralelo faz uso do mediador ParPort, se utilizando de suas capacidades de controle do dispositivo físico. Outro componente utilizado é a abstração Function_IH, que é utilizada para tratar interrupções de hardware geradas pela porta paralela em consonância com os pedidos dos dispositivos a esta ligados. Também, pode existir duas arquiteturas de barramento ou a combinação das duas conforme restrições expressas, são elas daisy-chain e multiplexador. Pode haver, no máximo um dispositivo de controle de barramento do tipo multiplexador e, no máximo, quatro dispositivos do tipo daisy-chain, sendo que não pode haver multiplexador que não esteja ligado diretamente à porta paralela.

Os dispositivos que podem ser conectados a uma porta paralela são representados como subclasses de Basic_Parallel_Device, conforme figura abaixo.


Código-fonte do EPOS