Hardware

INTRODUÇÃO AOS MICROPROCESSADORES

 

v     Conceitos Básicos

 

Os termos micro-computador e microprocessador são hoje cada vez mais utilizados pelo cidadão comum. A informática deixou de ser as­sunto exclusivo de profissionais para poder estar ao alcance de todos.

O interesse pelo cálculo automático esta intimamente ligado ao desenvolvimento da matemática, não sendo de admirar que desde há lon­gos anos o Homem tenha tentado construir máquinas capazes de exe­cutar operações aritméticas. As mais antigas, de que há conhecimento, são os ábacos chineses.

No século XVII o cientista francês Blaise Pascal construiu um meca­nismo, à base de rodas dentadas semelhantes ás de um relógio, com o qual se podiam executar adições e subtracções.

Com o evoluir da técnica foi possível a construção de maquinas de calcular mecânicas que têm as suas raízes na maquina de Pascal e que foram largamente utilizadas até finais dos anos 60.

Estas máquinas, se bem que dessem um contributo importante para o cálculo numérico, não respondiam de forma alguma à crescente ne­cessidade de se efectuar um maior numero de operações num espaço de tempo cada vez mais curto. Para além do factor tempo-velocidade, estas maquinas realizavam apenas operações aritméticas, isto é, manipulavam apenas dados numéricos e, além disso, não tinham capaci­dade de armazenamento.

Com o desenvolvimento da electrónica foi possível as construção de maquinas ditas “inteligentes”: os computadores.

No principio dos anos 50 assistiu-se a comercialização dos primeiros computadores cujos circuitos eram implementados com válvulas elec­trónicas. Devido a enorme quantidade de válvulas utilizadas, na ordem da dezena de milhar, a probabilidade de uma válvula se fundir em inter­valos de tempo bastante curtos (2 a 5 minutos) era grande, pelo que o seu funcionamento não se apresentava seguro.

Com a utilização dos dispositivos electrónicos no estado sólido, díodos e transístores, a fiabilidade dos computadores aumentou extraordi­nariamente, ao mesmo tempo que as enormes instalações até então necessárias para a sua acomodação deixaram de ser um óbice.

A par destes avanços tecnológicos, o factor económico tem vindo também a evoluir rapidamente. Os computadores tomam-se mais potentes e mais baratos. São estes dois vectores que projectam o compu­tador para um número crescente de aplicações fazendo com que seja possível assistir-se a uma verdadeira revolução tecnológica no domínio do processamento da informação.

Convém desde já esclarecer que, de facto, Os computadores actuais nada têm de inteligente. Limitam-se a executar as instruções com que foram programados pelo Homem e nada mais. Donde provém então todo o seu “poder”? Essencialmente de dois factores:

grande velocidade de execução de operações: milhares num se­gundo ;

facilidade de armazenamento e tratamento de grande quantidade de informação (dados) .

 

A evolução da electrónica do estado sólido conduziu a que numa pequena pastilha de semicondutor (alguns milímetros quadrados) fosse possível a integração de uma serie de componentes electrónicos (transístores, díodos, resistências, condensadores) nascendo, assim, o cir­cuito integrado.

Consoante o grau de integração, temos circuitos SSI (small scale in­tegration: integração em pequena escala), MSI (medium scale integra­tion: integração em media escala) e LSI (large scale integration: integração em grande escala) e VLSI (very large scale integration: muito grande escala de integração). Considera-se um circuito como sendo de MSI quando tem mais de dois mil transístores, de LSI quando tem mais de cinco mil transístores e de VLSI quanto tem mais de dez mil transístores.

Com a integração em grande escala passou a ser possível a construção de pequenas unidades “inteligentes” alargando-se enormemente o âmbito de utilização dos computadores.

Surgiram as pequenas ma quinas de calcular programáveis, jogos electrónicos de televisão e um sem-número de aparelhos que tem como elemento comum o microprocessador.

 

Fig.1

 

Basicamente, um computador é constituído pelos seguintes blocos (fig. 1):

>Unidade central de processamento.

>Memória de programa.

>Memória de dados.

