Вы находитесь на странице: 1из 10

Comunicação Paralela

Meio de transferência de dados onde a informação é transferida os 8 bits ao mesmo tempo.

Porta Paralela do PC
Foi concebida originalmente para transferir dados para uma impressora, sendo portanto uma porta
unidirecional, ou seja, os dados somente poderiam trafegar no sentido computador => impressora. Porém
com a evolução da tecnologia de dispositivos periféricos, houve a necessidade de colocar dispositivos para
leitura conectado à porta paralela, como o scanner, o zip drive, etc... Assim a porta paralela passou a ser
uma porta bidirecional. Mas a porta paralela continua a ser conhecida como LPT - Line PrinTer.
Padrões de Porta Paralela no PC :
- SPP (Standard Parallel Port): Porta paralela no IBM PC original, ou qualquer porta que emule a
porta original, também é chamada SPP, porta paralela padrão, tipo AT ou ISA-compatível.
A porta paralela no PC original era baseada na interface para impressora Centronics existente.
Pode transferir dados de oito bits para um periférico, usando um protocolo semelhante ao
usado pela interface Centronics original, que permite apenas transferência unidirecional (PC-
para-periféricos), não permitindo entrada de dados.
Porém existe um modo que possibilita a leitura de 4 bits de cada vez. Este modo é lento, mas
ficou popular como um modo de usar a porta paralela para entrada
Possui 3 endereços de registradores para acesso da CPU (ex: 378H, 379H e 37AH).
- Tipo PS/2 (Porta Paralela do IBM PS/2): A melhoria inicial desta porta paralela utilizada no
modelo PS/2 da IBM, foi a porta de dados bidirecionais. Esta porta bidirecional habilita a
transferência de oito bits entre um PC e um periférico. O termo “Tipo PS/2” se refere a
qualquer porta paralela bidirecional que não suporte os modos EPP ou ECP.
- EPP (Enhanced Parallel Port): Porta desenvolvida originalmente pela Intel (fabricante de chips),
Zenith (fabricante de PCs), e Xircom (fabricante de produtos para portas paralelas de redes)
que possui as linhas de dados bidirecionais, como na porta Tipo PS/2, porém uma EPP pode
ler ou escrever um byte em um ciclo do barramento ISA (aproximadamente 1µs, incluindo
handshake). A porta SPP e a porta Tipo PS/2 necessitam de quatro ciclos para realizar acesso.
Uma EPP pode inverter a direção do fluxo de dados rapidamente, sendo muito eficiente
quando usada com drives de disco ou fita ou outros dispositivos que transferem dados em
ambas as direções.
Uma EPP também pode emular portas SPPs, e algumas EPPs podem emular portas Tipo PS/2.
Possui 8 endereços de registradores para acesso da CPU (ex: de 378H a 37FH).
- ECP (Extended Capabilities Port): Porta inicialmente proposta pela HP (Hewlett Packard) e pela
Microsoft que possui as linhas de dados bidirecionais e pode transferir dados na velocidade do
barramento ISA, como na porta EPP. Mas a ECP têm buffers que permitem transferências por
DMA (acesso direto à memória) e compressão de dados. Transferências de ECP são úteis para
impressoras, scanners, e outros periféricos que transferem grandes blocos de dados.
Uma ECP também pode emular portas SPP ou Tipo PS/2, e muitas ECPs podem emular EPP.
Possui 6 endereços de registradores para acesso da CPU.

Endereços usuais para a Porta Paralela da PC Configuração no BIOS


378 a 37F 0040:0008 - Endereço de LPT1
278 a 27F 0040:000A - Endereço de LPT2
3BC a 3BF 0040:000C - Endereço de LPT3
2

Existem 3 meios de acesso à porta paralela do PC (SPP):


- Através do DOS: Utilizando a função 5 da INT 21H

- Através da BIOS: Utilizando a INT 17H


função 0 - Saída para a impressora;
função 1 - Inicializa porta de impressão;
função 2 - Status da impressora

- Diretamente no hardware: através de instruções IN e OUT nos endereços relativos às portas.


1° End - data byte

2° End - Status /BUSY ACK PE SLCT ERROR X X X

3° End - Controle IRQ /SLCT IN /INIT /AUTO /STROB


enable FEED E

Conectores

DB25 fêmea - utilizado para conexão ao computador Centronics - utilizado para conexão à impressora

