Relatorio t1 Prog Perif 2008-1

20
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

Transcript of Relatorio t1 Prog Perif 2008-1

Page 1: Relatorio t1 Prog Perif 2008-1

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

Faculdade de Engenharia de Computação

Trabalho Prático 1

Comunicação via portasSerial e Paralela

Roberto Cazorla KarpinskiYves Shiga Casagrande

Prof. Eduardo Augusto BezerraTurma 590

Page 2: Relatorio t1 Prog Perif 2008-1
Page 3: Relatorio t1 Prog Perif 2008-1

Índice

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

Page 4: Relatorio t1 Prog Perif 2008-1

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.

Page 5: Relatorio t1 Prog Perif 2008-1

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.

Page 6: Relatorio t1 Prog Perif 2008-1

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 VelocidadeSerial 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.

Page 7: Relatorio t1 Prog Perif 2008-1

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

Page 8: Relatorio t1 Prog Perif 2008-1

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

Page 9: Relatorio t1 Prog Perif 2008-1

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

Page 10: Relatorio t1 Prog Perif 2008-1

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.

Page 11: Relatorio t1 Prog Perif 2008-1

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.

Page 12: Relatorio t1 Prog Perif 2008-1

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

Page 13: Relatorio t1 Prog Perif 2008-1

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 7Clock 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.

Page 14: Relatorio t1 Prog Perif 2008-1

Referências

Wikipediahttp://pt.wikipedia.org/wiki/Imagem:Serial_port.jpg

Rogercomhttp://www.rogercom.com/PortaSerial/NullModemDB9-DB9.gif

Material do Prof. Eduardo Augusto Bezerrahttp://www.inf.pucrs.br/~eduardob/disciplinas/extensao/HW_SW_Interface/ParallelPort/Parallel-Port-Programming-HOWTO/