>Dispositivos de entrada e saída, de informação (dados e resulta­dos).

>Relógio.

Os termos ingleses estão mundialmente consagrados pela pratica, pelo que iremos referi-los sempre que se tomar necessito.

A unidade central de processamento (CPU: Central Processing Unit) é o “cérebro” de todo o sistema. Normalmente encontra-se dividida em dois blocos: a unidade aritmética e lógica (ALU: Arithmetic Logic Unit) e a unidade de controlo (CU: Control Unit).

Quando a unidade central de processamento (CPU) se encontra num único circuito integrado estamos na presença de um Microprocessador, ou MPU (do inglês Microprocessor Unit). Microprocessador é, portanto, um circuito integrado que contém a unidade aritmética e lógica, a unidade de controlo e, como iremos ver nas páginas seguintes, uma pequena porção de memória (registos).

A memória de programa é usualmente uma ROM (Read Only Me­mory, ou memória só de leitura). Como o próprio nome indica, o fluxo de informação dirige-se sempre no sentido da memória para a CPU. O programa tem apenas necessidade de ser lido durante o processa­mento. Se pretendermos fazer a escrita de um programa a memória tem de ser de leitura e escrita.

A memória de dados tem a designação de RAM (Random Access Memory, ou memória de acesso aleatório). Esta memória pode ser al­terada em qualquer momento e, como tal, é uma memória de escrita e de leitura (R/W M: Read-Write Memory).

Os dispositivos de entrada e saída (I/O devices) são normalmente referidos como Input e Output, respectivamente. Como exemplo pode­mos referir os mais comuns e utilizados na maior parte dos computa­dores, o écran, ou VDU (Video Display Unit), e o teclado, ou keyboard.

São estes dispositivos que permitem ao utilizador comunicar com o computador e, ao mesmo tempo, receber resultados e informações do sistema.

Por último, temos o relógio, ou clock, que é como que o maestro de todo o sistema. e ele que impõe o ritmo de execução das instruções e demais operações sendo em sincronismo com ele que actuam os diver­sos sinais de controlo vindos da CPU em direcção aos outros dispositi­vos.

Sempre que a unidade central de processamento (CPU) for um mi­croprocessador (MPU) podemos dizer que estamos em presença de um micro-computador.

A relação entre o microprocessador e o micro-computador é semelhante aquela que existe entre Os centros de decisão do cérebro e o corpo humano. O microprocessador faz parte de uma estrutura a que chamamos micro-computador. E o seu órgão de decisão.

Existem micro-computadores formados por um único cir­cuito integrado (8048, 8748 e 8051 da INTEL, por exemplo).

Um dos campos em que o micro-computador esta a ser bastante utili­zado é o da electrónica de controlo.

Antigamente os circuitos de controlo eram constituídos à base da lógica discreta (hardware), em que o projecto e execução eram normal­mente complexos e demorados. Com o aparecimento dos micro-computadores passou-se a poder utilizar o método da lógica programável (software) em conjunto com um pequeno numero de circuitos que funcionam como interface entre o micro e o sistema a controlar.

Este método tem a vantagem de ser de muito mais fácil execução ao mesmo tempo que quaisquer modificações necessárias podem ser efectuadas com simplicidade.

Estamos já na era do microprocessador.

 

Computadores e micro-computadores funcionam fundamentalmente do mesmo modo. Este facto verifica-se porque todos os sistemas são baseados num idêntico conceito de processamento que, em última análise, nos conduz à noção de “bit”, termo formado pelas palavras inglesas binary digit, digito binário.

Um digito binário é um numero que pode tomar apenas dois valores: 0 ou 1

Qualquer dispositivo que possa estar num estado “ligado” (ON) ou “desligado” (OFF), “alto” (HIGH) ou “baixo” (LOW) pode representar um digito binário nos seus dois valores possíveis, isto é, 0 ou 1.

JÁ referimos que todo o computador necessita de ser programado pelo Homem não podendo por si só resolver qualquer problema. o micro-computador que iremos abordar em pormenor não tem um fim espe­cifico, podendo ser utilizado no cálculo cientifico, no controlo de uma máquina ou dispositivo electrónico ou na Área da gestão. Designam-se abreviadamente estes computadores por GPC, do inglês General Fur-pose Computer.