Sinal Direção
Pino Pino Descrição
DB-257 Centronics-36
STROBE Saída 1 1 Indica que os dados estão prontos para serem transmitidos;
D0 a D7 Saída 2a9 2a9 Dados para a impressora;
ACK Entrada 10 10 Indica que a impressora está preparada para receber dados;
BUSY Entrada 11 11 Indica que a impressora não está preparada para receber
dados porque seu buffer interno está cheio;
PE Entrada 12 12 Indica que a impressora está sem papel;
SLCT Entrada 13 13 Indica que a impressora está em estado “on line”, pronta
para receber dados;
AUTO Saída 14 14 Avanço de linha;
FEED
ERROR Entrada 15 32 Indica erro (fim de papel, impressora desativada, etc...);
INIT Saída 16 31 Reinicializa a impressora e limpa o buffer de impressão;
SLCT IN Saída 17 36 Somente transfere dados para a impressora quando estiver
ativo, selecionando estado “on line” ou “off line”;
GND Saída 18 a 25 19 a 30 Terra
3

Comunicação Serial
Porta utilizada originalmente para comunicação de dados (Portas COM), e apesar de sua função
continuar praticamente a mesma, foi adicionada outras funções como a utilização do mouse.
A comunicação serial do PC é uma comunicação half duplex, porque usa o mesmo meio físico
tanto para transmissão, como para recepção, só podendo trafegar uma informação de cada vez.
A comunicação serial pode ser feita de dois modos:
Modo Assíncrono
Pode ser considerado o modo mais simples de se fazer uma transmissão de dados. Cada vez que
for acessado o meio físico, são transmitidos de 8bits a 12bits de cada vez. O PC usa este modo.

repouso start bit b0 b1 b2 b3 b4 b5 b6 b7 paridade stop bit repouso

Pode ser definido por software:


- a quantidade de bits para a transmissão: de 5bits a 8bits;
- a existência e o tipo de paridade: par ou ímpar;
- a quantidade de stop bits.

Modo Síncrono
É um método de comunicação mais rápido e eficiente que o modo assíncrono, mas exige maior
qualidade do hardware, pois necessita que o clock de recepção seja exatamente igual ao clock de
transmissão, ou seja, o mesmo sincronismo. Cada vez que for acessado o meio físico, são transmitidos
vários bytes (300bytes, 500bytes, etc...). Este modo necessita de uma linha física e circuitos de acesso ao
transmissor e receptor especiais.

repouso caracteres de dados fim de repouso


sincronismo bloco

Os caracteres de sincronismo devem ser idênticos, e servem para sinalizar o inicio da transmissão.

Porta Serial do PC
No PC a porta serial foi implementada com uma UART (Universal Assincronous Receiver
Transmitter), originalmente o 8250, e atualmente substituto pelo 16550, que tem como principal vantagem
a existência de uma fila interna de 16 bytes.

Endereços usuais: Configuração no BIOS:


3F8 a 3FF 0040:0000 - Endereço da COM1
2F8 a 2FF 0040:0002 - Endereço da COM2
3E8 a 3EF 0040:0004 - Endereço da COM3
2E8 a 2EF 0040:0008 - Endereço da COM4

Processo de comunicação serial:

Sinais utilizados:
Tx - Linha pela qual os dados saem do computador (DTE);
Rx - Linha pela qual os dados entram no computador (DTE);
DTR - Data Terminal Ready - Sinal de saída do DTE que indica “DTE on line”;
DSR - Data Set Ready - Sinal de entrada do DTE que indica “DCE on line”;
RTS - Request To Send - Requisição para enviar dados do DTE ao DCE;
CTS - Clear to Send - Autorização para o DTE enviar dados para o DCE;
DCD ou CD - Data Carrier Detect - Indica que um sinal de portadora foi detectado na linha telefônica;
RI - Ring Indicator - Indica sinal de chamada.
4

Inicialmente é necessário que ocorra o hanshake DTR-DSR, para indicar que tanto computador
como modem estão operacionais. E também que a conexão telefônica esteja estabelecida.
Quando o DTE1 deseja enviar um caracter ao DTE2, ativa o sinal RTS. O DCE então coloca
portadora na linha e ativa CTS. Ao receber CTS a porta serial do DTE envia o dado serial pelo pino Tx.
No modem, os bits seriais são modulados e transmitidos via linha telefônica.
Quando o DCE2 detecta a presença de portadora na linha telefônica, avisa ao DTE2 através do
DCD. Quando os dados chegarem, o DCE2 demodula os bits seriais e os conduz ao DTE pelo pino Rx.
Obs: Não ocorre nenhuma indicação ao DTE1 que o DTE2 recebeu o dado corretamente, e o único meio
de saber disso é se o DTE2 transmitir ao DTE1 um sinal de resposta.

