Você está na página 1de 13

Pontifícia Universidade Católica do Rio Grande do Sul

Faculdade de Engenharia de Computação

Trabalho Prático 1

Comunicação via portas


Serial e Paralela

Roberto Cazorla Karpinski


Yves Shiga Casagrande
Prof. Eduardo Augusto Bezerra
Turma 590
Índice

Especificações do Trabalho.................................................................................................3
Introdução............................................................................................................................5
Interface Serial.....................................................................................................................6
Interface Paralela.................................................................................................................8
Placa de Prototipação..........................................................................................................9
Modelagem do Sistema......................................................................................................10
Comunicação Serial...........................................................................................................10
Comunicação Paralela........................................................................................................12
Referências.........................................................................................................................13
Especificações do Trabalho

O Trabalho Prático 1 (TP1) tem como objetivo explorar a programação de


dispositivos periféricos com comunicação via interface serial RS-232C e porta paralela
IBM-PC.
O diagrama do sistema a ser implementado encontra-se na figura a seguir:

O sistema deve ser projetado de forma modular para possibilitar uma


implementação incremental. As etapas sugeridas são as seguintes:

• Conseguir um cabo paralelo e um serial (cross: pino 2 no 3 e pino 3 no 2)

• Implementar programa em C e testar o envio de byte pela paralela para placa de


prototipação (pegar no LAPRO). Dessa forma estará' sendo testado o software e o
hardware (porta paralela e cabo).

• Implementar programa em C e testar o envio e recepção de byte pela paralela em


dois computadores.

• Testar o cabo e a porta serial dos computadores usando comandos diretamente no


prompt do Linux: cat /dev/ttyS0 (para recepção) e echo 'Teste de envio' >
/dev/ttyS0 (para transmissão).

• Implementar programa em C e testar o envio e recepção de bytes pela serial em


dois computadores.
• Realizar a modelagem do sistema, usando os conceitos e ferramentas de
engenharia de software.

• Definir protocolo para a comunicação pela porta serial e incluir no programa


implementado.

• Definir protocolo para a comunicação pela porta paralela e incluir no programa


implementado.

• Implementar pequeno programa exemplo usando threads para verificar e assimilar


os conceitos básicos.

• Realizar a integração de todos os programas implementados (protocolos seria e


paralelo, programas de comunicação serial e paralelo, programa com threads).

• Preparar o relatório do trabalho.


Introdução

A comunicação entre computadores e periféricos sempre foi uma necessidade


para todos os computadores. Neste sentido diversos são os tipos de periféricos e suas
aplicações nos dias atuais, abrangendo de simples a complexos periféricos, como por
exemplo mouses, impressoras, FPGA entre tantos outros.

Com o intuito de aplicar na prática os conhecimentos sobre periféricos, este


trabalho foca-se na implementação de um programa feito em linguagem C que possibilita
a comunicação entre dois computadores via as interfaces de comunicação Serial e
Paralela. Bem como a comunicação via porta Paralela entre um computador e uma placa
de Controle.

Podemos destacar que ambas as interfaces de comunicação são importantes e


utilizadas nos dias atuais devido às suas características.

Podemos citar brevemente que as diferenças entre as duas interfaces de


comunicação, comparadas entre si apenas, correspondem a:

Interface (Porta) Transmissão Canal de Comunicação Velocidade


Serial Simples Apenas 1 Baixa
Paralela Complexa Mais de 1 Alta

Para a execução do Trabalho, foram confeccionados dois cabos, um Serial com


dois conectores DB-9 fêmea nas pontas e um cabo Paralelo com conectores DB-25
macho nas pontas com os fios 2 e 3 invertidos (montagem cross) e o fio 5 ligado
normalmente. E um Paralelo contendo os seguintes fios invertido (montagem cross): 1 e
15, 14 e 13, 16 e 12 e 17 e 10.

