Interfaces e Periféricos 12_____
___
CAPÍTULO 2
Características comuns
das Interfaces
Neste capítulo estudaremos diversas características comuns de hardware e software encontradas nas
interfaces, por exemplo, uma interface pode ser assíncrona, serial, desbalanceada e configurada em fullduplex, tal como a RS-232 normalmente opera. Considerando características de software podemos ter
interfaces cujo acesso se dá através da memória ou através de instruções específicas. Veremos em
seguida, estas características.
2.1 Comunicação Serial x Comunicação Paralela
De uma forma geral, a comunicação entre o núcleo do computador e os dispositivos de E/S poderia ser
classificada em dois tipos: comunicação paralela ou serial. Vamos a seguir analisar as características
destes tipos.
2.1.1 Comunicação paralela:
Na comunicação paralela grupos de bits são transferidos simultaneamente (em geral, byte a byte) através
de diversas linhas condutoras dos sinais. Desta forma, como vários bits são transmitidos simultaneamente
a cada ciclo, a taxa de transferência de dados tende a ser alta.
Observe também que, dependendo da distância entre a interface e o periférico ao utilizar um cabeamento
paralelo, a quantidade de condutores (fios) é multiplicada pela quantidade de bits transferidos a cada
ciclo, implicando em custo maior. Além disso, há outro problema que veremos adiante.
2.1.2 Comunicação serial
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 13_____
___
Na comunicação serial os bits são transferidos um a um, através de um único par condutor. Os bytes a
serem transmitidos são serializados, isto é, são "desmontados" bit a bit, e são individualmente
transmitidos, um a um. Na outra extremidade do condutor, os bits são contados e quando formam oito
bits, são remontados, reconstituindo os bytes originais. Nesse modo, o controle é comparativamente muito
mais simples que no modo paralelo e é de implementação mais barata. Como todos os bits são transferidos
pelo mesmo meio físico (mesmo par de fios), as eventuais irregularidades afetam todos os bits igualmente.
A transmissão serial é intrinsecamente mais lenta (de vez que apenas um bit é transmitido de cada vez).
Se a comunicação serial é intrinsecamente mais lenta que a paralela, por que as interfaces
seriais voltaram a serem utilizadas nos computadores modernos (Exemplo: SATA, USB)?
Resposta: O SKEW
Um dos problemas importantes diz respeito à propagação dos sinais no meio físico, isto é, no cabo
de conexão entre o dispositivo e a interface. Essa propagação deve se fazer de modo que os sinais
(os bits) correspondentes a cada byte cheguem simultaneamente à extremidade oposta do
cabo, onde então serão reagrupados em bytes. Como os condutores que compõem o cabo
usualmente terão pequenas diferenças físicas, a velocidade de propagação dos sinais digitais nos
condutores poderá ser ligeiramente diferente nos diversos fios. Dependendo do comprimento do
cabo, pode ocorrer que um determinado fio conduza sinais de forma mais rápida (ou mais lenta)
que os demais fios e que desta forma um determinado bit x em cada byte se propague mais rápido e
chegue à extremidade do cabo antes que os outros n-1 bits do byte. Este fenômeno é chamado
skew, e as consequências são catastróficas: os bits x chegariam fora de ordem (os bytes chegariam
embaralhados) e a informação ficaria irrecuperável. Em decorrência desse problema, há limites
para o comprimento do cabo que interliga um dispositivo ao computador, quando se usa o modo
paralelo.
A transmissão serial tem recebido aperfeiçoamentos importantes (seja de protocolo, de interface e
de meio de transmissão) que vem permitindo o aumento da velocidade de transmissão por um único
par de fios, cabo coaxial ou de fibra ótica. Como o aumento da velocidade de transmissão em
interfaces paralelas ocasiona mais skew, a tendência tem sido no sentido do aperfeiçoamento das
interfaces seriais que hoje permitem taxas de transferência muito altas com relativamente poucas
restrições de distância.
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 14_____
___
2.2 Transmissão Síncrona x Assíncrona:
Além da comunicação ser feita de forma serial ou paralela podemos também classificar esta comunicação
em termos da sincronização de envio e recebimento dos bits. Em uma transmissão de dados entre a CPU
(via controladora) e seu periférico é necessário que os bits transmitidos sejam corretamente recebidos
levando-se em conta o tempo (momento do envio e duração dos mesmos). Para garantir a correta
transmissão dos bits podemos utilizar dos métodos diferentes: transmissão síncrona ou assíncrona.
2.2.1 Transmissão síncrona
Na transmissão síncrona, o intervalo de tempo entre dois caracteres subsequentes é fixo e os dois
dispositivos (transmissor e receptor) são sincronizados, ou seja, possuem clock único ou sincronizado todo
o tempo. Quando não há caracteres a serem transferidos, o transmissor continua enviando caracteres
especiais de forma que o intervalo de tempo entre caracteres se mantém constante e o receptor mantémse sincronizado. No início de uma transmissão síncrona, os clocks dos dispositivos transmissor e receptor
são sincronizados através de uma string de sincronização e então se mantém sincronizados por longos
períodos de tempo (dependendo da estabilidade dos relógios), podendo transmitir dezenas de milhares de
bits antes de terem necessidade de sincronizar novamente. Outra forma de manter o sincronismo é a
utilização de uma linha (condutor) específica para o clock.
Em resumo, na transmissão síncrona é fundamental que cada dispositivo comande seu clock para geração
e recepção dos bits de forma sincronizada o tempo todo, isso pode ser garantido com:
•
Ter clocks independentes no transmissor e receptor, sendo que a frequência e a fase destes clocks
é garantida estar em sincronia pelo uso de osciladores precisos e o envio de transmissão periódica
de uma string de sincronização que mantém os clocks funcionando como se fossem um só.
•
Utilizar o gerador de clock somente no transmissor e enviar o clock para o receptor através de
uma linha (condutor) específica para o clock (este é o método mais confiável mas gasta uma linha
de comunicação para tal.
2.2.2 Transmissão assíncrona
Na transmissão assíncrona, o intervalo de tempo entre os caracteres não é fixo. Podemos exemplificar com
um digitador operando um terminal, não havendo um fluxo homogêneo de caracteres a serem
transmitidos.
Como o fluxo de caracteres não é homogêneo, não haveria como distinguir a ausência de bits sendo
transmitidos de um eventual fluxo de bits zero e o receptor nunca saberia quando virá o próximo
caractere, e, portanto, não teria como identificar o que seria o primeiro bit do caractere. Para resolver
estes problemas de transmissão assíncrona, foi padronizado que na ausência de caracteres a serem
transmitidos o transmissor mantém a linha sempre no estado 1, isto é, transmite ininterruptamente bits 1,
o que distingue também de linha interrompida (este estado é chamado idle). Quando for transmitir um
caractere, para permitir que o receptor reconheça o início do caractere, o transmissor insere um bit de
partida (start bit) antes de cada caractere. Convenciona-se que esse start bit será um bit zero,
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 15_____
___
interrompendo assim a sequência de bits 1 que caracteriza a linha livre (idle). Para maior segurança, ao
final de cada caractere o transmissor insere um (ou dois, dependendo do padrão adotado) bits de parada
(stop bits), convencionando-se serem bits 1 para distingui-los dos bits de partida.
Os bits de informação são transmitidos em intervalos de tempo uniformes entre o start bit e o(s) stop
bit(s). Portanto, transmissor e receptor somente estarão sincronizados durante o intervalo de tempo entre
os bits de start e stop. A transmissão assíncrona também é conhecida como "start-stop".
A taxa de eficiência de uma transmissão de dados é medida como a relação de número de bits úteis
dividido pelo total de bits transmitidos. No método assíncrono, a eficiência é menor que a no método
síncrono, uma vez que há necessidade de inserir os bits de partida e parada, de forma que a cada
caractere são inseridos de 2 a 3 bits que não contém informação.
Análise da transmissão em uma interface serial assíncrona:
Na figura abaixo temos a representação de um byte enviado através de uma interface serial assíncrona.
Vamos tentar identificar o byte/caractere sendo transmitido, tempo de transmissão de um bit, tempo de
transmissão do byte/caractere, a eficiência e o tempo (delay) que o receptor terá para capturar os bits
transmitidos. Suponha que a frequência do clock (velocidade de transmissão) é de 9600bps.
•
Byte sendo transmitido:
Após o start-bit e antes do stop-bit temos: 1 0 0 1 0 0 1 0
Como o bit menos significativo é transmitido primeiro, invertemos: 0 1 0 0 1 0 0 1 que é 73 em
decimal ou a letra I (í maiúscula) na tabela ASCII.
Tabela ASCII:
•
http://www.ascii-code.com/
Tempo de transmissão de 1 bit:
t = 1/9600 = 0,000104s = 0,104ms
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 16_____
•
___
Tempo de transmissão do byte (devemos acrescentar todos bits necessários)
t = 10 x 0,104 = 1,04ms
•
Eficiência = 8/10 = 80%
•
Tempo para o início da captura dos bits no receptor:
Assim que o receptor detecta o start-bit ele contará o tempo do start-bit mais a metade do tempo
de um bit a fim de que as amostras (samples na figura) sejam feitas exatamente na metade do
tempo de transmissão dos bits, reduzindo assim a probabilidade de capturar bits errados devido a
diferenças entre as velocidades de clock do transmissor e do receptor.
Assim:
t = 0,104 + 0,052 = 0,156ms
2.3 Modos de transmissão
Uma comunicação é dita simplex quando permite comunicação apenas em um único sentido, tendo em
uma extremidade um dispositivo apenas transmissor (transmitter) e do outro um dispositivo apenas
receptor (receiver). Não há possibilidade de o dispositivo receptor enviar dados ou mesmo sinalizar se os
dados foram recebidos corretamente. Transmissões de rádio e televisão são exemplos de transmissão
simplex.
Uma comunicação é dita half-duplex (também chamada semi-duplex) quando existem em ambas as
extremidades dispositivos que podem transmitir e receber dados, porém não simultaneamente. Durante
uma transmissão half-duplex, em determinado instante um dispositivo A será transmissor e o outro B será
receptor, em outro instante os papéis podem se inverter. Por exemplo, o dispositivo A poderia transmitir
dados que B receberia; em seguida, o sentido da transmissão seria invertido e B transmitiria para A a
informação se os dados foram corretamente recebidos ou se foram detectados erros de transmissão.
Uma transmissão é dita full-duplex (também chamada apenas duplex) quando dados podem ser
transmitidos e recebidos simultaneamente em ambos os sentidos. Poderíamos entender uma linha fullduplex como funcionalmente equivalente a duas linhas simplex, uma em cada direção.
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 17_____
___
2.4 Transmissão balanceada x desbalanceada
As interfaces seriais podem ser classificadas quanto à referência em relação ao “terra” em balanceadas e
desbalanceadas.
2.4.1 Transmissão desbalanceada
Neste caso, o sinal tem como referência o “terra” dos sistemas conectados. Os circuitos de acoplamento
são simples, em contrapartida, este tipo de interface oferece baixa imunidade a ruídos. Qualquer ruído
induzido nos fios do cabeamento irão facilmente deformar os bits transmitidos, fazendo com que o
receptor interprete os bits enviados de forma errada.
Um circuito de acoplamento desbalanceado é um circuito no qual o transmissor e receptor não são
diferenciais, ou seja, o valor binário transmitido corresponde a um valor absoluto de tensão.
Exemplo:
Podemos considerar TX como o computador e RX como o periférico (ou vice e versa).
Considere as seguintes condições no receptor (RX):
Se VA > 3,5V, então saída TTL = bit 1
Se VA < 1,5, então saída TTL =bit 0
Ao transmitir (TX) um bit ‘1’ o valor de saída (VA) pode variar (em função do ruído) e chegar ao receptor
como sendo 4,5V, em vez de 5V (TTL). Nesse caso o bit chegaria correto.
Por outro lado se ao transmitir (TX) um bit ‘1’ o valor de saída (VA) variar (em função do ruído) e chegar
ao receptor como sendo 3V, em vez de 5V (TTL) o receptor não saberá distinguir se o bit é 0 ou 1, gerando
uma saída que pode ser 0 ou 1, podendo ocasionar um erro.
O mesmo poderia ocorrer na transmissão de um bit ‘0’.
2.4.2 Transmissão desbalanceada
Neste caso o sinal é enviado através de um par de fios desacoplado do “terra”, ou seja, não tem o “terra”
como referência. Os sinais são tratados por amplificadores diferenciais. A grande vantagem está na alta
imunidade a ruídos uma vez que estes são em sua maioria cancelados pelo amplificador diferencial.
Um circuito de acoplamento balanceado é um circuito no qual o transmissor e receptor são diferenciais,
ou seja, o valor binário transmitido é resultado da diferença de potencial entre um par de fios.
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 18_____
___
Exemplo:
Podemos considerar TX como o computador e RX como o periférico (ou vice e versa).
Considere as seguintes condições no receptor (RX):
Se VA – VB > 0, então saída TTL = bit 1
Se VA – VB < 0, então saída TTL = bit 0
Quano ocorre injeção de ruído no barramento o ruído tende a ocorrer igualmente nas linhas VA e VB, como
o receptor (amplificador diferencial) fará a subtração entre VA e VB o ruído tenderá a ser cancelado.
Ao transmitir (TX) um bit ‘1’ (VA = 5V e VB = 0V) o valor de saída (VA) pode variar (em função do ruído) e
chegar ao receptor como sendo 5,3 em vez de 5V, o valor de saída (VB) pode variar (em função do ruído) e
chegar ao receptor como sendo 0,3V em vez de 0V.
VA – VB = 5,3 – 0,3 = 5V, que é maior que 0, portanto, bit 1.
O mesmo poderia ocorrer na transmissão de um bit ‘0’, quando VA = 0V e VB = 5V.
Circuitos balanceados apresentam maior imunidade a ruído e por isso são recomendados para taxas de
transmissão elevadas.
Ao interligar equipamentos que empregam interfaces de comunicação com circuitos balanceados, é
importante observar a correspondência entre as polaridades de um mesmo circuito (ligar o condutor “A”
do transmissor com o condutor “A” do receptor e ligar o condutor “B” de forma análoga).
2.5 Mecanismos de Entrada e Saída (E/S) de dados
Os seguintes métodos de E/S serão dicutidos:
a) E/S Programada (Polling)
b) Interrupção
c) DMA (Direct Memory Access)
2.5.1 E/S Programada
Não existe uma controladora dedicada, a CPU realiza a operação de E/S.
Exemplo 1: Leitura direta
Para verificar se um botão está pressionado o teste é feito diretamente no pino digital de I/O, dentro do
programa principal:
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 19_____
___
No Arduino o pino de I/O é lido diretamente com a função digitalRead():
//Leitura de um pino I/O (pino 5) no Arduino
btnState = digitalRead(5);
if ( btnState == HIGH) {
//Botão pressionado
}
Exemplo 2: Leitura utilizando registrador de status
•
Processador fica em loop lendo registrador de status do dispositivo até que um bit de status
DISPONÍVEL seja ligado pelo dispositivo.
•
Quando esse bit é ligado significa que o dispositivo acaba de escrever um novo caractere em um
registrador (buffer) de saída de dados.
•
Quando isso ocorre, o programa lê o caractere do registrador de dados do, desligando o bit de
status DISPONÍVEL.
No Arduino a função Serial.available() verifica se o status da Serial, ou seja, se há dados no buffer.
A função Serial.read() lê o byte da Serial e limpa o status (desliga o bit DISPONÍVEL).
Atenção: Se houver mais bytes na serial o correto seria que Serial.read() fosse chamada dentro de um
loop, até que todos os bytes fossem lidos, para que o status fosse limpo.
//Leitura da porta serial no Arduino
if(Serial.available() > 0){
incomingByte=Serial.read();
}
2.5.2 Interrupção
Em Ciência da Computação, uma interrupção é um sinal de um dispositivo que tipicamente resulta em
uma troca de contextos, isto é, o processador para de fazer o que está fazendo para atender o dispositivo
que pediu a interrupção.
Um programa qualquer está em execução na CPU e a seguinte sequência de eventos ocorre:
•
O dispositivo E/S solicita o serviço de transferência apenas quando este estiver pronto para
enviar/receber o(s) dado(s).
•
A interrupção causa um desvio no fluxo do programa via hardware.
•
A interrupção pára o programa que está rodando e desvia o fluxo para a Rotina de Tratamento da
Interrupção
•
Quando finaliza a rotina de tratamento da interrupção, o processador retoma a execução do
programa interrompido.
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 20_____
___
Rotina de Tratamento da Interrupção:
Função especial que realiza o serviço de transferência daquele dispositivo externo que solicitou a
interrupção e verifica a ocorrência de possíveis erros na transferência de dados.
Requer hardware especial (Controlador de interrupções), que identifica o dispositivo que gerou a
interrupção e define a prioridade das interrupções e quais serão atendidas.
Observe que a E/S por interrupção é muito mais eficiente que a E/S programada (ou polling), pois evita
que a CPU tenha que ficar em um loop testando bits que indiquem o status do dispositivo. Com a
interrupção a CPU pode se dedicar inteiramente ao programa principal, sendo interrompida só quando
necessário.
2.5.3 DMA
Significa acesso direto à memória (DMA - Direct Memory Access).
Uma controladora lê dados da memória principal ou escreve dados na memória principal sem que seja
necessária intervenção direta do processador.
Observações:
•
Libera a CPU da intermediação entre dispositivo periférico e memória.
•
Uma transferência por DMA essencialmente copia um bloco de memória de um dispositivo para
outro.
•
A CPU inicia a transferência, mas não executa a transferência.
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 21_____
___
Atenção
Como a CPU não participa durante a fase de transferência não é possível realizar nenhum tipo de
verificação de erro ou processamento, assim, o DMA é bastante utilizado para a comunicação com
dispositivos de armazenamento (CD-ROM, HD, etc) onde grandes blocos de dados são transferidos
por vez, sem necessidade de processamento durante a transferência.
2.6 Endereçamento
As interfaces possuem tipo de endereçamento que podem ser categorizados como segue:
a) E/S mapeada em porta
b) E/S mapeada na memória
c) Híbrido (pode ser mapeada em porta ou memória)
2.6.1 E/S mapeada em porta
Utilizam-se instruções específicas na programação para enviar e receber dados para a porta.
E/S mapeada em porta utiliza uma classe especial de instruções do processador. Isto é normalmente
encontrado em processadores Intel, especificamente as instruções IN e OUT, que podem escrever de um a
quatro bytes (outb, outw, outl) em um dispositivo de E/S. Estes dispositivos possuem um espaço de
endereços separado da memória geral, implementado por um pino extra de E/S na interface da CPU ou
por um barramento inteiro dedicado a entrada/saída. Por esta área de memória, dedicada a E/S, ser
isolada da memória principal ela é, às vezes, chamada de E/S isolada.
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Interfaces e Periféricos 22_____
___
Exemplos em Assembly:
Leitura de dados da porta (entrada):
IN registrador, [endereço]
Lê o valor contido no endereço da porta para o registrador.
Escrita de dados na porta (saída):
OUT [endereço], registrador
Escreve o valor contido no registrador no endereço da porta.
2.6.1 E/S mapeada em memória
O método de mapeamento de E/S em memória utiliza a via de endereços para endereçar tanto a memória
quanto os dispositivos de E/S e as instruções da CPU usadas para acessar a memória também são usadas
para acessar os dispositivos. Para acomodar os dispositivos de E/S áreas do espaço endereçável da CPU
devem ser reservadas para E/S. A reserva de espaço pode ser temporária ou permanente. Cada dispositivo
de E/S monitora a via de endereçamento da CPU e responde a qualquer acesso da CPU ao espaço de
endereço destinado ao dispositivo, conectando a via de dados ao registrador do hadware do dispositvo
desejado.
2.6.1 Híbrido
As duas formas de endereçamento anteriores são possíveis.
Resumo dos três tipos:
A figura a seguir mostra o tipo (a), onde os dispositivos de E/S estão mapeadas na sua memória específica
(mapeamento em porta), completamente independente da memória principal (memória RAM).
No tipo (b) há um espaço de endereçamento compartilhado entre a memória principal e os dispositivos de
E/S (mapeamento em memória).
No tipo (c) os dois esquemas podem ser usados (híbrido).
Prof. André Sarmento Barbosa | http://www.andresarmento.com
Download

Apostila - Capítulo 2