Acesso à porta serial do PC:

- Através da BIOS: Utilizando a INT 14H


função 0 - Inicializa a porta serial; função 1 - escreve na porta serial;
AH = 00h AH = 01h
AL = parâmetros AL = caracter
DX = porta serial DX = porta serial
retorna: retorna:
AH = status da porta AH = status da porta
AL = status do modem
função 2 - leitura da porta serial; função 3 - Status da porta serial;
AH = 02h AH = 03h
DX = porta serial DX = porta serial
retorna: retorna:
AH = status da porta AH = status da porta
AL = caracter recebido AL = status do modem

parâmetros
BAUD BAUD BAUD Even Parity Parity Stop Bits tamanho do tamanho do
Rate Rate Rate Select Enable caracter caracter
0 0 0 = 110 0 0 = nenhuma 0 = 1 bit 0 0 = 5 bits
0 0 1 = 150 0 1 = ímpar 1 = 2 bits 0 1 = 6 bits
0 1 0 = 300 1 0 = nenhuma 1 0 = 7 bits
0 1 1 = 600 1 1 = par 1 1 = 8 bits
1 0 0 = 1200
1 0 1 = 2400
1 1 0 = 4800
1 1 1 = 9600

status da porta = registrador de Status de Linha (LSR - Line Status Register)


status do modem = registrador de Status do MODEM (MSR - Modem Status Register)

- Diretamente no hardware: através de instruções IN e OUT nos endereços relativos à porta:

16550
5

Estrutura interna:
6

Tabela de registradores do 16550:


DLAB A2 A1 A0 Registrador
0 0 0 0 RBR Receiver Buffer (read),
THR Transmitter Holding Register (write)
1 0 0 0 DLL Divisor Latch Low (least significant byte)
1 0 0 1 DLH Divisor Latch High (most significant byte)
0 0 0 1 IER Interrupt Enable Register
X 0 1 0 IIR Interrupt Identification Register (read),
X 0 1 0 FCR FIFO Control Register (write)
X 0 1 1 LCR Line Control Register
X 1 0 0 MCR MODEM Control Register
X 1 0 1 LSR Line Status Register
X 1 1 0 MSR MODEM Status Register

End base + 0: Acesso ao registrador do Buffer de Recepção (para leitura);


ou ao registrador de espera da Transmissão (para escrita);

End base + 3: Acesso ao registrador de controle de linha (escrita ou leitura no Line Control Register);
Divisor Latch Break Stick Even Parity Stop tamanho tamanho
Access Bit Control Bit Parity Parity Enable Bits do caracter do caracter
bit 0 e bit 1: Definem o tamanho do caracter: (00 = 5 bits, 01 = 6 bits, 10 = 7 bits e 11 = 8 bits);
bit 2: Define a quantidade de stop bits (0 = 1 Stop Bit e 1 = 2 Stop Bits);
bit 3: Define a existência do bit de paridade na comunicação (1 = com paridade);
bit 4: Define paridade par (1 = paridade par);
bit 5: Mantém o bit de paridade com um valor fixo (0 quando bit 4 for 0 e 1 quando bit 4 for 1);
bit 6: Break Control Bit - com 1 coloca a saída serial em nível baixo (transmissão bloqueada);
bit 7: DLAB - Bit que permite acesso ao Registrador do Latch do Divisor do Gerador de Baud Rate.

End base + 5: Acesso ao registrador de Status de Linha (leitura do Line Status Register);
Error TEMP THRE Break Framing Parity Overrun RDR
Indicator Interrupt Error Error Error
bit 0: Receiver Data Ready - Indica a existência de um dado na entrada serial (no RBR ou na FIFO);
bit 1: Indica erro por Sobreposição. Este erro ocorre quando um novo caracter chega ao RBR (ou à
FIFO) sem que o caracter anterior tenha sido lido pela CPU, ocasionando perda do dado.
bit 2: Indica erro de Paridade. Este erro ocorre quando a paridade do dado recebido é diferente da
paridade definida no LCR;
bit 3: Indica erro de falta de Stop bit;
bit 4: Indica a ocorrência de break na entrada serial (recepção bloqueada pelo transmissor);
bit 5: Transmitter Holding Register Empty - Indica registrador de espera vazio;
bit 6: Transmitter Empty - Indica saída serial vazia;
bit 7: Indica a ocorrência de algum tipo de erro na recepção.

End base + 4: Acesso ao registrador de controle de MODEM;