A Placa de Prototipação foi fornecida pela Faculdade de Informática como parte


do material utilizado durante a disciplina.
Interface Serial

Figura 2. Porta Serial de um computador

A comunicação via interface Serial é possível através do envio de um bit por vez
entre os dispositivos a se comunicarem, alcançando até 115kbits de velocidade. Um
exemplo é o funcionamento do mouse.

Apesar da baixa velocidade, as interfaces seriais possuem a vantagem de serem


mais simples e justamente por isso bem mais baratas. Além disso, novas tecnologias
estão possibilitando o desenvolvimento de interfaces seriais mais rápidas. Um exemplo é
o padrão Serial ATA que vem sendo desenvolvido pela Intel, que supera transmissões de
dados a 150 Megabytes por segundo.

A interface Serial é controlada pela UART (Universal Asynchronous Receiver


Transmitter). A UART é um Circuito Integrado que trata de armazenar em um buffer as
informações que estão sendo enviadas ou recebidas de forma assíncrona.

A UART possui quatro tipos de configuração:


• Taxa de Transmissão: a velocidade da conexão é determinada pela capacidade do
receptor em receber os dados. Pode variar entre 300, 1200, 2400, 9600 e 19200
baud e até mesmo ser auto-negociável, dependendo do dispositivo.
• Número de Bits de Dados: permite enviar 7 ou 8 bits de dados conforme o tipo de
arquivo.
• Paridade: utilizado como meio simples de verificação da integridade do dado
enviado e recebido. Pode ser paridade Par ou Ímpar. Na paridade Par os dados são
acomodados de modo que o número de bits 1 seja um número par. Na paridade
Ímpar o número de bits 1 é um número ímpar. A paridade pode ser usada pelo
receptor para detectar a transmissão de erros - se um byte foi recebido com o
número errado de bits 1, então ele deve estar corrompido
• Start Bit e Stop Bit: permite identificar o início e o final de uma transmissão.

A imagem a seguir demonstra a montagem do cabo Serial.

Figura 3: Figura ilustrativa da montagem do cabo Serial.

A pinagem do conector DB9 possui os seguintes pinos e seus respectivos usos e


significados:

• 01 - DCD: Linha Detectora de Recebimento de Sinal


• 02 - RX: Recepção
• 03 - TX: Transmissão
• 04 - DTR: Leitura terminal dados
• 05 - SG: Terra do Sinal
• 06 - DSR: Data set ready
• 07 - RTS: Requisição de envio
• 08 - CTS: Limpar para envio
• 09 - RI: Indicador de toque
Interface Paralela

A interface de comunicação Paralela difere da Serial pelo fato de que os dados


enviados do transmissor para o receptor são enviados mais de um bit por transmissão.

Possui três tipos de comunicação, sendo estas divididas conforme a direção,


podendo ser unidirecional ou bidirecional.

• SSP (Standard Parallel Port): meio de transmissão unidirecional que utiliza um


barramento de 8 bits obtendo uma velocidade de transmissão de 150 KB/s.

• EPP (Enhanced Parallel Port): meio de transmissão bidirecional que utiliza um


barramento de 32 bits obtendo uma velocidade de transmissão de 2 MB/s.

• ECP (Enhanced Capabilities Port): meio de transmissão bidirecional que através


do uso de Acesso Direto a Memória (DMA) e sem a necessidade do uso do
processador, transfere dados a uma taxa de 1.5 MB/s.

O tipo de comunicação implementado, por motivos de compatibilidade, foi o EPP.

Os endereços que ativam o envio nas portas bidirecionais são dois, conforme a
porta, identificada como LPT seguida do número da porta, por exemplo: LPT1:
• 378H para LPT1
• 278H para LPT2

Os endereços que ativam o envio nas portas de entrada são dois:


• 379H para LPT1
• 279H para LPT2
Os endereços que ativam as portas de controle são dois:
• 37AH para LPT1
• 27AH para LPT2