Suponhamos que queremos somar os números 5 e 10 e multiplicar o resultado por 2.

 

Podemos escrever um pequeno programa que o microprocessador vai lar, interpretar a executar. Os resultados intermédios são guardados na memória RAM. Passemos a exemplificar como actua a estrutura do micro-computador representado na figura 1.

Pequeno programa pode ser esquematizado da seguinte forma:

 

1 -  Ler de um dispositivo de INPUT (teclado) um numero (será o numero 5).

2-   Guardar num registo do microprocessador esse numero.

3-   Ler de um dispositivo de INPUT outro numero (será o numero 10).

4-   Somar Os dois números lidos e guarda-los na memória RAM.

5-   Ler outro numero de um dispositivo de INPUT (será o numero 2).

6-   Multiplicar o numero guardado na RAM pelo número lido em 5.

Enviar o resultado para um dispositivo de OUTPUT (écran).

 

A passagem de cada segundo (a titulo de exemplo) o microprocessa­dor irá executar uma instrução, executando de uma forma sequencial todo o programa.

Temos dito que a memória RAM é uma memória de dados. Na verdade a RAM pode também conter instruções que formam um progra­ma. Sendo uma memória volátil, sempre que se desliga o micro-computador todo o seu conteúdo se perde. Para ultrapassar este problema utilizam-se dispositivos de armazenamento como, por exemplo, as cassetes. As cassetes são largamente utilizadas nos computadores pes­soais porque a partir de um simples gravador de áudio se tem uma memória de armazenamento de programas permanente. Para executar o programa bastará passa-lo para a memória RAM sendo depois processado pelo microprocessador.

Resumindo, um micro-computador é formado, essencialmente, por cinco elementos: um microprocessador (MPU), uma memória de escrita e leitura (RAM), uma memória só de leitura (ROM), um relógio (CLOCK) e dispositivos de entrada a saída de dados (I/O).

 

v     O microprocessador

A integração em larga escala permitiu a implementação da unidade central de processamento (CPU) num único circuito integrado: o microprocessador.

A função do microprocessador é obter instruções da memória e exe­cutar as operações requeridas. Uma vez que o microprocessador tem de comunicar com outros dispositivos terá de existir um processo de ele os seleccionar.

Assim, todos os dispositivos estão ligados ao microprocessador através de fios que permitem o endereçamento das memórias e dos elementos de entrada e saída. Estas linhas, normalmente, são em nú­mero de 16 e formam o barramento de endereços, ou address bus. Colocando estas linhas no estado 0, ligação a 0 V, ou no estado 1, ligação a + 5 V, o microprocessador selecciona um endereço e comu­nica com o dispositivo seleccionado (fig. 2).

 

 

Fig. 2

 

Na (figura 2) exemplifica-se a selecção de 16 memórias com 4 Kbytes cada uma. usamos as quatro linhas de endereço de maior peso para seleccionar cada uma das 16 memórias, para o que usamos o descodificador 1 -de- 16. Repare que apenas uma posição de memória é selec­cionada por cada endereço porque apenas uma das saídas esta activa de cada vez.

O sentido das setas nas linhas do address bus significa que é o MPU que gera o endereço e o comunica ao dispositivo, por exemplo uma memória. Trata-se de um barramento unidireccional em que a informação flui do microprocessador para os outros elementos do sistema. De notar também que as linhas se encontram numeradas de 0 a 15 e, como podem “tomar” apenas os dois valores lógicos, “0” ou “1”, formam um barramento de 16 bits.

Em linguagem de computadores, um conjunto de oito bits forma um byte (ler baite). Assim, Os 16 bits do barramento de endereços dividem­-se em dois bytes:

 

 

O byte menos significativo, bits 0,1, 2, 3, 4, 5, 6 e 7, é chamado low byte, enquanto o byte mais significativo, bits 8, 9, 10, 11, 12,13,14 e 15, é chamado de hight byte Os bytes normalmente também se podem dividir em dois conjuntos de quatro bits referidos como nibbles. Como já foi dito, a passagem de um número binário para hexadecimal é ime­diata através da codificação directa na base 16 de grupos de quatro bits, ou seja, dos nibbles.

 