0 0 0 Loop Out2 Out1 RTS DTR
bit 0: Data Terminal Ready - Ativa o sinal DTR;
bit 1: Request to Send - Ativa sinal RTS, que significa que a porta serial deseja transmitir um byte;
bit 2: Ativa saída Out1;
bit 3: Ativa saída Out2;
bit 4: Habilita modo para diagnóstico LOCAL. O pino SOUT fica em 1, o pino SIN fica
desconectado, a saída do Registrador de deslocamento do transmissor fica conectado
internamente à entrada do Registrador de deslocamento do receptor, os quatro sinais de status
do Modem (DSR, CTS, RI e DCD) ficam desconectados externamente (e com nível 1) e ligados
internamente aos quatro sinais controle de Modem (DTR, RTS, OUT1 e OUT2). Neste modo o
dado transmitido é recebido imediatamente.
7

End base + 6: Acesso ao registrador de Status do MODEM (leitura);


DCD RI DSR CTS DDCD TERI DDSR DCTS
bit 0: Delta Clear to Send - Indica variação no sinal CTS;
bit 1: Delta Data Set Ready - Indica variação no sinal DSR;
bit 2: Trailing Edge Ring Indicator - Indica borda no sinal RI;
bit 3: Delta Data Carrier Detect - Indica variação no sinal DCD;
Obs: Sempre que o bit0, bit1, bit2 ou bit3 for 1 é gerada uma interrupção de Status do Modem;
bit 4: Clear to Send - Indica estado do CTS;
bit 5: Data Set Ready - Indica estado do DSR;
bit 6: Ring Indicator - Indica estado do RI;
bit 7: Data Carrier Detect - Indica estado do DCD.

End base + 1: Acesso ao registrador de habilitação de Interrupção;


0 0 0 0 EDSSI ELSI ETHEI ERDAI
bit 0: ERDAI - Enable Received Data Available Interrupt - Habilita que ocorra interrupção quando o
RBR receber um dado serial. Interrupção de segundo nível de prioridade.
bit 1: ETHEI - Enable Transmitter Holding Register Empty Interrupt - Habilita que ocorra interrupção
quando o THR ficar vazio. Interrupção de terceiro nível de prioridade.
bit 2: ELSI - Enable Receiver Line Status Interrupt - Habilita que ocorra interrupção quando o
registrador de controle de linha sinalizar algum tipo de erro (Paridade, Overrun, Framing ou
break). Interrupção de primeiro nível de prioridade.
bit 3: EDSSI - Enable MODEM Status Interrupt - Habilita que ocorra interrupção quando ocorrer
variação de DCD, RI, DSR ou CTS.

End base + 2: Acesso para leitura, do registrador de Identificação de Interrupção (IIR)


FIFOs FIFOs 0 0 Interrupt Interrupt Interrupt ``0'' if Interrupt
Enabled Enabled ID Bit(2) ID Bit(1) ID Bit (0) Pending
bit 0: Quando seu valor for 0 indica que existe interrupção pendente. A origem da interrupção é dada
pelos bits 1, 2 e 3.
bit 1 e bit 2: Indica a prioridade da interrupção
bit2 bit1 Nível de Tipo e Origem Cancelamento
prioridade
11 Mais alto Receiver Line Status - ocorrência de erro (Paridade, leitura do LSR;
Overrun, Framing ou break).
10 Segundo Dado Recebido disponível ou nível de gatilho da leitura do RBR ou
FIFO alcançado. da FIFO;
01 Terceiro Registrador de Espera do Transmissor vazio escrita no THR;
00 Quarto Modem Status - variação de DCD, RI, DSR ou CTS leitura do MSR.
bit 3: Indica fim do tempo de espera para leitura da FIFO. É desativado com a leitura da FIFO;
bit 6 e bit 7: Ficam em 1 quando em modo FIFO

End base + 2: Registrador de Controle da FIFO (para escrita em FCR);


RCVR RCVR Reservado Reservado DMA XMIT RCVR FIFO
Trigger Trigger Mode FIFO FIFO Enable
Reset Reset
bit 0: Habilita operação de transmissão e de recepção com a FIFO;
bit 1: Reseta todos os bytes da FIFO de recepção;
bit 2: Reseta todos os bytes da FIFO de transmissão;
bit 3: Define modo de transferência de DMA. No modo 0 um único byte é transferido de cada vez e
no modo 1 vários bytes são transferidos de cada vez.
bit 6 e bit 7: Definem o nível de gatilho da FIFO: Bit 7 e Bit6 Nível de gatilho
00 1 byte
01 4 bytes
10 8 bytes
11 14 bytes
End base + 7: Acesso ao registrador Scratch
8