A pinagem, conforme descrita na Introdução, pode ser visualizada na imagem


abaixo.
Placa de Prototipação

A Placa de Prototipação é uma placa de circuito impresso composta pelos


seguintes componentes
• Interface de Comunicação Paralela
• Relés
• LEDs
• Push Bottoms

Nela é possível testar em primeira instância a funcionalidade do Cabo Paralelo e


entrar em contato com o protocolo e suas funcionalidade.
Modelagem do Sistema

Para fins de implementação, compatibilidade e bom funcionamento do programa


a ser desenvolvido, a plataforma escolhida para o desenvolvimento do mesmo foi a
Plataforma PC, presente no Laboratório de Redes da Faculdade de Informática.
Os computadores disponíveis para o desenvolvimento possuem as seguintes
configurações:
• Processador: Intel Pentium 4 2.6 GHz
• Memória RAM: 256 MB
• Disco: 40 GB IDE
• Interface Serial
• Interface Paralela

O ambiente de desenvolvimento escolhido (e disponível) foi o Linux. A partir dos


recursos providos pela distribuição Kubuntu (Ubuntu versão 4.1.2 e KDE versão 3.5.6),
podemos ressaltar que os softwares utilizados no desenvolvimento foram:
• GCC versão 4.1.2: compilador para Linguagem C
• G++ versão 4.1.2: compilador para Linguagem C++
• Kate 2.5.6: editor de texto em modo gráfico
• VIM versão 7.0.235: editor de texto em modo terminal

Conforme descrito na especificação do Trabalho, esse foi implementado de forma a


utilizar dois computadores, uma para realizar o envio dos dados e outro para realizar o
recebimento dos mesmos dados. Seja usando a porta Paralela ou a Porta Serial.

Comunicação Serial

Utilizamos o protocolo RS232, que foi implementado utilizando as chamadas de


sistema open, read e write.
O dispositivo utilizado foi:/dev/ttyS0, configurado da sequinte forma:
• Velocidade 9600 boud
• 8 bits por vez
• Bit de parada 1
• Sem paridade.

Arquivos incluídos:
• tx.c
• rx.c
Para compilar:
• gcc tx.c –o tx
• gcc rx.c –o rx

Envio: ./tx arquivo.txt

Recebimento: ./rx arquivo.txt

Comunicação Paralela

Definimos um novo protocolo utilizando somente os pinos de dados.

0 1 2 3 4 5 6 7
Clock Start D1 D2 D3 D4 D5 D6

O protocolo funciona da seguinte forma:


• Todos os bits são definidos em 0
• A transmissão começa quando pino 1 recebe 1
• A cada transição entre 0 e 1 do pino 0 o RX faz a leitura dos pinos 2 até 7
• Ao termino da transmissão o pino 1 recebe 0, assim sinalizando ao RX que a
transmissão foi concluída.

Infelizmente não conseguimos implementar este protocolo. Mas mesmo assim


podemos concluir que a comunicação paralela em um experimento deste porte iria
superar a velocidade da comunicação serial.
Mas isto não seria realidade em um ambiente no qual um grande volume de dados
tem que ser transferido em um curto período de tempo. Para isso aumentaríamos a
freqüência, o que pode causar problemas de sincronização para nossos diversos fios, para
resolver isso, mudamos a comunicação para serial e aumentamos ainda mais a freqüência.
Isto é o que tem se visto atualmente nas interfaces de disco rígido.
Referências

• Wikipedia
http://pt.wikipedia.org/wiki/Imagem:Serial_port.jpg

• Rogercom
http://www.rogercom.com/PortaSerial/NullModemDB9-DB9.gif

• Material do Prof. Eduardo Augusto Bezerra


http://www.inf.pucrs.br/~eduardob/disciplinas/extensao/HW_SW_Interface/ParallelPort/
Parallel-Port-Programming-HOWTO/