Depois de seleccionadas as linhas do address bus (barramento de endereços) é necessária a existência de um conjunto de fios que per­mita a comunicação do microprocessador com o dispositivo escolhido. Estas linhas encontram-se representadas na figura 2 e fazem parte do data bus, ou barramento de dados. A informação flui nos dois sentidos, isto é, do microprocessador para o dispositivo ou do dispositivo para o microprocessador. Trata-se de um barramento bidireccional.

 

A unidade básica de informação processada pelo microprocessador designa-se por palavra. Consoante o número de bits que formam a palavra diz-se que estamos em presença de um microprocessador de 4, 8,16 ou 32 bits. Hoje em dia os microprocessadores mais comuns tem um comprimento de palavra de oito bits, caso dos 8080 e 8085 da Intel, do 6800 e 6502 da Motorola e do Z80 da Zilog.

O micro-computador que iremos estudar tem como CPU o micropro­cessador Z80, pelo que iremos considerar oito bits como comprimento da palavra. Sendo a palavra a unidade básica de informação o barra­mento de dados terá oito linhas, realizando-se as comunicações byte a byte:

 

A semelhança do barramento de endereços os bits do barramento de dados encontram-se numerados, de acordo com os seus pesos, de 0 a 7.O bit 0 é o bit menos significativo, LSB (Least Significant Bit), en­quanto o bit 7 é o bit mais significativo, MSB (Most Significant Bit). No­vamente, 5 V numa linha de dados representa o digito “1”, enquanto “0” V representa o digito binário “0”. Existe um terceiro tipo de linhas que ligam o microprocessador aos outros dispositivos que formam o micro-computador. Trata-se do barra­mento de controlo, ou control bus, em inglês. Estas linhas controlam a sequência de acontecimentos em todo o sistema. Por exemplo, quando existem dados no barramento de dados são os sinais de controlo no barramento de controlo que informam o dispositivo se é o microproces­sador que fornece os dados ou se, por outro lado, é o microprocessa­dor que extrai a informação do barramento de dados. Em resumo, trata­-se de definir se o microprocessador efectua uma operação de “escrita” ou de leitura, para evitar que vários dispositivos enviem simultanea­mente sinais para o barramento de dados.

Já sabemos através de que meios físicos o microprocessador comu­nica com os restantes dispositivos do sistema. Estudemos, então, a sua arquitectura interna. Um microprocessador CPU o micro-computador) é constituído ba­sicamente por três grupos de elementos (fig. 3):

 

 

 

 

Ø      Unidade aritmética e lógica, ALU. Esta unidade efectua as operações básicas: aritméticas, lógicas e de rotação.

Ø      Unidade de controlo. Descodifica as instruções extraídas da memória e gera Os sinais internos a externos (sistema) de modo a que as instruções sejam executadas.

Ø      Conjunto de registos que memorizam temporariamente dados, instruções a endereços.

 

A unidade aritmética e lógica está ligada directamente a dois registos que contêm Os dois nu meros binários a operar (fig. 4). Um dos registos é directamente acessível ao programador e designa-se por acumulador (A).

 

 

O outro registo (registo temporário) é por vezes também directa­mente acessível, dependendo este facto do tipo de microprocessa­dores. Para um microprocessador com um barramento de dados de oito bits estes registos podem armazenar uma palavra, isto é, um byte.

 

Fig.4

O acumulador, além de reter um dos operandos, guarda também o resultado final da operarão efectuada. Na comunicação com o exterior o acumulador encontra-se sempre presente, quer na transferência de resultados para os dispositivos de saída, quer na entrada de dados através dos dispositivos de entrada.

As operações aritméticas e lógicas que a ALU pode efectuar sobre os operandos são as seguintes (entre parêntesis os termos em inglês):

Ø      Adição (add).

Ø      Subtracção (subtract).

Ø      Incrementação (increment).

Ø      Decrementação (decrement).