End base + 0 e DLAB = 1: Acesso ao Latch do Divisor do Baud Generator (8 bits menos significativos);
End base + 1 e DLAB = 1: Acesso ao Latch do Divisor do Baud Generator (8 bits mais significativos);

Gerador de Baud Rate

Tabela de velocidade x valores dos registradores de baud rate Procedimento de programação da


porta serial:
Velocidade MSB LSB
50 09H 00H 1° setar DLAB (bit7 do LCR)
110 06H 00H 2° carregar LSB
150 03H 00H 3° carregar MSB
300 01H 80H 4° resetar DLAB, definir tamanho do
600 00H C0H caracter, número de stop bits e
1200 00H 60H paridade. (LCR)
2400 00H 30H 5° transmitir e/ou receber
4800 00H 18H
9600 00H 0CH
19200 00H 06H
38400 00H 03H
56000 00H 02H

RS232C

Conectores: Existem dois tipos de conectores que podem DB9 macho DB25 macho
ser usados na comunicação serial, o DB25 macho e o
DB9 macho no computador. O cabo de conexão requer
DB9 e DB25 fêmea.

Pinagem dos conectores


DB9 DB25
Tx 2
Rx 3
RTS 4
CTS 5
DTR 20
DSR 6
DCD 8
RI 22
comum 7
12

Níveis de Tensão: O padrão RS232C utiliza um padrão de tensões diferentes dos níveis TTL utilizados
internamente.
TTL RS 232C
Hi (alto) 2V a 5V -3V a -15V
Lo (baixo) 0V a 0,8V 3V a 15V

Cabos de Conexão
Conexão micro-modem Conexão micro-micro - null modem (1)

Conexão micro-micro - null modem (2) Conexão micro-micro - null modem simples
13

Erros na Transmissão:
Com o objetivo de detectar erros, foi adicionado um nono bit ao byte, que traz uma informação
sobre a paridade do byte, ou seja, a informação (com 9 bits) deve ter sempre a mesma paridade (que pode
ser par ou ímpar). Caso ocorra um valor com a paridade invertida, significa que existe pelo menos um bit
invertido na informação, o que, dependendo do caso, pode significar que toda a informação (que pode
variar de um byte a um arquivo) está perdida.
A geração do bit de paridade, se dá da seguinte forma (considerar paridade ímpar):
- caso o byte tenha a paridade par, o nono bit deve valer 1 para tornar a paridade ímpar;
- caso o byte tenha a paridade ímpar, o nono bit deve valer 0 para manter a paridade ímpar.
A primeira limitação do bit de paridade é que se ocorrer erros em dois bits, a paridade vai ser
mantida, e o byte terá erro que não será detectado.
A segunda limitação do bit de paridade é a possibilidade de apenas detectar erros, sem corrigi-los.
Para tornar possível a correção de erros foram implementadas muitas técnicas, e uma das mais
simples é o uso do CRC (Caracter de Redundância Cíclica), que consiste em transmitir a cada oito bytes,
um byte com uma informação de paridade, conforme o exemplo abaixo (considerar paridade ímpar):

Dado bit de bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
paridade
35H 1 0 0 1 1 0 1 0 1
6AH 1 0 1 1 0 1 0 1 0
E8H 1 1 1 1 0 1 0 0 0
01H 0 0 0 0 0 0 0 0 1
F9H 1 1 1 1 1 1 0 0 1
46H 0 0 1 0 0 0 1 1 0
DFH 0 1 1 0 1 1 1 1 1
44H 1 0 1 0 0 0 1 0 0

CRC 0 0 1 1 0 1 1 1 1

Ex: Caso ocorra um erro no bit 2 do 3° byte (de 0 passa para 1), o bit de paridade vai informar que
existe erro no 3°, e o CRC vai informar que existe erro no bit 2, assim é só inverter o bit 2 do 3° byte que
o byte ficará correto.
Com este método, podemos corrigir um bit a cada oito byte, que significa ter um erro a cada 81
bits transmitidos (corrige erros, se a taxa de erros não ultrapassar 1,23%). Se houver mais de um erro neste
bloco, poderemos apenas detectar que ocorreu erro, sem corrigi-lo.
Porém existem métodos mais avançados de correção de erros que permite correção de erros de
taxas mais altas. Porém isto implica em enviar cada vez mais informação redundante para ser possível a
correção de erros.

Вам также может понравиться