da Monografia

Propaganda
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIAS DA COMPUTAÇÃO – BACHARELADO
PROTÓTIPO DE INTERFACE PARA TROCA DE
INFORMAÇÕES ENTRE DOIS MICROCOMPUTADORES
PADRÃO PC
VALTER PARASKI
BLUMENAU
2003
2003/2-40
VALTER PARASKI
PROTÓTIPO DE INTERFACE PARA TROCA DE
INFORMAÇÕES ENTRE DOIS MICROCOMPUTADORES
PADRÃO PC
Trabalho de Conclusão de Curso submetido à
Universidade Regional de Blumenau para a
obtenção dos créditos na disciplina Trabalho
de Conclusão de Curso II do curso de Ciência
da Computação — Bacharelado.
Prof. Antônio Carlos Tavares - Orientador
BLUMENAU
2003
2003/2-40
PROTÓTIPO DE INTERFACE PARA TROCA DE
INFORMAÇÕES ENTRE DOIS MICROCOMPUTADORES
PADRÃO PC
Por
VALTER PARASKI
Trabalho aprovado para obtenção dos créditos
na disciplina de Trabalho de Conclusão de
Curso II, pela banca examinadora formada
por:
Presidente:
______________________________________________________
Prof. Antônio Carlos Tavares – Orientador, FURB
Membro:
______________________________________________________
Prof. Nome do professor, FURB
Membro:
______________________________________________________
Prof. Nome do professor, FURB
Blumenau, 19 de novembro de 2003
Dedico este trabalho a meus pais por tudo que
têm feito por mim, à minha esposa pelo seu
amor e por limitar meu caos, aos meus filhos a
quem devo meu renascimento.
Ninguém é tão grande que não possa aprender,
nem tão pequeno que não possa ensinar.
Autor: Desconhecido
AGRADECIMENTOS
A Deus, pelo seu imenso amor e graça.
À minha família, que mesmo longe, sempre esteve presente.
Ao meu orientador, Antônio Carlos Tavares, por ter acreditado na conclusão deste
trabalho.
RESUMO
Este trabalho apresenta o desenvolvimento de um protótipo de interface para trocar
informações entre dois microcomputadores padrão PC utilizando o barramento ISA e o
circuito integrado 82C55A. Mostra o estudo de todos os sinais de entrada e saída do
barramento e do circuito integrado e distinguindo os que foram utilizados na confecção do
protótipo. Informa também a forma de configurar o circuito integrado 82C55A
adequadamente e, no final acrescenta um software para transmissão de arquivos entre dois
microcomputadores demonstrando o funcionamento do conjunto.
Palavras chaves: Barramento ISA; Interface de Hardware; 82C55A.
ABSTRACT
This work presents the development of an interface prototype to change information between
two microcomputers PC compatible using the ISA bus and the integrated circuit 82C55A. It
shows the study of all the input and output bus signs and the integrated circuit, also
distinguish those that was used in the prototype. It also informs the way to configuring the
integrated circuit 82C55A appropriately and, in the end increases a software for transmission
of files between two microcomputers demonstrating the functionality of the group.
Key-Words: ISA Bus; Hardware Interfacing; 82C55A.
LISTA DE ILUSTRAÇÕES
Figura 1: Unidades funcionais de um computador................................................................... 17
Figura 2: Microcomputador típico e suas interfaces ................................................................ 24
Figura 3: Esquema de funcionamento de uma placa-mãe ........................................................ 26
Figura 4: Ciclo de leitura da porta de entrada e saída .............................................................. 32
Figura 5: Ciclo de escrita na porta de entrada e saída .............................................................. 33
Figura 6: Arquitetura do Barramento ISA - 8 bits.................................................................... 35
Figura 7: Arquitetura do Barramento ISA - 16 bits.................................................................. 35
Figura 8: Arquitetura do Barramento ISA – Pinagem.............................................................. 36
Figura 9: Como Funciona o esquema de interrupções ............................................................. 42
Figura 10: Diagrama esquemático do protótipo. ...................................................................... 46
Figura 11: Pinagem do 82C55A. .............................................................................................. 48
Figura 12: Modo 1 – operação de entrada ................................................................................ 51
Figura 13: Modo 1 – operação de saída.................................................................................... 51
Figura 14: Desenho do Lay-out da placa de circuito impresso. ............................................... 52
Figura 15: Fotografia da placa pronta....................................................................................... 53
Figura 16: Configuração do 82C55A. ...................................................................................... 54
Figura 17: Configuração do Bit set/reset da porta C. ............................................................... 55
Figura 18: Forma de comunicação entre as controladoras ....................................................... 56
Figura 19: Fluxograma de transmissão do buffer de saída....................................................... 56
Figura 20: Fluxograma de recepção no buffer de entrada ........................................................ 57
QUADRO 1 – Programa para teste das portas. ........................................................................ 58
QUADRO 2 – Programa Principal ........................................................................................... 60
QUADRO 3 – Unidade do programa principal. ....................................................................... 65
LISTA DE TABELAS
Tabela 1: Evolução dos processadores da linha Intel ............................................................... 18
Tabela 2: Hierarquia dos Dispositivos de Armazenamento ..................................................... 20
Tabela 3: Taxa máxima de transferência dos barramentos mais conhecidos ........................... 30
Tabela 4: Tipos de Ciclos de Barramento ................................................................................ 31
Tabela 5: Parte A/B dos pinos do barramento ISA .................................................................. 36
Tabela 6: Parte D/C dos pinos do barramento ISA .................................................................. 38
Tabela 7: Mapa de endereços de E/S do PC AT....................................................................... 39
Tabela 8: Mapa de Interrupções por ordem de Prioridade ....................................................... 42
Tabela 9: Valores de endereçamento possível com o SN74LS138. ......................................... 47
Tabela 10: Conexão do 82C55A com a parte baixa dos dados do barramento ISA................. 49
Tabela 11: Conexão do 82C55A com a parte alta dos dados do barramento ISA. .................. 50
Tabela 12: Caracteres de controle utilizados para a comunicação dos programas................... 58
LISTA DE SIGLAS
ABNT – Associação Brasileira de Normas Técnicas
SBC – Sociedade Brasileira de Computação
DSC – Departamento de Sistemas e Computação
BCC – Curso de Ciências da Computação – Bacharelado
ISA – Industry Standard Architecture
MCA – Microchannel Architecture
EISA – Extended Industry Standard Architecture
VLB – VESA Local Bus
PCI – Peripheral Component Interconnect
AGP – Accelerated Graphics Port
USB – Universal Serial Bus
IrDa – Infrared Developers Association
LISTA DE SÍMBOLOS
@ - arroba
% - por cento
# - sustenido
p - pi
$ - cifrão
SUMÁRIO
1 INTRODUÇÃO.................................................................................................................. 13
1.1 OBJETIVOS DO TRABALHO ........................................................................................ 16
1.2 ESTRUTURA DO TRABALHO ...................................................................................... 16
2 FUNDAMENTAÇÃO TEÓRICA .................................................................................... 17
2.1 A UNIDADE CENTRAL DE PROCESSAMENTO (UCP) ............................................ 17
2.2 MEMÓRIA........................................................................................................................ 19
2.2.1 Tecnologias ..................................................................................................................... 19
2.2.2 Hierarquia de Memória ................................................................................................... 19
2.2.3 Registradores................................................................................................................... 20
2.2.4 Memória Cache ............................................................................................................... 20
2.2.5 Memória Principal........................................................................................................... 21
2.2.6 Memórias Auxiliares....................................................................................................... 22
2.3 DISPOSITIVOS DE ENTRADA E SAÍDA (E/S)............................................................ 23
2.3.1 Chipset ............................................................................................................................ 24
2.3.2 Barramento...................................................................................................................... 25
2.3.2.1 Barramento Local ......................................................................................................... 26
2.3.2.2 Largura do Barramento................................................................................................. 29
2.3.2.3 Velocidade do Barramento ........................................................................................... 29
2.3.2.4 Largura da Banda do Barramento................................................................................. 29
2.3.2.5 Interface do Barramento ............................................................................................... 30
2.3.2.6 Ciclos do Barramento ................................................................................................... 30
2.3.2.7 Ciclo de Leitura da Porta de Entrada e Saída ............................................................... 31
2.3.2.8 Ciclo de Escrita na Porta de Entrada e Saída................................................................ 32
2.3.3 Barramento ISA .............................................................................................................. 33
2.3.3.1 Recursos do Barramento ISA ....................................................................................... 34
2.3.3.2 Descrição dos Sinais do Barramento ISA..................................................................... 34
2.4 ENDEREÇOS DE ENTRADA E SAÍDA ........................................................................ 39
2.5 INTERRUPÇÕES ............................................................................................................. 40
3 DESENVOLVIMENTO DO TRABALHO ..................................................................... 43
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO....................... 43
3.2 ESPECIFICAÇÃO ............................................................................................................ 43
3.2.1 O SN74LS138 ................................................................................................................. 47
3.2.2 O 82C55A ....................................................................................................................... 47
3.2.3 O SN74LS32 ................................................................................................................... 52
3.3 IMPLEMENTAÇÃO ........................................................................................................ 52
3.3.1 Projeto de Hardware........................................................................................................ 52
3.3.2 Projeto de Software ......................................................................................................... 53
3.4 RESULTADOS E DISCUSSÃO ...................................................................................... 66
4 CONCLUSÕES.................................................................................................................. 67
4.1 DIFICULDADES ENCONTRADAS ............................................................................... 67
4.2 EXTENSÕES .................................................................................................................... 67
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 68
13
1 INTRODUÇÃO
A computação moderna evoluiu junto com a humanidade a patamares jamais
alcançados por outra tecnologia. O primeiro dispositivo de cálculo que o homem inventou foi
o ábaco, usado desde 2.000 a.C., e ainda é encontrado no Japão e em outros países. O
computador nada mais é do que uma máquina capaz de efetuar cálculos com um grupo de
números, recuperar números já computados e, ainda, realizar novas operações com estes
valores. Devido a essa flexibilidade, existe um imenso campo para estudos e
desenvolvimentos de novos dispositivos de hardware e software.
Nos computadores atuais, uma necessidade crescente de elevar seu poder de
processamento leva o homem a pesquisar novas tecnologias que utilizam todo o potencial das
máquinas novas e também das que se encontram atualmente instaladas. Neste quesito, podem
ser implementados dispositivos para processamento em paralelo utilizando as portas de
entrada e saída com a finalidade de compartilhar informações com outras máquinas. Uma
delas é através do barramento, que permite uma performance bem superior que as mais
tradicionais, como as portas paralela e serial.
O termo barramento (bus) refere-se aos percursos entre os componentes de um
computador. Há dois barramentos principais em um computador: o barramento de dados e o
barramento de endereços. O mais conhecido é o barramento de dados, portanto, quando se
referencia apenas "barramento", em geral é uma abreviação ao barramento de dados.
Para que uma simples placa de vídeo ou disco possam ser utilizados em qualquer
microcomputador, independente do processador instalado, utiliza-se diversos modelos de
barramentos de expansão. Dentre eles pode-se destacar: Industry Standard Architecture
(ISA); o Microchannel Architecture (MCA); o Extended Industry Standard Architecture
(EISA); o VESA Local Bus (VL); o Peripheral Component Interconnect (PCI); o Accelerated
Graphics Port (AGP); o Universal Serial Bus (USB); Firewire (também chamado IEEE
1394) e o Infrared Developers Association (IrDa) (TORRES, 1998).
Quando a IBM apresentou o PC-AT (Advanced Technology), a melhoria mais
significativa foi um barramento aperfeiçoado, que atendia as potencialidades de um novo
processador, o 80286. Esse barramento foi denominado ISA, sendo que possui uma taxa de
transferência de 8 MHz em 16 bits (TORRES, 1998).
14
Mais tarde, a IBM lançou o barramento MCA, uma nova arquitetura de barramento
para tirar proveito das CPUs de 32 bits. Essa nova arquitetura de barramento era
significativamente mais rápida que o barramento ISA. Entretanto, as placas de expansão ISA
não eram compatíveis com o barramento MCA, tendo a IBM quebrado a tendência de
compatibilidade ascendente (PELISSON, 2000).
Em resposta ao MCA, um grupo de fabricantes de hardware uniram-se para
desenvolver um barramento de 32 bits alternativo, mas que ainda aceitasse placas de expansão
ISA. Esse barramento tornou-se conhecido como EISA, e sua performance ficou entre o
barramento ISA e o MCA (PELISSON, 2000).
No final de 1992, criou-se a VESA "A" Local Bus (Video Electronics Standards
Association) para desviar o tráfego mais intenso, como o vídeo, com um barramento local
conectado diretamente ao barramento da CPU. Este barramento foi criado tendo em vista
aumentar a velocidade de transferência de dados entre a placa de CPU e a placa SVGA, mas
outras placas de expansão também poderiam utilizá-lo. Desta forma, o barramento de dados
não teria problemas com um tráfego tolerável entre os dispositivos periféricos. Não
necessitava de chips especiais como era o caso do EISA, era uma arquitetura aberta ao
contrário do MCA, e tratava-se de um padrão industrial, uma grande vantagem sobre os
barramentos proprietários. É fisicamente representada por um conector especial de expansão
(PELISSON, 2000).
Com a evolução da velocidade dos processadores, o padrão VESA "A" foi tornando-se
cada vez mais lento. Para resolver o problema de latência do barramento inerente a essa
situação, foi criado um virtual local bus e conectado ao barramento da CPU via buffer. Essa
solução ficou conhecida como VESA "B". Esses buffers permitem que os sinais sejam
armazenados por breves períodos, enquanto o barramento estiver ocupado. Mesmo assim, o
que acontece quando mais de um dispositivo necessita utilizar o barramento da CPU ao
mesmo tempo? Acontece uma arbitragem e apenas um dispositivo utiliza o barramento
enquanto os demais aguardam a sua liberação. Com isso, pode ocorrer uma latência e o
sistema possivelmente opera de forma ineficiente. Isto fez surgir, então, o barramento PCI
(PELISSON, 2000).
A arquitetura PCI é semelhante à VESA quanto à conexão ao barramento local da
CPU, mas é muito mais completa ao utilizar uma ponte PCI-HOST, um dispositivo de cache
15
que provê uma única interface entre a CPU, memória e o PCI local bus. A arquitetura PCI
possibilita que a CPU continue buscando informações do cache enquanto o controlador deste
cache permite que um dispositivo de expansão acesse a memória do sistema, ou seja,
operações concorrentes no mesmo barramento (PELISSON, 2000).
Outra grande vantagem do barramento PCI é que até 256 dispositivos podem ser
conectados a um único PCI local bus, e 256 barramentos PCI podem existir em um único
sistema (PELISSON, 2000).
O barramento AGP é uma nova porta ou slot introduzida no chipset LX do Pentium II
(na placa mãe), para prover uma conexão de grande largura de banda entre a memória do
sistema e o subsistema gráfico. Com isso, removeu-se o acelerador gráfico do gargalo do
barramento PCI, liberando este e conseqüentemente aumentando a largura de banda para
operações de entrada e saída e tráfego da rede (PELISSON, 2000).
O barramento USB utiliza basicamente duas taxas de transferência: 12Mbps é usada
por periféricos que exigem mais velocidade (como câmeras digital, impressoras, scanner, etc.)
e 1,5Mbps, para periféricos mais lentos (como teclados, joysticks, mouse, etc). No barramento
USB é possível conectar até 127 dispositivos diferentes no mesmo conector da placa mãe
(TORRES, 1998).
O barramento Firewire é uma idéia muito parecida com o USB, com a diferença de
estar focado em substituir dispositivos de alto desempenho como o SCSI. Atualmente sua taxa
de transferência é de 200 Mbps, podendo atingir 400 Mbps em sua segunda versão. É possível
conectar até 63 periféricos e seu cabo pode alcançar uma distância de até 4,5 metros
(OGREN, 2001).
O barramento IrDA é um barramento sem fios: a comunicação é feita através de luz
infravermelha. Existem dois padrões: o IrDA 1.0, para comunicação de até 115.200 bps e
IrDA 1.1, para conexão até 4.194.304 bps ou 4 Mbps (TORRES, 1998).
Considerando estas informações, esta proposta tem por objetivo aperfeiçoar o trabalho
elaborado por Santos (2002), que viabiliza a comunicação entre dois computadores através do
barramento de dados de um microcomputador padrão PC. Com a implementação de novos
recursos (interrupções, largura de banda, etc.) na placa de expansão, será possível alcançar
performance superior às conquistadas por Santos (2002). Para avaliação de seu desempenho,
16
será implementado um software para monitorar a entrada e a saída dos dados entre os dois
microcomputadores. Algumas características seriam a transferência de dados entre duas
máquinas, à curta distância.
1.1 OBJETIVOS DO TRABALHO
O objetivo desta proposta é o desenvolvimento de duas placas controladoras para troca
de informações entre dois computadores, baseado no TCC elaborado por Santos (2002).
Os objetivos específicos são:
a) utilizar o barramento padrão ISA;
b) transferência de dados em 16 bits, utilizando circuitos integrados 82C55A;
c) funções de interrupções;
d) desenvolvimento de um software para tornar possível a comunicação entre dois
computadores.
1.2 ESTRUTURA DO TRABALHO
Este trabalho está organizado da seguinte maneira:
•
No primeiro capítulo, é apresentada uma visão geral deste trabalho, seus objetivos,
sua relevância e a sua estrutura.
•
O segundo capítulo apresenta uma fundamentação e apresentação sobre
Arquitetura de Computadores bem como um histórico de sua evolução e suas
famílias com as principais características que as diferem umas das outras.
Apresenta também uma visão sobre o barramento ISA, sua arquitetura e formas de
interfaceamento e sobre as interrupções do microcomputador.
•
O terceiro capítulo trata do desenvolvimento, especificação e implementação da
parte de hardware e software que compõem este protótipo, e uma análise dos
resultados obtidos no protótipo.
•
E finalmente, no quarto capítulo encontram-se as conclusões e sugestões de
continuidade do trabalho.
17
2 FUNDAMENTAÇÃO TEÓRICA
A arquitetura básica de um computador moderno segue ainda de forma geral os
conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann
(1903-1957), que desde a sua criação até hoje muita coisa evoluiu no projeto inicial, com
algumas adaptações chegou-se ao microcomputador de hoje.
As UCPs tornaram-se mais rápidas, a capacidade de memória aumentou, as redes
transmitem uma grande quantidade de dados em curto espaço de tempo, etc. Todo esse
progresso é acompanhado por uma diminuição gradual de custo, o que torna a tecnologia
computacional mais acessível e aumenta o leque de aplicações que podem ser
computacionalmente resolvidas de maneira eficiente (Turcotte, 1993).
Todos os componentes de um computador são agrupados basicamente em três
subsistemas básicos: unidade central de processamento (UCP), memória principal e
dispositivos de entrada e saída. Esses componentes podem ser observados na Figura 1.
UCP
ULA
UC
Registradores
Dispositivos de Entrada
e Saída (E/S)
Memória Principal
Fonte: Turcotte (1993, p. )
Figura 1: Unidades funcionais de um computador
2.1 A UNIDADE CENTRAL DE PROCESSAMENTO (UCP)
A UCP tem como função principal unificar todos os componentes e controlar as
funções realizadas por cada unidade funcional, ou seja, é o “cérebro” do computador.
Ela também é responsável pela execução de todos os programas do sistema, que
obrigatoriamente deverão estar armazenados na memória (Machado, 1992).
18
A UCP é composta de várias partes distintas: Unidade de Controle (UC), que coordena
a execução das instruções através da emissão de pulsos elétricos e a Unidade Lógica e
Aritmética (ULA), que realiza operações aritméticas (adição e subtração, por exemplo) e
operações booleanas (AND, OR) necessárias para realizar as instruções. A UCP contém
pequenas memórias de alta velocidade usadas para armazenamento temporário de
informações. Estas memórias consistem de registradores, cada um com uma determinada
função. O registrador mais importante é o program counter (PC) ou Contador de Instruções
(CI), o qual aponta a próxima instrução a ser executada. Outro registrador importante é o
instruction register (IR) ou Registrador de Instrução (RI), o qual armazena a instrução que
está sendo executada. A maioria dos microcomputadores tem esses e muitos outros
registradores (Tanenbaum, 1984).
Dentro de uma UCP existe uma memória interna de alta velocidade, que funciona
como um cache interno e acelera a movimentação dos dados. Essa cache é uma memória
extremamente rápida, pois trabalha na velocidade do UCP.
A especificação da velocidade de processamento de uma UCP é determinada pelo
número de instruções que o UCP executa por unidade de tempo, normalmente o segundo.
Como exemplo tem-se: MIPS (milhões de instruções por segundo) e MFLOPS/GFLOPS
(milhões/bilhões de instruções de ponto flutuante por segundo).
Um número bastante elevado de UCPs vem se tornando disponível ao longo dos
últimos anos. Dentre os processadores que se destacam nos computadores pessoais (PC Personal Computer), os processadores Intel da linha 80x86 são os que se tornaram mais
populares. A Tabela 1 ilustra o inicio da evolução desses processadores, com sua data de
lançamento, quantidade de instruções por segundo, número de transistores e o tamanho do
barramento interno.
Tabela 1: Evolução dos processadores da linha Intel
Nome
Data de
Lançamento
Freqüência
do Clock
Largura
Barramento
Nº Transistores
Memória
Endereçável
Memória
Virtual
Descrição Sumária
4004
15/11/71
108 KHz
4 bits
2.300 (10 microns)
640 bytes
-
1o
chip
microprocessador;
manipulação aritmética
8008
01/04/72
108 MHz
8 bits
3.500
16 kbytes
-
Manipulação
caracteres
8080
01/04/74
2 MHz
8 bits
6.000 (6 microns)
64 kbytes
-
10 vezes o desempenho do 8008
8086
08/06/78
5 a 10 MHz
16 bits
29.000 (3 microns)
1 Mbyte
-
10 vezes o desempenho do 8080
8088
01/06/79
5 MHz e
8 MHz
16 bits int / 8
bits ext.
29.000 (3 microns)
1 Mbyte
-
Idêntico ao 8086, mas com
barramento externo de 8 bits
80286
01/02/82
8 a 12 MHz
16 bits
134.000 (1,5
microns)
1 Gbyte
-
De 3 a 6 vezes o desempenho do
8086
de
dados
e
19
386 DX
17/10/85
16 a 33
MHz
32 bits
275.000 (1 micron)
4 Gbytes
64 Tbytes
1o chip x86 a manipular dados
em 32 bits
386 SX
16/06/88
16 e 20
MHz
32 bits int./
16 bits ext.
275.000 (1 micron)
4 Gbytes
64 Tbytes
Idêntico
ao
DX,
exceto
barramento externo de 16 bits
486 DX
10/04/89
25 a 50
MHz
32 bits
1.200.000 (1 micron)
4 Gbytes
64 Tbytes
Cache nível 1 e co-processador
Aritmético embutidos no chip
486 SX
22/04/91
16 a 33
MHz
32 bits
1.185.000 (0,8
micron)
4 Gbytes
64 Tbytes
Idêntico ao DX porém sem coprocessador aritmético
Pentium
22/03/93
60 a 266
MHz
32 bits
3.100.000 (0,8
micron)
4 Gbytes
64 Tbytes
Arquitetura super-escalar, 5
vezes o desempenho do 486 DX
Pentium
Pro
27/03/95
150 a 266
MHz
32 bits
5.500.000
(0,32micron)
4 Gbytes
64 Tbytes
Arquitetura
dinâmica
de
Execução
Fonte: PUC/Rio (2002)
2.2
MEMÓRIA
A memória é a parte do computador onde os programas e/ou dados são armazenados. É
na memória que o processador lê ou escreve informações. O armazenamento pode ser feito de
duas maneiras:
•
armazenamento primário ou memória principal;
•
armazenamento secundário.
A Memória tem por finalidade armazenar toda a informação que é manipulada pelo
computador - programas e dados. Para que um programa possa ser manipulado pela máquina,
ele primeiro precisa estar armazenado na memória principal.
2.2.1 Tecnologias
As primeiras tecnologias utilizadas em memórias foram as memórias de núcleos
magnéticos, hoje apenas uma curiosidade. As memórias modernas são compostas por
circuitos semicondutores, com novas tecnologias sendo criadas a cada ano permitindo que
grandes quantidades de células de memória sejam encapsuladas em pequenas pastilhas.
2.2.2 Hierarquia de Memória
A memória principal não é o único dispositivo de armazenamento de um computador.
Em função de características como tempo de acesso, capacidade de armazenamento, custo,
etc., pode ser visto na Tabela 2 uma hierarquia de dispositivos de armazenamento em
computadores.
20
Tabela 2: Hierarquia dos Dispositivos de Armazenamento
Tipo
Capacidade Velocidade Custo
Localização
Registrador
Bytes
muito alta
muito alto UCP
Memória Cache
Kbytes
alta
alto
UCP/placa
Memória Principal Mbytes
Média
médio
Placa
Memória Auxiliar Gbytes
Baixa
baixo
Externa
Volatilidade
Volátil
Volátil
Volátil
Não Volátil
Fonte: PUC/Rio (2002)
A UCP vê nesta ordem e acessa primeiro a que está mais próxima. Subindo na
hierarquia, quanto mais próximo da UCP, maior velocidade, maior custo, porém menor
capacidade de armazenamento.
2.2.3 Registradores
Registradores são dispositivos de armazenamento temporário, localizados na UCP,
extremamente rápidos, com capacidade para apenas um dado (uma palavra). Devido a sua
tecnologia de construção e por estar localizado como parte da própria pastilha ("chip") da
UCP é muito caro. O conceito de registrador surgiu da necessidade da UCP de armazenar
temporariamente dados intermediários durante um processamento. Por exemplo, quando um
dado resultado de operação precisa ser armazenado até que o resultado de uma busca da
memória esteja disponível para com ele realizar uma nova operação.
Máquinas RISC são geralmente construídas com um grande conjunto de registradores,
de forma a trazer os dados para o mais próximo possível da UCP, de forma a que o programa
opere sempre sobre dados que estão em registradores. Registradores são voláteis, isto é,
dependem de estar energizados para manter armazenado seu conteúdo.
2.2.4 Memória Cache
Com o desenvolvimento da tecnologia de construção da UCP, as velocidades foram
ficando muito mais altas que as das memórias, que não tiveram a mesma evolução. Desta
forma, os tempos de acesso às memórias foram ficando insatisfatórios e a UCP ao buscar um
dado na memória precisa ficar esperando muitos ciclos até que a memória retorne o dado
buscado ("wait states"), configurando um gargalo ("bottleneck") ao desempenho do sistema.
Por esse motivo, desenvolveram-se outras arquiteturas de memória privilegiando a velocidade
de acesso. A arquitetura da memória cache é muito diferente da arquitetura da memória
principal e o acesso a ela é muitas vezes mais rápido (por exemplo: 5 ns contra 70 ns).
21
No entanto, o custo de fabricação da memória cache é muito maior que o da memória
principal. Desta forma, não é econômico construir um computador somente com tecnologia de
memória cache. Criou-se então um artifício, incorporando-se ao computador uma pequena
porção de memória cache, localizada entre a UCP e a memória principal, e que funciona
como um espelho de parte da memória principal.
Desenvolveram-se ainda algoritmos que fazem com que, a cada momento, a memória
cache armazene a porção de código ou dados (por exemplo, uma sub-rotina) que estão sendo
usados pelas UCP. Esta transferência (MP <--> Cache) é feita pelo hardware: ela independe
do software, que ignora se existe ou não memória cache, portanto ignora essa transferência;
nem o programador nem o sistema operacional têm que se preocupar com ela.
A memória cache opera em função de um princípio estatístico comprovado: em geral,
os programas tendem a referenciar várias vezes pequenos trechos de programas, como loops,
sub-rotinas e funções. Ela somente tem sentido porque programas executados linearmente,
seqüencialmente, são raros. Desta forma, algoritmos (chamados algoritmos de cache) podem
controlar qual parte do código ficará copiado na cache, a cada momento.
Quando a memória principal busca um determinado trecho de código e o encontra na
cache, dá-se um "cache hit", enquanto se o dado não estiver presente na cache será necessário
requisitar o mesmo à memória principal, acarretando atraso no processamento e dá-se um
"cache fault".
O índice de cache hit ou taxa de acerto da cache é geralmente acima de 90%.
Memórias cache também são voláteis, isto é, dependem de estar energizadas para manter
gravado seu conteúdo.
2.2.5 Memória Principal
A Memória Principal é a parte do computador onde programas e dados são
armazenados para processamento. A informação permanece na memória principal apenas
enquanto for necessário para seu emprego pela UCP, após isto, esta área pode ser liberada
para ser posteriormente sobre-gravada por outra informação. Quem controla a utilização da
memória principal é o Sistema Operacional. A memória precisa ter uma organização que
permita ao computador guardar e recuperar informações quando necessário.
22
Não teria nenhum sentido armazenar informações que não fosse possível recuperar
depois. Portanto, não basta transferir informações para a memória. É preciso ter como
encontrar essa informação mais tarde, quando ela for necessária, e para isso é preciso haver
um mecanismo que registre exatamente onde a informação foi armazenada.
A memória principal é organizada em células. Célula é a menor unidade da memória
que pode ser endereçada (não é possível buscar uma "parte" da célula) e tem um tamanho fixo
(para cada máquina). As memórias são compostas de um determinado número de células ou
posições. Cada célula é composta de um determinado número de bits. Todas as células de um
dado computador têm o mesmo tamanho, isto é, todas as células daquele computador terão o
mesmo número de bits.
Cada célula é identificada por um endereço único, pela qual é referenciada pelo
sistema e pelos programas. As células são numeradas seqüencialmente, uma a uma, de 0 a (N1), chamado o endereço da célula. Endereço é o localizador da célula, que permite identificar
univocamente uma célula. Assim, cada célula pode ser identificada pelo seu endereço.
Unidade de transferência é a quantidade de bits que é transferida da memória em uma
única operação de leitura ou transferida para a memória em uma única operação de escrita.
O tamanho da célula poderia ser igual ao da palavra, e também à unidade de
transferência, porém por razões técnicas e de custo, são freqüentemente diferentes.
Computadores comerciais (tais como, por exemplo, os baseados nos processadores
Intel 486) podem ter o tamanho da palavra definido como de 32 bits, porém sua estrutura de
memória tem células de 16 bits.
2.2.6 Memórias Auxiliares
As memórias auxiliares resolvem problemas de armazenamento de grandes
quantidades de informações. A capacidade da MP é limitada pelo seu alto custo, enquanto as
memórias auxiliares têm maior capacidade e menor custo; portanto, o custo por bit
armazenado é muito menor.
Outra vantagem importante é que as memórias auxiliares não são voláteis, isto é, não
dependem de estar energizadas para manter gravado seu conteúdo.
23
Os principais dispositivos de memória auxiliar são: discos rígidos (ou Hard Disk),
drives de disquete, unidades de fita, CD-ROM, DVD, unidades ótico-magnéticas, etc.
Obs.: Cache de disco não é a mesma tecnologia da memória cache. Trata-se do
emprego do mesmo conceito da memória cache, para acelerar a transferência de dados entre
disco, MP e UCP, usando um programa (um software, por ex.: SmartDrive) para manter um
espelho do conteúdo de parte do disco (a mais provável de ser requisitada a seguir pela UCP)
gravado em uma parte da Memória Principal. Recentemente, as unidades de disco passaram a
incorporar em sua interface chips de memória - tipicamente 32 a 64 Kbytes - para acelerar a
transferência de dados, utilizando um algoritmo de cache.
2.3
DISPOSITIVOS DE ENTRADA E SAÍDA
A utilização de computadores para a solução de problemas inclui três etapas básicas:
•
entrada do programa e dados;
•
processamento;
•
saída dos resultados.
A entrada e saída de dados são efetuadas nos computadores através de dispositivos de
entrada e saída. É necessário ressaltar que nem toda entrada é fornecida por pessoas assim
como nem toda saída é destinada a pessoas. Os dispositivos de entrada e saída são os
componentes que viabilizam a interface com o usuário, tais como: portas seriais, portas
paralelas, conversores análogo-digitais, etc (Barretto, 2000).
Alguns dispositivos de entrada e saída podem transmitir uma grande quantidade de
dados em um curto intervalo de tempo. Se a UCP tem que processar cada caractere
separadamente, muito tempo de UCP é desperdiçado. Para impedir que a UCP fique presa por
muito tempo em operações de entrada e saída, muitos computadores de médio e grande porte
têm um ou mais processadores especializados e de baixo custo dedicados para tal tarefa.
Devido a entrada e saída ser realizada por esses processadores, a UCP fica disponível para
outros processamentos. Os processadores de entrada e saída trabalham em paralelo com a
UCP, ou seja, enquanto a UCP está processando, esses processadores se dedicam a operações
de entrada e saída. Na Figura 2 pode-se observar o tráfego de entrada e saída em um
microcomputador típico.
24
Fonte: Marcelino (2002)
Figura 2: Microcomputador típico e suas interfaces
2.3.1 Chipset
Em uma placa-mãe existem diversos circuitos de apoio, que genericamente chamamos
de chipset. O chipset define diversos fatores, como desempenho, quantidade máxima de
memória que a placa-mãe aceitará e muito mais (Weber, 2000).
Tão importantes quanto as UCPs, e talvez mais que as memórias, os chipsets são
circuitos os quais estão ligados diretamente ao chip da UCP e são responsáveis pela maioria
das trocas de informações entre a UCP, memórias e barramentos como:
•
interface IDE;
•
controle das memórias RAM e de cache externa;
•
controle de barramentos ISA e PCI;
•
controle de DMA e interrupções.
A maioria dos chipsets foi projetada para operar com os processadores a partir do 486.
Os chipsets pertencem à mesma classe de tecnologia dos chips de UCP, a tecnologia VLSI
(Very Large Scale Integration). Um exemplo de chipset é a linha Intel 430FX.
25
2.3.2 Barramento
Também chamado em inglês de bus, é o meio físico responsável pela troca de dados
entre circuitos, placas e equipamentos. Em um computador, são as trilhas e circuitos (quando
existentes) responsáveis pela troca de dados entre o UCP, a memória, os dispositivos
anexados e as placas do microcomputador (Torres, 1999).
Os barramentos podem ser classificados como unidirecionais (transmissão em um só
sentido) ou bidirecionais (transmissão em ambos os sentidos). O sistema de barramentos de
um microcomputador é composto de três barramentos independentes em suas funções
elétricas (conforme Figura 2): o barramento de endereços, o barramento de dados e o
barramento de controle (Barretto, 2000).
O Barramento de Endereços é apenas de saída (em relação à UCP) e define o caminho
de comunicação dentro do sistema.
O Barramento de Dados é bidirecional, ou seja, da UCP para os periféricos e dos
periféricos para UCP. Na saída de dados da UCP, estes são enviados à uma unidade que é
selecionada pelo barramento de endereços. Na entrada de dados, estes são gerados por um
periférico ou outra unidade independente e enviados ao microprocessador.
O Barramento de Controle, como o próprio nome indica, envia e recebe os sinais de
controle necessários à transferência de dados no sistema. Este barramento é composto,
basicamente de 4 tipos de sinais: leitura de memória ativa, escrita de memória ativa, entrada
através de dispositivo externo ativo e saída através de dispositivo externo ativo. Podemos
observar o funcionamento de uma placa mãe na Figura 3.
26
Memória Cache
UCP (Processador)
Barramento Local
Barramento AGP
Ponte Norte
Memória RAM
Slot AGP
Barramento PCI
Slots PCI
Periféricos PCI
integrados à placa
mãe
Ponte Sul
Barramento ISA
Memória ROM
Barramento X
Slots ISA
Periféricos lentos
integrados à placa
mãe
Figura 3: Esquema de funcionamento de uma placa-mãe
2.3.2.1 Barramento Local
O barramento local é utilizado na comunicação do UCP com os circuitos básicos que
demandam velocidade (especialmente a memória RAM e a memória cache). O barramento
local pode ser subdividido em Barramento de dados, Barramento de endereços e Barramento
de controle (Barreto, 2000).
27
Algumas características deste barramento para os microcomputadores atuais:
•
barramento de dados de 64 bits;
•
barramento de endereços de 32 bits;
•
freqüência de operação de 66, 100, 133, 200, 266, 400 MHz (as freqüências 200 e
266 referem-se ao barramento de 100 e 133 operando em DDR – Double Data
Rate, ou seja, ocorre duas operações em um mesmo ciclo de barramento, enquanto
a freqüência de 400 refere-se ao barramento de 100 operando em QDR –
Quadruple Data Rate).
2.3.2.2
Barramento PCI
Após o advento do barramento PCI, a construção de chipsets e de placas-mãe tornou-
se ainda mais fácil, devido a características próprias desse barramento. Chipsets para o
barramento PCI possuem basicamente dois circuitos: Ponte Norte e Ponte Sul.
2.3.2.2.1 Funcionamento da Ponte Norte
Também chamada controladora de sistema, possui as seguintes funções: ponte
barramento local-PCI, controlador de memória e controlador de cache L2 (exceto em placasmãe para Pentium Pro, Pentium II e superiores, onde o controlador de cache L2 está no
próprio processador).
Como podemos observar na Figura 3, a Ponte Norte é o circuito mais importante do
chipset. Ela faz a conversão dos sinais do barramento local (que, em micros onde o
barramento local trabalha a 66 MHz atinge 528 MB/s) para o barramento PCI (que atinge, no
máximo, 132 MB/s).
Como possui embutido o controlador de memória RAM, a Ponte Norte também influi
no desempenho do micro. Uma Ponte Norte pode buscar dados na memória RAM utilizando
menos pulsos de clock que outro modelo de Ponte Norte, por exemplo. Isso significa que um
chipset pode ser mais rápido do que o outro. De uma maneira mais ampla, chegamos à
conclusão que uma placa-mãe pode ser mais rápida do que outra dependendo dos chipsets que
elas utilizem.
28
Da mesma forma, a utilização de uma determinada tecnologia de memória RAM é
definida pelo controlador de memória RAM que está embutido na Ponte Norte. Por exemplo,
não podemos instalar memória EDO na maioria das placas-mãe para 486 porque a maioria
dos chipsets para placas-mãe soquete 3 (mais especificamente a Ponte Norte) não sabe
trabalhar com esse tipo de memória. Da mesma forma, a Ponte Norte do chipset Intel 430FX
não sabe como trabalhar com memórias SDRAM, o que não acontece com os chipsets Intel
430VX e 430TX, por exemplo.
E, a freqüência de operação da placa-mãe é basicamente definida pela Ponte Norte. Por
exemplo, A Ponte Norte dos chipsets Intel para placa-mãe com soquete 7 trabalham somente a
até 66 MHz, enquanto a Ponte Norte dos chipset Via para placa-mãe com soquete 7 podem
trabalhar a até 75 MHz (o chipset Via Apollo MVP3 trabalha a até 100 MHz). Isso permite a
correta utilização dos processadores Cyrix de 75 MHz, dos processadores soquete 7 de 100
MHz (AMD K6-2 e Cyrix MII), bem como a configuração de overclock.
2.3.2.2.2
Funcionamento da Ponte Sul
Também chamada controlador de periféricos, possui as seguintes funções: ponte
barramento PCI-ISA, controlador de interrupção, controlador de DMA, controle dos
periféricos "on board" (controladora da unidade de disquete, porta serial, porta paralela e
portas IDE).
A Ponte Sul possui como característica básica fazer a comunicação (ponte) entre o
barramento ISA e o barramento PCI. Além disso, possui integrado o controlador de
interrupções, controlador de DMA e também faz o controle dos periféricos "on board"
básicos.
No caso de placas-mãe com outros periféricos integrados - como vídeo e áudio - o
controle será feito por um processador de vídeo e/ou um processador de áudio. Esses
processadores são conectados diretamente ao barramento PCI.
A grande preocupação em relação à Ponte Sul é saber se ela é capaz de trabalhar com o
padrão Ultra-ATA (UDMA, Ultra-DMA), que permite discos rígidos IDE atingirem uma taxa
de transferência de até 133 MB/s.
Outro detalhe sobre a Ponte Sul é que o barramento USB é conectado à ele.
29
2.3.2.3 Largura do Barramento
Um barramento é um canal no qual a informação circula, quanto maior for o número
de linhas do barramento mais informação pode circular no barramento. O Barramento ISA
original tem 8 bits, o barramento ISA usado atualmente tem 16 bits. Os outros barramentos
(incluído VLB e PCI) são de 32 bits. O barramento local dos processadores Pentium são de 64
bits de largura.
2.3.2.4 Velocidade do Barramento
A velocidade do barramento reflete a quantidade de bits de informação que podem ser
transferidos por segundo. A maioria dos barramentos transmite um bit por linha, por ciclo de
relógio, no entanto os barramento de alta-performance como no AGP podem movimentar 2
bits por ciclo de clock, duplicando sua performance. Já o barramento ISA gasta em média 4
ciclos para transferir um dado (Marcelino, 2002).
2.3.2.5 Largura da Banda do Barramento
A Largura de banda refere-se à quantidade de dados que podem ser transferidos no
barramento numa dada unidade de tempo.
A Tabela 3, mostra a largura de banda teórica que os barramentos podem suportar hoje
em dia. Note-se que os barramentos podem trabalhar a diferentes velocidades (Marcelino,
2002).
30
Tabela 3: Taxa máxima de transferência dos barramentos mais conhecidos
Barramento
Largura Velocidade
Largura da Banda (Taxa de
(bits)
(MHz)
Transferência Máxima) (MB/s)
8-bit ISA
8
8,3
7,9
16-bit ISA
16
8,3
15,9
EISA
32
8,3
31,8
VLB
32
33
127,2
PCI
32
33
127,2
64-bit PCI 2.1
64
66
508,6
AGP
32
66
254,3
AGP (x2 mode)
32
66x2
508,6
AGP (x4 mode)
32
66x4
1017,3
Fonte: (Marcelino, 2002)
2.3.2.6 Interface do Barramento
Num sistema onde existem muitos barramentos distintos, devem ser previstos circuitos
no chipset para interligar os barramentos e permitir aos diferentes dispositivos a
comunicações entre eles. Estes dispositivos são chamados bridges ou “Pontes”, assim existe a
PCI-ISA bridge, que faz parte do sistema do chipset, e faz a conversão do barramento PCI pra
o ISA e vice-versa, o barramento PCI também tem uma bridge para o barramento do UCP ou
local bus (Torres, 1999).
2.3.2.7 Ciclos do Barramento
Existem duas classificações gerais de tipos de ciclos de barramento, o ciclo do UCP,
ou seja, ciclos gerados a partir do UCP e o ciclo de barramento de DMA gerado pelo
controlador de DMA. O UCP pode gerar um dos cinco tipos de ciclos: leitura na memória,
escrita na memória, leitura na porta de entrada e saída, escrita na porta de entrada e saída,
atender às interrupções. Já os gerados pelo controlador de DMA são DMA read I/O e DMA
write I/O. A Tabela 4 demonstra os tipos de ciclos de barramentos e seus propósitos.
31
Tipo de Ciclo
Leitura da Memória.
Escrita da Memória.
Leitura da porta de
entrada e saída.
Escrita da porta de
entrada e saída.
Requisição de
interrupções
Escrita da porta de
entrada e saída por
DMA.
Leitura da porta de
entrada e saída por
DMA.
Tabela 4: Tipos de Ciclos de Barramento
Propósito
Fluxo dos dados
UCP busca dados ou instruções.
Memória para UCP.
UCP escreve dado.
UCP para memória.
UCP busca dados do dispositivo de Porta de entrada e saída para
entrada e saída.
o UCP
UCP envia dado a dispositivo de
UCP para porta de entrada e
entrada e saída.
saída.
Envio de interrupção ao UCP.
Controlador de interrupção
para UCP
Envio de dados da memória para a
Memória para dispositivo de
interface de entrada e saída.
Entrada e Saída
Envido de dados da interface de
entrada e saída para a memória.
Dispositivo de Entrada e
Saída para memória
Fonte: Adaptado de Eggebrecht (1995).
2.3.2.8 Ciclo de Leitura da Porta de Entrada e Saída
O ciclo de leitura na porta de entrada e saída é executado quando uma instrução IN e
executada pelo UCP, este ciclo é similar ao ciclo de leitura da memória descrita acima, seu
propósito é de buscar o dado contido no dispositivo de entrada e saída endereçado no
barramento de endereço. Este ciclo possui aproximadamente 5 ciclos de clock, e este
dispositivo pode estender o tamanho do ciclo desativando o sinal de barramento ready
(Eggebrecht, 1995).
O ciclo de leitura da porta de entrada e saída inicia no tempo T1 do clock com o sinal
de ALE sendo ativado ou posto em alta, isto indica que o barramento de endereço conterá um
endereço de uma porta válida, e seguindo aproximadamente no T2, o sinal de IOR é ativado
no barramento de controle, que indica que o ciclo é um ciclo de leitura da porta de entradas e
saída e que o dispositivo de I/O cujo endereço for igual ao endereço contido no barramento de
dados deverá disponibilizar seu dado no barramento de dados. A Figura 4 demonstra
graficamente este ciclo.
32
Fonte: Adaptado de Eggebrecht (1995).
Figura 4: Ciclo de leitura da porta de entrada e saída
2.3.2.9 Ciclo de Escrita na Porta de Entrada e Saída
O ciclo de escrita na porta de entrada e saída é executado quando uma instrução OUT e
executada pelo UCP, este ciclo escreve o dado contido num registrador do UCP em uma porta
especifica. Este ciclo possui aproximadamente cinco ciclos de clock, e este dispositivo pode
estender o tamanho do ciclo desativando o sinal de barramento READY (Eggebrecht, 1995).
O ciclo de escrita na porta de entrada e saída inicia no tempo T1 do clock com o sinal
de ALE sendo ativado ou posto em alta, isto indica que o barramento de endereço conterá um
endereço válido na porta. No T2, o sinal de IOW é ativado no barramento de controle (“0”),
que indica que o ciclo é para escrita na porta e que o dispositivo cujo endereço for igual ao
endereço contido no barramento de dados está sendo selecionado.
Após T2 o UCP envia ao barramento de dados o dado que devera ser recebido pelo
dispositivo selecionado, e no início de T4 o sinal de IOW é desativado (“1”) e no final de T4
o ciclo estará completo. A Figura 5 demonstra graficamente este ciclo.
33
Fonte: Adaptado de Eggebrecht (1995).
Figura 5: Ciclo de escrita na porta de entrada e saída
2.3.3 Barramento ISA
O barramento ISA (Industry Standard Architecture) foi o primeiro barramento de
expansão a ser criado. Em seus slots pode-se conectar qualquer placa ISA.
Nos primeiros PC’s, os 8088 eram utilizados barramentos de dados de 8 bits, sendo
assim os slots de expansão também eram de 8 bits. É interessante notar, que na época do PC e
do PC XT o barramento ISA era conectado diretamente ao barramento local da máquina, já
que essas máquinas utilizavam baixas freqüências de operação (Barreto, 2000) .
Com a introdução do micro AT, o barramento e o slot ISA aumentaram de tamanho de
forma a acompanhar as características do UCP 80286, conforme relacionado abaixo:
•
barramento de dados de 16 bits;
•
barramento de endereços de 24 bits;
•
freqüência de operação de 8 MHz;
•
acesso a 16 MB de memória RAM;
•
taxa de transferência máxima de 8 MB/s para o barramento ISA 8 bits e 16 MB/s
para o ISA 16 bits.
O barramento ISA opera a uma freqüência máxima de 8MHz independendo se é um
PC AT 286 ou um Pentium II isto ocorre por motivos de que uma placa antiga não funcionaria
34
em micros novos, e também dispositivo que utilizam baixa taxa de transferência como placas
de som e placas de fax/modem que não necessitam de altas taxas de transferência.
Para a comunicação do barramento ISA com o barramento local do micro (que são
bastante diferentes hoje em dia basta pensar que o barramento ISA trabalha no máximo a 16
bits e o barramento local de um Pentium e de no mínimo 64 bits), há um circuito próprio para
o interfaceamento, chamando de controlador de barramento ISA. Este circuito está integrado
ao chipset da placa-mãe e converte todas as informações de um barramento para o outro, este
procedimento é chamando de ponte PCI-ISA (ou ponte sul) conforme esquema ilustrado na
Figura 2 (Torres, 1999).
2.3.3.1 Recursos do Barramento ISA
Desde o primeiro PC, o controle dos recursos de hardware se dá através dos endereços
de entrada e saída, linhas de interrupção (IRQ) e canais de DMA. Praticamente todas as placas
ISA utilizam pelo menos um destes recursos. Por exemplo, uma placa de som típica utiliza o
endereço 220h, interrupção IRQ5 e canais de DMA 1 e 5. O barramento ISA traz estes
recursos da seguinte forma:
•
endereços de entrada e saída: 1 KB (de 000h a 3FFh);
•
interrupções: 15 linhas;
•
canais de DMA: 8 canais.
2.3.3.2 Descrição dos Sinais do Barramento ISA
A interligação do micro-computador com uma placa de expansão é feita através dos
barramentos de dados, controle e endereço. As Figuras 6 e 7 e a Figura 8 mostram os tipos de
conectores e placas de expansão ISA que podem ser de 8 ou 16 bits. A Tabela 5 apresenta
todos os sinais do barramento ISA de 8 e a Tabela 6 os sinais do barramento de expansão de
16 bis.
35
Fonte: Adaptado de Eggebrecht (1995).
Figura 6: Arquitetura do Barramento ISA - 8 bits
Fonte: Adaptado de Eggebrecht (1995).
Figura 7: Arquitetura do Barramento ISA - 16 bits
36
Fonte: Adaptado de Eggebrecht (1995).
Figura 8: Arquitetura do Barramento ISA – Pinagem
Tabela 5: Parte A/B dos pinos do barramento ISA
E/S Descrição
S
Barramento de endereços (sinal A0 pino A31, sinal A19
pino A12).
AEN
Address Enable S
Quando ativo, este sinal indica que a operação executada
no barramento é de DMA. Devemos utilizar este sinal
em nossos protótipos de modo que o decodificador não
capture um dado erroneamente durante uma operação de
DMA do micro.
ALE
Address Latch
S
Indica que há um endereço válido no barramento de
Enable
endereços. Não é ativado durante operações de DMA.
CLK
Clock
S
Clock do barramento ISA, de 8 MHz. Ele não é
simétrico, apresentando um ciclo de carga de 33%, ou
seja, 1/3 em nível alto e 2/3 em nível baixo.
D0-D7
D0-D7
E/S Barramento de dados (D0 pino A9, D7 pino A2).
/DACK1 DMA
S
Indica que o pedido de DMA 1 foi aceito e que o
Acknowledge 1
controlador de interrupção irá iniciá-lo.
/DACK2 DMA
S
Indica que o pedido de DMA 2 foi aceito e que o
Acknowledge 2
controlador de interrupção irá iniciá-lo.
/DACK3 DMA
S
Indica que o pedido de DMA 3 foi aceito e que o
Acknowledge 3
controlador de interrupção irá iniciá-lo.
DRQ1
DMA Request 1 E
Faz um pedido de DMA nível 1 ao controlador de DMA.
DRQ2
DMA Request 2 E
Faz um pedido de DMA nível 2 ao controlador de DMA.
DRQ3
DMA Request 3 E
Faz um pedido de DMA nível 3 ao controlador de DMA.
/I/O CH I/O Channel
E
Ativando este sinal, gera-se uma interrupção nãoCK
Check
mascarável (NMI). É ativado em situações de erro, como
erro de paridade (Obs: este sinal deve ser utilizado com
um circuito de coletor aberto).
Sinal
A0-A19
Nome
A0-A19
37
/I/O CH
RDY
I/O Channel
Ready
E
/IOR
I/O Read
S
/IOW
I/O Write
S
IRQ3
Interrupt
Request 3
Interrupt
Request 4
Interrupt
Request 5
Interrupt
Request 6
Interrupt
Request 7
Interrupt
Request 9
Memory Read
E
IRQ4
IRQ5
IRQ6
IRQ7
IRQ9
/MEMR
E
E
E
E
E
S
/MEMW Memory Write
S
OSC
Oscilador
S
RESET
DRV
TC
Reset Driver
S
Terminal Count
S
+5V
-12V
-5V
GND
+5V
-12V
-5V
Terra
S
S
S
S
Fonte: Adaptado de Eggebrecht (1995).
Gera wait states para operações de I/O ou de memória.
Se o circuito necessitar de wait states, basta ativar esta
linha após a decodificação do endereço e dos sinais
/MEMR, /MEMW, /IOR ou /IOW. Devemos temporizar
esta linha com muito cuidado, para não inserirmos wait
states desnecessários (Obs: este sinal deve ser utilizado
com um circuito de coletor aberto).
Indica que uma leitura em I/O está sendo executada. É
ativado também durante ciclos de DMA.
Indica que uma escrita em I/O está sendo executada. É
também ativado durante operações de DMA.
Faz um pedido de interrupção nível 3 ao controlador de
interrupções.
Faz um pedido de interrupção nível 4 ao controlador de
interrupções.
Faz um pedido de interrupção nível 5 ao controlador de
interrupções.
Faz um pedido de interrupção nível 6 ao controlador de
interrupções.
Faz um pedido de interrupção nível 7 ao controlador de
interrupções.
Faz um pedido de interrupção nível 9 ao controlador de
interrupções.
Indica que está sendo executada uma operação de leitura
em memória. É também ativado durante operações de
DMA.
Indica que está sendo executada uma operação de escrita
em memória. É também ativado durante operações de
DMA.
Sinal com freqüência de 14,31818 MHz, utilizado para a
sincronização do vídeo CGA. Não é sincronizado com o
clock do micro, portanto, cuidado.
Sinal de reset do sistema.
Indica que um dos canais de DMA acabou de realizar a
transferência de DMA programada.
+5V
-12V
-5V
Terra
38
Tabela 6: Parte D/C dos pinos do barramento ISA
Sinal
Nome
E/S
A17A23
A17-A23
S
D8D15
/DAC
K0
D8-D15
E/
S
S
DMA
Acknowledge
0
/DAC
DMA
K5
Acknowledge
5
/DAC
DMA
K6
Acknowledge
6
/DAC
DMA
K7
Acknowledge
7
DRQ0 DMA Request
0
DRQ5 DMA Request
5
DRQ6 DMA Request
6
DRQ7 DMA Request
7
/IOCS1 I/O Chip
6
Select 16 bits
IRQ10
IRQ11
IRQ12
IRQ14
IRQ15
/MAST
ER
Interrupt
Request 10
Interrupt
Request 11
Interrupt
Request 12
Interrupt
Request 14
Interrupt
Request 15
Máster
Descrição
Barramento de endereços, parte alta. Estas linhas não são
válidas durante todo o ciclo do barramento, por isto devemos
utilizar um latch para armazenarmos seus valores (sinal A17
pino C8, sinal A23 pino C2).
Barramento de dados, parte alta (sinal D8 pino C11, sinal
D15 pino C18).
Indica que o pedido de DMA 0 foi aceito e que o controlador
de interrupção irá iniciá-lo.
S
Indica que o pedido de DMA 5 foi aceito e que o controlador
de interrupção irá iniciá-lo.
S
Indica que o pedido de DMA 6 foi aceito e que o controlador
de interrupção irá iniciá-lo.
S
Indica que o pedido de DMA 7 foi aceito e que o controlador
de interrupção irá iniciá-lo.
E
Faz um pedido de DMA nível 0 ao controlador de DMA.
E
Faz um pedido de DMA nível 5 ao controlador de DMA.
E
Faz um pedido de DMA nível 6 ao controlador de DMA.
E
Faz um pedido de DMA nível 7 ao controlador de DMA.
E
Indica que haverá uma transferência de 16 bits no
barramento de dados, utilizando endereçamento em I/O
(Obs: este sinal deve ser utilizado com um circuito de coletor
aberto).
Faz um pedido de interrupção nível 10 ao controlador de
interrupções.
Faz um pedido de interrupção nível 11 ao controlador de
interrupções.
Faz um pedido de interrupção nível 12 ao controlador de
interrupções.
Faz um pedido de interrupção nível 14 ao controlador de
interrupções.
Faz um pedido de interrupção nível 15 ao controlador de
interrupções.
Este sinal é ativado quando queremos que algum outro
dispositivo assuma o controle do barramento (bus master).
Deve ser acionado em conjunto com o sinal DRQ. Quando o
sinal /DACK correspondente for devolvido, todos os
circuitos conectados ao barramento são colocados em tristate, permitindo que o dispositivo manipule o barramento
como bem entender. O novo mestre de barramento deverá
E
E
E
E
E
E
39
/MEM
CS16
Memory Chip
Select 16 bits
E
/MEM
R
/MEM
W
SBHE
Memory Read
S
Memory Write
S
System Bus
High Enable
S
+5V
+5V
S
obedecer aos sinais de temporização e devolver o controle no
máximo em 15 µs.
Indica que haverá uma transferência de 16 bits no
barramento de dados, utilizando endereçamento em memória
(Obs: este sinal deve ser utilizado com um circuito de coletor
aberto).
É ativado quando é feita uma leitura em uma posição de
memória acima de 1 MB.
É ativado quando é feita uma escrita em uma posição de
memória acima de 1 MB.
Indica que a transferência de dados utilizará a parte alta do
barramento de dados (D8-D15). Este sinal e A0 são
decodificados para informar que tipo de transferência será
efetuada (vide tabela).
+5 V
Fonte: Adaptado de Eggebrecht (1995).
2.4 ENDEREÇOS DE ENTRADA E SAÍDA
Os endereços de entrada e saída são utilizados na comunicação do UCP com um
dispositivo através das instruções “In” e “Out”. Como exemplo, a porta paralela que se
comunica com seus periféricos no endereço de entrada e saída 378h. Caso for utilizar uma
impressora para imprimir um texto, isso será feito enviando dados através desse endereço. A
Tabela 7 mostra os endereços tipicamente utilizados do PC AT (Eggebrecht, 1995).
Tabela 7: Mapa de endereços de entrada e saída do PC AT
Faixa de Endereço (em Hexadecimal)
Dispositivo
000-01F
Controlador de DMA 1
020-03F
Controlador de interrupção 1
040-05F
Timer
060-06F
Teclado
070-07F
Clock de tempo real, NMI mask
080-09F
Registrador de DMA 74LS612
0A0-0BF
Controlador de interrupção 2
0C0-0DF
Controlador de DMA 2
0F0
Limpa o co-processador matemático ocupado
0F1
Reseta o co-processador matemático
0F8-0FF
Co-processador matemático
1F0-1F8
Disco Rígido
200-207
E/S para jogos
278-27F
Porta paralela 2 (LPT2)
2F8-2FF
Porta serial 2 (com2)
300-31F
Porta para prototipar placas
360-36F
Reservado
378-37F
Porta paralela 1 (LPT1)
380-38F
Bi-sincronizador SDLC 2
40
3A0-3AF
3B0-3BF
3C0-3CF
3D0-3DF
3F0-3F7
3F8-3FF
Bi-sincronizador SDLC 1
Adaptador de vídeo monocromático
Reservado
Adaptador para monitor colorido
Controlador de disquete
Porta serial 1 (com1)
Fonte: Adaptado de Eggebrecht (1995).
2.5 INTERRUPÇÕES
Pode-se dizer que interrupções e traps são as forças que controlam os sistemas
operacionais. Um sistema operacional somente recebe o controle da execução quando ocorre
alguma interrupção ou trap.
Uma interrupção é um sinal de hardware que faz com que o UCP interrompa a
execução de um programa e passe a executar uma rotina específica que trata tal interrupção de
acordo com seu código. Ao terminar a execução da sub-rotina, restaura os registradores com o
programa que foi interrompido e a partir daí, continua executando tal programa como se nada
houvesse ocorrido. Este tipo de interrupção é chamado de interrupção por hardware.
Interrupções podem ser originadas pelos vários dispositivos periféricos (terminais,
discos, impressoras, etc.), pelo operador (através do teclado ou mouse) ou pelo relógio do
sistema. O relógio (timer) é um dispositivo de hardware que decrementa automaticamente o
conteúdo de um registrador ou posição de memória, com uma freqüência constante, e
interrompe a UCP quando o valor decrementado atinge zero. O sistema operacional garante
que ocorrerá pelo menos uma interrupção e voltará dentro de um intervalo de tempo t,
colocando no relógio um valor que demore t unidades de tempo para ser decrementado até
zero. Esta atribuição de valor ao relógio é feita imediatamente antes do sistema operacional
entregar a UCP para um programa de usuário.
Uma interrupção não afeta a instrução que está sendo executada pela UCP no momento
em que ela ocorre: a UCP detecta interrupções apenas após o término da execução de uma
instrução (antes do início da execução da instrução seguinte).
Os computadores possuem instruções para mascarar (desabilitar, inibir) o sistema de
interrupções. Enquanto as interrupções estão mascaradas elas podem ocorrer, mas não
detectadas pelo UCP. Neste caso, as interrupções ficam pendentes (enfileiradas) e somente
serão tratadas quando uma instrução que desmascara as mesmas é executada.
41
Uma trap é uma instrução especial que, quando executada pelo UCP interrompe a
execução de um programa e aciona uma sub-rotina, conforme uma interrupção de hardware.
A diferença é que uma trap é dada por software, por isso é denominada interrupção de
software.
Pode-se dizer que trap é uma interrupção prevista, programada no sistema pelo próprio
programador. Uma interrupção de hardware por outro lado, é completamente imprevisível,
ocorrendo em pontos que não podem ser pré-determinados.
As traps têm a finalidade de permitir aos programas dos usuários a passagem do
controle da execução para o sistema operacional. Por esse motivo também são denominados
como “chamadas do sistema” (supervisor call ou system call). As traps são necessárias,
principalmente, nos computadores que possuem instruções protegidas (privilegiadas).
Nesses computadores, o registrador (palavra) de estado do UCP possui um bit para indicar se
a UCP está em estado privilegiado (estado de sistema, estado de supervisor, estado mestre)
ou não privilegiado (estado de usuário, estado de programa, estado escravo). Sempre que
ocorre uma interrupção de hardware ou um trap, o novo valor carregado no registrador de
estado do UCP, indica estado privilegiado de execução.
No estado de supervisor qualquer instrução pode ser executada e no estado de usuário
apenas as instruções não protegidas podem ser executadas. Exemplos de instruções protegidas
são instruções para desabilitar ou habilitar interrupções e instruções para realizar operações de
entrada e saída. Operações que envolvam o uso de instruções protegidas somente podem ser
executadas pelo sistema operacional. Quando um programa de usuário necessita executar
alguma dessas operações, o mesmo deve executar uma trap, passando como argumento o
número que identifica a operação que está sendo requerida.
A primeira versão do barramento ISA e dos microcomputadores, o PC XT possuía
somente 8 níveis de interrupções, nas com a chegada dos PCs ATs foram introduzidos mais
um circuito com mais 8 níveis de interrupções em cascata ao primeiro criando assim 15 níveis
de interrupções. Estes controladores de interrupções estão interligados no circuito do chipset
da placa-mãe chamado de Ponte sul, que é o circuito responsável por controlar o barramento
ISA, a Figura 9 demonstra como esta ligação ocorre (Torres, 1999).
42
IRQ 8
IRQ 0
IRQ 9
IRQ 1
IRQ 10
IRQ 2
IRQ 11
IRQ 3
IRQ 12
IRQ 4
IRQ 13
IRQ 5
IRQ 14
IRQ 6
IRQ 15
IRQ 7
8259A-2
Processador
8259A-1
Fonte: Gabriel Torres (1999).
Figura 9: Como Funciona o esquema de interrupções
Na realidade, não há todas estas linhas disponíveis. Observando no mapa de
interrupções (mapa da tabela 8), é possível verificar que há diversas interrupções
automaticamente alocadas pela placa-mãe. Um PC típico, possui apenas 4 interrupções
disponíveis caso não utilize nenhum periférico extra.
Tabela 8: Mapa de Interrupções por ordem de Prioridade
Interrupção
IRQ0
IRQ1
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
Descrição
Temporizador da placa-mãe (conectado ao chipset)
Teclado (Conectado ao chipset)
Relógio de tempo real (conectado ao chipset)
Interface de vídeo
Normalmente disponível
Normalmente disponível
Mouse de barramento (Bus Mouse, mouse OS/2)
Co-processador matemático (conectado ao chipset)
Porta IDE primária
Porta IDE secundaria
Conexão em cascata (conectado ao chipset)
COM2 e COM4 (comunicação serial)
COM1 e COM3 (comunicação serial)
Placa de som
Unidade de disquete
Porta Paralela
Fonte: Adaptado de Torres (1999)
43
3 DESENVOLVIMENTO DO TRABALHO
Este capítulo descreve todos os passos da implementação do trabalho desenvolvido.
Inicialmente, foi utilizado como base o projeto elaborado por Santos (2002), onde foi
estudado todo seu mecanismo de funcionamento. Devido à utilização de componentes com
baixo índice de integração, necessitando uma área muito grande para montagem dos mesmos,
esse projeto base foi abandonado. Com base numa nova pesquisa, chegou-se a componentes
projetados especificamente para essa finalidade com um excelente índice de integração. Com
um ponto de partida definido, o restante do trabalho ocorreu em três etapas:
•
estudo das pinagens que seriam utilizados no protótipo e em seguida a elaboração
do diagrama esquemático das interligações dos componentes;
•
confecção das placas controladoras;
•
desenvolvimento de um software para testes do hardware.
Para a elaboração do diagrama esquemático foram estudados todos os contatos
elétricos que seriam necessários utilizar o barramento ISA, e sua interconexão com os demais
componentes utilizados. Para isto, foi utilizado o software Liatro por sua praticidade. Através
do diagrama foi possível definir um melhor lay-out para os componentes na placa. Para
confecção de duas placas controladoras foi criado um desenho elaborado com o software
AutoCad.
3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO
Os requisitos deste protótipo são efetuar a comunicação entre dois computadores
utilizando duas placas de comunicação conectadas no barramento ISA, com controle de fluxo
por interrupções e banda de transmissão de dados em 16 bits. Para elaboração deste trabalho
foram utilizados dois computadores um Pentium 233MMX e outro Pentium 166MMX que
dispunham de slots disponíveis no padrão ISA.
3.2 ESPECIFICAÇÃO
As montagens do primeiro protótipo foram utilizadas duas placas de prototipação tipo
“Protoboards” para testes com os componentes.
44
O multímetro que é um dispositivo capaz de medir intensidade da corrente, foi um
instrumento muito utilizado para realizar os testes das conexões, correntes e tensões no
circuito; ele é um item muito importante no manuseio de equipamentos de eletrônica e
informática, pois sua praticidade e capacidade múltipla de medição fez com que eliminamos
vários outros instrumentos, como o amperímetro e o voltímetro (Ribeiro, 2002).
Para a confecção dos esquemas das placas foi utilizado o editor de esquemas Liatro
que é um pacote de software utilizado para montagens de esquemas e projetos de
desenvolvimento de circuitos eletrônicos.
Para criar dois protótipos de placa de interface de comunicação primeiramente foi
definido utilizar o barramento ISA, devido às complexidades técnicas em elaborar uma placa
de circuito impresso para o barramento PCI ou firewire no espaço de tempo disponível para
elaborar este trabalho, e também por se tratar de um barramento mais simples e com vasta
bibliografia. O barramento ISA é um conector que pode ser encontrado em quase todos os
microcomputadores mais antigos desde o PC-XT até ao Pentium III.
Foi estudado o barramento ISA, seus sinais bem como o funcionamento de suas
funções de escrita e leitura nas portas de entrada e saída que foram detalhadas no tópico
2.3.2.6 Ciclos de Barramento do capítulo anterior. Também foi definida uma faixa de
endereço de entrada e saída para as placas que vai do 200H até ao 2E0H, para definir os
componentes que podem ser usados para a decodificação dos endereços, pois como já foi
visto o processador consegue acessar os adaptadores através de suas portas ou endereços. O
endereço 2C0H foi definido como o padrão para enviar e receber os pacotes de dados, o 2C2H
foi utilizado para status da placa, ou seja, se ela está ou não disponível para escrita. O 2C3H
foi utilizado para escrever a palavra de controle do circuito integrado 82C55A.
Os sinais utilizados para confecção do protótipo foram:
•
A0, A1, A5, A6, A7, A8 a A9: sinais do barramento de endereço utilizados para
endereçar a porta do protótipo;
•
D0 a D7: sinais do barramento de dados da parte baixa (padrão ISA 8 bits)
utilizados para tratar o dado lido ou escrito no dispositivo;
•
D8 a D15: sinais do barramento de dados da parte alta (padrão ISA 16 bits)
utilizados para tratar o dado lido ou escrito no dispositivo;
45
•
AEN: sinal do controlador de DMA que quando vai a HIGH “Alta”, ou 5 volts
indica que o barramento de endereço possui um endereço válido para um ciclo de
leitura ou escrita;
•
IOR: sinal utilizado para indicar um ciclo ou operação de leitura na porta
endereçada pelo barramento de endereço;
•
IOW: sinal utilizado para indicar um ciclo ou operação de escrita na porta
endereçada pelo barramento de endereço;
•
IRQ 5, IRQ 7, IRQ 9 e IRQ 10: são os sinais correspondentes ao controle de
interrupções;
•
Vcc: Sinal do barramento ISA que representa a corrente elétrica de 5 volts no
circuito;
•
GND: Sinal do barramento ISA para apresentar o neutro ou terra do dispositivo.
Com estes sinais, foi desenvolvido um diagrama esquemático do circuito que pode ser
visto no diagrama da Figura 10.
46
Figura 10: Diagrama esquemático do protótipo.
47
Para criação deste circuito foram utilizados os circuitos integrados 82C55A,
SN74LS138 e o SN74LS32.
3.2.1 O SN74LS138
O circuito integrado SN74LS138 é um decodificador do tipo multiplexador de 3
entradas e 8 saídas utilizadas para habilitar o endereço da placa para leitura e escrita. Nele são
conectados os sinais A5 no pino 1, A6 no pino 2, A7 no pino 3, AEN no pino 4, o A8 no pino
5 e o A9 no pino 6. No pino 8 é conectado o sinal GND (terra) e no pino 16 é conectado o
sinal Vcc (5 volts). Para estabilização, foi feita uma “ponte” do Vcc (no pino 16) ao sinal
GND (terra) com um capacitor cerâmico nº 104. O pino 7 é um sinal de saída que vai definir o
endereço base como sendo o 2E0H, o pino 9 vai definir o endereço base 2C0H, o pino 10
define o endereço base como sendo o 2A0H, o pino 11 define o endereço base como sendo o
280H, o pino 12 define o endereço base como sendo 240H, o pino 13 define o endereço base
como o 220H e o pino 14 define como o endereço base o 200H. A Tabela 9 mostra os
endereços decodificados por este circuito integrado e qual pino de saída representa tal
endereço.
Tabela 9: Valores de endereçamento possível com o SN74LS138.
Endereço Hexadecimal
Endereço Binário
Pino Afetado
200H
1000000000
15
220H
1000100000
14
240H
1001000000
13
260H
1001100000
12
280H
1010000000
11
2A0H
1010100000
10
2C0H
1011000000
9
2E0H
1011100000
7
3.2.2 O 82C55A
O circuito integrado 82C55A é um dispositivo de entrada e saída, programável, de uso
geral para uso em periféricos com até 8Mhz de velocidade. Este circuito possui três portas de
8 bits para escrita e leitura, funcionando nos modos 0, 1 e 2 de operação. No modo 0, todas as
portas funcionam basicamente com leitura e escrita. Já no modo 1 e 2, as três portas se
transformam em grupo A e grupo B. O grupo A é formado pela porta A e pelos bits altos da
porta C. O grupo B é formado pela porta B e pelos 3 primeiros bits da porta C. Estes bits da
porta C, que cada grupo utiliza, faz o “handshake”, ou seja, faz o controle do sinal de escrita e
48
leitura e interrupções. Podemos observar o lay-out da pinagem deste componente na Figura
11.
Fonte: Oki (1998).
Figura 11: Pinagem do 82C55A.
Pode-se utilizar, por exemplo, a porta B para o protótipo. Logo, teremos que utilizar os
sinais 0, 1 e 2 da porta C para controle da porta B. Usaremos, então, no modo de leitura o
sinal 2 da porta C para o STB (strobe input), em baixa este sinal de entrada faz com que o
82C55A carregue o conteúdo da porta B para o latch de entrada e após concluído manda um
Vcc para o sinal 1 da porta C que chamamos de IBF (buffer de entrada foi carregado) e em
seguida o sinal 0 da porta C interrompe a CPU para executar uma rotina de tratamento de
interrupção. Será utilizado dois 82C55A para elaborar nosso protótipo. Um para a parte baixa
dos dados e outro para a parte alta. Para estabilização, foi feita uma “ponte” do Vcc (no pino
26) ao sinal GND com um capacitor cerâmico nº 104. Na Tabela 10 pode ser visto a
associação da pinagem do 82C55A com a pinagem do barramento ISA na parte baixa dos
dados.
49
Tabela 10: Conexão do 82C55A com a parte baixa dos dados do barramento ISA.
Pino do
Pino do barramento ISA Função
82C55A
01
não utilizado
bit 3 de transmissão de dados para a outra placa.
02
não utilizado
bit 2 de transmissão de dados para a outra placa.
03
não utilizado
bit 1 de transmissão de dados para a outra placa.
04
não utilizado
bit 0 de transmissão de dados para a outra placa.
05
B14
RD (Sinal de leitura no barramento).
06
não utilizado
sinal CS vindo do switch após o SN74LS138.
07
B1
sinal terra.
08
A1
sinal de endereço do barramento ISA.
09
A0
sinal de endereço do barramento ISA.
10
não utilizado
11
não utilizado
12
não utilizado
13
não utilizado
14
não utilizado
saída do sinal que ativará a interrupção na outra
placa.
15
não utilizado
16
não utilizado
17
não utilizado
18
não utilizado
bit 0 de transmissão de status para a outra placa.
19
não utilizado
bit 1 de transmissão de status para a outra placa.
20
não utilizado
bit 2 de transmissão de status para a outra placa.
21
não utilizado
bit 3 de transmissão de status para a outra placa.
22
não utilizado
bit 4 de transmissão de status para a outra placa.
23
não utilizado
bit 5 de transmissão de status para a outra placa.
24
não utilizado
bit 6 de transmissão de status para a outra placa.
25
não utilizado
bit 7 de transmissão de status para a outra placa.
26
B3
sinal de 5 volts do barramento.
27
A2
bit 7 da parte baixa do barramento de dados.
28
A3
bit 6 da parte baixa do barramento de dados.
29
A4
bit 5 da parte baixa do barramento de dados.
30
A5
bit 4 da parte baixa do barramento de dados.
31
A6
bit 3 da parte baixa do barramento de dados.
32
A7
bit 2 da parte baixa do barramento de dados.
33
A8
bit 1 da parte baixa do barramento de dados.
34
A9
bit 0 da parte baixa do barramento de dados.
35
B2
Reset
36
B13
WR (sinal de escrita no barramento)
37
não utilizado
bit 7 de transmissão de dados para a outra placa.
38
não utilizado
bit 6 de transmissão de dados para a outra placa.
39
não utilizado
bit 5 de transmissão de dados para a outra placa.
40
não utilizado
bit 4 de transmissão de dados para a outra placa.
Na Tabela 11 demonstra a associação da pinagem do 82C55A com a pinagem do
barramento ISA na parte alta dos dados.
50
Tabela 11: Conexão do 82C55A com a parte alta dos dados do barramento ISA.
Pino do
Pino do barramento ISA Função
82C55A
01
não utilizado
bit 11 de transmissão de dados para a outra placa.
02
não utilizado
bit 10 de transmissão de dados para a outra placa.
03
não utilizado
bit 9 de transmissão de dados para a outra placa.
04
não utilizado
bit 8 de transmissão de dados para a outra placa.
05
B14
RD (Sinal de leitura no barramento).
06
não utilizado
sinal CS vindo do switch após o SN74LS138.
07
D18
sinal terra.
08
A1
sinal de endereço do barramento ISA.
09
A0
sinal de endereço do barramento ISA.
10
não utilizado
11
não utilizado
12
não utilizado
13
não utilizado
14
não utilizado
Saída do sinal que ativará a interrupção na outra
placa.
15
não utilizado
16
não utilizado
17
não utilizado
18
não utilizado
bit 8 de transmissão de status para a outra placa.
19
não utilizado
bit 9 de transmissão de status para a outra placa.
20
não utilizado
bit 10 de transmissão de status para a outra placa.
21
não utilizado
bit 11 de transmissão de status para a outra placa.
22
não utilizado
bit 12 de transmissão de status para a outra placa.
23
não utilizado
bit 13 de transmissão de status para a outra placa.
24
não utilizado
bit 14 de transmissão de status para a outra placa.
25
não utilizado
bit 15 de transmissão de status para a outra placa.
26
D16
sinal de 5 volts do barramento.
27
C18
bit 15 da parte baixa do barramento de dados.
28
C17
bit 14 da parte baixa do barramento de dados.
29
C16
bit 13 da parte baixa do barramento de dados.
30
C15
bit 12 da parte baixa do barramento de dados.
31
C14
bit 11 da parte baixa do barramento de dados.
32
C13
bit 10 da parte baixa do barramento de dados.
33
C12
bit 9 da parte baixa do barramento de dados.
34
C11
bit 8 da parte baixa do barramento de dados.
35
B2
Reset
36
B13
WR (sinal de escrita no barramento)
37
não utilizado
bit 15 de transmissão de dados para a outra placa.
38
não utilizado
bit 14 de transmissão de dados para a outra placa.
39
não utilizado
bit 13 de transmissão de dados para a outra placa.
40
não utilizado
bit 12 de transmissão de dados para a outra placa.
51
Os modos de operação do 82C55A resumem-se em 3 modos distintos:
•
Modo 0 = Operações básicas de entrada e saída utilizando as três portas (A, B e C)
do circuito integrado, sem sinais de controle.
•
Modo 1 = A porta A e a porta B com sinal de controle (strobe) para entrada e saída
(porém não bidirecional). A porta C fica dividida em duas; sendo a metade para
controle da porta A e a outra metade para controle da porta B.
•
Modo 2 = A porta A fica bidirecional e parte da porta C fica como controle da A.
Para elaboração deste trabalho, foi escolhido o modo 1 de operação do circuito
integrado 82C55A. As Figuras 12 e 13 mostram o fluxo elétrico de entrada e saída. Foi
utilizado o pino 10 para indicar ao receptor que já contém informação carregada na porta de
saída do transmissor. Este sinal alimenta o pino 13 do receptor, ordenando o 82C55A a
colocar no buffer o conteúdo da porta de entrada.
Fonte: Oki (1998).
Figura 12: Modo 1 – operação de entrada
Fonte: Oki (1998).
Figura 13: Modo 1 – operação de saída
52
3.2.3 O SN74LS32
Esse circuito integrado é do tipo OR. Este integrado será utilizado para unificar os
sinais de interrupção dos dois 82C55A provenientes da outra placa. Ele garantirá que ocorrerá
interrupção com valores escritos no 82C55A da parte alta ou no 82C55A da parte baixa.
Utilizaremos o pino 1 alimentado pelo pino 14 do 82C55A da parte alta e o pino 2 com o pino
14 do 82C55A da parte baixa. O sinal de saída no pino 3 irá provocar a interrupção no outra
placa.
3.3 IMPLEMENTAÇÃO
3.3.1
Projeto de Hardware
Com base no desenho esquemático da Figura 10, foi desenvolvido o lay-out dos
componentes da placa. Podemos observar detalhes na Figura 14.
Figura 14: Desenho do Lay-out da placa de circuito impresso.
53
O passo seguinte foi estampar numa placa de circuito impresso o conteúdo do desenho,
corroer e efetuar as perfurações. E, para em seguida, e solda dos componentes. O resultado
pode ser visto na Figura 15.
Figura 15: Fotografia da placa pronta.
3.3.2
Projeto de Software
Para demonstrar aplicabilidade deste projeto de hardware foi criado um programa de
computador que fará a troca de informações entre as duas placas controladoras. Este programa
varre o diretório atual e permite que o usuário escolha um arquivo entre outros para ser
transferido. O programa lê o arquivo em blocos e coloca-o num buffer (fila) de pacotes no
receptor. Estando no buffer, o usuário poderá optar por gravar ou não o arquivo em sua
unidade de armazenamento.
No software, necessitamos configurar o 82C55A, utilizando uma palavra de controle,
para que o mesmo trabalhe da forma mais adequada às necessidades de seu emprego.
54
Podemos observar na Figura 16, a forma de definição da palavra de controle. Neste
caso, foi adotado como modo de saída o modo 1. Logo, a palavra de controle foi definida
desta forma: D7=1, para entrar no modo de configuração do 82C55A. D6=0 e D5=1 para
definir o modo 1 de operação do grupo A. D4=0 para definir a porta A como sendo de saída e
o D3=0 para definição dos bits de alta ordem da porta C como sendo de saída também. O
D2=1, D1=0 e D0=0, apenas para configurar, pois a porta B não terá utilidade no nosso
projeto. Desta forma a palavra de controle ficou: 10100100. Adotaremos então, o A4 que é a
palavra de controle convertida para o hexadecimal.
Fonte: Oki (1998).
Figura 16: Configuração do 82C55A.
Para o modo de recepção, ou entrada, foi adotado o modo 1. Logo, a palavra de
controle foi definida desta forma: D7=1, para entrar no modo de configuração do 82C55A.
D6=0 e D5=1 para definir o modo 1 de operação do grupo A. D4=1 para definir a porta A
como sendo de entrada e o D3=0 para definição dos bits de alta ordem da porta C como sendo
de saída também. O D2=1, D1=1 e D0=0, apenas para configurar e poderão receber qualquer
valor binário, pois a porta B não terá utilidade no nosso projeto. Desta forma a palavra de
controle ficou: 10110110, ou seja, B6 em hexadecimal.
55
Estando o 82C55A configurado, teremos que setar o sinal INT A, que é um registrador
interno do 88C55A, representado pelo bit 6 (PC6) da porta C. A Figura 17 demonstra como
pode ser setado este bit.
Fonte: Oki (1998).
Figura 17: Configuração do Bit set/reset da porta C.
Para ativarmos a interrupção quando chega alguma informação na porta A teremos que
setar o bit 4 da porta C. Para isto utilizaremos o seguinte byte em binário: 1001, sendo que o
“100” refere-se ao PC4 (bit 4) da porta C que iremos setar, conforme pode ser visto na Figura
17 e o outro bit é o comando set da porta PC4.
Agora, tendo definida a configuração do 82C55A, estas palavras de controle serão
utilizadas no programa para fazer a comunicação entre os dois microcomputadores.
O fluxo das informações de um microcomputador para outro bem como os sinais de
controle envolvidos podem ser visto na Figura 18.
56
8 Bits (parte alta)
82C55A
STB (Strobe Input)
OBF (Output Buffer Full)
STB (Strobe Input)
OBF (Output Buffer Full)
CPU
82C55A
CPU
8 Bits (parte alta)
82C55A
STB (Strobe Input)
OBF (Output Buffer Full)
OBF (Output Buffer Full)
82C55A
STB (Strobe Input)
Figura 18: Forma de comunicação entre as controladoras
A Figuras 19 mostra o fluxograma das rotinas de transmissão do buffer de saída dos
dados para o receptor. A Figura 20 mostra o fluxograma das rotinas de recepção dos dados no
buffer pelo computador receptor.
Início
Transmite
conteúdo do
buffer
Envia pedido
para transmitir
Se resposta
OK
N
Envia sinal de
finalização
S
Fim
Figura 19: Fluxograma de transmissão do buffer de saída
57
Início
Aguarda
Interrupção
S
Manda sinal
de aceite
N
Aguarda
Interrupção
N
S
Deposita no
buffer de
entrada
Figura 20: Fluxograma de recepção no buffer de entrada
Para os testes iniciais, foi criada uma rotina que lê e mostra o valor da porta 2C0H
quando ocorre uma interrupção. Neste programa, os computadores foram configurados para o
modo de leitura da porta A através do comando port[$2C3]=$B6. Caso o usuário desejasse
transmitir alguma informação (no caso o valor de um contador), teria que pressionar o 1 do
menu. Neste caso, a configuração do 82C55A mudaria para o modo de saída com o comando
port[$2C3]=$A4, seguido pela gravação na porta de saída do valor de um contador. Em
seguida, retorna a configuração para o modo de leitura a porta A. No Quadro 1, encontra-se o
programa elaborado para efetuar os teste iniciais com as portas e com as interrupções.
{$M 2048, 0, 8000}
program interrupcao;
uses
crt, dos;
const EIO : byte=$20;
var
antiga
a
t
: procedure; {rotina de tratamento da interrupção antiga}
: char;
: byte;
{$F+}
procedure comunicacao; interrupt; {rotina para tratamento da interrupção}
begin
writeln('2c0: ',port[$2c0]); {lê e mostra o conteúdo da porta A}
port[$20]:=$20;
{finaliza a interrupção}
end;
{$F-}
begin
clrscr;
t:=0;
PORT[$21]:=port[$21] and $DF; {ativa a int 5 do controlador de interrup}
getintvec(13, addr(antiga)); {salva o endereço da rotina antiga}
58
setintvec(13, addr(comunicacao)); {atribui o endereco da rotina nova}
port[$2c3]:=$b6; port[$2c3]:=$9; {configura o 82C55A como leitura}
while not keypressed do
begin
writeln('1 – Transmitir / 2 – Sair: ');
readln(a);
if a='1' then
begin
port[$2c3]:=$a4; {configura o 82C55A como escrita}
inc(t);
port[$2c0]:=t; {escreve o valor na porta A de saída}
writeln(t,' - ',port[$2c0]); {mostra o conteúdo gravado na porta}
port[$2c3]:=$b6; port[$2c3]:=$9; {configura o 82C55A como leitura}
end;
if a='2' then exit; {finaliza o programa}
end;
end.
QUADRO 1 – Programa para teste das portas.
No Quadro 2, consta a listagem do programa principal cujo objetivo é transferir
arquivos para o microcomputador receptor e vice-versa. Para que essa transferência ocorra,
será necessário utilizar caracteres de controle para que a comunicação seja compreendida por
transmissor e receptor. A Tabela 12 montra os caracteres de controle utilizados.
Tabela 12: Caracteres de controle utilizados para a comunicação dos programas
Caracter (código ASCII) Funcionalidade
*
Pedido para início da transmissão de um arquivo
&
Início da transmissão de um arquivo aceito
%
Tamanho do arquivo a ser transferido
!
Caracter que indica o final da transmissão do arquivo
?
Caracter que indica erro e pede para retransmitir
{$M 2048, 0, 8000}
{$G+}
program TCC;
uses
crt, dos, auxilio;
const EIO : byte=$20;
var
antiga
c,t
a
fila
i
s
:
:
:
:
:
:
procedure;
byte;
char;
text;
integer;
string;
procedure comunicacao; interrupt;
begin
c:=port[$2c0];
if (grava) then writeln(fila,port[$2c0]);
59
if (c=ord('*')) and (inicio=false) then
begin
assign(fila,'valter.tmp');
grava:=true;
rewrite(fila);
port[$2c0]:=$A4;
port[$2c0]:=ord('&');
port[$2c0]:=$b6; port[$2c0]:=$9;
end;
if (c=ord('&')) and (inicio=false) then
begin
inicio:=true;
end;
port[$20]:=EIO;
end;
begin
clrscr;
i:=0; s:='';
port[$21]:=port[$21] and $DF;
getintvec(13, addr(antiga));
setintvec(13, addr(comunicacao));
port[$2c3]:=$b6; port[$2c3]:=$9;
buffer:=false;
grava:=false;
inicio:=false;
t:=0;l:=5;max:=0;
le_arvore;
tela;
pos:=5;iarv:=1;
t:=1;
while true do
begin
a:=readkey;
if ord(a)=72 then {para cima}
begin
if (pos=5) and (iarv>1) then dec(iarv)
else
if pos>5 then dec(pos);
atualiza(pos,iarv);
end;
if ord(a)=80 then {para baixo}
begin
if (pos=22) and (iarv<22) then inc(iarv)
else
if pos<22 then inc(pos);
atualiza(pos,iarv);
end;
if a='1' then grava_buffer(nome);
if a='2' then
begin
Textcolor(white); TextBackGround(black);
clrscr;
close(fila);
le_buffer;
tela;
le_arvore;
atualiza(pos,iarv);
end;
if a='3' then
60
halt;
if a='5' then {Sair}
begin
halt;
end;
if buffer then
begin
manda_buffer;
end;
end;
end.
QUADRO 2 – Programa Principal
unit auxilio;
interface
uses
crt, dos;
var
nomearq
: array [1..2000] of string[12];
tamarq
: array [1..2000] of longint;
c,t
: byte;
l,max,z,k : integer;
nome,
caminho
: string;
pos,iarv,i : integer;
r
: string;
buffer,
inicio,
grava
: boolean;
arq
: file;
fila1
: text;
procedure atualiza(pos1,iarv1:integer);
procedure tela;
procedure le_arvore;
procedure le_arquivo(nomearq: string);
procedure le_buffer;
procedure grava_buffer(nomearq: string);
procedure manda_buffer;
Implementation
procedure atualiza(pos1,iarv1:integer);
var
l,m
: integer;
linha : string;
begin
l:=5;
for t:=iarv1 to iarv1+17 do
begin
Textcolor(white); TextBackGround(black);
GotoXY(10,l);write('
if l=pos1 then
begin
Textcolor(red); TextBackGround(yellow);
');
61
nome:=nomearq[t];
end;
linha:=nomearq[t];
if length(linha)<20 then
for m:=length(linha) to 20 do linha:=linha+' ';
linha:=linha+'-';
GotoXY(10,l);write(linha);
GotoXY(30,l);write('bytes');
Str(tamarq[t],r);
z:=length(r);
GotoXY(39-z,l);write(r);
inc(l);
Textcolor(blue); TextBackGround(blue);
end;
end;
procedure tela;
var
x,y: integer;
begin
for y:=0 to 27 do
begin
Textcolor(blue); TextBackGround(blue);
gotoxy(0,y);writeln('
');
end;
Textcolor(white); TextBackGround(black);
gotoxy(8,4);write('ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');
gotoxy(8,5);write('º
º');
gotoxy(8,6);write('º
º');
gotoxy(8,7);write('º
º');
gotoxy(8,8);write('º
º');
gotoxy(8,9);write('º
º');
gotoxy(8,10);write('º
º');
gotoxy(8,11);write('º
º');
gotoxy(8,12);write('º
º');
gotoxy(8,13);write('º
º');
gotoxy(8,14);write('º
º');
gotoxy(8,15);write('º
º');
gotoxy(8,16);write('º
º');
gotoxy(8,17);write('º
º');
gotoxy(8,18);write('º
º');
gotoxy(8,19);write('º
º');
gotoxy(8,20);write('º
º');
gotoxy(8,21);write('º
º');
gotoxy(8,22);write('º
º');
gotoxy(8,23);write('ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ');
Textcolor(lightred); TextBackGround(red);
gotoxy(1,1);write('-=-=-=-=-=-=-=-=-=-=-=-==- TRANSFERENCIA DE ARQUIVOS
-=-=-=-=-=-=-=-=-=-=-=-==-=');
r:=caminho;
z:=length(r);
if z<26 then z:=26-z;
for y:=1 to z do r:=r+' ';
gotoxy(8,3);write(' Local ----> '+r);
TextColor(black); TextBackGround(cyan);
gotoxy(50,8);write('
');
gotoxy(50,9);write(' 1 - Enviar Arquivo ');
62
gotoxy(50,10);write('
');
gotoxy(50,11);write(' 2 - Gravar Buffer
');
gotoxy(50,12);write('
');
gotoxy(50,13);write(' 3 - Apagar Arquivo ');
gotoxy(50,14);write('
');
gotoxy(50,15);write(' 4 - copiar Arquivo ');
gotoxy(50,16);write('
');
gotoxy(50,17);write(' 5 - Sair
');
gotoxy(50,18);write('
');
atualiza(pos,iarv);
TextColor(red); TextBackGround(white);
gotoxy(1,25);write(' Academico: Valter Paraski
Prof§ Antonio Carlos Tavares');
end;
-
Orientador:
procedure le_arvore;
var
DirInfo: SearchRec;
begin
GetDir(0,caminho); { 0 = Current drive }
caminho:=caminho+'\*.*';
FindFirst(caminho, Archive, DirInfo); { mesmo que DIR *.PAS }
Textcolor(white); TextBackGround(black);
max:=1;
while DosError = 0 do
begin
nomearq[max]:=DirInfo.Name;
tamarq[max]:=(DirInfo.Size);
FindNext(DirInfo);
inc(max);
end;
end;
procedure le_arquivo(nomearq: string);
var
buf : byte;
lidos: word;
begin
assign(fila1,'temp.dat');
rewrite(fila1);
assign(arq,nome);
reset(arq,1);
port[$2c3]:=$a4;
for i:=1 to 3 do
begin
port[$2c0]:=ord('~');
delay(5);
writeln(fila1,ord('~'));
end;
for i:=1 to length(nome) do
begin
port[$2c0]:=ord(nome[i]);
delay(5);
writeln(fila1,ord(nome[i]));
end;
for i:=1 to 3 do
begin
port[$2c0]:=ord('^');
delay(5);
63
writeln(fila1,ord('^'));
end;
REPEAT
blockread(arq,buf,2,lidos);
writeln(fila1,buf);
port[$2c0]:=buf;
delay(5);
until (lidos=0) {or (gravados<>lidos)};
for i:=1 to 3 do
begin
port[$2c0]:=ord('+');
delay(5);
writeln(fila1,ord('+'));
end;
port[$2c3]:=$b6; port[$2c3]:=$9;
close(arq);
close(fila1);
end;
procedure grava_buffer(nomearq: string);
var
buf : byte;
lidos: word;
gravados: word;
begin
assign(fila1,'temp.dat');
rewrite(fila1);
assign(arq,nome);
reset(arq,1);
writeln(fila1,ord('~'));
for i:=1 to length(nome) do writeln(fila1,ord(nome[i]));
writeln(fila1,ord('^'));
lidos:=0;
gravados:=sizeof(arq);
REPEAT
blockread(arq,buf,1,lidos);
writeln(fila1,buf);
until (lidos=0) {or (gravados<>lidos)};
writeln(fila1,ord('$'));
buffer:=true;
close(arq);
close(fila1);
end;
procedure manda_buffer;
var
buf : byte;
lidos: word;
begin
assign(fila1,'temp.dat');
reset(fila1);
i:=0;
port[$2c3]:=$a4;
port[$2c0]:=ord('*');
port[$2c3]:=$b6; port[$2c3]:=$9;
repeat
inc(i);
until (inicio) or (i>1000);
if (i<1000) and (inicio) then
64
begin
port[$2c3]:=$a4;
while not eof(fila1) do
begin
readln(fila1,buf);
port[$2c0]:=buf;
delay(5);
end;
port[$2c3]:=$b6; port[$2c3]:=$9;
end;
close(fila1);
end;
procedure le_buffer;
var
palavra: byte;
ff: char;
nomea: string;
cabeca, corpo: integer;
vnome, varq: boolean;
lidos, gravados : word;
begin
assign(fila1,'valter.tmp');
reset(fila1);
cabeca:=0;corpo:=0;
vnome:=false;varq:=false;
readln(fila1,palavra);
if (palavra=126) then
begin
readln(fila1,palavra);
if (palavra=126) then
begin
readln(fila1,palavra);
if (palavra=126) then vnome:=true
else
begin
gotoxy(22,50); write('buffer invalido!!!!');
end;
end;
end;
if vnome then
while not eof(fila1) do
begin
readln(fila1,palavra);
if (varq=false) and (palavra=94) then
begin
readln(fila1,palavra);
if palavra=94 then
begin
readln(fila1,palavra);
if palavra=94 then
begin
varq:=true;
assign(arq,nomea);
rewrite(arq);
end;
end;
end else
begin
65
nomea:=nomea+chr(palavra);
writeln(nomea);
end;
if varq then
begin
readln(fila1,palavra);
if palavra=43 then
begin
readln(fila1,palavra);
if palavra<>43 then
blockwrite(arq,palavra,lidos,gravados);
end;
end;
end;
end;
end.
QUADRO 3 – Unidade do programa principal.
A Figura 19 apresenta a tela principal da aplicação desenvolvida.
Figura 19: Tela principal do programa.
66
3.4 RESULTADOS E DISCUSSÃO
Para verificar os resultados, foi feita a transmissão de um valor inteiro, incrementado
até 10.000. Este valor do buffer de entrada no micro receptor foi salvo num arquivo tipo texto
e conferido com uma variável que foi incrementada até 10.000 e conferido com cada valor
lido na porta. O resultado foi que não houve ocorrência de valores alterados.
67
4 CONCLUSÕES
Este trabalho alcançou seu objetivo principal de estudar o barramento ISA, as
interrupções por hardware, e a criação de duas placas controladoras para efetuar a troca de
informações entre dois microcomputadores.
Através dos resultados obtidos ficou demonstrado que ainda é possível desenvolver
soluções de hardware para barramento ISA, pelo seu baixo custo. Uma indicação para seu uso
é na automação de processos na indústria.
4.1 DIFICULDADES ENCONTRADAS
As dificuldades encontradas foram no sentido de confeccionar as placas controladoras.
O protótipo foi confeccionado artesanalmente, devido à ausência de equipamentos adequados
para esse fim no laboratório da Furb. Isto trouxe grandes atrasos no desenvolvimento do
software, por estar trabalhando na solução dos problemas de mau-contato e mau
funcionamento do protótipo. Por esse motivo, o protótipo teve de ser simplificado o máximo
possível para reduzir as trilhas e ilhas traçadas em sua superfície.
4.2 EXTENSÕES
Os trabalhos futuros seguindo como base este, poderão ser feitos utilizando as técnicas
de DMA, e também criar em hardware um latch para representar um sinal enviado do receptor
para o transmissor informando que o dado já foi lido na porta de entrada. Isto aumentaria
significativamente a velocidade de transmissão no protótipo.
Um outro caminho a ser seguido é a adaptação deste trabalho para o barramento PCI
ou firewire, por serem um tipo de barramento presente na maioria dos microcomputadores
novos, e que possuem uma taxa de transferência significativamente maior que a do
barramento ISA.
68
REFERÊNCIAS BIBLIOGRÁFICAS
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6023: informação e
documentação: referências - elaboração. Rio de Janeiro, 2002a.
BAKKER, Jacobus Willem. Languages for parallel architectures: design, semantics,
implementation models. Chichester: John Wiley, 1989. xv, 273 p.
CANTU, Marco. Dominando o Delphi 6: a bíblia. São Paulo: Makron Books, 2002. 934 p.
CIPELLI, Antonio Marco Vicari et al. Teoria e desenvolvimento de projetos de circuitos
eletrônicos. 18. ed. Sao Paulo: Érica, 2001. 445 p.
DASGUPTA, Subrata. Computer architecture: a modern synthesis. New York: J. Wiley,
1989. 2 v.
DEMARCO, Tom. Análise estruturada e especificação de sistema. Rio de Janeiro:
Campus, 1989. 333 p.
KARBO, Michael B. A complete illustrated guide to the pc hardware. Denmark: Mkdata,
1998.
OGREN, Joakim. The hardware book v1.3. The hardware book team, [S.L.], 2001.
Disponível em: <http://www.hwb.acc.umu.se/>. Acesso em: 07 ago. 2003.
PELISSON, Luiz Augusto. Fundamentos da informática, São Paulo, maio 2001. Disponível
em: <http://www.dainf.cefetpr.br/~pelisson>. Acesso em: 07 ago. 2003.
SANTOS,
Cleverson
dos.
Construção
de
um
protótipo
de
interface
para
microcomputador tipo PC para interligar duas placas mãe. 2002. 97 f. Trabalho de
Conclusão de Curso (Bacharelado em Ciências da Computação) - Centro de Ciências Exatas e
Naturais, Universidade Regional de Blumenau, Blumenau.
SCHULER, João Paulo S. Tutorial de Delphi, Porto Alegre, dez. 1999. Disponível em:
<http://www.schulers.com/jpss/pascal/dtut/>. Acesso em: 07 ago. 2003.
TORRES, Gabriel. Hardware curso completo. 4. ed. Rio de Janeiro: Axcel Books do Brasil,
1998. 893 p.
WEBER, Raul Fernando. Arquitetura de computadores pessoais. 2. ed. Porto Alegre:
Instituto de Informática da UFRGS, Sagra Luzzatto, 2000. 267 p.
69
WIRTH, Niklaus. Digital circuit design for computer science students: an introductory
textbook. Berlin: Springer, 1995. xiii, 204 p.
Download