Ø      Complementação (complement).

Ø      Deslocamento para a esquerda (shift left).

Ø      Deslocamento para a direita (shift right).

Ø      E (AND).

Ø      OU (OR).

Ø      OU- Exclusivo (XOR)

 

Estas instruções serão minuciosamente descritas no desenrolar do trabalho.

Para executar um programa a CPU necessita de ler na memória do micro-computador as instruções nela armazenadas. Para efectuar esta operação a CPU dispõe, normalmente, de três registos específicos, isto é, registos que serão utilizados com este fim: registo de endereço, con­tador de programa e registo de instrução.

Se queremos ler ou escrever (read ou write) uma palavra de dados na memória, precisamos de indicar o endereço da célula de memória a que queremos ter acesso. Esta posição de memória é armazenada num re­gisto de endereço (address register ou data counter).

O comprimento do registo de endereço é igual ao numero de linhas do barramento de endereços. Nos exemplos que vimos são 16.

A dimensão do registo de endereço depende do número de células de memória que o microprocessador pode endereçar. No caso dos 16 bits temos 2^16 =65 536 palavras. Geralmente utiliza-se outra notação para indicar o número de posições de memória endereçáveis. Por definição 2^10=1024=1 k e uma vez que 2^16=2^10 * 2^6=1024 x 64, dizemos que a capacidade de endereçamento do microprocessador é de 64 Kbytes (ver fig. 2).

o contador de programa (PC), ou program counter em inglês, é um registo em tudo análogo ao data counter. A diferença reside no facto de o program counter endereçar sempre uma célula de memória que contém uma instrução do programa, enquanto o data counter selecciona uma posição de memória que contém uma palavra de dados. ~ também um registo de 16 bits, podendo endereçar, como sabemos, 64 k posi­ções de memória.

Se armazenarmos na memória códigos de instruções de uma forma sequencial construímos um programa. Para esse programa ser lido é necessário carregar o contador de programa com o endereço da primeira posição da memória que contém o código do programa. Estando o programa armazenado sequencialmente em memória bastará incrementar de uma unidade o conteúdo do PC para lermos o segundo código de instrução e assim por diante.

Quando o program counter endereça uma posição de memória a ins­trução que nela se encontra armazenada é colocada num registo da CPU designado por registo de instrução, IR (instruction register). Esta operação é designada por FETCH (busca).

Uma vez no IR, o código da instrução é descodificado e a unidade de controlo gera Os sinais necessários à execução dessa instrução. Esta operação é designada por EXECUTE (execução).

Apresentamos seguidamente um pequeno exemplo de adição de dois números armazenados na memória. Os códigos das instruções são realistas, se bem que não correspondam as instruções apresenta­das. Não considere por agora Os códigos de instrução mas tente compreender a descrição do procedimento que passamos a descrever.

o nosso programa inicia-se na posição de memória com o endereço

2000(16) (referimo-nos a base 16):

 

 

Inicialmente, o contador de programa (PC) contém o endereço, 2000(16), da primeira instrução a executar. o conteúdo dos outros regis­tos é supostamente desconhecido e portanto arbitrário. A memória de dados armazena dois números nas células de memória 2A00(16), res­pectivamente, 3B(16) e 22(16).

 

 

Na figura 6 está representado o sinal gerado pelo relógio. Os disposi­tivos que requerem este sinal como entrada designam-se por dispositi­vos síncronos e podem ser activados tanto no patamar positivo como no nível de zero. Os dispositivos que não requerem o sinal de relógio dizem-se dispositivos assíncronos. Certos circuitos digitais também podem ser activados pelos flancos, como e’ o caso dos flip-flops edge triggered que podem ser activados pelo flanco ascendente do impulso de relógio ou pelo flanco descendente. Normalmente a frequência do sinal de clock (relógio) situa-se entre 1 MHz e 10 MHz.

 

 

 

 

 

Para finalizar a descrição do microprocessador apresenta-se na figura 7 a configuração dos pinos de um CPU, o Z80 da ZILOG.

 

 

Fig.7

<-- Voltar

Hosted by www.Geocities.ws

1